A Comprehensive Study of Real-Time Object Detection Networks Across Multiple Domains: A Survey
文章目录
导言
A Comprehensive Study of Real-Time Object Detection Networks Across Multiple Domains: A Survey
今天分享一篇关于实时目标检测网络综述的论文,22年8月发表在TMLR。本文在多个数据集(COCO、VOC、BDD、Cityscapes等)上,分析了多种实时目标检测算法(基于anchor的、基于关键点检测的、基于transformer)在多种目标特性(精度、可靠性、延时、资源占用、耗能、灵活性、鲁棒性)上的表现。还分析了诸多变量(如输入尺寸、anchor大小、置信度阈值、网络层类型)对以上性能指标的影响。还分析了这些检测网络在数据分布偏移、自然环境变化、对抗攻击等因素影响下的鲁棒性,以及提供对预测结果可靠性的校准分析。另外分析了诸多网络在两个真实任务上(自动驾驶检测、肠道息肉检测)的表现。最后还进一步分析了多种网络结构在边缘嵌入式设备上(NVIDIA Jetson TX2,Jetson Xavier)的实时性能表现。论文实验非常丰富,给出了工业界和学界可能忽然的一些问题的经验指导,值得一读。
1. 总览
本文对比的检测框架包括二阶段的ThunderNet、一阶段的YOLOv2、SSD、基于transformer的端到端检测器DETR、基于点检测的CenterNet、TTFNet、FOCS、NanoDet。同时对比了多种Backbone。网络特点汇总如下:
并绘制了属性八边形对比。
从图上可看出 NanoDet 在多数属性上都取得了较好的结果,SSD具有最低的校准误差。
论文贡献点
- 九种特征提取网络、八种检测头的组合研究。涉及两阶段、一阶段、基于anchor、基于关键点检测、基于transformer的实时检测网络对比实验。
- 在基线数据集上对比各网络的
精度
,速度
,参数量
,计算量
,能耗
。 - 分析输入尺寸、anchor大小、置信度阈值、和特定结构对网络性能的影响。
- 分析网络在不同自然干扰、不同强度下对抗攻击下的鲁棒性。
- 通过评估网络校准分数分析网络结构的可靠性。
- 在自动驾驶BDD数据检测应用和分布外数据上的泛化能力对比。
- 通过TensorRT加速优化的 边缘设备部署分析:Jetson-Xavier,Jetson-Tx2
- 医学图像病灶检测的应用分析:Kvasir-SEG上检测癌性息肉。
2. 目标网络结构介绍
目标检测任务同时对目标实例进行分类和定位。通常可分为一阶段
和两阶段
网络。
两阶段检测网络
通常包括一个独立的Region Proposal Network (RPN)。通过RPN提取到感兴趣区域,然后分别输入到分类head进行分类,输入到回归head得到定位坐标。通常两阶段网络很少用于实时检查。ThunderNet通过轻量化的RPN结构实现了实时检测。
一阶段检测网络
不包含独立的Proposal 结构,而是考虑所有可能的目标点。一阶段检测网络通常可分为基于anchor
的和基于关键点定位
的网络架构。
anchor based
通过预定义的anchor(锚点)辅助预测。比较有名的就是YOLO系列。将输入图像分成网格点,当框的中心点落在格子内时,这个格子就对应一个预测框。每个网格点可以输出多个预测框。SSD 通过FPN(特征金字塔)结构预测不同尺度的目标框和类别。
缺点在于anchor的定义是数据集相关的,包含了较多的超参数,比如anchor数量,长宽比等。
后续研究提出的keypoint based
将目标看做是点或者点的集合,而不是矩形框。关键点通常是目标的中心点或者四周的角点,通过点直接回归框的位置、长宽,而不是通过预定义的anchor框。基于点检测的检测网络主要包括CornetNet,CenterNet,FCOS, NanoDet和TTFNet。
基于CNN的检测网络通常缺乏全局上下文信息,而且需要较为复杂的后处理,比如NMS(非极大值抑制,过滤重复的框)。20年有研究提出基于Transformer的端到端目标检测框架DETR。以集合预测的形式直接预测目标框集合,省去了NMS的麻烦,取得了非常高的精度。
2.1 目标检测网络的基本组件
目标检测:给定一张图像,以及预定义的类别,输出目标实例的坐标(cx,cy,w,h, θ \theta θ)和目标的类别。目标检测网络通常包括一个Backbone 提取多维特征。提取到的特征输入检测Head 分别对目标进行分类和坐标回归。
目标检测常用的损失函数包括:
- 分类交叉熵Loss
L c e = − ∑ i = 1 n C i log ( p i ) L_{ce}=-\sum_{i=1}^{n}C_{i}\log(p_i) Lce=−∑i=1nC