最近,由复旦大学、清华大学和英特尔中国研究院合作提出的一种新型的目标检测方法 (DSOD) 被国际计算机视觉顶级会议ICCV 2017接收。论文标题为:DSOD: Learning Deeply Supervised Object Detectors from Scratch。
论文地址:https://arxiv.org/abs/1708.01241。论文代码:https://github.com/szq0214/DSOD。
论文在Arxiv放出之后,在社交网络上引起广泛关注。本文对这个工作做一个详细的解读。
目标检测存在的几个痛点
目标检测 (Object Detection) 作为一项重要的视觉任务广泛应用于自动驾驶、监控、医学图像检测等领域。众所周知,目前所有基于深度学习的目标检测方法都严重依赖于在ImageNet分类任务上预训练(pre-train)的模型作为初始权重。根据论文中的观点,这种预训练+微调(pre-train + fine-tune)的方式主要存在以下几个问题:
1、缺乏灵活性。在ImageNet上训练模型代价非常高昂,如果只使用公开的预训练的模型,将很难根据需要去灵活地调整模型结构。
2、Loss差异问题。由于ImageNet模型的类别和目标检测问题的类别分布差别较大,分类的目标函数和检测的目标函数也不一致,作者认为从预训练模型上微调(fine-tune)可能和检测问题的有一定的优化学习偏差. 这个偏差对于有限训练样本可能更突出。
3、问题域(domain)的不匹配。并不是所有检测任务都是在自然RGB图像上进行的,如医学图像、多谱图像的检测。目前能够作为预训练的大规模数据集几乎只有ImageNet,而在自然图片上预训练,由于domain的巨大差异,很难在医学图像等domain上有效地微调(fine-tune)。
那么有没有一种方法能够在完全脱离预训练模型的情况下达到state-of-the-art的性能呢?
借助CVPR2017最佳论文DenseNet特性
DSOD目的是为了解决这些痛点,该方法借助于DenseNet (CVPR2017 best paper) 隐式的deeply supervised的特性,结合其他一些设计原则,成功地实现了目标检测模型的从零开始训练(training from scratch)。这是目前已知的第一篇在完全脱离ImageNet 预训练模型的情况下使用深度模型l, 在有限的训练数据前提下能做到state-of-the-art效果的工作,同时模型参数相比其他方法也要小很多。
DSOD的完整结构图如下表1 :
表1. DSOD网络结构图
为了训练出性能更好的检测器,文章提出了如下几个网络设计原则:
原则一:无障碍的梯度回传
并不是所有框架都适合用来从头开始训检测器。作者发现像Faster-RCNN、R-FCN这类基于region-proposal的框架,由于存在ROI pooling layer, 该层类似于一个mask,使得梯度没法平滑的回传到前面层,因此从零开始训练的整个模型没法收敛(或者收敛较差)。而YOLO、SSD这类框架由于是proposal-free的结构,模型可以收敛,但是结果和预训练模型上微调有较大差距。
原则二:更深的监督信息
训练深度模型一个很常见的问题就是梯度消失。一个比较常用的减缓梯度消失问题的方法是在网络中间层插入side-output loss项,让网络靠近输入层的神经元也能接收到比较强的梯度信号。但是DSOD抛弃了这种显式的deep supervision结构,原因在于目前detection框架的loss项本身比较复杂,而且会使用多层feature来做检测,所以不太适合插入多个这样的loss项。DSOD采用了一种更加优雅的解决方案,通过借助dense block中每一层都会连接到后面层上去的特点,避免了training from scratch过程中梯度消失的问题。在DSOD中,除了主干网,预测层的结构也改变成dense的连接方式(见图1),该结构不仅能大量减少需要学习的模型参数,同时能进一步提升模型性能。
图1. DSOD预测层结构示意图
原则三:根(Stem)结构
根结构已经被应用于一些优秀的神经网络结构中,如google提出的Inception结构等。实验结果表明,stem结构可以有效地保护输入图片信息的丢失,从而训练出更加鲁棒的检测器。
以下是DSOD在PASCAL VOC 2007数据集上各部分有效性验证实验:
表2. 网络各部分有效性验证实验
更多细节大家可以去阅读原文。
表3是DSOD 在 PASCAL VOC 2007数据集上的“物体检测”对比实验结果(包括模型参数量,运行速度,输入图片大小,模型精度等):
表3. VOC2007 test set上的实验结果对比
从表中可以看出DSOD不仅模型参数更小 (仅为SSD的1/2, faster-rcnn的1/10),而且性能优于相同设置下的YOLOv2、SSD等。更重要的是DSOD模型不需要在ImageNet预训练,也就是说该模型训练图像其实比其他state-of-the-art的方法少用了120万张预训练图片!
下面是DSOD算法的一些实际的检测结果:
图2. 检测结果示例图
总结
在DSOD这篇论文中,作者首先分析了深度网络training from scratch存在的问题以及如何才能构建一个可以从零开始训练的检测器的网络,同时给出了非常详细的指导和设计原则帮助读者去构建这样的网络。
基于这些原则,作者提出了DSOD模型,该模型不仅参数更少(适合于手机、无人机等资源受限的设备)、性能更强,更重要的是不需要在大数据集(如ImageNet)上预训练,使得DSOD的网络结构设计非常灵活,根据自己的应用场景可以设计自己所需要的网络结构。
DSOD模型打破了传统的基于预训练+微调的检测器训练的藩篱,在有限数据集下,从零开始训练就能得到state-of-the-art的目标检测器,在自动驾驶、监控、医学图像、多谱图像等领域将会拥有非常广阔的应用前景。
文章转自新智元公众号,原文链接