点击上方“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等群。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
▲长按加群
▲长按关注我们
麻烦给我一个在看