DSOD

目录

  • 论文信息
  • 前言
  • Introduction
  • DSOD
    • DSOD Architecture

      • Overall Framework
      • Principle 1: Proposal-free
      • Principle 2: Deep Supervision
      • Principle 3: Stem Block
      • Principle 4: Dense Prediction Structure
  • Experiments
    • Results on MS COCO
  • Conclusion

论文信息

Zhiqiang Shen, Zhuang Liu, Jianguo Li, Yu-Gang Jiang, Yurong Chen, Xiangyang Xue. DSOD: Learning Deeply Supervised Object Detectors from Scratch. ICCV 2017.

https://arxiv.org/abs/1708.01241

前言

本来打算看DSSD, 结果一字之差先看了DSOD, 本文有一些独特思想, 但本文可能因为是完全中国人著, 至少本文没有此前文章那么容易上手, 配图和各种语法让我读的心力憔悴.

另外我自身的原因除了可能理解能力较差还有一方面是我对本文创作背景有一定断代, 因此读完本文我近期内将会读一读本文涉及的一些背景文章.

在本文以前的所有文章几乎都严重依赖于预训练网络, 其解决问题的一个主要思路是使用预训练网络其后fine-tune, 此做法有诸多缺陷, 我会在正文介绍. 作者主要贡献就是提出了一个从头开始手动训练的网络, 因在原生网络上优化, 因此作者用了更少的参数实现了更好地结果.

Introduction

当时大多数网络一般是在ImageNet预训练, 其后对其fine-tune, 作者提到fine-tune可视为transfer learning, 我认为这个说法很有意思. fine-tune主要有两个优点:

  1. 有很多公开模型包括其参数可以直接使用.
  2. fine-tune能快速构建模型, 因为本来就处于一个较优的位置, 并且只需要较少的样本进行训练

然而作者认为这样有几个缺点:

  1. Limited structure design space. 通常预训练模型是应对classification问题构建, 这样网络往往含有大量参数较为复杂, 如果直接将已有的detector套用, 结果就是模型捆绑于预训练模型从而导致灵活性较差.
  2. Learning bias. classification和detection的loss和category distribution不相同, 那么就会导致朝向不同的方向优化, 而且classification优化很可能陷入一个不利于detection的局部极点.
  3. Domain mismatch. 预训练的classification数据集和detection训练的数据集也存在很大差异.

本文简单来说就是根据两个猜想而产生组织的:

  1. 如果从一开始就不用套用预训练参数直接从头训练是否可行?
  2. 如果可行的话那么设计此网络有什么重要原则?

那么本文就是应对以上两个问题提出了解决方案DSOD.

本问所提出的模型有几个重要的特点, 如deep supervision, feature map融合和复用, 压缩参数等.

DSOD

DSOD Architecture

Overall Framework

DSOD是受SSD启发, 利用其multi-scale和proposal-free的特点, 主要可以分为两部分: 一个是产生feature map的backbone, 另一个是利用multi-scale的prediction网络.

backbone是一个DenseNets的变体, 该网络最大的特点就是deep supervision, 我们以后会介绍此网络, 简单来说就是浅层与深层有连接, 其关键成分dense block和网络结构如下图所示:

本文中的网络结构和具体细节如下二图所示:

Principle 1: Proposal-free

这里我们要重复说一下当时主流方法:

  1. R-CNN式使用外置proposal的模型.
  2. Faster R-CNN式使用内置proposal的模型.
  3. YOLO式不使用proposal的模型.

作者通过实验发现只有第三种能收敛, 作者提出一种猜想可能是因为前两种方法都使用RoI pooling, 这样可能会导致反向传播时隐藏梯度(我认为或是说使梯度模糊). 而套用预训练模型后取得较好的结果可能因为参数在RoI pooling之前就已经初始化较好了, 最终我们的结论就是只有第三种方法适合从头训练.

Principle 2: Deep Supervision

他的优点就是DenseNet的优点.

Deep Supervision结构如图所示,

此结构的主要思想就是提前将信息整合到较浅的位置而不是等到最后等到输出层才进行此操作, 可以说是一个ResNet的升级版. 那么它应对梯度消失效果也是只好不差的.

深层都会和所有的浅层相连因此浅层在反向传播时会受到skip connection的额外监督, 虽然看起来是单个loss反向传播, 但实际浅层受了无障碍的监督.

Transition w/o Pooling Layer

作者利用此结构既增加了dense block的数量又不降输出的分辨率, 原结构中如果希望输出分辨率固定, 则必须使dense block数量是固定的, 如果想增加网络深度那唯一的解决方法就是增加block的深度, 本文提出的这个结构就是为了解除此限制.

我寻思着不就是个\(1 \times 1\)的卷积结构, 你是想把它吹上天???

Principle 3: Stem Block

就是三个\(3 \times3\)卷积层后接一个\(2 \times 2\)的max pooling层, 能达到提升性能的效果, 作者猜想这样与原始的DenseNet相比这种操作可以减少原始图像的信息损失.

Principle 4: Dense Prediction Structure

简单来说作者将各个scale的feature map一半是从先前的scale经过卷积层获得, 另一半是从前一层feature map直接down-sample获得.

其中down-sample是一个max pooling后跟\(1 \times 1\)卷积层构成, 其中卷积层是用来减少一半channel.

Experiments

首先提一点是作者尝试对SSD进行从头训练, 但并没有预训练后fine-tune效果好. 其余实验见图:

补充几点内容, 作者尝试用ImageNet预训练, 获得66.8%的成绩, 后用"07+12" fine-tune最终得到70.3%的成绩, 效果比从头训练差.

Results on MS COCO

如最后一张图, 作者与R-FCN比较发现IOU调为0.5时表现较差, [0.5:0.95]较好, 说明本文方法定位更精准.

另外本文小物检测表现差, 作者认为分辨率低的缘故. 我觉得就是理论有硬伤, 你觉得高分辨图像能解决你直接套高分图像训练啊!!!

Conclusion

本文主要有以下几点优秀的思想:

  1. 从头训练, 开创性想法.
  2. 减少参数量, 注意到作者之后就进行了模型压缩的工作.

我读本文时, 痛苦至极, 连蒙带猜地阅读, 也许是我能力太差了, 问题是我看别人的论文为何没有这种感觉. 对我的理解能力来说配的图片根本没有解释清, 我每看一句话要想半天他想要打算表达什么.

我再也不看你写的论文了.

原文地址:https://www.cnblogs.com/edbean/p/11331956.html

时间: 2024-10-13 04:04:51

DSOD的相关文章

利用python对WiderFace数据解析及画框

#注:此代码稍作修改也可以用于WFLW人脸数据集的标注文件解析,#参见其README.md文件了解其每一行的信息,从中解析出相应字#段即可. import os import cv2 def draw(image_list,src_img_dir = None, tar_img_dir = None): if not os.path.exists(tar_img_dir): os.mkdir(tar_img_dir) for item in image_list: sub_path = item

深度学习之目标检测常用算法原理+实践精讲

第1章 课程介绍本章节主要介绍课程的主要内容.核心知识点.课程涉及到的应用案例.深度学习算法设计通用流程.适应人群.学习本门课程的前置条件.学习后达到的效果等,帮助大家从整体上了解本门课程的整体脉络. 第2章 目标检测算法基础介绍本章节主要介绍目标检测算法的基本概念.传统的目标检测算法.目前深度学习目标检测主流方法(one-stage.two-stage.多任务网络).相关算法的基本流程.算法性能的评价指标.不同算法的优缺点和性能比较等,并结合实际的应用场景和案例来介绍目标检测算法的重要性和实用

深度学习之目标检测常用算法原理+实践精讲 YOLO / Faster RCNN / SSD / 文本检测 / 多任务网络

深度学习之目标检测常用算法原理+实践精讲 YOLO / Faster RCNN / SSD / 文本检测 / 多任务网络 资源获取链接:点击这里 第1章 课程介绍 本章节主要介绍课程的主要内容.核心知识点.课程涉及到的应用案例.深度学习算法设计通用流程.适应人群.学习本门课程的前置条件.学习后达到的效果等,帮助大家从整体上了解本门课程的整体脉络. 1-1 课程导学 第2章 目标检测算法基础介绍 本章节主要介绍目标检测算法的基本概念.传统的目标检测算法.目前深度学习目标检测主流方法(one-sta

One Stage目标检测

在计算机视觉中,目标检测是一个难题.在大型项目中,首先需要先进行目标检测,得到对应类别和坐标后,才进行之后的各种分析.如人脸识别,通常是首先人脸检测,得到人脸的目标框,再对此目标框进行人脸识别.如果该物体都不能检测得到,则后续的分析就无从入手.因此,目标检测占据着十分重要的地位.在目标检测算法中,通常可以分成One-Stage单阶段和Two-Stage双阶段.而在实际中,我经常接触到的是One-Stage算法,如YOLO,SSD等.接下来,对常接触到的这部分One-stage单阶段目标检测算法进