论文阅读笔记四十九:ScratchDet: Training Single-Shot Object Detectors from Scratch(CVPR2019)

论文原址:https://arxiv.org/abs/1810.08425
github:https://github.com/KimSoybean/ScratchDet
摘要
当前较为流行的检测算法是在经典的大规模分类的数据集上进行微调,但这样做会存在两个问题:
(1)分类任务与检测任务二者之间对位置的敏感性差异较大,进而造成了优化目标之间存在偏差。
(2)目标检测的结构受制于分类模型,进而造成对模型修改上的不便。
为了应对上面的这两个问题,从头重新训练检测器是一种可行的方法。但这种方法又存在的一个问题是,相比预训练过的模型,此方法的性能要差一些,尤其是在训练时的收敛问题上。本文,采用从头重新训练网络的方法,分析了优化的方法发现,从头开始训练检测器所忽略的一个点时BatchNorm。利用BatchNorm的稳定及可预测的梯度,检测器可以从顶部开始进行稳定训练,同时在不同网络结构的基础上取得较好的性能。本文提出了Root-ResNet backbone网络,充分利用原始图片的信息。
介绍
本文研究了针对基于随机初始化网络的优化方法因素,发现BatchNorm重新调整了优化问题的参数分布,使其外形更加平滑同时减少了internal covariate shift。基于此,本文认为从头训练检测网络收敛性较差的主要原因是缺少BN操作。因此,本文在backbone及检测子网络的头部都添加了BN层,发现添加BN后,从头开始训练的检测网络要比预训练的效果要好,进而可以不依赖于预训练网络对网络结构进行调整。实验发现,第一层卷积的下采样stride也对目标检测的效果产生重要的影响。基于这一点,本文通过引入一个root block来设计检测器的结构。root block可以获得detector feature map中丰富的信息,提高了对小目标的准确率。
本文主要贡献:
(1)本文设计了基于scratch训练的single-shot目标检测网络-ScratchDet,该网络结合了BN操作有利于网络的收敛,此方法适用于任意类型的网络结构。
(2)引入了新的backbone Root-ResNet,提高了小目标的检测效果。
(3)ScratchDet的检测表现效果较为强劲。
ScratchDet
1.BatchNorm for Train-from-Scratch
本文在SSD上添加了BatchNorm,原生SSD中是不存在BN层的。在backbone的每一层中添加了BN层,然后,从头开始训练。发现提升了5.2%的mAP,同时使优化曲线更加的平滑,进而可以使用更大的学习率进行优化。
在检测网络的head子网络添加BatchNorm,本文经过实验发现,在原生SSD上基于大学习率进行训练,容易造成梯度爆炸。在网络的检测头的子网络添加BatchNorm可以使训练的loss的外形更加平滑。使mAP从67.6%提升至71.0%.
在整个网络中添加BN层,其实验结果比对如下。


2.BackBone Network
backbone为ResNet及VGG的性能:本文研究了backbone第一层卷积的downsampling操作的影响,实验发现,第一层的downsampling操作对小目标的检测造成了不利的影响。基于上述分析,本文重新设计了目标检测的backbone,为了克服Resnet中的不足并保留其分类的优秀性能。本文设计了Root-ResNet。结构如下:


本文移除了第一层卷积的下采样操作并将7x7的卷积核用几个3x3的卷积核进行替换。随着从Image中获得更丰富的输入信息,网络可以挖掘图像中的局部信息,进而可以检测小目标物体。此外,将SSD后用于获得不同尺寸大小信息的四个卷积blocks替换为四个残差块。每个残差块包含两个分支,一个为1x1 stride为2的卷积层,另两个为stride分别为2和1的3x3的卷积核.每个卷积核的输出通道数设置为128.
实验




Reference
[1] S. Bell, C. Lawrence Zitnick, K. Bala, and R. Girshick.Inside-outside net: Detecting objects in context with skip pooling and recurrent neural networks. In CVPR, 2016.
[2] K. Chen, J. Pang, J. Wang, Y. Xiong, X. Li, S. Sun,W. Feng, Z. Liu, J. Shi, W. Ouyang, C. C. Loy, and D. Lin.mmdetection. https://github.com/open-mmlab/mmdetection, 2018.
[3] B. Cheng, Y. Wei, H. Shi, R. Feris, J. Xiong, and T. Huang.Revisiting rcnn: On awakening the classification power of faster rcnn. In ECCV, 2018.
[4] J. Dai, Y. Li, K. He, and J. Sun. R-fcn: Object detection via region-based fully convolutional networks. In NIPS, 2016.
论文阅读笔记四十九:ScratchDet: Training Single-Shot Object Detectors from Scratch(CVPR2019)的更多相关文章
- 论文阅读笔记二十九:SSD: Single Shot MultiBox Detector(ECCV2016)
论文源址:https://arxiv.org/abs/1512.02325 tensorflow代码:https://github.com/balancap/SSD-Tensorflow 摘要 SSD ...
- 论文阅读笔记三十九:Accurate Single Stage Detector Using Recurrent Rolling Convolution(RRC CVPR2017)
论文源址:https://arxiv.org/abs/1704.05776 开源代码:https://github.com/xiaohaoChen/rrc_detection 摘要 大多数目标检测及定 ...
- 论文阅读笔记四十四:RetinaNet:Focal Loss for Dense Object Detection(ICCV2017)
论文原址:https://arxiv.org/abs/1708.02002 github代码:https://github.com/fizyr/keras-retinanet 摘要 目前,具有较高准确 ...
- 论文阅读笔记四十六:Feature Selective Anchor-Free Module for Single-Shot Object Detection(CVPR2019)
论文原址:https://arxiv.org/abs/1903.00621 摘要 本文提出了基于无anchor机制的特征选择模块,是一个简单高效的单阶段组件,其可以结合特征金字塔嵌入到单阶段检测器中. ...
- 论文阅读笔记四十八:Bounding Box Regression with Uncertainty for Accurate Object Detection(CVPR2019)
论文原址:https://arxiv.org/pdf/1809.08545.pdf github:https://github.com/yihui-he/KL-Loss 摘要 大规模的目标检测数据集在 ...
- 论文阅读笔记四十五:Region Proposal by Guided Anchoring(CVPR2019)
论文原址:https://arxiv.org/abs/1901.03278 github:code will be available 摘要 区域anchor是现阶段目标检测方法的重要基石.大多数好的 ...
- 论文阅读笔记(十九)【ITIP2017】:Super-Resolution Person Re-Identification With Semi-Coupled Low-Rank Discriminant Dictionary Learning
Introduction (1)问题描述: super resolution(SP)问题:Gallery是 high resolution(HR),Probe是 low resolution(LR). ...
- 论文阅读笔记四十二:Going deeper with convolutions (Inception V1 CVPR2014 )
论文原址:https://arxiv.org/pdf/1409.4842.pdf 代码连接:https://github.com/titu1994/Inception-v4(包含v1,v2,v4) ...
- 论文阅读笔记四十:Deformable ConvNets v2: More Deformable, Better Results(CVPR2018)
论文源址:https://arxiv.org/abs/1811.11168 摘要 可变形卷积的一个亮点是对于不同几何变化的物体具有适应性.但也存在一些问题,虽然相比传统的卷积网络,其神经网络的空间形状 ...
随机推荐
- 在线SQL
有时候为了简单测试一下SQL语法,自己机器上没有安装,可使用在线的SQL环境. 我找到了两个: https://rextester.com/l/sql_server_online_compiler ( ...
- Linux下批量管理工具pssh安装和使用
Linux下批量管理工具pssh安装和使用 pssh工具包 安装:yum -y install pssh pssh:在多个主机上并行地运行命令 pscp:把文件并行地复制到多个主机上 prsync:通 ...
- LOJ#2085 循环之美
解:首先看这个纯循环到底是什么玩意..... 经过一番打表,发现纯循环小数就是分母与进制互质的既约分数. #include <bits/stdc++.h> std::bitset<& ...
- 微信公众号开发之access_token的全局共用
最近做微信公众号开发,涉及到access_token的缓存问题(避免各自的应用都去取access_token,同时解决微信 appid和appsecret的安全问题),在通用权限管理系统底层增加了实现 ...
- java web 三大组件
JavaWeb三大组件 Servlet,Filter,Listener. Servlet Servlet的作用 在Java web b/s架构中,servlet扮演了重要的角色,作为一个中转处理的容器 ...
- python第六天
深浅拷贝,元祖,字典 ,集合的定义以及基本操作方法 深浅拷贝 # 值拷贝:应用场景最多值拷贝:先创建一个列表ls = [1, 'abc', [10]] 再定义 ls1 = ls 此处ls1会直接将 ...
- python全栈开发中级班全程笔记(第二模块)第 二 部分:函数基础(重点)
python学习笔记第二模块 第二部分 : 函数(重点) 一.函数的作用.定义 以及语法 1.函数的作用 2.函数的语法和定义 函数:来源于数学,但是在编程中,函数这个概念 ...
- python13 1.函数的嵌套定义 2.global、nonlocal关键字 3.闭包及闭包的运用场景 4.装饰器
## 复习 '''1.函数对象:函数名 => 存放的是函数的内存地址1)函数名 - 找到的是函数的内存地址2)函数名() - 调用函数 => 函数的返回值 eg:fn()() =&g ...
- macbook配置xdebug+vscode
1.从xdebug官网下载xdebug 地址:https://xdebug.org/index.php,如果你不知道你要下载哪个版本的话可以下载它建议的版本.使用方法是在 https://xdebug ...
- python3 练手实例4 九九乘法口诀表
for i in range(1,10): for j in range(1,i+1): print('{}*{}={}\t'.format(i,j,i*j),end='') print()