极市导读
本文提出了一个基于动态神经网络的目标检测框架,称为DynamicDet,能够根据输入图像的多尺度信息自适应地决定推理路径。在相当的精度下,该动态检测器 Dy-YOLOv7-W6 的推理速度超过 YOLOv7-E6 12%、YOLOv7-D6 17% 和 YOLOv7-E6E 39%。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

论文链接:https://arxiv.org/pdf/2304.05552.pdf
源码链接:https://github.com/VDIGPKU/DynamicDet
简介
目标检测是计算机视觉一个重要主题,是其他视觉基本组成部分,如自动驾驶、多目标跟踪、智能交替等。近年来,更准确更快速的检测器取得了巨大进展,例如基于神经网络架构搜索的检测器和YOLO系列模型。然而这些模型需要设计和训练多个模型获得一些好的满足精度与速度平衡的模型,这对于一些实际应用是不够灵活的。为了避免这个问题,本文关注于目标检测任务的动态推断,尝试使用单一动态检测器获得大范围的精度-速度trade-off。
动态神经网络是一个典型的人脑激发深度学习的领域。如图2给出的一个例子,人类可以训练识别坐标简单图像的所有目标,但需要更多的时间在右边图像上获得相同效果。换句话说,图像处理速度在人脑是不同的,这依赖于图像难度。这一属性促进图像感知动态神经网络研究,并提出了许多令人兴奋的工作。尽管这些方法已经取得了显著性能,但它们都是专门为图像分类任务设计的,不适用于其他视觉任务,尤其是目标检测。
动态检测器不能利用动态架构
大部分已有的动态架构多阶段级联,在每个存在的点预测是否停止推断。这一范式在图像分类上是可行的,但在目标检测上是低效的,因为一张图像有多个目标,每个目标一般有不同类别和尺度。因此几乎所有的检测器都严重依赖于多尺度信息。基于这点,存在的动态点只能放置在backbone最后阶段后。最后全部backbone模块需要完整执行,这使得在多个级联阶段取得动态推断是不可能的。
动态检测器不能利用已有图像分类的退出标准
对于图像分类任务,TOP-1精度阈值是一个广泛使用用于决定是否停止的指标。这只需要一个全连接层预测中间层TOP-1精度,这是容易实现且少成本。然而目标检测任务需要颈部模块和头模块预测目标类别和位置。因此已有的图像识别指标不适合目标检测任务。
为了解决以上问题,本文提出一个动态框架DynamicDet实现目标检测的动态推理。核心是为目标检测任务设计了一个动态架构,该架构可以在推理过程中带着多尺度信息退出设计了一个自适应路由为每一张图像自动选择最好的路线;为DynamicDet提出了特殊的优化和推断策略。
本文方法
受到CBNet启发,本文动态架构由两个检测器和一个路由器 backbone 提取多尺度特征 :
是阶段书。路由器 将被送入这些特征 以预测难度分数 。
一般地,简单图像在第一个backbone出口退出,而困难图像需要进一步处理。如果路由分类器识别输 入图像为简单,之后的颈部和头模块将输出检测结果 :
相反,如果路由器将输入图像分类为困难图像,则多尺度特征将需要第二个backbone进一步增强,而 不是立即由 解码。特别地,通过复合连接模块 将多尺度特征 嵌入到 :
是CBNet DHLC模块。之后输入图像传入第二个backbone,通过依次对每个阶段对 相应元素求和来 增强第二个backbone特征。
检测结果可以通过第二个头和颈部模块 获得:
自适应路由
在主流目标检测器中,不同尺度的特征扮演不同校色。通常,浅层特征具有较强的空间信息和较小感受 野,更多地用于检测小目标。相比之下,深层特征具有较强语义特征和较大感受野,更多用于检测大型 目标。这个属性使得当预测图像困难分数时考虑多尺度信息是必要的。据此,本文设计了一种基于多尺 度特征的自适应路由,记为动态检测器提供一个简单而有效的决策器。
受到Squeeze-and-excitation模块启发,首先独立地汇聚多尺度特征 ,并将它们连接:
是全局平均池化, 是通道级合并。通过这些操作,将多尺度特征 压缩到 维度的向量 。之后通过两个全连接层映射该向量为困难分数 。
值得注意的,本文的路由计算负荷可以忽略,因为首先将所有多尺度特征集中到一个向量中。
优化策略
首先,联合训练级联检测器,训练目标:
在优化过程后,两个检测器可以检测目标,并在后续训练过程中冻结参数 。
之后训练自适应路由动态区分图像难度。这里定义路由参数为 ,预测其获得的困难分数为 路由能分配简单样本到快速检测器,困难样本到更准确的检测器。
然而实际实现这个是困难的,如果按照以下没有约束的优化过程优化路由器:
此时路由器会经常选择最准确的检测器因为它能得到更低的训练损失。如果简单地添加硬件约束:
此时将不得不试错调整超参 ,这会导致巨大的劳动力消耗。
为了克服上述挑战,为自适应路由提出了一种无超参优化策略。首先,基于图像两个检测器间对应训练损失差异定义难度标准。如果一张图片损失差异足够小,则认为该图像为简单样本,否则是作为困难样本。理想情况希望简单的一半图像经过第一个检测器,困难的另一半经过第二个检测器。
为了实现这点,引入一种自适应偏移平衡两个检测器损失,并通过梯度下降优化路由。实践中,首先计算训练集上第一个和第二个检测器之间的训练损失差的中值。本文路由的训练目标可以描述为:
用于奖励第一个检测器并惩罚第二个检测器。相关损失数值如图5所示。如果不存在奖励和惩罚, 第二个检测器损失总是小于第一个。当进行奖励和惩罚时,它们损失曲线相交并实现相交曲线。
这里主要训练目标是提供一种优化自适应路由的方法,通过在路由器引入难度分数 对所有参数 中 的梯度得到:
为了更好区分简单和困难图像,希望路由的优化方向与图像难度有关,即两个检测器之间损失差异。上述损失梯度符合这个期望。
变速推断
这里进一步提出一种简单有效的方法确定难度分数阈值,以实现仅使用一个动态检测器的变速推理。具体地。自适应路由输出一个难度分数,并在推理过程中根据一定阈值决定通过哪个检测器。因此我们设置不同阈值获得不同的精度-速度均衡。首先统计验证集困难分数 ,然后根据实际需求(如目标延迟) 可以获得路由的相应阈值。例如假定第一个检测器延迟为 ,第二个级联检测器延迟为 ,标延迟为 ,此时可以将困难样本的最大允许比例 计算为:
之后阈值 设置为:
定义为计算数据第 个分位数。值得注意的是,该阈值 在验证集和测试集都是鲁棒的,因为这两个数据集独立且同分布。
实验
表1给出了与SOTA高性能实时目标检测器的比较。本文DynamicDet可以获得更好地结果并取得新的SOTA精度与速度的平衡。Dy-YOLOv7-W6/50在58FPS上下获得了56.1 AP,这比YOLOv7-E6获得了+0.1%精度提升和快12%。Dy-YOLOv7-W6/100在46FPS速度下获得了56.8%精度,与YOLOv7-E6E有相近的精度但快39%。值得注意的,这些均衡只通过动态检测器获得而不是多个独立模型。
表2给出了在二阶段检测器的实验结果。可以看出本文方法与二阶段检测器也兼容,也能获得提升baseline的精度-速度均衡。Dy-Faster R-CNN ResNet50/90在与Faster RCNN ResNet101相当推断速度条件下提升bbox AP 1%。另外DynamicDet与基于Transformer backbone的检测器也兼容。Dy- Faster R-CNN Swin-T/90提升bbox AP到49.9,推断速度与Mask RCNN Swin-S相当。


