YOLOF#
标题: You Only Look One-level Feature
作者: Qiang Chen, Yingming Wang, Tong Yang, Xiangyu Zhang, Jian Cheng, Jian Sun
机构: 中国科学院自动化研究所、中国科学院大学、MEGVII Technology
摘要: 本文重新审视了用于单阶段检测器的特征金字塔网络(FPN),指出FPN的成功归因于其解决目标检测优化问题的分而治之方法,而非多尺度特征融合。文章提出了一种替代方法,即使用单一级别的特征进行检测,这种方法简单高效。基于此,提出了You Only Look One-level Feature (YOLOF)。YOLOF通过两个关键组件——Dilated Encoder和Uniform Matching——带来了显著改进。在COCO基准测试上的广泛实验证明了该模型的有效性。YOLOF在没有使用transformer层的情况下,以更少的训练周期达到了与DETR相当的性能,同时在速度上比YOLOv4快13%。
1. 论文试图解决的问题: 论文试图解决单阶段检测器中特征金字塔网络(FPN)的复杂性和效率问题,并探索不依赖于FPN的单级别特征检测方法。
2. 是否是一个新的问题: 不是一个新的问题,但提供了一种新的解决方案。
3. 文章要验证的科学假设: 假设是:单级别的特征足以进行有效的目标检测,且可以通过特定的网络设计(如Dilated Encoder和Uniform Matching)来解决多尺度检测问题。
4. 相关研究:
特征金字塔方法:如FPN、SSD、UNet等。
单级别特征检测器:如YOLO系列、CornerNet、CenterNet等。
目标检测优化:如RetinaNet、DETR等。
领域内值得关注的研究员包括但不限于:Tsung-Yi Lin(FPN的作者)、Joseph Redmon(YOLO系列的作者)。
5. 解决方案的关键: YOLOF的关键在于Dilated Encoder和Uniform Matching两个组件。Dilated Encoder通过使用扩张卷积来增大特征的感受野,而Uniform Matching通过均匀匹配正样本锚点来解决单级别特征中的正样本不平衡问题。
6. 实验设计: 实验在COCO数据集上进行,比较了YOLOF与RetinaNet、DETR和YOLOv4等模型在目标检测任务上的性能。实验考虑了不同的网络架构、训练策略和数据增强方法。
7. 数据集和代码开源: 使用的数据集是COCO,代码已在GitHub上开源:https://github.com/megvii-model/YOLOF。
8. 实验及结果支持假设: 实验结果支持了假设,YOLOF在单级别特征上达到了与FPN相当的性能,同时在速度上超越了现有模型。
9. 论文贡献:
提出了YOLOF,一种简单高效的单级别特征目标检测模型。
引入了Dilated Encoder和Uniform Matching两个关键组件。
在COCO数据集上取得了有竞争力的结果,证明了单级别特征检测器的潜力。
10. 下一步工作:
探索将anchor-free机制引入YOLOF,以解决预定义锚点的局限性。
进一步优化网络结构,提高小目标的检测性能。
研究多尺度特征与单级别特征的融合,以提高模型的泛化能力。
回答问题
论文试图解决的问题: 解决单阶段检测器中FPN的复杂性和效率问题。
是否是一个新的问题: 不是新问题,但提供了新的解决方案。
文章要验证的科学假设: 单级别的特征足以进行有效的目标检测。
相关研究: FPN、SSD、YOLO系列、DETR等。
解决方案的关键: Dilated Encoder和Uniform Matching。
实验设计: 在COCO数据集上比较YOLOF与其他模型的性能。
数据集和代码开源: 使用COCO数据集,代码已开源。
实验及结果支持假设: 是的,实验结果支持了单级别特征进行有效目标检测的假设。
论文贡献: 提出YOLOF模型,引入关键组件,证明了单级别特征检测器的潜力。
下一步工作: 探索anchor-free机制,优化网络结构,提高小目标检测性能,研究多尺度特征融合。
图1展示了在COCO验证集上,不同编码器结构的box AP(平均精度)比较。具体来说,图中比较了四种编码器结构:Multiple-in-Multiple-out (MiMo)、Single-in-Multiple-out (SiMo)、Multiple-in-Single-out (MiSo) 和 Single-in-Single-out (SiSo)。
图表分析:
Multiple-in-Multiple-out (MiMo) - 图(a):
MiMo结构使用多个输入特征层(C3, C4, C5)并输出多个特征层(P3, P4, P5, P6, P7)。
这种结构与RetinaNet中的FPN相同。
在COCO验证集上的box AP为35.9。
Single-in-Multiple-out (SiMo) - 图(b):
SiMo结构使用单个输入特征层(C5)并输出多个特征层(P3, P4, P5, P6, P7)。
这种结构简化了输入特征层的数量,但仍然保留了多尺度特征输出。
在COCO验证集上的box AP为35.0。
Multiple-in-Single-out (MiSo) - 图(c):
MiSo结构使用多个输入特征层(C3, C4, C5)但只输出单个特征层(P5)。
这种结构减少了输出特征层的数量,专注于单一特征层的检测。
在COCO验证集上的box AP为23.9。
Single-in-Single-out (SiSo) - 图(d):
SiSo结构使用单个输入特征层(C5)并只输出单个特征层(P5)。
这种结构是最为简化的版本,既减少了输入特征层的数量,也减少了输出特征层的数量。
在COCO验证集上的box AP为23.7。
总结:
MiMo结构(图a)在COCO验证集上表现最好,box AP为35.9。这表明多输入多输出的特征金字塔网络在目标检测中具有较高的性能。
SiMo结构(图b)稍微简化了输入特征层,但仍然保留了多尺度特征输出,box AP为35.0,性能略有下降。
MiSo结构(图c)和SiSo结构(图d)都减少了输出特征层的数量,导致box AP显著下降,分别为23.9和23.7。
这些结果表明,多输入多输出的特征金字塔网络在目标检测中具有显著的优势,而单一特征层的检测方法虽然简单高效,但在性能上有所折扣。
通过这些比较,可以看出YOLOF提出的单一级别特征检测方法在简化模型结构的同时,仍然能够保持较高的检测性能。
图2展示了目标检测流水线的示意图。本文将检测流水线分为三个部分:骨干网络(Backbone)、编码器(Encoder)和解码器(Decoder)。
图表分析:
Backbone(骨干网络):
骨干网络是检测流水线的第一部分。
它接收输入图像并提取特征。
在图中,输入图像是一张长椅的照片,经过骨干网络处理后,生成特征图。
骨干网络通常是预训练的卷积神经网络(如ResNet、VGG等),用于提取图像的底层特征。
Encoder(编码器):
编码器是检测流水线的第二部分。
它接收来自骨干网络的特征图,并对这些特征进行进一步处理和分配,以便进行检测。
编码器的作用是将骨干网络提取的特征进行编码,使其更适合于目标检测任务。
在图中,编码器部分用蓝色表示,与图1中的编码器颜色一致。
Decoder(解码器):
解码器是检测流水线的第三部分。
它接收来自编码器的特征表示,并执行分类和回归任务,生成最终的预测框。
解码器的作用是将编码器处理过的特征解码为具体的检测结果,包括目标类别和边界框位置。
在图中,解码器部分用红色表示,最终生成了带有预测框的长椅图像。
总结:
图2清晰地展示了目标检测流水线的三个主要部分:骨干网络、编码器和解码器。
骨干网络负责提取输入图像的底层特征。
编码器对这些特征进行进一步处理和分配,使其适合于目标检测任务。
解码器则将处理过的特征解码为具体的检测结果,包括目标类别和边界框位置。
这种分而治之的方法有助于提高目标检测的效率和准确性。
通过这种结构化的检测流水线,本文提出的YOLOF模型能够在保持高效性的同时,达到与其他复杂模型相当的性能。
图3展示了采用MiMo和SiSo编码器的模型在COCO数据集上的FLOPs(浮点运算次数)、准确性(mAP)和速度(FPS)的比较。具体来说,图中比较了四种模型:RetinaNet MiMo(C=256)、RetinaNet SiSo(C=256)、RetinaNet SiSo(C=512) 和 YOLOF SiSo(C=512)。
图表分析:
FLOPs(浮点运算次数):
RetinaNet MiMo(C=256):总FLOPs约为120 GFLOPs,其中骨干网络、编码器和解码器分别占据不同的比例。骨干网络和解码器的FLOPs较高。
RetinaNet SiSo(C=256):总FLOPs约为60 GFLOPs,显著低于MiMo结构。骨干网络的FLOPs保持不变,但编码器和解码器的FLOPs显著减少。
RetinaNet SiSo(C=512):总FLOPs约为80 GFLOPs,略高于SiSo(C=256),但仍低于MiMo结构。增加通道数(C)导致FLOPs增加。
YOLOF SiSo(C=512):总FLOPs约为70 GFLOPs,低于RetinaNet SiSo(C=512),表明YOLOF在计算复杂度上更为高效。
mAP(平均精度):
RetinaNet MiMo(C=256):mAP为35.9,表现最佳。
RetinaNet SiSo(C=256):mAP为23.7,显著低于MiMo结构。
RetinaNet SiSo(C=512):mAP为24.6,略高于SiSo(C=256),但仍低于MiMo结构。
YOLOF SiSo(C=512):mAP为37.7,表现优于所有RetinaNet模型,表明YOLOF在保持高效性的同时,达到了更高的检测精度。
FPS(每秒帧数):
RetinaNet MiMo(C=256):FPS约为10,速度较慢。
RetinaNet SiSo(C=256):FPS约为20,速度显著提高。
RetinaNet SiSo(C=512):FPS约为15,速度有所下降,但仍高于MiMo结构。
YOLOF SiSo(C=512):FPS约为30,速度最快,表明YOLOF在计算效率上具有显著优势。
总结:
FLOPs:MiMo结构的FLOPs最高,而SiSo结构的FLOPs较低。YOLOF在保持较低FLOPs的同时,达到了更高的检测精度。
mAP:MiMo结构的mAP最高,但YOLOF的mAP更高,表明其在检测精度上具有优势。
FPS:SiSo结构的FPS显著高于MiMo结构,YOLOF的FPS最高,表明其在速度上具有显著优势。
通过这些比较,可以看出YOLOF模型在保持高效性的同时,达到了更高的检测精度和速度,证明了其在目标检测任务中的有效性和优越性。
图4展示了一个玩具示例,用于说明目标尺度与单一特征覆盖的尺度范围之间的关系。图中的横轴表示尺度,绿色圆点表示目标的尺度,橙色阴影区域表示特征的感受野覆盖的尺度范围。
图表分析:
(a) 限制的尺度范围:
图(a)表示特征的感受野只能覆盖有限的尺度范围。
绿色圆点表示目标的不同尺度,橙色阴影区域表示特征覆盖的尺度范围。
可以看到,特征的感受野覆盖的范围较小,只能覆盖一部分目标尺度,无法覆盖所有目标尺度。
这种情况下,特征可能无法有效检测到所有尺度的目标,尤其是那些超出感受野范围的目标。
(b) 扩大的尺度范围:
图(b)表示特征的感受野覆盖的尺度范围扩大。
绿色圆点表示目标的不同尺度,橙色阴影区域表示特征覆盖的尺度范围。
扩大的感受野范围使得特征能够覆盖较大的目标,但可能会遗漏较小的目标。
这种情况下,特征可以检测到较大的目标,但对较小目标的检测效果可能不佳。
(c) 多重感受野覆盖:
图(c)表示所有尺度都可以通过多个感受野覆盖。
绿色圆点表示目标的不同尺度,橙色阴影区域表示特征覆盖的尺度范围。
多个感受野覆盖使得特征能够覆盖所有目标尺度,无论目标是大是小。
这种情况下,特征可以有效检测到所有尺度的目标,确保检测的全面性和准确性。
总结:
图(a)展示了特征感受野覆盖范围有限的情况,无法覆盖所有目标尺度,可能导致检测效果不佳。
图(b)展示了特征感受野覆盖范围扩大的情况,能够覆盖较大的目标,但可能会遗漏较小的目标。
图(c)展示了通过多个感受野覆盖所有目标尺度的情况,确保了对所有尺度目标的有效检测。
通过这个玩具示例,可以看出特征感受野的覆盖范围对目标检测的影响。为了实现对所有尺度目标的有效检测,特征需要具备多重感受野覆盖的能力。这也解释了为什么多尺度特征融合在目标检测中是重要的,而YOLOF提出的单一级别特征检测方法通过有效的感受野设计,能够在保持高效性的同时,达到较高的检测性能。
图5展示了膨胀编码器(Dilated Encoder)的结构示意图。图中使用了1×1和3×3卷积层,以及四个连续的残差块(Residual Blocks)。具体结构如下:
图表分析:
输入和输出:
输入为C5特征图,输出为P5特征图。
C5特征图通过膨胀编码器处理后,生成P5特征图。
Projector(投影器):
投影器部分包含1×1和3×3卷积层。
1×1卷积层用于调整通道数,3×3卷积层用于提取局部特征。
投影器部分仅使用卷积层和批归一化层(BatchNorm Layer)。
Residual Blocks(残差块):
残差块部分包含四个连续的残差块,每个残差块由1×1和3×3卷积层组成。
所有卷积层后面都跟随一个批归一化层和一个ReLU激活层。
残差块的设计使得特征可以通过跳跃连接(skip connections)进行传递,保留了输入特征的原始信息,同时增加了网络的深度和非线性表达能力。
膨胀编码器的整体结构:
输入C5特征图首先通过投影器部分,进行通道数调整和局部特征提取。
然后,特征图进入残差块部分,经过四个连续的残差块处理。
最终,处理后的特征图通过一个跳跃连接与输入特征图相加,生成输出P5特征图。
总结:
投影器部分:包含1×1和3×3卷积层,用于调整通道数和提取局部特征,仅使用卷积层和批归一化层。
残差块部分:包含四个连续的残差块,每个残差块由1×1和3×3卷积层组成,所有卷积层后面都跟随批归一化层和ReLU激活层。
膨胀编码器的整体结构:通过投影器和残差块的组合,实现对输入特征图的深度处理和非线性表达能力的增强,最终生成输出特征图。
膨胀编码器的设计通过引入残差块和跳跃连接,既保留了输入特征的原始信息,又增加了网络的深度和表达能力,有助于提高目标检测的性能。
图6展示了在不同匹配方法下生成的正样本锚框(positive anchors)的分布情况,目的是展示生成的正样本锚框的平衡性。图中比较了四种匹配方法:Max-IoU、ATSS、Top1和Ours。正样本锚框根据目标的大小分为小(small)、中(medium)和大(large)三类。
图表分析:
Max-IoU:
生成的正样本锚框主要集中在大目标上,数量远远超过小目标和中目标。
这种方法导致了在目标尺度上的巨大不平衡,可能会影响检测小目标和中目标的性能。
ATSS:
生成的正样本锚框在小目标、中目标和大目标之间有一定的分布,但仍然存在不平衡现象。
ATSS通过在训练过程中自适应地采样正样本锚框,部分缓解了不平衡问题,但效果有限。
Top1:
生成的正样本锚框在小目标、中目标和大目标之间较为均匀分布。
Top1采用了统一匹配方法,使得正样本锚框在不同目标尺度之间更加平衡。
Ours:
生成的正样本锚框在小目标、中目标和大目标之间也较为均匀分布。
Ours方法同样采用了统一匹配方法,确保了正样本锚框在不同目标尺度之间的平衡性。
总结:
Max-IoU方法:生成的正样本锚框主要集中在大目标上,导致目标尺度上的巨大不平衡,可能影响小目标和中目标的检测性能。
ATSS方法:通过自适应采样部分缓解了不平衡问题,但仍存在一定的不平衡现象。
Top1和Ours方法:采用统一匹配方法,生成的正样本锚框在小目标、中目标和大目标之间较为均匀分布,确保了目标尺度之间的平衡性。
通过这些比较可以看出,统一匹配方法(如Top1和Ours)在生成正样本锚框时能够更好地平衡不同目标尺度,从而有助于提高目标检测的整体性能。Max-IoU方法虽然简单,但在目标尺度上的不平衡问题显著,可能会影响检测效果。ATSS方法通过自适应采样有所改进,但仍需进一步优化以达到更好的平衡性。
图7展示了DETR-R101和YOLOF-R101两种模型的错误分析。根据TIDE [2],图中显示了六种类型的错误:分类错误(Cls)、定位错误(Loc)、分类和定位错误(Both)、重复预测错误(Dupe)、背景错误(Bkg)和遗漏错误(Miss)。饼图显示了每种错误的相对贡献,柱状图显示了每种错误的绝对贡献。FP和FN分别表示假阳性和假阴性。
图表分析:
饼图分析:
DETR-R101:
分类错误(Cls):占比最大,约占总错误的30%。
定位错误(Loc):占比约为20%。
分类和定位错误(Both):占比约为10%。
重复预测错误(Dupe):占比最小,约为5%。
背景错误(Bkg):占比约为15%。
遗漏错误(Miss):占比约为20%。
YOLOF-R101:
分类错误(Cls):占比最大,约占总错误的30%。
定位错误(Loc):占比约为20%。
分类和定位错误(Both):占比约为10%。
重复预测错误(Dupe):占比最小,约为5%。
背景错误(Bkg):占比约为15%。
遗漏错误(Miss):占比约为20%。
柱状图分析:
DETR-R101:
假阳性(FP):分类错误(Cls)和背景错误(Bkg)贡献较大。
假阴性(FN):遗漏错误(Miss)贡献最大,其次是定位错误(Loc)。
YOLOF-R101:
假阳性(FP):分类错误(Cls)和背景错误(Bkg)贡献较大。
假阴性(FN):遗漏错误(Miss)贡献最大,其次是定位错误(Loc)。
总结:
分类错误(Cls):在两种模型中均占比最大,表明分类错误是主要问题。
定位错误(Loc):在两种模型中均占比约为20%,是第二大错误类型。
分类和定位错误(Both):占比相对较小,约为10%。
重复预测错误(Dupe):占比最小,约为5%。
背景错误(Bkg):占比约为15%,是一个显著的错误类型。
遗漏错误(Miss):占比约为20%,在假阴性中贡献最大。
通过这些分析可以看出,分类错误和遗漏错误是主要的错误类型,改进这两个方面的性能可能会显著提高模型的整体表现。背景错误和定位错误也是需要关注的问题。重复预测错误相对较少,但也不容忽视。
图8展示了四种编码器结构的详细设计:多输入多输出(MiMo)、单输入多输出(SiMo)、多输入单输出(MiSo)和单输入单输出(SiSo)。这些结构用于处理不同层次的特征图(C3、C4、C5),并生成不同层次的输出特征图(P3、P4、P5)。
图表分析:
(a) Multiple-in-Multiple-out (MiMo):
输入:C3、C4、C5特征图。
输出:P3、P4、P5特征图。
结构:每个输入特征图(C3、C4、C5)分别通过一系列卷积层(包括1×1和3×3卷积层)处理,生成对应的输出特征图(P3、P4、P5)。
特点:每个输入特征图独立处理,生成多个输出特征图,适用于多尺度特征融合。
(b) Single-in-Multiple-out (SiMo):
输入:C5特征图。
输出:P3、P4、P5特征图。
结构:输入特征图C5通过一系列卷积层(包括1×1和3×3卷积层)处理,生成多个输出特征图(P3、P4、P5)。
特点:单个输入特征图通过不同的卷积路径生成多个输出特征图,适用于从高层特征生成多尺度特征。
(c) Multiple-in-Single-out (MiSo):
输入:C3、C4、C5特征图。
输出:P5特征图。
结构:多个输入特征图(C3、C4、C5)通过一系列卷积层(包括1×1和3×3卷积层)处理,最终融合生成单个输出特征图P5。
特点:多个输入特征图融合生成单个输出特征图,适用于多尺度特征融合到单一尺度。
(d) Single-in-Single-out (SiSo):
输入:C5特征图。
输出:P5特征图。
结构:输入特征图C5通过一系列卷积层(包括1×1和3×3卷积层)处理,生成单个输出特征图P5。
特点:单个输入特征图生成单个输出特征图,结构简单,适用于单尺度特征处理。
总结:
MiMo结构:适用于多尺度特征融合,每个输入特征图独立处理生成多个输出特征图。
SiMo结构:适用于从高层特征生成多尺度特征,单个输入特征图通过不同路径生成多个输出特征图。
MiSo结构:适用于多尺度特征融合到单一尺度,多个输入特征图融合生成单个输出特征图。
SiSo结构:适用于单尺度特征处理,单个输入特征图生成单个输出特征图,结构简单。
这些编码器结构通过不同的设计策略,满足了不同的特征处理需求,适用于不同的目标检测任务。
图9展示了YOLOF(You Only Look One-level Feature)的结构草图,包含三个主要组件:骨干网络(Backbone)、编码器(Encoder)和解码器(Decoder)。图中“C5/D32”表示骨干网络的输出特征,其下采样率为32,通道数为C5_out。H和W分别表示特征图的高度和宽度。
图表分析:
(a) Backbone(骨干网络):
输入:原始图像。
处理:通过卷积神经网络(CNN)提取特征。
输出:C5/D32特征图,表示骨干网络的输出特征,其下采样率为32,通道数为C5_out。
(b) Encoder(编码器):
输入:来自骨干网络的C5/D32特征图。
处理:通过膨胀编码器(Dilated Encoder)进一步处理特征图。
输出:N×512×H×W特征图,其中N表示批量大小,512表示通道数,H和W表示特征图的高度和宽度。
(c) Decoder(解码器):
输入:来自编码器的N×512×H×W特征图。
处理:
特征图通过两个不同的路径进行处理:
第一条路径:特征图通过一个卷积层,生成用于分类的特征图。
第二条路径:特征图通过两个卷积层,生成用于回归的特征图。
输出:
分类分支:N×(C+1)×H×W特征图,其中C表示类别数,+1表示包含背景类别。
回归分支:N×4×H×W特征图,用于边界框回归。
总结:
骨干网络(Backbone):通过卷积神经网络提取特征,输出下采样率为32的特征图。
编码器(Encoder):通过膨胀编码器进一步处理特征图,输出通道数为512的特征图。
解码器(Decoder):将编码器的输出特征图分为两个路径,分别用于分类和回归。分类分支生成N×(C+1)×H×W特征图,回归分支生成N×4×H×W特征图。
YOLOF的设计通过简单高效的结构实现了目标检测任务,骨干网络提取特征,编码器进一步处理特征,解码器将特征图分为分类和回归两部分,分别进行目标分类和边界框回归。