竞赛刷榜神器!目标检测中的多尺度训练和测试

2020 年 10 月 24 日 CVer

点击上方“CVer”,选择加"星标"置顶

重磅干货,第一时间送达

本文者:Caleb Ge

https://mp.weixin.qq.com/s/lBhPjOiT_05WXwxFCXj2mQ

任何检测比赛,翻开它的leadborad前几名的tech reports,基本都可以看到Multi-scale Training和Mult-scale Test这两个名词,即多尺度训练和测试。见过这两个词的朋友一定非常多,但并不是所有见过它们的人都知道具体细节是怎么实施的,今天我们来扒一扒目标检测里的多尺度。下文将从one stage和two stage两个类别来讨论多尺度训练和测试


1. One Stage网络的Multi-scale Training


这是今天讨论的所有情况中最简单的一个。即每sample一个batch的数据喂入网络中训练时,都会先对采样出的数据resize+padding到一个随机大小。而这个大小的波动范围是实现预设好的。我们来看一下yolov2是怎么描述多尺度训练的:



每10个batches,就随机从{320,352,...,608}这些尺度里随机采样一个,作为后10个batches的训练尺度。yolov2测试时用的尺度是固定的416x416。当然可以用更大或者更小尺度去测试完全ok,这里的416x416只是论文为了报点取的速度和精度的权衡位置。


我们再来看MMDetection里的FCOS是如何做多尺度训练的:



解释下这里的[(1333,640), (1333, 800)]的含义。1333表示做预处理的时候,长边不可以超过1333,那相对的,640和800就代表短边所不能超过的值。在训练阶段,长边定死不超过1333,短边会随机从[640,800]中取一个32的整数倍的数。同一张图在面对(1333,640)和(1333,800)这两种限制的时候,resize后满足条件的面积很大概率是不一样的,通过控制短边的上限,就可以达到动态控制图片大小的目的。另外MMDetection是每个batch都会去随机选取短边尺度的。


Yolo和FCOS这两种方式虽然细节上有略微区别(当然本质是yolo和retinanet默认配置的区别),但不影响对多尺度训练的理解。即训练的时候用不同的尺度去帮助模型适应各种大小的目标,获得对尺寸鲁棒性。


多尺度训练一个明显的好处是:不增加推理时间。所以不管是业务还是竞赛,大胆上多尺度训练就对了。还有一些值得一说的地方:

1). 最后输出是全连接的网络不能用多尺度。原因很简单,尺度变了,最后一层的权重数量就对不上输入数量了。比如yolov1和带有flatten接fc的分类网络(如VGG)。

2). 多尺度训练,在合理范围内扩大多尺度的范围,是能获得更高收益的。比如上文中FCOS的短边范围[640, 800]。这个域扩充到[480, 960],还可以获得非常可观的收益。当然什么是合理的范围,需要各位自己去把控品味了。


2. One Stage网络的Multi-scale Testing


One Stage网络的测试也比较直观,见下图:



可以看到多尺度测试分为3步:


Step1. 各自尺度进行单尺度测试

Step2. 把所有尺度归一化到同一个尺度,如图,蓝色预测和绿色预测的框都是在不同大小的图片下出的,这样所有结果放到一起NMS是对不上的。所以,图里为了表示明白,把蓝色和绿色的预测框都按照图片相对橙色的大小比例进行缩放。

Step3. 缩放对齐后的结果放到一起做NMS。


需要注意的是,先对每个单尺度做NMS可以大量减少后续操作的时间,所以先进行一次NMS是比较合理的。


3. Two Stage网络的Multi-scale Training


Two Stage的代表作是Faster R-CNN。不过多尺度训练不分One Stage和Two Stage,做法是一样的。


4. Two Stage网络的Multi-scale Testing


这是今天讨论的4种情况中相对复杂的一种。流程图如下所示:



首先,不同尺度的图,通过Backbone+RPN和各自的NMS之后,会得到各自的proposals。这里对proposals的处理和one stage对结果的处理一样,要先把尺度统一到同一张图的大小上去,比如这里都统一Resize到深蓝色图的大小。然后合并到一起做阈值为0.7的NMS,得到Proposals。这时候的proposals的尺寸是相对于深蓝色图的大小,R-CNN阶段我们依然希望用多尺度,所以需要把proposals分别resize到橙色和绿色的图的尺寸上去,然后各自过R-CNN。后面的步骤与RPN和one stage是一样的,先各自做NMS,然后Resize到统一尺寸后再合并做阈值为0.5的NMS。


关于多尺度就介绍这么多,比赛里实际上还有两个测试时的技巧,分别是box voting和多尺度的输出限定,感兴趣的朋友可以加入目标检测bubbles星球了解更多内容。

目标检测综述下载

后台回复:目标检测二十年,即可下载39页的目标检测最全综述,共计411篇参考文献。


下载2


后台回复:CVPR2020,即可下载代码开源的论文合集

后台回复:ECCV2020,即可下载代码开源的论文合集

后台回复:YOLO,即可下载YOLOv4论文和代码


重磅!CVer-目标检测 微信交流群已成立


扫码添加CVer助手,可申请加入CVer-目标检测 微信交流群,目前已汇集4000人!涵盖2D/3D目标检测、小目标检测、遥感目标检测等。互相交流,一起进步!


同时也可申请加入CVer大群和细分方向技术群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。


一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加群


▲长按关注我们

麻烦给我一个在看

登录查看更多
0

相关内容

刷榜,是指通过非常规的技术手段提高应用在 App Store 或其它应用商店内排榜单的排名。是违反规定的一种行为。
【AAAI2021】协同挖掘:用于稀疏注释目标检测的自监督学习
少即是多?非参数语言模型,68页ppt
专知会员服务
23+阅读 · 2020年11月22日
专知会员服务
28+阅读 · 2020年10月24日
【CVPR 2020-商汤】8比特数值也能训练卷积神经网络模型
专知会员服务
25+阅读 · 2020年5月7日
【CVPR2020-谷歌】多目标(车辆)跟踪与检测框架 RetinaTrack
专知会员服务
44+阅读 · 2020年4月10日
目标检测中边界框的回归策略
极市平台
17+阅读 · 2019年9月8日
大盘点 | 性能最强的目标检测算法
极市平台
9+阅读 · 2019年7月8日
Kaggle实战目标检测奇淫技巧合集
极市平台
17+阅读 · 2019年6月1日
三分支网络——目前目标检测性能最佳网络框架
人工智能前沿讲习班
6+阅读 · 2019年3月5日
用 TensorFlow 目标检测 API 发现皮卡丘!
AI研习社
5+阅读 · 2018年6月4日
Faster R-CNN
数据挖掘入门与实战
4+阅读 · 2018年4月20日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Arxiv
5+阅读 · 2018年9月11日
Arxiv
8+阅读 · 2018年5月17日
Arxiv
15+阅读 · 2018年4月3日
Arxiv
7+阅读 · 2018年1月10日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关资讯
目标检测中边界框的回归策略
极市平台
17+阅读 · 2019年9月8日
大盘点 | 性能最强的目标检测算法
极市平台
9+阅读 · 2019年7月8日
Kaggle实战目标检测奇淫技巧合集
极市平台
17+阅读 · 2019年6月1日
三分支网络——目前目标检测性能最佳网络框架
人工智能前沿讲习班
6+阅读 · 2019年3月5日
用 TensorFlow 目标检测 API 发现皮卡丘!
AI研习社
5+阅读 · 2018年6月4日
Faster R-CNN
数据挖掘入门与实战
4+阅读 · 2018年4月20日
相关论文
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Arxiv
5+阅读 · 2018年9月11日
Arxiv
8+阅读 · 2018年5月17日
Arxiv
15+阅读 · 2018年4月3日
Arxiv
7+阅读 · 2018年1月10日
Arxiv
4+阅读 · 2016年12月29日
Top
微信扫码咨询专知VIP会员