作者丨Herschel@知乎
来源丨https://zhuanlan.zhihu.com/p/495892085
编辑丨CVer
论文:https://arxiv.org/abs/2103.09136
代码(已开源):
https://github.com/ChenhongyiYang/QueryDet-PyTorch
虽然在过去的几年里,基于深度学习的一般目标测试取得了巨大的成功,但在测试小目标的性能和效率方面远不令人满意。使用高分辨率图像或特征图是推广小目标检测最常见、最有效的方法。然而,随着图像和特征大小的增加,这两种方法都会导致昂贵的计算。我们提出了QueryDet,基于特征金字塔的目标检测器推断速度,采用新颖的查询机制。该pipeline它由两个步骤组成:首先预测低分辨率特征中小目标的粗定位,然后利用这些粗位稀疏引导的高分辨率特征计算准确的检测结果。这样既能获得高分辨率feature map的benefit,背景区的计算量也可以避免。在popular COCO该方法将在数据集上mAP提高了1.0,mAP-small提高了2.将高分辨率推理速度平均提高到3.0×。包含更多的小对象VisDrone在数据集中,我们获得了新的数据集SOTA,同时获得了平均2.3×加速高分辨率。
1.研究背景
当使用现有的通用目标检测器在常规目标检测数据集上进行检测时,中大尺度目标的结果远高于小目标。本文认为,小目标检测的性能衰减主要由三个因素引起:
1. 引导小目标的特征因下采样操作而消失或消失background噪声污染。
2. 与低分辨率特征对应的感觉野不能与小目标的尺度相匹配。
3. 小目标偏差会导致小目标偏差IoU大扰动导致小目标检测难以实现大目标。
现有的小目标检测方法通常通过放大输入图像尺寸或降低采样率来维持较大的分辨率,从而提高小目标检测的性能。FPN它可以在一定程度上缓解高分辨率引入大量计算的问题,但它是low-level特征检测的计算复杂度仍然很高。
QueryDet目标是引入较浅的高分辨率特征,帮助小目标检测,同时确保计算的轻量化。
本文提出的QueryDet出发点来自观察到的两个事实:
1. low-level在特征层的计算中,很大一部分是冗余的。
2. FPN即使在低分辨率结构中,(high-level)特征层无法准确检测小目标,但也可以粗略判断小目标是否存在,并以较高的信誉对应区域。
QueryDet检测流程
基于上述出发点,QueryDet提出了Cascade Sparse Query(CSQ)机制,其中Query代表使用前一层(higher-level feature with lower resolution)传递过来的query指导本层的小目标检测,然后预测本层query进一步传递给下一层,指导下一层的小目标检测,Cascade传达这种层次的思想。Sparse通过使用表示sparse convolution(稀疏卷积)明显减少low-level检测头在特征层上的计算费用。
总体上,higher-level feature with lower resolution负责小目标的初筛,higher-resolution feature然后进行精查,这种glance and focus”的two-stage动态推理可以有效地检测结构的最终结果。
2. 模型方法
2.1 计算量开销比较
QueryDet在实现中使用RetinaNet作为baseline。本文首先进行了分析RetinaNet中使用的FPN中不同level P对应的FLOPs开销:
FLOPs distribution of different module
可见原版RetinaNet中,最低层P3占总计算量的很大一部分;引入更高分辨率P2助力小目标检测后,P2.计算费用占总费用的一半以上;添加最终模型QueryDet对比,可以看出QueryDet在减小 高分辨率的计算费用也提高了推理速度。
2.2 使用Sparse Query加速推理
本节的核心模块Query进行介绍。Query一般来说,这是一个从粗到细的过程:在粗的过程中(low-resolution)在特征图上粗略定位小目标,然后细化(high-resolution)计算特征图的对应位置(使用sparse convolution)。在这个query粗糙定位可视为过程中的粗糙定位query keys,对于应用于小目标检测的小目标检测high-resolution特征图可视为query values。
QueryDet在detection head额外添加用于产生小目标coarse location的,平行于classification和localization head,的query head。模型的总体结构如下图所示:
The whole pipeline of the QueryDet
接下来, Pl-1 上对应的三个head只会在key在相应位置集中的位置上计算head用于下一层queries。通过这个计算过程sparse convolution实现了计算量的大节剩余。sparse convolution提出的主要目的是解决3D操作场景中存在许多零情况,如果对稀疏卷积感兴趣,可以通过本博文简单学习,Rulebook构建中的Getoffset指的是kernel中每个weight对应其kernel偏移坐标量的中心位置。
Cascade Sparse Query结构保证每层生成query并不是来自单一的P,可以通过stride不断减少扩张对应key position的尺度。
2.3 训练过程
query head对应GT计算过程如下首先计算 Pl 当该位置与小目标中心的距离小于指定阈值时,每个位置与所有相应的小目标中心之间的距离 Vl 上的GT标记为1。query head用作二分类问题focal loss作为损失函数。
模型的总体损失表示为:
增加权重来调整每个权重level因为在 P2 训练样本的数量可能超过前五层对应样本的总数。如果权重不减轻,整个训练将由small objects主导。
3. 实验结果
本文做了以下实验:
在COCO mini-val上比较RetinaNet & QueryDet
在Visdrone上比较RetinaNet & QueryDet
在COCO mini-val对消融实验进行比较HR(hight-resolution feature),RB(loss re-balance,对不同层次的权重),QH(额外的Query Head)
在COCO和Visdrone 2018年使用不同的用途query threshold比较AP、AR、FPS的trade off
在COCO mini-val比较不用query三种不同的方法和使用方法query的方法:CSQ最优
在COCO mini-val比较从不同层开始query,对应的AP和FPS
换用不同的backbone(MobileNet V2 & ShuffleNet V2)测试结果
在COCO mini-val上使用嵌入QueryDet的FCOS,比较结果
在COCO test-dev & VisDrone validation上比较不用的methods:
COCO test-dev上的比较结果
Visdrone validation set
4. 总结
QueryDet利用high-resolution feature来提升小目标检测性能的同时,通过CSQ机制,利用高层低分辨率特征初筛含有小目标的区域,在高分辨特征层上利用初筛获得的位置,使用sparse convolution,极大地节约了计算消耗。
本文仅做学术分享,如有侵权,请联系删文。
后台回复:
后台回复:
后台回复:
1.面向自动驾驶领域的多传感器数据融合技术
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进4.国内首个面向工业级实战的点云处理课程5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
9.从零搭建一套结构光3D重建系统[理论+源码+实践]
10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)
13.重磅!四旋翼飞行器:算法与实战
14.ROS2从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在
▲长按加微信群或投稿
▲长按关注公众号
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题