SNIP - Scale Normalization for Image Pyramid,将目标在不一样大小下的梯度信息选择性反向传播(selectively back-propogates)。网络
经过上采样来保留good performance对于目标检测而言是相当重要的吗?为何要把480x480的图像上采样为800x1200?咱们能够用smaller strides来与训练ImageNet上的low resolution images而后fine-tune为目标数据集中的大小吗?dom
在与训练是应当将训练集中全部大小的目标都参与训练吗?仍是应该只取一部分大小的,如64x64~256x256。ide
对于目标检测任务,学习尺度变换的信息相当重要。学习
SDP、SSH、MS-CNN:对不一样层进行独立预测。 FPN、Mask R-CNN、RetinaNet:使用金字塔表示,并将浅层信息与高层信息结合来进行预测。测试
缺陷: 若小目标为25x25的大小,即便up-sampling后(2倍),仍只有50x50的大小,然而一般预训练的网络中样本目标大小为224x224,所以对于检测小目标而言,feature pyramid的做用是有限的。orm
研究因为训练和测试时出入图像的分辨率(resolution)不一样而引发的domain-shift效应cdn
所涉及的模型:blog
CNN-B:将InamgeNet中的样本缩小到48x48,64x64,80x80,96x96,128x128,而后上采样至224x224来模拟不一样的分辨率。ip
该实验模拟了训练数据的分辨率与测试数据的分辨率不一样时所带来的影响,结果以下图:ci
可见,在模型未训练过的分辨率上进行测试的结果会陷入局部最优(sub-optimal)。
在实验一的基础上,控制训练数据集与测试数据集的分辨率保持一致,仍选取5种分辨率,但各自训练不一样的结构,如48x48的图像,结构中的ResNet-101的第一层修改成stride 1, kernel_size 3x3,而96x96的图像预测模型第一层为stride 2,kernel_size 5x5。
卷积层输出计算式:N = [(W - F + 2 * P) / S] + 1 N:输出维度 W:输入维度 F:kernel维度 P:padding(在SAME计算时使用)
[(48 - 3) / 1] + 1 = 46 [(96 - 5) / 2] + 1 = 46
实验结果以下:
可见CNN-S的结果明显优于CNN-B,由此可得:用低分辨率的图像来训练模型,一次来检测低分辨率的目标是可行的。
由放大的低分辨率图像训练获得的CNN-B模型fine-tuning后获得CNN-B-FT模型。
该实验是为了说明基于高分辨率图像训练的模型也能够有效提取低分辨率特征。同时与CNN-S比较能够看出,下降分辨率图像上采样为原先2倍,比将stride缩小一半的方法效果更好。
数据集:COCO 基础模型:Deformable-RFCN
这是在目标检测数据集上进行的实验,实验方式与ImageNet上的图像分类实验类似。
用低分辨率(800x1200)的图像训练,用(1400x2000)的图像测试,两种分辨率的图像均由640x480的图像产生。
用两种分辨率(800x1400,1400x2000)下的全部目标类实体来训练检测器,记做800all和1400all。
由Table1所示,1400all的结果优于800all,这是由于1400all的训练与测试分辨率一致。
然而这种提高并不明显,做者认为,这是由于对于一些中等或大型的目标,通过放大后(640x480 ~ 1400x2000) 过大,致使没法正确区分。
所以,对于小目标检测而言,放大分辨率确实有效,但对于中大型的目标而言效果反而会变差。
训练一个分辨率为1400x2000的检测器,同时忽略全部80px以上的中大型目标(验证明验一的猜测),记为1400<80px。
这样获得的结果比800all更差,做者猜想是由于忽略这些中大型目标(约占30%)所带来的数据损失对模型效果影响更大。
用不一样尺度的图像来训练检测器,理论上应该会比较不错,但据结果仍然不如800all。
做者表示,这是由于训练时那些尺寸很是大或者很是小的目标会影响训练的效果。