1.简介
物体检测一直是CV领域的热点话题,学术界每年都有层出不穷的新技术涌出,刷新着物体检测任务的SOTA。然而具体到工业应用时,受到平台算力、部署工具等的限制,新的SOTA技术不一定是工业界好应用(industry friendly)的技术。为了加速学术创新在工业场景的落地,结合多种在工业实践中反复验证过的技术,我们提出了AIRDet(Advanced Industrial-oRiented object Detection),代码开源在GitHub - tinyvision/AIRDet: Advanced industrial efficiency-oriented object detection. AIRDet是一个anchor free的物体检测框架,其中结合了AutoAugmentation、GiraffeNeck、GFocalHead等多项技术,在严格限制模型FLOPS的条件下,将小网络的物体检测精度推向新的高度,超越yolov5、yoloX、pp-yoloE、yolov6。在接下来的篇幅中,我们将从Neck改进、Head改进、标签分配以及数据增强四个方面具体分析AIRDet中的提点路程。
2.框架改进
i.Neck改进
在FPN(Feature Pyramid Network)中,多尺度特征融合旨在对从backbone不同stage输出的特征进行聚合,从而增强输出特征的表达能力,提升模型性能。传统的FPN引入top-to-down的路径来融合多尺度特征。考虑到单向信息流的限制,PAFPN增加了一个额外的自底向上的路径聚合网络,然而增加了计算成本。为了降低计算量,YOLO系列检测网络选择带有CSPNet的PAFPN来融合来自backbone输出的多尺度特征。
我们在ICLR2022的工作GiraffeDet[1]中提出了新颖的Light-Backbone Heavy-Neck结构并达到了SOTA性能,原因在于给出的neck结构GFPN(Generalized FPN)能够充分交换高级语义信息和低级空间信息。在GFPN中,多尺度特征融合发生在前一层和当前层的不同尺度特征中,此外,log_2(n)的跨层连接提供了更有效的信息传输,可以扩展到更深的网络。但是,当我们用原来的GFPN直接用CSPNet替换PAFPN作为一个小版本模型时,我们发现它在COCO上不能产生更高的性能。 这个看似令人沮丧的结果是可以预期的,因为在轻量级计算量约束下: (1) 大量冗余的1x1卷积作为channel-wise的pooling占据了较多计算量; (2) 不同尺度特征共享同一个宽度(通道数),导致难以给出一个最优宽度(通道数)来保证高层低分辨率特征和低层高分辨率特征具有同样丰富的表达能力; (3) 在轻量级计算量约束下,3x3卷积进行特征信息融合并不高效。进行分析后,我们针对GFPN做了如下改进,1)不同尺度特征使用不同的通道数,从而在轻量级计算量约束下,灵活控制高层特征和低层特征的表达能力;2)使用CSPNet进行跨尺度特征融合,在降低模型计算量的同时保证梯度的有效传播;3)移除入度为1的节点的3x3卷积,改为identity操作,减少冗余的计算量;
基于上述改进,我们给出了GFPN_CSP网络结构,如图1所示:
图1 GFPN结构
消融实验见下表,可以看到,在轻量级计算量约束下,使用GFPN作为neck模型性能相比PANet降低0.6% AP,改进为GFPN_CSP后,模型性能提升 0.3% AP。此外,如果我们稍微增加一些计算量,模型能够提升1.1% AP。
表1 GFPN性能分析
ii.Head改进
在这个小节,我们主要介绍AIRDet中的检测头(Head)以及Loss函数。我们的工业实践中发现,检测分数和框的质量的不匹配会很容易带来误报。这是因为在nms过程中,无法抑制掉分类置信度高但是边界回归质量差的框,如图2所示,图中低质量的白框和高质量的绿框在做nms时,白框无法被抑制。
图2 误报示例
如果能像分类置信度一样有一个回归置信度,这个问题是不是就能得到解决了呢?正是为此,学术界提出LQE(Localization Quality Estimation),即对回归质量进行估计,从而实现对分类置信度高但回归质量差的框的过滤,得到更好的性能表现。AIRDet中采用GFocalV2-Head[2]来解决这个问题,其结构如图3所示。
图3 GFocalV2-Head结构
GFocalV2将检测框的边界回归建模成一个连续概率分布估计问题,并根据边界的概率分布的峰值(top4)对框的回归质量进行打分,以极其微小的计算量代价实现了LQE,得到了显著的性能提升。为了进一步挖掘GFocalV2在小模型上的潜力,我们根据自己的业务实践,对其进行了一系列的修改。GFocalV2-Head中,不同尺度的head参数是共享的,但是实际上每个尺度有自己的归纳偏置(inductive bias)。当模型较大,Head参数量较多的时候这个问题还不明显,因为参数量充足时,共享的Head有容量容纳这些偏置(inductive bias)。然而当模型较小,需要用更小参数量的Head结构时,这个瓶颈就比较明显了。于是,我们提升为了小模型上的精度,用尺度解耦的方式取代了原来的尺度参数共享。我们还尝试了大伙们都在用的sycnbn以及silu激活函数,都有不同程度的提点。值得注意的是,在尺度解耦的情况下,sycnbn能够取得更加明显的提升。在loss选择上,我们和GFocalV2保持一致,在分类分支使用QFL,在回归分支使用DFL和GIoULoss。
表2 GFocalV2改进分析
iii.标签分配
标签分配(label assignment)是物体检测中的一个关键组件,以往的静态分配方法往往只考虑anchor与ground truth的IoU,这类分配方法容易导致分类任务的失焦,如图4左图所示,手的检测框要用玩偶熊身上的点去做预测,这对模型来说是不合理的为难,理想中的标签如图4右图所示。另外,此类方法依赖anchor先验,在工业应用中,被检物体尺度变化多端,要找到一个最合适的anchor先验十分繁琐。
图4 静态和动态分配差异
为了克服以上的问题,学术界涌现了一批利用模型的分类和回归预测值进行动态分配的标签分配方法,该类方法消除了标签分配对anchor的依赖,并且在分配时同时考虑分类和回归的影响,一定程度上消除失焦问题。OTA[3]是其中的一个经典工作,其根据模型的分类和回归预测值计算分配cost,并且使用Sinkhorn-Knopp算法求解全局最优匹配,在复杂分配场景下性能优异,但是由于Sinkhorn-Knopp求解较为耗时,OTA会带来约30%的额外训练时间。simOTA是OTA的简化版,其使用贪婪的Topk策略代替了OTA中的Sinkhorn-Knopp求解,显著提升训练效率的同时保持了优异的分配效果。综合考虑训练效率与精度,我们采用simOTA作为我们的标签分配方案。另外值得一提的是,对于那些想要在AIRDet中进行loss修改的同学们,simOTA中的分配cost计算需要和模型训练loss保持一致才能取得理想的效果,大家在修改检测器训练的loss时,也别忘了修改simOTA中的cost计算。
iiii.数据增强
数据增强(Data Augmentation)也是物体检测训练中的重要一环,精心设计的数据增强有助于提高模型在各个场景下的泛化能力。
在AIRDet中,我们将数据增强分为image-level和box-level两部分。image-level增强包括mosaic和mixup,这两个增强算子在检测和分类任务上都受到了广泛的应用。但是我们在实践中发现,mosaic能够提高小物体检测性能,但是一定程度上会导致训练集和验证集之间的domain shift。于是我们在训练过程中引入了mosaic增强的衰减,即在训练末期衰减mosaic增强,减少train和val之间的domain shift,获得更好的模型性能。在image-level增强的基础上,我们将SADA中的Box-level增强引入AIRDet。SADA中的box-level增强使用gaussaian mask平滑了检测框内和背景之间的图像变化,避免在图片上造成明显的label相关的artifacts。
3.性能对比
我们在MSCOCO val集上验证了AIRDet的性能。可以看到,结合上述的改进点,AIRDet在严格限制Flops的情况下精度取得了显著的提升,超越yolox、pp-yoloe、yolov6等框架。
4.未来规划
AIRDet从新颖的学术paper中汲取养分,结合我们在工业应用上的思考与观察,刷新了小模型的SOTA记录,超越经典的yolo框架(yolov5,yolox,pp-yoloe,yolov6),同时保持了易用与高速的优点。未来我们将持续推进和完善AIRDet,主要工作包括以下几个方面:
1.面向轻量化和高速化,推出AIRDet-Tiny、AIRDet-Nano完善AIRDet系列模型。
2.聚焦端上检测,完善蒸馏、量化、部署工具链。
3.示范性提供实际工业场景中的应用实例和竞赛冠军方案。
AIRDet是一个新生的、尚处在高速发展中的检测框架,如果您在使用中有任何问题和建议,请随时联系我们!欢迎加入AIRDet答疑群(钉钉联系,拉你入群),或者直接邮件联系xianzhe.xxz@alibaba-inc.com!