论文的第4章,翻译理解如下。
4.实践
我们在普遍使用的PASCALVOC 2007, 2012和MSCOCO数据集(各自有20多万个对象类别)上实施了试验。对象检测性能是用mAP(平均精度均值)衡量的。
4.1.基于PASCALVOC2007的消融研究
首先我们调查DSOD框架的每个组件和设计原则。结论主要总结在Table2和Table3里了。我们为了这个消融研究在PASCALVOC2007(带有DSOD300的)上设计了若干个受控的试验。一个一致的设置被推行到所有试验上,直到一些组件或结构被审查。我们用来自VOC2007和2012的组合训练集来训练模型,在VOC2007测试集上测试。
4.1.1致密块的配置
首先我们调查在主干子网里的致密块的不同配置的影响
迁移层的压缩因子。我们比较在DenseNets的迁移层里的2个压缩因子(=0.5, 1)。结果显示在Table3(rows 2 and3)里。压缩因子为1意味着在迁移层没有特征地图的减少,而当是0.5时意味着特征地图的一半被减少了。结果显示1产生了比0.5时高2.9%的mAP。
#在瓶颈层的通道。显示在Table3(rows 3 and 4)里,我们观察到宽阔的瓶颈层提升了很大(4.1%mAP)性能。
#在第一个卷积层的通道。我们观察到在第一个卷积层里的大数量的通道是有利的,带来了1.1%mAP的提升(Table3 rows 4 and 5)。
增长率。大的增长率k被发现是非常好的。我们观察到表3里的4.8%mAP的提升(rows5 and 6),是在4k瓶颈通道的情况下,当k从16增长到48的时候。
4.1.2设计原则的有效性
现在我们尽早详细的证明关键设计原则的有效性。
无需目标框架。我们试着用基于目标的框架如FasterR-CNN/ R-FCN来训练目标检测。然而训练过程未能收敛在所有我们尝试的网络结构上(VGGNet,ResNet, DenseNet)。进一步我们尝试了用无目标框架SSD来训练目标检测。这个训练成功收敛了,但给出了非常糟的结果(69.6%for VGG),与来自预训练模型(75.8%)的好调整的情况相比较的话,显示在Table4。这个试验证实了选择无目标框架的设计原则。
深度监督。我们试着深度监督来训练目标检测。我们的DSOD300获得了77.7%的mAP,比用VGG16(69.6%)训练(不带深度监督的)的SSD300S好很多。也比用SSD300(75.8%)微调的结果要好。
过渡共享池化层。我们比较无设计层(仅3个致密块)的情况与有设计层(在我们的设计里是4个致密块)的情况。有过渡共享池化层的网络结构带来了1.7%的性能提升,这证实了这层的效果。
StemBlock. 在Table3 (rows 6 and 9)里看到了,stemblock提高了性能从74.5%到77.3%。这证实了我们的推测,即用stemblock能保护原始输入图像免受信息损失。
致密预测结构。我们分析来自3个方面的致密预测结构:速度,准确性,特征(参数)。显示在Table4里,有致密前端结构的DSOD在TitanX GPU上运行比一般结构(17.4fps vs. 20.6 fps) 稍微地下降,由于来自额外的降采样block的开销。然而,致密结构把mAP从77.3%提升到77.7%,且把参数数量从18.2M降低到14.8M。我们也试着用目标的致密预测层代替SSD的预测层。在VOC2007测试集上的准确率从75.8%(一般SSD)被提升到76.1%(用了预训练模型),从69.6%到70.4%(共享训练模型),当用VGG-16 模型作为backbone。这个验证了致密预测层的有效性。
如果在ImageNet上预训练怎么样?有兴趣的是看看用ImageNet预训练的backbone网络的DSOD的性能。我们训练了一个在ImageNet上的轻量的backbone网络DS/64-12-16-1,其包含了在验证集(比VGG-16稍差些)上的66.8%(top-1)准确率和87.8%(top-5)准确率。在微调之后在“07+12”训练集上的整个检测框架,我们在VOC2007 测试集上实现了 70.3%mAP。对应的training-from-scratch方案获得了70.7%的准确率,其有轻微的变好。将来的工作将更彻底的研究这点。
4.1.3运行时分析
推论的速度显示在Table4的第6列。对300300的输入,我们的全DSOD在单独的TitanX GPU 上用一般的预测结构可以在48.6ms(20.6fps)内处理一个图片,用致密预测结构则是用了57.5ms(17.4 fps)。作为比较, R-FCN在ResNet-50 上以90ms(11 fps)运行, 在ResNet-101上以110ms(9 fps)运行。 SSD300在ResNet-101上以82.6ms(12.1 fps) 运行,在 VGGNet上以21.7ms(46 fps) 运行。另外,我们的模型仅用了比带VGGNet的SSD300网络的1/2的参数数量,比带ResNet-101的SSD300网络的1/4的参数数量,比带VGGNet 的Faster R-CNN网络的1/10的参数数量。一个轻量版的DSOD(10.4M参数,w/o any speed optimization) 能以25.8fps运行,仅 1%mAP损失。
4.2.在 PASCALVOC2007上的结果
模型是基于VOC2007 训练集和VOC2012 训练集(“07+12”)来被训练的。我们使用了128为批大小。注意这个批大小是GPU内存的容量以外的(一个8个GPU服务器,每个都有12GB内存)。我们用了一个小技俩,通过积累梯度超过2个训练迭代来克服了GPU内存限制,已经在Caffe平台上实现了。初始学习率设置成0.1,然后在每20k迭代后被除以10。当到达100K迭代时训练完成了。如下,我们用一个0.0005的权重衰减, 0.9的动量。所有卷积层用“xavier”方法初始化。Table 4展示了我们在VOC2007测试集上的结果。 SSD300是被更新的SSD结果,用了新的数据增强技巧。我们的用一般连接的DSOD300获得了77.3%,比SSD300(77.2%)的稍好一些,用致密预测结构的DSOD300提升到了77.7%。之后加了COCO作为训练数据,性能也提升到81.7%。
4.3.在 PASCALVOC2012上的结果
对 VOC2012数据集,我们用了 VOC2012训练集, VOC2007训练集及测试集来训练,在 VOC2012测试集上来测试。初始化学习率为首次30K的迭代被设置成0.1,之后每20K迭代就被除以10。总迭代数量是110K。其他设置是与VOC2007 上实践的一样。 DSOD300上的结果显示在Table 4。DSOD300获得了76.3%的mAP,总比SSD300(75.8%)好很多。
4.4.在 MSCOCO 上的结果
最后我们在MSCOCO 数据集上验证 DSOD。MSCOCO包含了用来训练的80K图片,验证用的40K,测试用的20K。如下,我们用训练集(训练集+验证集)来训练。批大小是被设置成128。初始化学习率为首次80K的迭代被设置成0.1,之后每60K迭代就被除以10。总迭代数量是320K。
结果总结在Table6里。我们DSOD300在测试集上实现了29.3%/47.3%,比带有大的边缘的基准SSD300作的更好。我们的结果与单尺度的R-FCN是可比较的,接近于用ResNet-101作为预训练模型的R-FCNmulti-sc。有趣的是,我们观察到我们的用0.5IoU 的结果比R-FCN低,但我们[0.5:0.95]的结果是好一些或持平。这表明我们的预测定位在大的重叠设置之下是比R-FCN更准确。这是合理的,我们的小对象检测的准确性比R-FCN是稍微低的,因为我们输入图像size(300300)比R-FCN的(6001000)小很多。即使有这个劣势,我们的大对象检测准确率仍然比R-FCN好很多。这进一步论证了我们的方法的有效性。