扔掉FPN来做目标检测,YOLOF开源:你只需要看一层特征|CVPR2021
点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
导读
旷视科技&中科院对单阶段目标检测中的FPN进行了重思考,采用一级特征进行检测替换复杂的特征金字塔来解决优化问题,提出了YOLOF。该方法取得了与RetinaNet相当的性能且推理速度快2.5倍。
paper: https://arxiv.org/abs/2103.09460
code: https://github.com/megvii-model/YOLOF
本文是旷视科技&中科院孙剑团队在单阶段目标检测方面一次突破性的创新,它针对单阶段目标检测中的FPN(特征金字塔)进行了深入的分析并得出:FPN最重要的成分是分而治之的处理思路缓解了优化难问题。针对FPN的多尺度特征、分而治之思想分别提出了Dilated编码器提升特征感受野,Uniform Matching进行不同尺度目标框的匹配;结合所提两种方案得到了本文的YOLOF,在COCO数据集上,所提方案取得了与RetinaNet相当的性能且推理速度快2.5倍;所提方法取得了与YOLOv4相当的性能且推理速度快13%。
Abstract
本文对单阶段目标检测中的FPN进行了重思考并指出FPN的成功之处在于它对目标检测优化问题的分而治之解决思路而非多尺度特征融合。从优化的角度出发,作者引入了另一种方式替换复杂的特征金字塔来解决该优化问题:从而可以仅仅采用一级特征进行检测。基于所提简单而有效的解决方案,作者提出了YOLOF(You Only Look One-level Feature)。
YOLOF有两个关键性模块:Dilated Encoder与Uniform Matching,它们对最终的检测带来了显著的性能提升。COCO基准数据集的实验表明了所提YOLOF的有效性,YOLOF取得与RetinaNet-FPN同等的性能,同时快2.5倍;无需transformer层,YOLOF仅需一级特征即可取得与DETR相当的性能,同时训练时间少7倍。以大小的图像作为输入,YOLOF取得了44.3mAP的指标且推理速度为60fps@2080Ti,它比YOLOv4快13%。
本文的贡献主要包含以下几点:
FPN的关键在于针对稠密目标检测优化问题的“分而治之”解决思路,而非多尺度特征融合;
提出了一种简单而有效的无FPN的基线模型YOLOF,它包含两个关键成分(Dilated Encoder与Uniform Matching)以减轻与FPN的性能差异;
COCO数据集上的实验证明了所提方法每个成分的重要性,相比RetinaNet,DETR以及YOLOv4,所提方法取得相当的性能同时具有更快的推理速度。
Introduction
本文主要针对单阶段检测器中的FPN的两个重要因素进行了研究,作者以RetinaNet为基线,通过解耦多尺度特征融合
、分而治之
进行实验设计。作者将FPN视作多输入多输出编码器(MiMo,见下图),它对骨干网络的多尺度特征进行编码并为后接的解码器提供多尺度特征表达。
为进行更好的对比分析,作者设计了MiMo、SiMo、MiSo、SiSo等四种类型的解码器,见上图。令人惊艳的是:SiMo编码器仅仅采用C5特征且不进行特征融合即可取得与MiMo编码器相当的性能,且性能差异小于1mAP。相反,MiSo编码器的性能则出现了显著下降。这个现象意味着:
C5包含了充分的用于检测不同尺度目标的上下文信息,这促使SiMo编码器可以取得与MiMo相当的结果;
多尺度特征融合带来的收益要远小于分而治之带来的收益,因此多尺度特征融合可能并非FPN最重要的影响因素;相反,分而治之将不同尺度的目标检测进行拆分处理,缓解了优化问题。
Cost Analysis of MiMo Encoders
如前所述FPN的成功在于它对于优化问题的解决思路,而非多尺度特征融合。为说明这一点,作者对FPN(即MiMo)进行了简单的分析。
以RetinaNet-ResNet50为基线方案,作者将检测任务的流水线分解为三个关键部分:骨干网络、Encoder以及Decoder。下图给出了不同部分的Flops对比,可以看到:
相比SiMoEncoder,MiMoEncoder带来显著的内存负载问题(134G vs 6G);
基于MiMoEncoder的检测器推理速度明显要慢于SiSoEncoder检测器(13FPS vs 34FPS);
这个推理速度的变慢主要是因为高分辨率特征部分的目标检测导致,即C3特征部分。
基于上述分析,作者期望寻找另一种解决优化问题的方案,且保持检测器简单、精确、快速。
Method
受上述目标驱动以及新发现:C5特征包含足够的信息进行大量目标检测,作者尝试用简单的SiSoEncoder替换复杂的MiCoEncoder。但是,这种简单的替换会带来显著性的性能下降(35.9mAP vs 23.7mAP),见上图。对于这种情况 ,作者进行了仔细分析得出SiSoEncoder性能下降的两个重要原因:
The range of scales matching to the C5 feature's receptive field is limited
The imbalance problem on positive anchors
接下来,作者将针对这两个问题进行讨论并提出对应的解决方案。
Limited Scale Range
识别不同尺寸的目标是目标检测的一个根本挑战。一种常见的方案是采用多级特征。在MiMo与SiMoEncoder检测器中,作者构建了不同感受野的多级特征(C3-C7)并在匹配尺度上进行目标检测。然而,单级特征破坏了上述游戏规则,在SiSoEncoder中仅有一个输出特征。
以下图(a)为例,C5特征感受野仅仅覆盖有限的尺度范围,当目标尺度与感受野尺度不匹配时就导致了检测性能的下降。为使得SiSoEncoder可以检测所有目标,作者需要寻找一种方案生成具有可变感受野的输出特征,以补偿多级特征的缺失。
在C5特征的基础上,作者采用堆叠扩张卷积方式提升其感受野。尽管其覆盖的尺度范围可以在一定程度上扩大,但它仍无法覆盖所有的目标尺度。以上图(b)为例,相比图(a),它的感受野尺度朝着更大尺度进行了整体的偏移。然后,作者对原始尺度范围与扩大后尺度范围通过相加方式进行组合,因此得到了覆盖范围更广的输出特征,见上图(c)。
上图给出了采用本文所提SiSoEncoder结构示意图,作者称之为Dilated Encoder。它包含两个主要成分:Prejector与Residual Block。投影层采用卷积,然后采用卷积提取上下文语义信息(作用类似FPN);然后堆叠四个不同扩张因子的残差模块以生成多感受野的输出特征(覆盖所有的目标尺度)。
Imbalance Problem on Positive Anchors
正锚点的定义对于目标检测中的优化问题尤其重要。在基于锚点的检测方案中,正锚点的定义策略主要受锚点与真实box之间的IoU决定。在RetinaNet中,如果IoU大于0.5则锚点设为正。作者称之为Max-IoU matching
。
在MiMoEncoder中,锚点在多级特征上以稠密方式进行预定义,同时按照尺度生成特征级的正锚点。在分而治之的机制下,Max-IoU匹配使得每个尺度下的真实Box可以生成充分数量的正锚点。然而,当作者采用SiSoEncoder时,锚点的数量会大量的减少(比如从100K减少到5K),导致了稀疏锚点。稀疏锚点进一步导致了采用Max-IoU匹配时的不匹配问题。以下图为例,大的目标框包含更多的正锚点,这就导致了正锚点的不平衡问题,进而导致了检测器更多关注于大目标而忽视了小目标。
为解决上述正锚点不平衡问题,作者提出了Uniform Matching
策略:对于每个目标框采用k近邻锚点作为正锚点,这就确保了所有的目标框能够以相同数量的正锚点进行均匀匹配。正锚点的平衡确保了所有的目标框都参与了训练且贡献相等。在实现方面,参考了Max-IoU匹配,作者对Uniform matching
中的IoU阈值进行设置以忽略大IoU负锚点和小IoU正锚点。
YOLOF
基于上述解决方案呢,作者提出了一种快速而直接的单级特征检测框架YOLOF,它由骨干网络、Encoder以及Decoder构成,整体结构如下图所示。
BackBone。在所有模型中,作者简单的采用了ResNet与ResNeXt作为骨干网络,所有模型在ImageNet上与训练,输出C5特征该通道数为2048,下采样倍率为32;
Encoder。在这部分,作者参考FPN添加了两个投影层,将通道数降到512,然后堆叠四个不同扩张因子的残差模块;
Decoder。在这部分,作者采用了RetinaNet的主要设计思路,它包含两个并行的任务相关的Head分别用于分类和回归。作者仅仅添加两个微小改动:(1) 参考DETR中的FFN设计让两个Head的卷积数量不同,回归Head包含4个卷积而分类Head则仅包含两个卷积;(2) 作者参考AutoAssign在回归Head上对每个锚点添加了一个隐式目标预测。
Other Detail。正如前面所提到的YOLOF中的预定义锚点是稀疏的,这会导致目标框与锚点之间的匹配质量下降。作者在图像上添加了一个随机移动操作以缓解该问题,同时作者发现这种移动对于最终的分类是有帮助的。
Experiments
为说明所提方案的有效性,作者在MS COC数据集上与RetinaNet、DETR、YOLOv4进行了对比。
上表给出了所提方法与RetineNet在COCO数据集上的性能对比。从中可以看到:
YOLOF取得了与改进版RetinaNet+相当的性能,同时减少了57%的计算量,推理速度快了2.5倍;
当采用相同骨干网络时,由于仅仅采用C5特征,YOLOF在小目标检测方面要比RetinaNet+弱一些(低3.1);但在大目标检测方面更优(高3.3);
当YOLOF采用ResNeXt作为骨干网络时,它可以取得与RetinaNet在小目标检测方面相当的性能且推理速度同样相当。
经由多尺度测试辅助,所提方法取得了47.1mAP的指标,且在小目标方面取得了极具竞争力的性能31.8mAP。
上图给出了所提方法与DETR的性能对比。从中可以看到:
YOLOF取得了与DETR相匹配的的性能;
相比DETR,YOLOF可以从更深的网络中收益更多,比如ResNet50时低0.4,在ResNet10时多了0.2;
在小目标检测方面,YOLOF要优于DETR;在大目标检测方面,YOLOF要弱于DETR。
在收敛方面,YOLOF要比DETR快7倍,这使得YOLOF更适合于作为单级特征检测器的基线。
最后,作者再来看一下所提方法与YOLOv4的性能对比(注:这里采用了与YOLOv4类似的数据增强方法,并采用了三阶段训练方案,同时对骨干网络的最后阶段进行了调整)。从上表作者可以看到:
YOLOF-DC5取得了比YOLOv4快13%的推理速度,且性能高0.8mAP;
YOLOF-DC5在小目标检测方面弱于YOLOv4,而在大目标检测方面显著优于YOLOv4;
这也就意味着:单级检测器具有极大的潜力获得SOTA速度-精度均衡性能。
本文仅做学术分享,如有侵权,请联系删文。
下载1
在「3D视觉工坊」公众号后台回复:3D视觉,即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。
下载2
在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总,即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。
下载3
在「3D视觉工坊」公众号后台回复:相机标定,即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配,即可下载独家立体匹配学习课件与视频网址。
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近3000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
扔掉FPN来做目标检测,YOLOF开源:你只需要看一层特征|CVPR2021相关推荐
- 我扔掉FPN来做目标检测,效果竟然这么强!YOLOF开源:你只需要看一层特征
作者丨happy 编辑丨极市平台 导读 旷视科技&中科院对单阶段目标检测中的FPN进行了重思考,采用一级特征进行检测替换复杂的特征金字塔来解决优化问题,提出了YOLOF.该方法取得了与Reti ...
- CVPR 2020 SEPC论文解析:使用尺度均衡金字塔卷积做目标检测
点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 导读 只说重要的,计算量基本不变,涨AP,3.5个点! 论文:https://a ...
- 【论文解读】CVPR 2020 SEPC论文解析:使用尺度均衡金字塔卷积做目标检测
导读 只说重要的,计算量基本不变,涨AP,3.5个点! 论文:https://arxiv.org/abs/2005.03101 代码:https://github.com/jshilong/SEPC ...
- lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
文章目录 1 频率 1.1 频率定义 1.2 频率的计算公式 1.3 频率单位换算 1.4 频率概念使用范畴 1.5 频率的具体使用场景 2 光 2.1 光的定义 2.2 光的传播速度 3 激光 3. ...
- 收藏 | 使用合成数据集做目标检测
点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者:Sergey Nikolenko 编译:ronghuaiyang | AI公园 AI博士笔记 ...
- FCOS—分割思想做目标检测
1 介绍 FCOS是一个Anchor Free模型,基于FCN的逐像素目标检测算法,实现了无提议(Proposal free)的解决方案,并且提出了中心度Center ness的思想. 2 优势 通过 ...
- 干货|使用合成数据集来做目标检测
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Sergey Nikolenko 来源丨AI公园 编辑丨极市平 ...
- 使用合成数据集来做目标检测:目标检测的介绍
作者:Sergey Nikolenko 编译:ronghuaiyang 来源:AI公园 导读 本文讨论使用生成数据集来做目标检测的一些基础概念. 今天,我们开始一系列专门讨论一个特定的机器学习问题,这 ...
- 【浙大出品】基于扩展FPN的小目标检测方法
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者:黄浴 知乎链接:https://zhuanlan.zhihu.com/p/1 ...
最新文章
- 如何设计权限管理模块
- 一文详解非线性优化算法:保姆级教程-基础理论
- 深入理解JavaScript系列(2):揭秘命名函数表达式(转)
- 自学python转行-强烈建议|转行Python最好看一下这篇文章
- winsock 错误
- OpenCASCADE绘制测试线束:拓扑命令之扫掠Sweeping
- ios高级开发之多线程(一)
- 李国庆俞渝撕破脸,当当喊话:冲动是魔鬼 冷静下来吧
- 干货 | 高效阅读英文文献你必须知道的技巧
- 窥探源码,让我更加优雅的使用Kafka生产者!
- 【未解决】【Linux环境】IDEA下搜狗输入法无法光标跟随
- Matlab中插值函数汇总及使用说明
- 重估维信金科:担保压身,负重难行
- c语言整型常量后加l或u,《软考程序员》整型常量
- xgboost缺失值处理
- 在家快发霉了?数据告诉你,网友们都怎么打发时间 | DT数说
- 软件测试中系统的功能测试,软件测试中的43个功能测试点(下)
- 在MMClassification中使用Swin-Transformer开始一个分类任务
- Gta4 微软服务器,R星发布《GTA4》Win10补丁 业界良心从不令人失望
- iOS 指纹、Face ID验证 --- LocalAuthentication
热门文章
- 刘澜:北大影响力笔记
- 【论文笔记】Exploring and Distilling Posterior and Prior Knowledge for Radiology Report ... (CVPR 2021)
- Mac 卸载Java
- windows10安装vue.js
- lgg8配置_LG G8 ThinQ正式发布,配置与颜值不成正比的洋货
- 百趣代谢组学资讯:代谢流与脂质组手段探究肝癌细胞抗放疗真相
- mysql关键字简介(附简单使用说明)
- 安全库存系列-安全库存、安全库存共享、安全库存与可用性检查
- HTTPS 简介及使用官方工具 Certbot 配置 SSL 安全证书详细教程
- php如何登陆后才能看见,让WordPress的作者在后台只能看到自己的文章