1、 为什么要做这个研究(理论走向和目前缺陷) ?
本文针对的还是目标检测的老大难问题:超小目标检测(或超大目标)。现存的对小目标检测无非是多尺度输入路线(图像金字塔),多尺度特征层独立预测路线(ssd,ssh),多尺度特征融合路线(inception(大感受野), RFB,即空洞卷积,u-net等),还有上述综合即多尺度特征融合即多尺度特征独立预测(FPN,PANet等),他们的问题就是对极小或极大目标依然无法很好的检测。
2、 他们怎么做这个研究 (方法,尤其是与之前不同之处) ?
本文提出依然用图像金字塔来解决这种问题,但是基于实验得出的结论是训练时的实例尺度和测试集的实例尺度相匹配才能得到较好的检测效果,故设置不同针对特定尺度实例进行训练的单一模型来个ensemble,使得各个模型只负责自己目标范围内的实例的训练(梯度回传)和检测。
3、 发现了什么(总结结果,补充和理论的关系)?
预训练模型如果是在分辨率较高的图片上训练的,迁移到新的模型上时,在分辨率较低的图片上微调也能取得不错的效果,说明分辨率高的模型对于分辨率低的模型检测有好处。Snip的思想就是让不同的模型针对各自目标分辨率的实例做处理,各做各的事,因为cnn不具有尺度不变形,只不过是通过大量的数据让他强行记住不同大小的实例的特征,这样学习无疑很难。本文还是存在很多问题,图像金字塔,漫道爆炸,现存爆炸,为此作者采取了一些列手段使得模型得以训练。
本文对极端尺度变化下的目标识别和检测技术进行了分析,通过在不同配置下的输入数据进行模型的训练,比较了不同检测模型的尺度特异性和尺度不变形。证明了CNN并不存在尺度不变形(难以同时对不同尺度目标都有很好的检测效果)。基于此,提出训练和测试的输入图片的尺度应该都是一样的。由于小的物体(在原始图片中的分辨率小)在更小的尺度输入(不对输入图片进行放大,反而缩小)下,很难检测。大的物体在更大的尺度输入下也很难检测,故提出一种新的训练策略:SNIP(scale normalization for image pyramids),作为图像尺度的函数,他能够选择性的回传不同大小实例的梯度。在coco上,单一模型mAP=45.7,整合三个模型达到48.3
1、 引言
深度学习在分类领域变现很好,但是貌似在检测领域就相对没那么好了,造成这种差距的原因是什么呢?目标尺度变化太大。
在imageNet分类数据集中,不同尺度的实例的大小分布比较均匀,但是在coco数据集中,大部分实例都是小目标,且尺度变化很大,尺度最大的10%和尺度最小的10%的尺度的20倍。
而且,在迁移学习中,预训练模型的输入图片尺度和微调模型的输入图片尺度不同也会造成模型性能下降,即所谓领域迁移(domain-shift)问题。
为解决上述问题,已有如下方案:
1) FPN思路,不同尺度fm负责不同大小的实例的检测。
2) 空洞卷积,增加感受野
3) 多尺度训练等。
上述解决思路还存在一些问题:
1)因为网络原始图片都比较小,上采样(原始图片放大后输入网络)是否必要?
2)对输入图片上采样后是否所有大小的实例都应参与训练?
本文训练了两类检测器:
特定尺度的一组检测器:每个检测器仅检测单一尺度范围的实例,多个这样的特定尺度检测组合在一起。每个尺度检测器也是只在这个尺度上的实例进行训练的,这会减轻领域迁移问题,但是也导致训练样本较少,效果会变差。
尺度不变的一个检测器:一个检测器负责所有尺度实例的检测,这无疑会增加学习的难度。
本文提出了一个新颖的训练策略:SNIP,能够在训练阶段减少尺度变化带来的不利影响,同时也不会减少训练实例。尺度不变形通过图像金字塔实现(即多个特定尺度的检测器,不是一个负责所有尺度的检测器),为了检测领域迁移问题,仅仅回传各特定尺度检测器负责尺度的anchor/roi的梯度。2、 相关研究
FPN中的混合高层fm对检测超小的物体没用,同样,混合低层fm对于检测超大的实例也没有用。分析:对于图片中超级小的实例(2525),即使图片放大两倍实例大小变为5050,,高层(conv5)中这个实例的位置信息已经失去。
3、 多尺度图像分类
原始的多尺度推断:
模型训练时的实例大小如果和测试的图片大小(训练都是在224224,测试时将imagenet中的图片先缩小到为4848, 6464, 8080,,,128128等的分辨率的,然后再放大到224224中进行推断)差距越大,分类效果会越差,先缩小到4848再放大到224224进行推断就效果最差。
如下图:CNN-S是在小分辨率图片上训练的(先将原始图片resize到4848,然后再resize到224224训练),CNN-B是在标准大小的图片上训练的(原始图片直接resize到224224训练),CNN-B-FT是在标准大小(224224)的图片上预训练的,然后在上采样(4848 –>224224)的图片上微调训练得到的。
由上(a)图知,测试图片的分辨率与训练图片的分辨率差距越大,性能下降越厉害。
由上(b)(c)知,CNN-B-FT比CNN-S效果略好,说明在高分辨率学习到的模型对低分辨率图片的检测有好处。
4、 背景
对Deformable-RFCN的介绍。
5、 选择变数据还是变尺度?
这一节分析图片分辨率的影响,实例大小的影响以及数据的变化对目标检测器的影响,均在14002000分辨率下测试。
训练:在8001400(记作800all)和14002000(记作1400all)两种分辨率下训练,在所有尺度的测试集测试。如下图所示,发现在1400all尺度下训练并没有比8001400下训练提高多少,这是因为,14002000虽然提高了小分辨率实例的检测效果,但是中等以及较大实例的检测会变差。
特定尺度的检测器:训练了另外一个140082000的检测器,这个检测器忽略所有中等到大实例进行训练,测试效果更差,这是由于丢失了外观和姿态的变化源带来的负面影响远远大于极端缩放带来的帮助。
多尺度训练(MST):就是普通的的多尺度训练方法。效果跟800all差不多,说明用适当尺度的目标训练模型并且要有足够的外观姿态的变化源也很重要。
6、 用图片金字塔做目标检测
思路就是同时保证有适当尺度范围并且有足够的外观姿态变化源的实例来训练模型。
6.1 SNIP
SNIP是MST(多尺度训练)的修改版。修改部分就是反向传播的地方,以前的多尺度训练时所有的实例在各个尺度输入图片大小时都要进行传播,这就可能导致很大的实例在输入图片resize到很大时很难检测到。而在snip中,将原始图片中不同大小的实例分配到不同输入分辨率图片所对应的的分支上进行反向传播。
看网络的实现细节感觉就是多个并行的检测模型,每个模型检测各自的尺度,最后各个模型得到的所有检测框在一起NMS一下,所以这跟前文提到的单一尺度模型训练*n有什么区别,而且前文提到了单一尺度模型训练会导致缺乏变化源使得模型性能下降,现在这种多尺度训练各个模型之间依然是独立无联系的,这样各个模型的性能依然是下降的,合在一起就能上升了么???