Scale Match for Tiny Person Detection
WACV2020
中国科学院大学
论文:https://arxiv.org/abs/1912.10664
代码:https://github.com/ucas-vg/TinyBenchmark
创新点:
- 提出了一个称为TinyPerson的新基准,TinyPerson在海上和海滩场景中代表的人分辨率很低,主要是少于20个像素,为长距离和大量背景的微小物体检测打开了一个有希望的方向。
- 提出了一个尺度匹配的方法,使两个数据集之间的特征分布尽可能地一致。
Introduction
本文所作出的贡献主要有两个,一是在海上快速救援的背景下,提出了了TinyPerson这样一个小人群的数据集,并对野外微小物体检测提出了巨大挑战。这是具有远距离背景的远距离人检测的第一个基准。
另外作者通过实验发现,用于网络预训练的数据集和用于检测器学习的数据集之间的尺度失配(mis-match)可能会使特征表示和检测器性能下降。所以提出了一个尺度匹配的方法,使两个数据集之间的特征分布尽可能地一致。
Tiny Person Benchmark
用 G i j = ( x i j , y i j , w i j , h i j ) G_{ij}=(x_{ij},y_{ij},w_{ij},h_{ij}) Gij=(xij,yij,wij,hij)来描述第 i i i幅图像的第 j j j个目标框, w i j w_{ij} wij和 h i j h_{ij} hij是边界框的宽和高, W i j W_{ij} Wij和 H i j H_{ij} Hij是图像的宽和高。
目标的绝对大小为
目标的相对大小为
与其他的数据集对比来看,Tiny Person的目标相对更小。
Tiny Person主要有以下几个特点:
- 小,TinyPerson在海上和海滩场景中代表的人分辨率很低,主要是少于20个像素;
- 在TinyPerson中,人的纵横比有较大的差异,人的姿势和视角更加复杂,在多样性方面对现有数据集进行了有效补充;
- TinyPerson主要关注海边的人。
- 在TinyPerson中,有很多带有密集对象的图像(每个图像超过200个人)。
关于数据的标注规则,TinyPerson将人分为了两类,sea person和earth person,具体地:
- 船上的、躺在水里的、身体一半以上在水里的,是sea person
- 其他的是earth person
忽略的样本:
- 密集人群。可以识别为人,但是当用标准矩形标记时,人群很难一一分开;
- 难分区域。很难清楚地区分是否有一个或多个人;
- 水中的倒影。
Scale Match
当目标仅有十几个像素大小的时候,算法如何有效捕捉目标呢?事实上,作者没有发明新的检测算法,而是给算法增加训练样本,并对这些训练样本进行尺度调整,使其在尺度上和目标数据集(TinyPerson)统计属性上相似。
P s i z e ( s ; E ) P_{size}(s;E) Psize(s;E):用于增加样本的外部数据集中目标尺度的统计直方图
P s i z e ( s ; D t r a i n ) P_{size}(s;D_{train}) Psize(s;Dtrain):代表目标检测任务数据集中目标尺度的统计直方图
尺度匹配(Scale Match)的过程就是让这两个直方图分布相似。然后把尺度调整后的外部数据集加入训练集,训练算法模型。
G i j = ( x i j , y i j , w i j , h i j ) G_{ij} =(x_{ij},y_{ij},w_{ij},h_{ij}) Gij=(xij,yij,wij,hij)表示数据集 E E E中第 I i I_i Ii幅图像中第 j j j个目标,尺度匹配方法可以简单地描述为三个步骤:
其实就是取样、计算尺度缩放因子、尺度变换的过程, G i j G_{ij} Gij是比例匹配后的结果,算法描述如下:
首先在训练集 D t r a i n D_{train} Dtrain中随机采样,得到一个数据集的基本估计 P s i z e ( s ; D ) P_{size}(s;D) Psize(s;D)。 ( H , R ) (H,R) (H,R)用来估计原始数据集的分布情况, H H H就是直方图, R R R是直方图每个分箱的大小范围; R [ k ] − R[k]^- R[k]−和 R [ k ] + R[k]^+ R[k]+是直方图中第 k k k个bin的大小边界; K K K是直方图中的bin数; N N N是训练集 D t r a i n D_{train} Dtrain中的目标数目。
在resize进行尺度变化的时候,不是对单个的目标,而是对整幅图像做变换。另外,是否需要保持单调性?对于检测任务,这不是必须的,因为再怎么resize它也是可以被检测到的,但保持单调的话,
可以保持目标的自然相对大小。可以参照图像直方图来理解,只不过这里的分箱变成了目标大小。这里没太懂,应该是这个意思。
Experiments
作者试验了RetinaNet、FCOS、Faster RCNN-FPN以及一些anchor free和two-stage anchor的方法,作者发现在小目标检测领域,空间信息比更深的网络更加重要,two-stage比one-stage的效果好。
TOD 2020 冠亚军方案
在2020年4.20-7.25,基于Tiny Person数据集,举办了第一届小目标检测大赛,百度&北航拿到了第一名,西南交通大学拿到了第二名,四川大学第三名,下面对冠亚军方案进行简单介绍。
百度&北航 Team baidu-ppdet
采用了two-stage的网络结构,包括了Faster R-CNN、FPN、Deformable R-CNN、Cascade R-CNN。数据集分成了两部分,90%用来训练,10%作为测试。
数据增强:网络是在MSCOCO和Object365这两个数据集上与训练的,为了解决目标的尺度问题,该团队利用了Tiny Person论文中提出的scale match方法,把MSCOCO进行scale之后加入到原有的数据集中。这样 A P 50 AP_{50} AP50提高了2%~3%。
团队把Faster R-CNN with ResNet-101作为了baseline,此时 A P 50 = 57.9 % AP_{50}=57.9\% AP50=57.9%,加入多尺度训练之后, A P 50 AP_{50} AP50达到了65.38%。其中,对于Faster R-CNN和FPN,P3层可以最好的表示小目标的特征,但是语义信息缺失较多,所以作者用PAFPN来代替传统的FPN,提升了大约1.5%的 A P 50 AP_{50} AP50。
西南交大 Team STY-402
baseline采用了Faster R-CNN with ResNet-50,FPN,DCNv2,选取了P2~P6层,anchor设置为{ 1 2 2 , 2 4 2 , 4 8 2 , 9 6 2 , 19 2 2 12^2,24^2,48^2,96^2,192^2 122,242,482,962,1922}。在ResNet-50的stage3-5,全部使用DCN层。FPN之后全部加入BN层。最终采用了Res2Net-50。
数据增强上,使用了random horizontal flip、random cropping、random expanding、CutMix。
模型在MC COCO上进行了预训练,训练好像用到了商汤的MM Det,还用到了Paddle Det,经过加权融合后得到最终的结果。