作者 | 张凯
编辑 | CV 君
报道 | 我爱计算机视觉(微信 id:aicvml)
本文介绍 CVPR 2021 接管的指标检测论文 You Only Look One-level Feature。
原论文作者来自:中科院自动化所、中科院大学人工智能学院、中国科学院脑科学与智能技术卓越翻新核心、旷视科技。
0 动机
在高性能的指标检测网络中,特色金字塔网络(Feature Pyramid Network,FPN)是一个不可或缺的组成部分。作者认为 FPN 次要有 2 个作用:
其一是多尺度特色交融,进步了特色的丰盛水平;
其二是应用分治法(divide-and-conquer),将指标检测工作依照指标尺寸不同,分成若干个检测子工作。
为了摸索 FPN 的上述 2 个作用对检测器性能的奉献水平,作者做了一个试验,作者将检测器形象成如下图所示个 3 个组成部分
编码器(Encoder)解决 Backbone 提取的特色,将处理结果传输给解码器(Decoder)用于分类和回归。
FPN 能够看作一个 MiMo(Multiple-in-Multiple-out)编码器,作者还设计了 SiMo(Single-in-Multiple-out)、MiSo(Multiple-in-Single-out)、SiSo(Single-in-Single-out)编码器,这 4 种编码器的构造如下图所示:
上图中图(a)就是 RetinaNet 中的 FPN,方框左侧的 C3、C4、C5 代表 Backbone 输入的特色,方框右侧的 P3~P7 代表传入 Decoder 的特色。
别离应用图(b)、(c)、(d)中的构造代替 RetinaNet 中的 FPN,应用 ResNet-50 作为 RetinaNet 中的 Backbone,别离训练 4 个网络并在 COCO 验证集上测试,后果如下图所示:
从上图中能够看出,应用 MiMo 和 SiMo 作为编码器,性能相近;应用 MiSo 和 SiSo 作为编码器,性能较差。这种景象阐明了如下问题:
-
相比于 MiMo,SiMo 只应用 Backbone 输入的 C5 特色作为输出,应用 SiMo 作为编码器构建的网络性能根本与 MiMo 相当,阐明 Backbone 输入的 C5 曾经蕴含了足够的信息用于构建高性能检测器;
- 相比于 MiMo 和 SiMo,应用繁多输入的 MiSo 和 SiSo 作为编码器构建的网络性能较差,阐明应用“分治法”将指标检测问题以指标尺寸为根据合成为多个子问题,对于构建高性能网络的奉献很大。
通过上述试验可知,应用 Backbone 输入的繁多特色和分治法,即上图中图(b)的构造,就能够构建一个很好的检测网络。然而应用图(b)的构造会使得模型变宏大和简单,因为编码器要输入多个特色。
基于上述发现,作者提出了 YOLOF(You Only Look One-level Feature)网络,在 YOLOF 中,编码器只用到了 Backbone 输入的 C5 特色,同时防止应用上图中图(b)的 SiMo 简单构造,而是应用了图(d)的 SiSo 构造以缩小计算量。
应用 MiMo(即 FPN)的 RetinaNet、应用 SiSo 的 RetinaNet 和应用 SiSo 的 YOLOF 的计算量、帧率和在 COCO 数据集上的精度如下图所示:
Decoder 和 Encoder 是有强耦合关系的,因而 Decoder 的构造受 Encoder 输入特色的影响,所以作者将 Decoder 和 Encoder 的计算量叠加在一起显示。
上图中的 4 个模型均应用 ResNet-50 作为 Backbone,FLOPs 是在 COCO 验证集上前 100 张图片中将图片短边尺寸 resize 成 800 个像素计算失去,FPS 是在 2080Ti GPU 上测量,设置 batch size 为 1,应用 Detectron2 外面的测量工具,C 示意 Encoder 和 Decoder 应用的通道数量。
从上图能够看出,应用 SiSo 的 RetinaNet 在运行速度上优于应用 MiMo 的 RetinaNet,然而精度比拟低;而作者提出的 YOLOF 网络同样应用了 SiSo 的 Encoder,在放弃高帧率的同时领有高精度。
1 应用 Dilated Encoder 模块代替 FPN
依前文所述,应用 SiSo 代替 MiMo 会引起较大的性能损失,作者认为,SiSo Encoder 只应用了 Backbone 中的 C5 特色作为输出,而 C5 特色的感触野所对应的指标尺寸范畴是受限的,无奈应答指标检测场景中变动激烈的指标尺寸。如下图所示:
上图中绿色的点示意数据集中的多种指标尺寸,粉红色的区域代表特色可能无效表白的指标尺寸范畴,应用 C5 特色作为输出的 SiSo Encoder,会产生上图中图(a)所示的状况。
若应用空洞卷积(Dilated Convolution)操作以增大 C5 特色的感触野,则会产生上图中图(b)所示的状况,感触野变大,可能无效地表白尺寸较大的指标,然而对小指标表达能力变差。
作者提出了一个 SiSo Encoder 的新构造,将其称作 Dilated Encoder,该构造可能交融多种尺寸的感触野,从而能检测尺寸变动范畴大的多种指标,达到上图中图(c)所示的成果。
Dilated Encoder 的构造如下图所示:
从上图中能够看出,Dilated Encoder 将 Backbone 输入的 C5 特色作为输出,应用 1 ×1 卷积缩小通道数目,接着应用 3 ×3 卷积精炼语义信息,紧接着是 4 个间断的空洞残差单元(Dilated Residual Block),这 4 个空洞残差单元中 3 ×3 卷积的 dilation rate 不肯定相等。
应用 4 个间断的空洞残差单元能够在 one-level feature 中蕴含具备多种不同感触野的特色,以应答不同的指标尺寸。
2 解决 positive anchor 不平均问题
在 RetinaNet 中,如果某个 anchor 和指标的 ground truth 的最大 IoU 超过 0.5,则该 anchor 为 positive anchor,作者将这种选取 positive anchor 的办法称作 Max-IoU Matching。
因为 RetinaNet 的 Encoder 应用了 MiMo 构造,预约义的 anchor 数量很多,应用 Max-IoU 能够在 multi-level 上抉择和指标尺寸匹配的 positive anchor,因此能够产生大量的 positive anchor。
YOLOF 的 Encoder 应用了 SiSo 构造,相比于应用 MiMo 构造的 RetinaNet,预约义的 anchor 数量会少很多,若应用 Max-IoU Matching 抉择 positive anchor,ground truth 尺寸大的指标产生的 positive anchor 要多于 ground truth 尺寸小的指标产生的 positive anchor,如下图所示,这种景象会导致网络在训练时更关注大尺寸的指标,疏忽小尺寸指标。
为了解决 positive anchor 对于指标尺寸散布不平均的问题,作者提出了 Uniform Matching 办法:对于每个指标,都将和该指标 ground truth 最近的 k 个 anchor 作为该指标的 positive anchor,从而保障每个指标都有雷同数量的 positive anchor,如上图所示,保障网络训练时能兼顾尺寸大小不同的指标。
在理论利用中,为了防止一些极其状况,疏忽 Uniform Matching 办法中产生的与 ground truth 的 IoU 大于 0.7 的 negative anchor 和与 ground truth 的 IoU 小于 0.15 的 positive anchor。
3 YOLOF 网络结构
基于上述办法,作者构建了 YOLOF 网络,其构造如下图所示:
上面顺次介绍 YOLOF 网络的 Backbone、Encoder 和 Decoder。
3.1 Backbone
作者别离应用了 ResNet 和 ResNeXt 这 2 种 Backbone 实现 YOLOF,Backbone 应用了在 ImageNet 数据集上预训练的模型。对于 Backbone 的输入,作者实现了 2 个版本,其一为绝对于输出图像采样率为 32、通道数 2048 的 feature map,即网络结构图中的 C5;
其二为绝对于输出图像采样率为 16、通道数为 2048 的 feature map,即网络结构图中的 DC5。
3.2 Encoder
应用上文介绍的 Dilated Encoder 作为 YOLOF 的 Encoder。Dilated Encoder 将 Backbone 输入的特色作为输出,首先应用 1 ×1 卷积和 3 ×3 卷积缩小特色通道数至 512,而后应用 4 个间断的残差模块提取特色。
在每个残差模块中,首先应用 1 ×1 卷积将特色通道数缩小至原来 1 /4,而后应用 3 ×3 的空洞卷积增大感触野,最初应用 1 ×1 卷积将特色通道数裁减 4 倍。4 个残差模块中空洞卷积的 dilation rate 别离为 2、4、6、8。
3.3 Decoder
Decoder 局部与 RetinaNet 中的设置相似,次要有如下 2 个区别:
- 在回归分支中蕴含 4 个 Conv-BN-ReLU 操作,在分类分支中蕴含 2 个 Conv-BN-ReLU 操作;
- 回归分支中的每个 anchor 都有一个 objectness prediction,最终的分类得分由分类分支的输入乘以 objectness prediction 失去。
4 试验
YOLOF 应用 8 个 GPU 在 COCO 训练集上训练,batch size 为 64,优化器为 synchronized SGD,推理时应用的 NMS 阈值为 0.6。
作者将 YOLOF 与 RetinaNet 进行比照,训练实现后,在 COCO 验证集下测试,后果如下图所示,图中 schedule 为“1x”的模型在训练时将输出图片的最短边设置为 800 个像素,且最长边不超过 1333 个像素。
上图中最下面一组为应用了 Detectron2 中的设置训练的 RetinaNet;两头一组为应用了与 YOLOF 统一的设置训练的 RetinaNet,比方应用 generalized IoU 去掂量回归损失,在检测头中应用 GN 代替 BN 等;
最初一组为 YOLOF 的测试后果,表中的 YOLOF 应用 ResNet-50 作为 Backbone,YOLOF-R101 应用 ResNet-101 作为 Backbone,YOLOF-X101 应用 ResNeXt-101-64x4d 作为 Backbone。上图中的最初两行别离示意多尺度训练单尺度测试和多尺度训练多尺度测试的后果。
为了与 DETR 正当比照,YOLOF 模型应用了多尺度训练形式,在 COCO 验证集上进行测试,与 DETR 比照的试验后果如下图所示:
因为 YOLOv4 在训练时应用了数据加强和 3 阶段的训练方法,为偏心比照 YOLOF 同样应用了上述办法训练,并且将 Dilated Encoder 中残差模块的数量减少至 8 个,8 个残差模块中空洞卷积的 dilation rate 为 1、2、3、4、5、6、7、8。
应用 CSPDarkNet-53 作为 Backbone,应用 Backbone 输入的 DC5 特色,应用 LeakyReLU 代替 Encoder 和 Decoder 中的 ReLU,在 COCO 测试集上的试验后果如下图所示:
图中的 FPS 是依照 YOLOv4 的测试方法失去的,行将卷积层和 BN 层交融且将模型转换为半精度模型,进行 FPS 的测量。
5 总结
- 通过试验剖析了 FPN 胜利的最重要起因,即应用分治法(divide-and-conquer)解决指标检测问题;
- 提出 Dilated Encoder 构造用来提取多尺寸感触野的特色,代替了 FPN,减小了模型复杂度和计算量;
- 应用 Uniform Matching 办法解决 positive anchor 在尺寸不同的指标上散布不平均的问题;
- 以 Dilated Encoder 代替 RetinaNet 中的 FPN 模块,构建了 YOLOF,并通过试验证实了 YOLOF 的高效性。
源码:https://github.com/megvii-mod…
论文:You Only Look One-level Feature
仅用于学习交换!
END