比YOLOv3更快更强 | POLY-YOLO: HIGHER SPEED, MORE PRECISE DETECTION AND INSTANCE SEGMENTATION FOR YOLOV3

分析出了YOLOv3存在的两个问题(具有启发性),使用高分辨率的单一尺度特征输出来缓解问题。感觉更像是工程性的改进,此外实验也太少了点。
论文地址:https://arxiv.org/pdf/2005.13243.pdf
Github:https://gitlab.com/irafm-ai/poly-yolo

在这里插入图片描述

Abstract:

论文提出了性能更好的YOLO新版本,并扩展了名为Poly-YOLO的实例分割模型。 Poly-YOLO建立在YOLOv3的原始思想的基础上,并消除了它的两个弱点:大量重写的标签和无效的锚点分配。 Poly-YOLO通过使用阶梯转换上采样通过超列技术聚合轻型SE-Darknet-53骨干网中的特征来减少问题,并产生高分辨率的单尺度特征输出。与YOLOv3相比,Poly-YOLO仅具有60%的可训练参数,但相对mAP却提高了40%。此外还提出了具有更少参数和更低输出分辨率的Poly-YOLO lite。它具有与YOLOv3相同的精度,但它的体积小三倍,速度快两倍,因此适用于嵌入式设备。最后,Poly-YOLO使用边界多边形执行实例分割。训练网络以检测在极坐标网格上定义的尺寸无关的多边形。预测每个多边形的顶点具有其置信度,因此Poly-YOLO生成具有不同数量顶点的多边形。

Introduction:

YOLOv3由于其精度与速度的权衡,被广泛应用。此文分析了YOLO的性能,并确定了它的两个缺点。 第一个缺点是由于对输出层中的锚点的不适当处理而导致的大box检测精度低。 第二个是由于分辨率较粗糙而彼此重写标签。 为了解决这些问题,我们设计了一种称为Poly-YOLO的新方法,该方法可以大大提高原始YOLOv3的功能。 为了解决实例分割问题,我们提出了一种检测基于多边形的紧密轮廓的方法。 我们的方法的贡献和好处如下:
在这里插入图片描述
1.提出Poly-YOLO,以提高以前版本YOLOv3的检测精度。 Poly-YOLO拥有一个全新的功能解码器,具有单个输出张量,可以达到更高的分辨率,从而解决了YOLO的两个主要问题:标签重写和锚点分配不正确。

2.我们通过特征提取器生成的多分辨率特征图的超列组成来生成单个输出张量。为了统一特征图的分辨率,我们利用阶梯式放大,这与我们在保持计算速度的同时相比直接放大相比,可以获得稍低的损耗

3.我们设计了一个扩展,该扩展使用边界多边形表示实现实例分割。最大多边形顶点的数量可以根据需要调整到精确度。

4.在具有相对坐标的极坐标网格内检测到边界多边形,该相对坐标允许网络学习与尺寸无关的常规形状。网络为每个边界多边形生成动态数量的顶点。

problem analysis:

重写标签和跨输出尺度的anchors分布不平衡。 解决这些问题对于改善YOLO性能至关重要。

1.Label rewriting problem
在这里插入图片描述
YOLOv3在训练的时候,当由gt数据集的标签给定的边界框可能会被其他框重写,网络则不会对这些框进行训练。具体来说,如果将两个相同尺度的框分配给同一个cell,则其中一个将被重写。 结果,训练网络忽略一些目标,这导致正样本数量非常少。特别是存在于分辨率比较低的特征图中

如上图所示,假设YOLOv3 416的标准分辨率,则对于s3(最粗糙的比例),我们获得13 x 13像素大小的网格,每个像元的大小为32 x 32像素。就会造成同一个cell中的框会被后面框重写,从而被忽略掉。 上图中红色的框均是被重写忽略掉的,27个框中就有10个被重写。而且,anchor的绝对大小不会影响标签的重写问题。 重要的指标是anchor的中心。 表1显示了基准中使用的数据集中重写标签的比率。表1为相关数据集YOLOv3标签重写的比率以及使用本章提出方法后带来的缓解。

在这里插入图片描述
2.Anchors distribution problem

YOLOv3使用九个anchor,每个输出尺度三个纵横比。 特定的gt与最佳匹配的anchor匹配,该anchor将其分配给特定的输出特征层。这种分配方式只适用于以下的理想分布:
在这里插入图片描述
然而,在实际问题中,目标框大小不会分布的这么理想化,就会造成某些尺度的特征层未被充分利用。

为了说明这个问题,让我们假设两组盒子的大小分别为M1和M2。 前者与通过高速公路上方的摄像头进行车牌检测相关,而后者与通过门前摄像头进行人员检测相关。
第一种情况导致以下问题:由于数据集不包含大目标,因此中型和大型的输出比例尺还将包含小锚点。 在这里,标签重写的问题将升级,因为需要在粗糙的网格中检测出小的物体。
反之亦然。 在中小型输出层中将检测到大目标。 在此,由于中小型输出层的感受野范围有限,检测将不精确。 这三个使用的标尺的感受野为{85 x 85、181 x181、365 x 365}。 两种情况的实际影响是相同的:性能将不是最佳的。

Poly-YOLO architecture:

在这里插入图片描述
论文提出了一种方法来缓解以上分析的两个问题:高分辨率的单一尺度输出层。

解决第一个问题的方法:

第一个问题可以通过较高的特征分辨率来缓解。当特征分辨率=输入图像大小,将不可能会发生标签重写的问题。 论文出于速度考虑,最终选取1/4输入分辨率大小作为单一输出层的尺度。

解决第二个问题有两种方法:

第一种方法是为三个输出尺度定义感受野,并定义将其拆分的两个阈值。 然后,k均值将根据这些阈值计算质心三元组(用作锚点)。 这会将数据驱动的锚更改为问题驱动的(感受野)锚。 例如,当数据集中目标较小的时候,仅在检测小物体的比例尺上检测到,而不是在YOLOv3中当前实现的所有比例尺上检测到。 这种方式的缺点是我们将无法使用网络的全部容量。总结来说,这种方式就是人工的hard调参

第二种方式是创建具有单个输出的架构,该架构将汇总各种规模的信息。 这样的聚合输出还将一次处理所有锚点。 因此,与第一种方式相反,锚点大小的估计将再次由数据驱动
在这里插入图片描述
对多个尺度的特征融合策略,采用阶梯式聚合方式,输出结果更加平滑。在提升效果的同时,保证参数量不增加。下图展示了阶梯式聚合带来的训练提升。
在这里插入图片描述
此外,本文对主干网络进行了修改,在其中添加了SE注意力模块。通过添加SE模块并以更高的输出分辨率工作,会降低计算速度。 由于速度是YOLO的主要优势,因此我们在特征提取阶段减少了卷积滤波器的数量。 即,将其设置为原始数字的75%。 而且,颈部和头部更轻,一起具有37.1M的参数,这比YOLOv3(61.5M)要少得多。 尽管如此,Poly-YOLO仍比YOLOv3达到更高的精度。还提出使用Poly-YOLO lite,旨在提高处理速度。 在特征提取器和头部中,此版本仅具有Poly-YOLO过滤器的66%。 最后,s1减小到1/4。 Poly-YOLO lite的参数数量为16.5M。

Instance segmentation with Poly-YOLO:

提出了一种多边形的实例分割的模型,没有细看

Experiments:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42096202/article/details/106481080