![b3d8e82487cede9d94e2d3ebf15e908f.png](https://i-blog.csdnimg.cn/blog_migrate/76fcc388db5b6b974964626e91d6d3e5.jpeg)
不久前给大家详细介绍了经典的目标检测算法yolov3,最近基于yolov3的改进版本poly-yolo来了,模型参数量仅为yolov3的60%,但是map却提升了40%,还能应用于实例分割,一起来看看细节和其惊人的效果吧!
本文由品览高级算法研究员Cecilia,为大家解读YOLOv3改进版: Poly-YOLO的详解与应用。
Cecilia
品览高级算法研究员
• 毕业于南昌大学
• 3年国企研发中心经验
YOLOv3的缺点
1.重写标签
由于YOLO系列都是基于图像cell栅格作为单元进行检测,以416*416大小的图像为例,在图像分辨率随着卷积下降到13*13的特征图大小时,特征图一个像素点的感受也是32*32大小的图像patch。如果将两个相同尺度的框分配给同一个cell,则其中一个将被重写。
结果,训练网络忽略一些目标,这导致正样本数量非常少。特别是存在于分辨率比较低的特征图中。如下图所示,红色目标为因为重写而没有加入到训练中的目标,可以看到,在这样一个特征图上,重写的目标数量还不少,27个目标里有10个都被重写,特别是比较稠密的地方。
![8e87ebc3d30e9e688a947ecef0522fc7.png](https://i-blog.csdnimg.cn/blog_migrate/0bde8c7200ea3c4c6d828fb611d1ccc6.jpeg)
2.无效的anchor分配
YOLOv3使用九个anchor,每个输出尺度三个纵横比。特定的gt与最佳匹配的anchor匹配,该anchor将其分配给特定的输出特征层。这种分配方式只适用于以下的理想分布:
![ccaf2363e28688d2bece99e19d2b0598.png](https://i-blog.csdnimg.cn/blog_migrate/bb9e07f9e3333fb3e8a9f114149ba923.png)
然而在实际问题中,目标框大小不会分布的这么理想化,就会造成某些尺度的特征层未被充分利用。
Poly-YOLO的改进
1. 高分辨率的单一尺度输出层
标签重写的问题可以通过较高的特征分辨率来缓解。当特征分辨率=输入图像大小,将不可能会发生标签重写的问题。出于速度考虑,最终选取1/4输入分辨率大小作为单一输出层的尺度。
进行改进后的标签重写率对比如下图1所示:
![0b2f7613a24252828250996696abe9ff.png](https://i-blog.csdnimg.cn/blog_migrate/251cb05311196387ceeec2c1b69f6c1a.jpeg)
2. 解决anchor分布问题
第一种方式是:为三个输出尺度定义感受野,并定义将其拆分的两个阈值。然后,k均值将根据这些阈值计算质心三元组(用作锚点)。这会将数据驱动的锚更改为问题驱动的(感受野)锚。例如,当数据集中目标较小的时候,仅在检测小物体的比例尺上检测到,而不是在YOLOv3中当前实现的所有比例尺上检测到。这种方式的缺点是我们将无法使用网络的全部容量。总结来说,这种方式就是人工的hard调参。
第二种方式是:创建具有单个输出的架构,该架构将汇总各种规模的信息。这样的聚合输出还将一次处理所有锚点。因此,与第一种方式相反,锚点大小的估计将再次由数据驱动。
Poly-yolo采用第二种方式进行改进,如下图2所示为yolov3体系结构与poly-yolo体系结构的对比:
![7d692a2e2947d2cf62417f4fa222620e.png](https://i-blog.csdnimg.cn/blog_migrate/b71db8f9f311910182b68d013dad08d9.jpeg)
图2 原始体系结构和新体系结构对比
Poly-YOLO在特征提取器部分每层使用较少的卷积滤波器,并通过squeeze-and-excitation模块扩展它。较重的neck block被使用stairstep进行上采样、带有hypercolmn的轻量block所取代。head使用一个而不是三个输出,具有更高的分辨率。
综上所述,Poly-YOLO的参数比YOLOv3少40%,但可以产生更精确的预测。对多个尺度的特征融合策略,采用阶梯式聚合方式,输出结果更加平滑。在提升效果的同时,保证参数量不增加。
![ac4ad17a1da7f28f4538c2becbefa17f.png](https://i-blog.csdnimg.cn/blog_migrate/5417412828a912521efb1a15cd1e4dac.png)
![942a1c86c47594fcf6b31cdeb7f63e6b.png](https://i-blog.csdnimg.cn/blog_migrate/1c482fc25c81c7fee546d58a77f3b7e0.jpeg)
此外,polo-yolo对主干网络进行了修改,在其中添加了SE注意力模块。通过添加SE模块并以更高的输出分辨率工作,会降低计算速度。
Poly-YOLO实例分割
引入一个多边形表示物体,它能够检测具有不同数量顶点的目标,而不需要使用会降低处理速度的递归神经网络。
1. 多边形原则
在一个公共数据集中,许多对象都被类似的形状所覆盖,不同之处在于对象的大小。例如,汽车牌照、手势、人类或汽车都有几乎相同的形状。
一般的形状可以很容易地用极坐标来描述,图5说明了YOLOv3中使用矩形网格,一个对象的边界框位于其中心的单元格将预测其边界框的坐标,而Poly-YOLO中基于圆形扇区的网格,用于检测多边形的顶点。网格的中心与对象边界框的中心重合。然后,每个圆形扇区负责检测特定顶点的极坐标,没有顶点的扇区应该产生等于零的置信度。
![9b28625baebf98997c440aca7c44e533.png](https://i-blog.csdnimg.cn/blog_migrate/c7fc73601b570f0c79daaacec6316b94.png)
![4435f930cbd6789bfb18744c6160dd1d.png](https://i-blog.csdnimg.cn/blog_migrate/b0ba5101cbbcf7de93ca9ca8d88c52dd.jpeg)
2.与poly-yolo集成
检测边界多边形的思想是通用的,可以很容易地集成到任意的神经网络中,通常,必须修改三个部分:数据准备的方式、体系结构和损失函数。从语义分割标签中提取边界多边形,所提取的边界多边形必须以与边界框数据相同的方式进行扩充。在Poly-YOLO中更新了输出层中卷积滤波器的数量。
当仅检测到边界框时,最后一层由n = na(nc + 5)个卷积滤波器表示,na=9(anchor个数),nc为类别数,对基于多边形的目标检测进行集成,得到n=na(nc+ 5+ 3nv),nv为每个多边形检测到的顶点数的最大值。
Poly-yolo的损失函数:
![d8d98b682d7bf0d85128074ea2d5d2aa.png](https://i-blog.csdnimg.cn/blog_migrate/1b0b9111ab8c062983883c55148d6e37.png)
其中
![903aee9c8f6c068fafa12ce449cbde90.png](https://i-blog.csdnimg.cn/blog_migrate/16bd66cdc3c0977d84289248a8f24135.png)
![0702ba8b3f68336cae0e97e0ef9fdbd5.png](https://i-blog.csdnimg.cn/blog_migrate/cf472d7c7fc4fe6d236b9b20d193571e.png)
![385ee5367ecc51b55995933a84b7553b.png](https://i-blog.csdnimg.cn/blog_migrate/cba0dcb390c022c56d5754b2f62644a6.png)
![391e0e28716caa2e04b65b723db8fcf6.png](https://i-blog.csdnimg.cn/blog_migrate/47f484569f0ff691d6343ee30d6b3165.png)
![c5597772b364452a5bab34a055965d5f.png](https://i-blog.csdnimg.cn/blog_migrate/a892a77a8d77b335e17a6ca8d31c203b.png)
实际应用效果展示
总体来讲,polo-yolo的改进是良心之作了,模型参数量相对于yolov3减少了60%,还展示了具有更少参数和更低输出分辨率的Poly-YOLO lite。其改进了yolov3,解决了标签重写与anchor分布问题,实际模型精度相当能打,最大的创新应该是采用极坐标的方式进行多边形预测,可以应用在实例分割上,并且实际模型训练速度非常快,608*608的输入尺度的话,前向预测速度在v100上可达到25fps!
![7ebe5357688dbdea2bc994bea6e6ac0f.png](https://i-blog.csdnimg.cn/blog_migrate/03dfe59652b63b502aaacd8e8fcedadc.jpeg)
![26b538654852296faf8c9c4eceabe56b.png](https://i-blog.csdnimg.cn/blog_migrate/9c19a4b881505ac9169c9fdacb13965f.jpeg)
![976b156b4656a0246bd184dab73969df.png](https://i-blog.csdnimg.cn/blog_migrate/0375e02a0719de69cfe5166298ed3e41.jpeg)
更多技术干货,请持续关注品览!
![09c076229f78964b740835f03b7c31bc.png](https://i-blog.csdnimg.cn/blog_migrate/2f00cfbeaeed5dc385bc4f24428c03bb.png)
品览Pinlan是AI物品识别专家,我们的产品结合了AI的认知识别能力,Cloud的强劲算力,IoT的边缘支持。我们的使命是让物品识别能力无处不在,赋能星球上的每一个企业与个体。
在AI应用领域,团队服务过顶新集团、欣和集团、上汽集团、自如等客户。我们同全球顶级合作伙伴微软,企业微信,百度AI大脑等一起为企业客户提供AI巡店通,AI亿览通,小览机器人以及品识-AI商品识别平台产品服务。
进入品览官网,即可申请免费试用AI亿览通。