PP-YOLOE 论文学习

1. 解决了什么问题?

单阶段目标检测器能很好地平衡速度和精度,YOLO 系列是其中的代表。YOLOX 采用了 anchor-free 范式,加入了动态标签分配以提升检测表现,在 Tesla V100 上取得了 50.1 mAP,速度是 68.9 FPS。本文提出的 PP-YOLOE 为了适配各种硬件平台,没有使用可变形卷积、Matrix NMS 等操作。如下图,PP-YOLOE 在速度和精度方面领先于 YOLOX 和 YOLOv5。
PP-YOLOE 论文学习_第1张图片

2. 提出了什么方法?

2.1 PP-YOLOv2

基线模型使用的是 PP-YOLOv2,

  • 主干网络是 ResNet50-vd(使用可变形卷积);
  • neck 是带 SPP 层和 DropBlock 的 PAN;
  • head 是一个轻量级的 IoU-aware head;
  • 在主干网络中使用 ReLU,而在 neck 里面替换为 mish 激活函数;
  • 对于每个 ground-truth 目标,只分配一个 anchor box;
  • 除了分类损失、回归损失及 objectness 损失,也使用了 IoU loss 和 IoU-aware loss 来提升表现。

2.2 PP-YOLOE 改进

Anchor-free

Anchor 机制会引入不少的超参数,宽高比、个数等人为设计使其对其它数据集的泛化性不好。作者参照 FCOS,在每个像素点只放置一个 anchor point,为将 ground-truths 分配到相应的特征图上,设置三个检测 heads 的上界和下界。然后计算出边框的中心点,选择最接近该中心点的像素作为正样本。参照 YOLO 系列,预测一个 4D 向量 ( x , y , w , h ) (x,y,w,h) (x,y,w,h)完成回归。如下表,该改进能提高计算速度,但会牺牲 0.3 AP。下表中,作者在 COCO-val 上做的消融实验,使用 640 × 640 640\times 640 640×640的输入分辨率,精度是 FP32,在 Tesla-V100 上做的测试,没加后处理。
PP-YOLOE 论文学习_第2张图片

Backbone and Neck

SOTA 网络普遍采用了残差连接、密集连接等技术。残差连接缓解了梯度消失问题,可以看作为模型集成方法。密集连接通过多样的感受野来聚合中间特征,在目标检测任务上效果不错。CSPNet 使用 cross stage 密集连接,降低了计算量,却没有牺牲精度。该方法在 YOLOX、YOLOv5、VoVNet、TreeNet 等目标检测和实例分割任务上都有不错的表现。本文将残差连接和密集连接结合,提出了 RepResBlock,应用在主干网络和 neck 里面。

训练时,RepResBlock 结构如下图(b) 所示,推理时如下图© 所示。推理时,将 RepResBlock 重参数化为一个 RepVGG 风格的、ResNet-34 的残差模块,如下图(d) 所示。使用该 RepResBlock 构建主干网络和 neck。与 ResNet 相似,CSPRepResNet 包括一个主干和三个卷积层,后面是由 RepResBlock 组成的四个 stages。在每个 stage,cross stage partial connections 避免了 3 × 3 3\times 3 3×3卷积造成的大量的参数及计算开支。在主干网络中,作者使用了 ESE (Effective Squeeze and Extraction) 来施加通道注意力。作者使用了 RepResBlock 和 CSPRepResStage 来构建 neck,但是移除了 RepResBlock 和 ESE 层的短路连接。
PP-YOLOE 论文学习_第3张图片

作者使用了一个宽度乘数 α \alpha α和深度乘数 β \beta β来缩放主干网络和 neck。因此,我们可以得到一系列不同参数量和计算量的检测网络。主干网络的宽度设定范围是 [ 64 , 128 , 256 , 512 , 1024 ] \left[64,128,256,512,1024\right] [64,128,256,512,1024],深度设定范围是 [ 3 , 6 , 6 , 3 ] \left[3,6,6,3\right] [3,6,6,3]。Neck 的宽度设定范围为 [ 192 , 384 , 768 ] \left[192,384,768\right] [192,384,768],深度设定为 3。下表展示了不同模型的 α , β \alpha,\beta α,β取值。这些改进能带来 0.7 % 0.7\% 0.7% AP 的提升。
PP-YOLOE 论文学习_第4张图片

Task Alignment Learning

为了进一步提升准确率,作者使用了标签分配策略。YOLOX 使用 SimOTA 标签分配的策略。TOOD 使用 TAL 进一步解决了分类和定位错位的问题,包括一个动态标签分配和一个任务对齐损失。动态标签分配的意思就是随着检测结果和损失而变化。根据预测结果,它为每个 ground-truth 动态分配若干个 positive anchors。通过对齐这俩任务,TAL 取得了最高的分类得分和最准确的边框。

对于任务对齐损失,TOOD 使用了归一化的 t t t,即 t ^ \hat{t} t^代替损失中的目标值。归一化:对于每个实例, t ^ \hat{t} t^的最大值等于各 anchor 的 IoU 的最大值。分类损失使用了 BCE:
L c l s − p o s = ∑ i = 1 N p o s B C E ( p i , t ^ i ) L_{cls-pos}=\sum_{i=1}^{N_{pos}}BCE(p_i,\hat{t}_i) Lclspos=i=1NposBCE(pi,t^i)

作者研究了不同标签分配策略的表现,使用的模型就是上述优化后的模型,主干网络是 CSPRepResNet。在 COCO train2017 上训练了 36 个 epochs,在 COCO val 上验证。如下表,TAL 的表现最好。
PP-YOLOE 论文学习_第5张图片

Efficient Task-aligned Head

在目标检测中,分类和定位任务之间会有冲突。YOLOX 将 head 进行了解耦,以提升准确率。但是解耦后的 head 可能造成分类和定位任务相互独立,缺乏具体任务的学习。于是作者参照 TOOD 改进了 head,提出了 ET-head。如下图,作者使用 ESE 替换了 TOOD 的层注意力,将分类分支的对齐简化为短路连接,将回归分支的对齐替换为 DFL 层。通过这些变化,ET-head 在 V100 上提速了 0.9ms。
PP-YOLOE 论文学习_第6张图片

对于分类和定位任务,作者分别选用了 Varifocal Loss 和 DFL。Varifocal Loss 与 QFL 不同,它使用目标得分加权正样本的损失,这样 IoU 高的正样本对损失的贡献就更大,在训练时模型就更能关注于高质量样本。Varifocal Loss 和 QFL 都使用了 IACS 作为目标来训练,IACS 是分类得分和定位质量预测的联合表征,从而在训练和推理时都能保持一致。

对于 DFL,为了解决边框表征不灵活的问题,GFLv1 提出了使用 general distribution 预测边框。本文使用的损失函数如下:
L o s s = α ⋅ l o s s V F L + β ⋅ l o s s G I o U + γ ⋅ l o s s D F L ∑ i N p o s t ^ Loss=\frac{\alpha\cdot loss_{VFL}+\beta\cdot loss_{GIoU}+\gamma\cdot loss_{DFL}}{\sum_i^{N_{pos}}\hat{t}} Loss=iNpost^αlossVFL+βlossGIoU+γlossDFL

其中 t ^ \hat{t} t^是归一化的目标得分,如下表所示,ET-head 能提升约 0.5 % 0.5\% 0.5%AP。

你可能感兴趣的:(目标检测,学习)