在过去的几年里,目标检测问题的解决有了很大的发展。在存在硬件限制的情况下需要更轻的模型,并且需要为移动设备量身定制模型。在本文中,作者将评估在创建解决这些问题的算法时使用的方法。本文的主要目标是提高最先进算法的准确性,同时保持速度和实时效率。
单阶段目标检测中最重要的问题与小目标和不准确的定位有关。作为解决方案,作者创建了一个名为MobileDenseNet
的适用于嵌入式系统的新网络。还为移动设备开发了一种轻型Neck
FCPNLite
,有助于检测小物体。
研究表明,很少有论文引用嵌入式系统中的瓶颈。本文的网络与其他网络的不同之处在于对连接特征的使用。网络Head
的一个小而显着的变化放大了准确性,而不会提高速度或限制参数。
简而言之,对具有挑战性的 CoCo
和 Pascal VOC
数据集的AP分别为 24.8 和 76.8。网络能够提高准确性,同时保持移动设备上的实时效率。模型在Pixel 3 (Snapdragon 845) 的运行速度为 22.8 fps。
1、本文方法
1.1、Backbone
在我们看来,模型的核心是 Backbone
。主网络生成特征,以便其他部分可以使用这些特征来提取对象。用于各种目标检测的网络包括 VGG
、ResNet
、Darknet
和 EfficientNet
。这些网络不适用于具有硬件限制。一些文章使用 MobileNet
和 MobileNetV2
。
作者认为,根据作者的经验和实验,这些网络不适合目标检测,尤其是定位。它们不足的原因是这些网络最初是为分类而设计的,没有足够的低级信息流特征。一篇文章也使用了 PleeNet
,PleeNet
作者声称它仅有 66% 的 MobileNet
参数;但它仍然不适合定位,其准确性并没有提高。
为了定位和良好的目标精度,需要一个也具有低级特征的网络。作者希望设计一个网络,其中信息流适合局部化,并且也适合真实硬件,例如需要实时运行的移动设备的 CPU
中的硬件。因此,设计并实现了 MobileDenseNet
网络。
如前所述,Mobilenets
使用深度可分离卷积而不是卷积。MobilenetV1
网络没有skip connection
,不适合局部化。在 MobilenetV2
中,skip connection
类似于 Resnet
,通过 add
完成。某种程度上可以说倒置残差连接
+Mobilenet
=MobilenetV2
。
在作者看来,如果使用连接
而不是相加
,允许网络从那些具有 1×1 瓶颈卷积
的特征中选择作为特征选择器。此外,使用 add
会生成与原点不同的新功能。最后,根据经验,如果使用连接
而不是相加
,则较低层的属性可以更令人满意地达到目标检测并获得更好的准确度。当然,当决定使用连接
时,很明显参数的数量增加了。因此,有必要使用瓶颈
。需要注意的是,如果密集连接的数量增加超过一个点,它们会大大增加网络的计算成本,因此必须避免过度使用它们。例如,DenseNet
使用了大量的skip connection
作为连接,这严重拖慢了 CPU
上的网络速度。
单阶段方法的另一个问题是它们不具备检测小物体的能力。作者通过对提议的网络进行更改在很大程度上解决了这个问题。由于从一开始就为图像分类问题提供了所有主干,因此所有参考主干中的一个重要问题是第二块和第三块中的层数非常少。因为需要这些块中更好的信息,将它们用于骨干中间的 C3 和 C4 输出,这里作者决定稍微增加网络的第二和第三块中的层数,以便从这些块中获取特征图具有更好、更全面的特征。
简而言之,Mobilenet(Enhanced version) + Dense connection(Concatenation) + Bottleneck = MobileDenseNet
MobileDenseNet
与其他骨干网络一样,包含 5 个主要块。与 Mobilenet
类似,已经考虑了确定每个块中最终特征数量的必要参数。还应该注意,不同的架构可以用于不同的应用程序。MobileDenseNet
网络可以灵活地为不同的应用增加或减少每个块的层数。核心网络架构由许多深度可分离的卷积块组成。唯一的主要区别是在某些情况下使用Dense connection
。提出的目标检测架构如图所示。
MobileDenseNet
有3个输出。该公式可以定义为:
其中,C3、C4、C5分别为第三、第四、第五块的输出。作者还将C5的两个新输出定义为:
1.2、Neck
作为第二点,Neck
已经有了许多更改。FPN
、Bi-FPN
、NAS-FPN
和 CPAM
都不适用于嵌入式应用。其中许多,如 EfficientDet
中使用的模型,too non-specific
,并带有严重的硬件限制。它们给网络带来了大量的参数和计算成本。
作者还提出了不同的 Neck
,目的是创造比 SSDLite
更有效的结果。单阶段目标检测网络的主要问题是它们在小目标方面的准确性低。一般来说,像其他论文一样添加和复制这些金字塔是很耗时的,而且准确性会略有提高。一条信息流足以将低级特征和高级特征结合起来。使用连接
的原因是允许网络本身使用它想要的任何特征。add
函数创建了新的特征,并且连接
允许低级特征更原封不动地到达最后阶段。最终建议的 Neck
可以在下图中查看。在这个 Neck
没有使用大量的连接,而是只使用了有限数量的连接来提高小物体的准确性。
对于 Neck
部分,转换了称为 FPN 的第一个 Neck
,并进行了一些调整,以添加连接
而不是add
,使用瓶颈
来减少计算量,并使用深度可分离卷积
代替具有大量参数的标准卷积。称为 FCPNLite
,特征连接金字塔网络 lite
(图 3 中心),可以表述为
此外,如果像原始文章一样使用 Add
,将创建一个名为 FPNLite
的新 Neck
(图 3 左)。经过实验得出结论,并不是所有的特征图都需要用concatenation
或add
来连接。如前所述,过度使用连接和加法会显着增加 FLOP
的数量和计算成本。可以通过有限数量的连接来提高网络准确性。由于 C5
、C6
和 C7
的特征强度相似,因此不需要上采样和连接。最终,比 FCPNLite
更简单的 Neck
具有高度准确且计算成本更低。将此 Neck
SSDCLite
命名为 SSD concatenation lite
(图 3 右)。主要区别在于这个 Neck
的连接数量是有限的
1.3、Head
对于 Head
,和其他网络一样,使用了许多分类和边界框Head;不同的是,它们的权重并不完全共享。作者这里使用了新的想法,half-share
。这意味着如果整个Head
的权重相互共享,网络将很难使用共享的权重提取非常小和非常大的目标。
由于两个特征图中物体的尺寸和形状都非常接近,所以将每两个Head
的权重分成一行,共享两个连续Head
的权重;当权重相同时将 AP 增加到 1.1%。
从p3到p7的所有5个特征图都用于256通道的卷积,并将p4共享权重p3,p6共享权重p5,3x3大小的p7与其他权重分离。不同Head
之间共享或不共享的不同模式(图 4)。
2、实验
2.1 COCO数据集
2.2.1 Head分析
2.1.2 NECK分析
2.1.3 Backbone分析
2.1.4 SOTA对比
2.2 VOC数据集
3、参考
[1].MobileDenseNet: A new approach to object detection on mobile devices
4、推荐阅读
轻量化Backbone霸主 | VGNetG成就“不做选择,全都要”轻量化主干网络!