本文由品览高级算法研究员Cecilia,为大家解读YOLOv3改进版: Poly-YOLO的详解与应用。
Cecilia
品览 高级算法研究员
• 毕业于南昌大学
• 3年国企研发中心经验

YOLOv3的缺点
1.重写标签
由于YOLO系列都是基于图像cell栅格作为单元进行检测,以416*416大小的图像为例,在图像分辨率随着卷积下降到13*13的特征图大小时,特征图一个像素点的感受也是32*32大小的图像patch。如果将两个相同尺度的框分配给同一个cell,则其中一个将被重写。
结果,训练网络忽略一些目标,这导致正样本数量非常少。特别是存在于分辨率比较低的特征图中。如下图所示,红色目标为因为重写而没有加入到训练中的目标,可以看到,在这样一个特征图上,重写的目标数量还不少,27个目标里有10个都被重写,特别是比较稠密的地方。
2.无效的anchor分配
YOLOv3使用九个anchor,每个输出尺度三个纵横比。特定的gt与最佳匹配的anchor匹配,该anchor将其分配给特定的输出特征层。这种分配方式只适用于以下的理想分布:
然而在实际问题中,目标框大小不会分布的这么理想化,就会造成某些尺度的特征层未被充分利用。
Poly-YOLO的改进
1. 高分辨率的单一尺度输出层
标签重写的问题可以通过较高的特征分辨率来缓解。当特征分辨率=输入图像大小,将不可能会发生标签重写的问题。出于速度考虑,最终选取1/4输入分辨率大小作为单一输出层的尺度。
进行改进后的标签重写率对比如下图1所示:
图1 改进后的poly-yolo标签重写率在多数据集对比
2. 解决anchor分布问题
第一种方式是:为三个输出尺度定义感受野,并定义将其拆分的两个阈值。然后,k均值将根据这些阈值计算质心三元组(用作锚点)。这会将数据驱动的锚更改为问题驱动的(感受野)锚。例如,当数据集中目标较小的时候,仅在检测小物体的比例尺上检测到,而不是在YOLOv3中当前实现的所有比例尺上检测到。这种方式的缺点是我们将无法使用网络的全部容量。总结来说,这种方式就是人工的hard调参。
第二种方式是:创建具有单个输出的架构,该架构将汇总各种规模的信息。这样的聚合输出还将一次处理所有锚点。因此,与第一种方式相反,锚点大小的估计将再次由数据驱动。
Poly-yolo采用第二种方式进行改进,如下图2所示为yolov3体系结构与poly-yolo体系结构的对比:
图2 原始体系结构和新体系结构对比
Poly-YOLO在特征提取器部分每层使用较少的卷积滤波器,并通过squeeze-and-excitation模块扩展它。较重的neck block被使用stairstep进行上采样、带有hypercolmn的轻量block所取代。head使用一个而不是三个输出,具有更高的分辨率。
综上所述,Poly-YOLO的参数比YOLOv3少40%,但可以产生更精确的预测。对多个尺度的特征融合策略,采用阶梯式聚合方式,输出结果更加平滑。在提升效果的同时,保证参数量不增加。
图3 展示了HC方案(左)和带有阶梯的HC(右)对比,图4展示了阶梯式聚合带来的训练提升。
图4展示了阶梯式聚合带来的训练提升
此外,polo-yolo对主干网络进行了修改,在其中添加了SE注意力模块。通过添加SE模块并以更高的输出分辨率工作,会降低计算速度。
Poly-YOLO实例分割
引入一个多边形表示物体,它能够检测具有不同数量顶点的目标,而不需要使用会降低处理速度的递归神经网络。
1. 多边形原则
在一个公共数据集中,许多对象都被类似的形状所覆盖,不同之处在于对象的大小。例如,汽车牌照、手势、人类或汽车都有几乎相同的形状。
一般的形状可以很容易地用极坐标来描述,图5说明了YOLOv3中使用矩形网格,一个对象的边界框位于其中心的单元格将预测其边界框的坐标,而Poly-YOLO中基于圆形扇区的网格,用于检测多边形的顶点。网格的中心与对象边界框的中心重合。然后,每个圆形扇区负责检测特定顶点的极坐标,没有顶点的扇区应该产生等于零的置信度。
图5
图6 bbox检测(上)和极坐标检测(下)对比
2.与poly-yolo集成
检测边界多边形的思想是通用的,可以很容易地集成到任意的神经网络中,通常,必须修改三个部分:数据准备的方式、体系结构和损失函数。从语义分割标签中提取边界多边形,所提取的边界多边形必须以与边界框数据相同的方式进行扩充。在Poly-YOLO中更新了输出层中卷积滤波器的数量。
当仅检测到边界框时,最后一层由n = na(nc + 5)个卷积滤波器表示,na=9(anchor个数),nc为类别数,对基于多边形的目标检测进行集成,得到n=na(nc+ 5+ 3nv),nv为每个多边形检测到的顶点数的最大值。
Poly-yolo的损失函数:
其中
实际应用效果展示
总体来讲,polo-yolo的改进是良心之作了,模型参数量相对于yolov3减少了60%,还展示了具有更少参数和更低输出分辨率的Poly-YOLO lite。其改进了yolov3,解决了标签重写与anchor分布问题,实际模型精度相当能打,最大的创新应该是采用极坐标的方式进行多边形预测,可以应用在实例分割上,并且实际模型训练速度非常快,608*608的输入尺度的话,前向预测速度在v100上可达到25fps!
更多技术干货,请持续关注AI论技系列文章
↓往期回顾↓
AI论技 | PSENet在票据文本检测中的应用
实用易懂的机器学习预测模型例说:如何进行价格预测
YOLOv3在标的物资产实时管理中的应用轻量级 MobileNet 在物品识别中的应用RetinaNet在货架商品盘点中的应用细粒度在商品识别领域的应用

品览Pinlan是AI物品识别专家,我们的产品结合了AI的认知识别能力,Cloud的强劲算力,IoT的边缘支持。我们的使命是让物品识别能力无处不在,赋能星球上的每一个企业与个体。
在AI应用领域,团队服务过顶新集团、欣和集团、上汽集团、自如等客户。我们同全球顶级合作伙伴微软,企业微信,百度AI大脑等一起为企业客户提供AI巡店通,AI亿览通,小览机器人以及品识-AI商品识别平台产品服务。
↓ 扫一扫添加小览微信 马上开聊↓
即可申请免费试用
品览AI巡店通、AI亿览通产品方案