08《SSD: Single Shot MultiBox Detector》论文学习笔记

9 篇文章 0 订阅

摘要

主要是介绍了两点:

  1. 表示提出了SSD目标检测算法,主要是:a.基于端到端学习的目标检测;b.将边界框的输出空间离散化为一组默认框;c.预测结果来自不同层次的特征图(6个层次);
  2. 介绍了SSD的性能:a.300*300分辨率的输入,voc2007测试集上获得74.3%mAP和59FPS;b.512*512分辨率的输入,获得了76.9%mAP,超过了最先进的fast r-cnn

 在当时,SSD主要就是:①速度快,作为一种新的物体检测方法,比同年的yolo还要快,还要精确,在保证速度的同时,其结果的mAP可与fast r-cnn相媲美;②不同层次,作者为了得到高精度的检测结果,在不同层次的特征图(文中选用了6个层次的)上预测object、bos offsets,同时,还得到不同的aspect ratio的predictions;③保证精度,本文的这些改进中,能够在输入分辨率较低的图像时,保证检测的精度,同时,整个网络end-to-end的设计,训练也变得简单,在检测速度和检测精度之间取得了较好的效果。

1、引言

  1. (第一段)先介绍了当前目标检测的常用方法:先设定好候选框(bounding boxes), 然后对每个框重新取样像素或特征,最后应用高精度分类器进行分类;
  2. 介绍了当前目标检测方法的缺点:计算量太大,速度慢,不适合实时系统,提升速度通常以降低精度为代价
  3. (第二段)简单介绍了SSD的改进:①不需要预先生成候选框(那它的候选框是咋来的??);②不需要像素或者特征的重采样;③采用了多尺度的filters;④在多个特征图上用不同的aspect ratio(宽高比)进行预测;
  4. 简单介绍了SSD的成果:速度和精度大幅度提升
  5. (第三段)作者总结式的介绍了SSD的贡献:①SSD方法的核心是使用小卷积滤波器(3*3)来预测特征图上固定的一组边界框的类别分数(category score)和位置偏移(box offsets);②为了实现高精度检测,作者从不同尺度的特征图上产生不同尺度的预测,并且通过宽高比(aspect ratio)来明确的分离预测;③这些设计特性得到了简单的端到端的训练和高精度,甚至输入较低分辨率的图像时,也能在速度和精度的权衡下,效果得到提升;④实验包括在PASCAL VOC、MS COCO、ILSVRC上评估不同输入大小下模型耗时和精度分析,并与一系列最新的先进方法进行比较。

插播两张fast r-cnn和yolo算法的简介图片:


 2、SSD

SSD300

2.1 & 2.2

 主要从以下5点进行介绍:

  1. Default box设计,ssd借鉴了fast r-cnn的achor;
  2. Matching strategy,对上一步设计的默认框进行标注,分为正负样本,主要介绍如何选择正负样本;
  3. 损失函数,主要介绍ssd的损失如何计算;
  4. 难例挖掘;
  5. 数据增强

 ①SSD的default box设计:

a.default box数量:default box在不同的特征层有不同的比例(scale),在同一个特征层又有不同的宽高比,因此基本可以覆盖输入图像中各种形状和大小的object,default box的总数为:(38 \times 38 \times 4 + 19 \times 19 \times 6 + 10\times10\times6 + 5\times5\times6 + 3\times3\times4 + 1\times1\times4)=8732

b.default box公式:s_k=[0.2, 0.34, 0.48, 0.62, 0.76, 0.9], a_r={1, 2, 3, 1/2, 1/3},s_k (k\epsilon [1, m])(其中作者假定用m个特征层做预测,m=6)表示每一层预测框占原图大小比例,一共有6个取值,最小占原图的0.2,最大占到0.9,六个预测层分别对应一种(从而实现大的特征图检测小的物体,小的特征图检测大的物体);a_r表示宽高比,最多的预测层中每个1*1的单元格有6个默认框,宽和高的计算公式如下所示:width:w_k^a = {s_k}{\sqrt a_r}; height: h_k^a = \frac {s_k}{\sqrt a_r},当a_r=1时,再增加一个默认框s_k'=\sqrt {s_ks_{k+1}}

②SSD匹配策略

将默认框和真实框(ground truth box)按IOU进行匹配,匹配成功则这个默认框就是正样本(positive example),如果匹配不上,就是负样本(negative example),论文中作者选用的IOU为0.5

在training中,GT boxes与prior boxes按照以下方式进行配对:先寻找每一个与GT boxes有最大IOU的prior boxes,以保证每一个GT boxes与唯一的prior boxes对应起来;SSD之后再将剩余的没有配对的prior boxes与任意的GT boxes配对,只要IOU大于阈值,就认为match(SSD300的阈值为0.5),配对到GT的prior box就是positive,没有配对到的为negative

SSD算法中的Hard negative mining:一般情况下negative default boxes数量要远远大于positive default boxes的数量,直接训练会导致网络过于重视负样本,从而loss不稳定。所以SSD在抽样时按照置信度误差(置信度越大,误差越小)降序排列,选取误差较大的top_k作为训练的负样本,控制positive:negative=1:3

 ③损失函数

其中,只对正样本求解位置损失,损失函数采用smooth l1损失;置信度损失,参与损失的样本采用难度挖掘策略,损失函数采用softmax loss

④难例挖掘

a.难易样本简介:简单负样本:与gt没有任何交集;简单正样本:与gt交集远大于阈值;困难负样本:与gt有交集,但小于阈值;困难正样本:与gt有交集,仅略大于阈值

b.难例挖掘的实现策略:第一步,选取所有正样本,数量记为k;第二步,对所有的负样本求置信度损失,并递减排序,取前3k个样本;第三步,k个正样本与3k个负样本参与损失计算

⑤数据增强

为了是模型更加稳健,增强模型的泛化能力,每一张训练图片随机执行以下一种操作:

 a.只用原始图像;b.随机patch(补丁)一块;c.对补丁(patch)进行采样,以使其与object的最小jaccard重叠为0.1、0.3、0.5、0.7或0.9。

通过数据增强明显提升了算法的性能。

3、实验结果

基础工作:

  1. 基础网络:文中所有的实验都是基于VGG16网络,其中VGG16的预训练是在ILSVRC CLS-LOC上进行的;
  2. 类似于DeepLab-LargeFOV,将fc6和fc7层转换为卷积层,从fc6和fc7层采样(这是干什么的??)得到参数;
  3. 将pool5从2*2-s2更改为3*3-s1,并使用atrous算法填洞;
  4. 删除了所有的dropout层以及fc8层;
  5. 使用SGD对这个模型进行fine-tune,初始化学习率为1e-3,0.9 momentum,0.0005的衰减率(作者说衰减策略优点不同,会在后文介绍),batch size为32;

3.1PASCAL VOC2007 

针对上面展示的SSD300的网络:

  1.  使用conv4_3、conv7(fc7)、conv8_2、conv9_2、conv10_2与conv11_2来预测位置和置信度;
  2. 用“xavier”方法初始化所有新添加的卷积层的参数;
  3. conv4_3、conv10_2与conv11_2使用{1, 2, 1/2}的宽高比,一共是4个默认框,其他三层是有6个默认框;
  4. conv4_3,因为其有一个不同的feature scale(啥玩意,哪里不同??),所以对其使用了L2正则化,将特征图中每个位置的特征范数缩放为20;
  5. (训练次数)用lr=1e-3迭代了40k次,,然后再用1e-4、1e-5继续训练10k次

其中SSD300的效果在速度和mAP上由于Fast R-CNN,SSD512的效果更优。 


 实现代码:

1、用tensorflow1.13.1的estimator写的:https://github.com/HiKapok/SSD.TensorFlow

2、上面的estiamtor没太整明白,所以又找了一个:https://github.com/balancap/SSD-Tensorflow

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值