读论文系列:Object Detection ECCV2016 SSD
转载请注明作者:梦里茶
Single Shot MultiBox Detector
Introduction
一句话概括:SSD就是关于类别的多尺度RPN网络
基本思路:
- 基础网络后接多层feature map
- 多层feature map分别对应不同尺度的固定anchor
- 回归所有anchor对应的class和bounding box
Model
- 输入:300x300
- 经过VGG-16(只到conv4_3这一层)
- 经过几层卷积,得到多层尺寸逐渐减小的feature map
- 每层feature map分别做3x3卷积,每个feature map cell(又称slide window)对应k个类别和4个bounding box offset,同时对应原图中6(或4)个anchor(又称default box)
- 38x38, 最后3x3, 1x1三个feature map的每个feature map cell只对应4个anchor,分别为宽高比: 1:1两种,1:2, 2:1两种,因此总共有 38 * 38 * 4 + 19 * 19 * 6 + 10 * 10 * 6 + 5 * 5 * 6 + 3 * 3 * 4 + 1 * 1 * 4 = 8732 个anchor
- 其他feature map的feature map cell对应6个anchor,分别为宽高比: 1:1两种,1:2, 2:1两种,1:3, 3:1两种
- 每层的feature map cell对应的anchor计算方法如下
- 位置:假设当前feature map cell是位于第i行,第j列,则anchor的中心为 ((i+0.5)/|fk|,(j+0.5)/|fk|), fk是第k层feature map的size(比如38)
- 缩放因子:
其中smin为0.2,smax为0.9,m为添加的feature map的层数,缩放因子就是为不同feature map选择不同的大小的anchor,要求小的feature map对应的anchor尽量大,因为越小的feature map,其feature map cell的感受野就越大
- 缩放因子:
anchor宽高:
其中,ar∈{1,2,3,1/2,1/3},可以理解为在缩放因子选择好anchor尺寸后,用ar来控制anchor形状,从而得到多尺度的各种anchor,当ar=1时,增加一种 sk=sqrt(sk-1sk+1),于是每个feature map cell通常对应6种anchor。
网络的训练目标就是,回归各个anchor对应的类别和位置
Training
样本
正样本
选择与bounding box jaccard overlap(两张图的交集/并集)大于0.5的anchor作为正样本样本比例
Hard negative mining:由于负样本很多,需要去掉一部分负样本,先整图经过网络,根据每个anchor的最高类置信度进行排序,选择置信度靠前的样本,这样筛选出来的负样本也会更难识别,并且最终正负样本比例大概是1:3
Loss
还是一如既往的location loss + classification loss,并为location loss添加了系数α(然而实际上α=1)进行平衡,并在batch维度进行平均
- x是xijp的集合xijp={1,0},用于判断第i个anchor是否是第j个bounding box上的p类样本
- c是cip的集合,cip是第i个anchor预测为第p类的概率
- l是预测的bounding box集合
- g是ground true bounding box集合
其中定位loss与faster rcnn相同
这个式子里的k不是很明确,其实想表达不算背景0类的意思,且前景类只为match的类算location loss
分类loss就是很常用的softmax交叉熵了
核心的内容到这里就讲完了,其实跟YOLO和faster rcnn也很像,是一个用anchor box充当固定的proposal的rpn,并且用多尺度的anchor来适应多种尺度和形状的目标对象。
Detail
在训练中还用到了data augmentation(数据增强/扩充),每张图片多是由下列三种方法之一随机采样而来
- 使用整图
- crop图片上的一部分,crop出来的min面积为0.1,0.3,0.5,0.7,0.9
- 完全随机地crop
然后这些图片会被resize到固定的大小,随机水平翻转,加入一些图像上的噪声,详情可以参考另一篇论文:
Some improvements on deep convolutional neural network based image classification
从切除实验中,可以看到data augmentaion是很重要的(从65.6到71.6)
这个表中还提到了atrous,其实是指空洞卷积,是图像分割(deeplab)领域首先提出的一个卷积层改进,主要是能让测试速度更快。具体可以参考 ICLR2015 Deeplab
从这个表中也可以看出多种形状的anchor可以提升准确率
Result
输入尺寸为300x300,batch size为8的SSD300可以做到实时(59FPS)且准确(74.3% mAP)的测试
Summary
SSD算是一个改进性的东西,站在Faster RCNN的肩膀上达到了实时且准确的检测
读论文系列:Object Detection ECCV2016 SSD的更多相关文章
- 读论文系列:Deep transfer learning person re-identification
读论文系列:Deep transfer learning person re-identification arxiv 2016 by Mengyue Geng, Yaowei Wang, Tao X ...
- 读论文系列:Object Detection CVPR2016 YOLO
CVPR2016: You Only Look Once:Unified, Real-Time Object Detection 转载请注明作者:梦里茶 YOLO,You Only Look Once ...
- 读论文系列:Object Detection SPP-net
本文为您解读SPP-net: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Motivat ...
- 读论文系列:Object Detection NIPS2015 Faster RCNN
转载请注明作者:梦里茶 Faster RCNN在Fast RCNN上更进一步,将Region Proposal也用神经网络来做,如果说Fast RCNN的最大贡献是ROI pooling layer和 ...
- 读论文系列:Object Detection ICCV2015 Fast RCNN
Fast RCNN是对RCNN的性能优化版本,在VGG16上,Fast R-CNN训练速度是RCNN的9倍, 测试速度是RCNN213倍:训练速度是SPP-net的3倍,测试速度是SPP-net的3倍 ...
- [论文阅读]Object detection at 200 Frames Per Second
本文提出了一个有效且快速的目标检测器,该目标检测器得速度可以达到200+fps,在Pascal VOC-2007上的mAP比Tiny-Yolo-v2高出14. 本文从以下三个方面对网络进行改进. 网络 ...
- 读论文系列:Nearest Keyword Search in XML Documents中使用的数据结构(CT、ECT)
Reference: [1]Y. Tao, S. Papadopoulos, C. Sheng, K. Stefanidis. Nearest Keyword Search in XML Docume ...
- Object Detection · RCNN论文解读
转载请注明作者:梦里茶 Object Detection,顾名思义就是从图像中检测出目标对象,具体而言是找到对象的位置,常见的数据集是PASCAL VOC系列.2010年-2012年,Object D ...
- Object Detection︱RCNN、faster-RCNN框架的浅读与延伸内容笔记
一.RCNN,fast-RCNN.faster-RCNN进化史 本节由CDA深度学习课堂,唐宇迪老师教课,非常感谢唐老师课程中的论文解读,很有帮助. . 1.Selective search 如何寻找 ...
随机推荐
- Python中装饰器的用法
定义: 装饰器本身就是一个函数 为其他函数提供附加功能 不改变源代码 不改变原调用方式 装饰器=高阶函数+嵌套函数 知识点: 函数本身就是一个变量(意味着可以被复制给一个变量:test=test(1) ...
- 在lamp上简单部署应用程序
前言:上文中,说到了lamp的基本原理,apache与php的三种交互模式,php与mysql(mariadb)的交互,一次完整lamp的请求. LAMP简单的部署之后,便能够简单的搭建自己的网站. ...
- 关于JDK和eclipse的安装和汉化
参考网址:http://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html http://titanseason.iteye.com/blo ...
- Spring服务定制
问题总述 我们都知道如果使用Spring来进行bean管理的时候.如果同一个接口的实现类存在两个,直接使用@Autowired注解来实现bean注入,会在启动的时候报异常.我们通常的做法是使用@R ...
- C语言第十次博客作业--结构体
一.PTA实验作业 题目1: 结构体数组按总分排序 1. 本题PTA提交列表 2. 设计思路 求出每名学生的总分 定义i,j循环变量 for i=0 to n for j=0 to 3 p[i].su ...
- WebPack介绍
一.Webpack 是什么 Webpack 是德国开发者 Tobias Koppers 开发的模块加载器,Instagram 工程师认为这个方案很棒, 似乎还把作者招过去了.在 Webpack 当中, ...
- 浅析Python3中的bytes和str类型
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...
- Python第二话 初识复杂数据类型(list、dictionary、tuple)
上一篇我们简单认识了数据类型:数字number和字符串string,这篇我们就来隆重介绍一下重量级的数据类型:列表list.字典dictionary和元组tuple. 一.列表List: ①列表是什么 ...
- Java基础学习笔记二十四 MySQL安装图解
.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Compl ...
- MySQL之连接查询
主要是多表查询和连接查询