DSOD: Learning Deeply Supervised Object Detectors from Scratch
目录
- DSOD Learning Deeply Supervised Object Detectors from Scratch
- 目录
- 文章摘要
- 文章背景
- 相关工作
- Object Detection
- Learning Deep Models from Scratch
- DSOD详述
- 整体结构
- 设计准则
- 实验
- 讨论
- Better Model Structure vs More Training Data
- Why Training from Scratch
- 参考文献
文章摘要
作者对比以往state-of-the-art的目标检测结构,发现无论是proposal based 方法(包括R-CNN,Fast R-CNN,Faster R-CNN and R-FCN),还是proposal-free 方法(像 YOLO and SSD)高度依赖于现有的预训练模型,这样使目标检测器普遍存在两种问题:
- 分类任务和检测任务中的损失函数和类别分布由于不同会存在学习偏差
- 从分类任务得来的预训练模型与目标检测所用领域也会有领域差异
从中得出的结论便是:从头开始训练一个目标检测器是相比于fine-tuning更好的解决方法 。同时,激励了作者提出DSOD这样的方案。
创新: train object detectors from scratch,deep supervision
文章背景
大多数优秀的目标检测系统都采用从ImageNet中训练的模型进行fine-tuning,这样至少带来两大好处:
- 有很多优秀的从ImageNet数据集训练好的模型,并能方便地重用于目标检测
- fine-tuning可以更快地产生结果,需要更少的实例标注
然而,在目标检测中使用预训练的模型也有重要的不足: - Limited structure design space (限制了结构设计空间)
预训练网络模型大多数来自于基于ImageNet的分类任务,通常具有大量的参数。已有的目标检测器直接采用这些预训练网络,但几乎不能改动网络结构。同时,由于复杂的网络结构,带来的计算资源消耗也很庞大。 - Learing bias (学习偏差)
由于分类和检测存在不同的损失函数和类别分布,作者推断两者存在不同的搜索和优化空间 - Domain mismatch (领域不匹配)
fine-tuning可以减缓不同目标类目分布的差距,但如果目标领域是深度图、医学影像则存在巨大的领域不匹配问题
论文受两个问题启发:
- 有没有可能从头开始训练一个目标检测网络
- 如果可以,有什么样的准则可以使这样的目标检测网络资源开支少,检测精度高
作者提出准则中重要的一点是受[1]和[2]启发的,采用了DenseNet提出的通过the dense layer-wise connetions 的显示的deep supervision。且如上图所示,dense 结构在 backbnone sub-network 和 front-end multi-scale prediction layers 同时被使用。多尺度预测层的使用在一定程度减少模型参数的同时提升了最终的预测精度。
- 主要贡献
- 提出了首个从头开始训练的目标检测网络DSOD,并取得了state-of-the-art的表现
- 通过一步步对照实验验证了从头训练目标检测网络的准则
- DSOD在PASCAL VOC 2007, 2012 and MS COCO 三个数据集上都实现了state-of-the-art的效果
相关工作
Object Detection
优秀的基于CNN的目标检测方法可划分为两类:(1) region proposal based methods (2) proposal-free methods
- (1) region proposal based methods 包括R-CNN , Fast RCNN,Faster R-CNN and R-FCN 。其中R-CNN 使用选择性搜索产生第一个潜在目标区域并作为候选区域。但由于每个区域生成都需要独立的CNN产生,需要大量的计算成本。Fast R-CNN 和 Faster R-CNN 通过在网络中共享权值的方式生成候选区域提高了效率。R-FCN则通过移除全连接层且在最后的检测中采用了位置敏感得分图大幅提升了速度和精度。
- (2) proposal-free methods 包括YOLO 和SSD[3] 。YOLO 使用单次前向卷积网络直接预测目标分类和位置。SSD相比YOLO很多方面做了改进,DSOD采用了SSD架构继承了SSD的速度和精度优势。
Learning Deep Models from Scratch
在语义分割中,J´egou et al. [4]论证了一个好的网络在不需要预训练的情况下也能取得state-of-the-art的结果
DSOD详述
整体结构
网络结构可分为两部分: the backbone sub-network for feature extraction(特征提取主体子网络) and the front-end sub-network for prediction over multi-scale response maps(多尺度预测前端子网络)。
设计准则
1. Proposal-free:
作者通过大量的实验,发现Proposal based 方法从头训练很难收敛,但Proposal-free方法却能很好的收敛,猜测原因是RoI pooling阻碍梯度从区域水平的feature map向上顺利地反向传播。
2. Deep Supervision:
DSOD借鉴了DenseNet[5]中 dense layer-wise connection ,在每个dense block中当前层保持和先前所有层的连接。
3. Stem Block:
受Inception V3 和 Inception V4的启发,作者定义了一个stem层,采用3个3×3卷积(第一个stride=2,其他为1)接一个2×2 max pooling的方式替换DenseNet中原有的7×7卷积(stride=2)接一个3×3 max pooling(stride=2)的设计。stem block可以减少从原图带来的信息损失。
4. Dense Prediction Structure:
对于一个300×300的输入尺寸,6个尺度的feature map用于预测目标。scale 1(38×38)来自主网络中层可以识别小目标,其余5个尺度均来自主网络顶端。每两个尺度之间均采用了原有的transition layer。
Learning Half and Reusing Half。在每个尺度feature map,一半来自先前尺度,另一半直接来自于更高分辨率feature map的下采样。
实验
实验我就不详述,以下仅贴出作者对比结果:
其中hi-comp factor是指作者在transition layer中设置的压缩率,具体请看论文4.1.1
big grow rate是指dense block中每个dense layer通道增长数,具体请参阅论文4.1.1和DenseNet论文。
其中DS/A-B-k-θ 描述DSOD主网络结构。
A指第一层卷积通道数。
B指每个bottleneck layer通道数。
k指dense block中growth rate。
θ指transition layer中的压缩率。
讨论
Better Model Structure vs. More Training Data.
作者认为实验结论暗示着一个更好的模型结构也许能够相似或好于从大量数据中训练的模型的表现。
随着数据集的不断扩大,训练一个深度学习网络的成本越来越大。简洁高效的网络越发重要,这样的网络还具有巨大的潜力。
Why Training from Scratch?
从头开始训练至少有两点重要性:
- 预训练模型领域和目标领域存在巨大差异
- fine-tuning限制了目标检测网络结构的设计空间