detection:SSD通俗篇

前言纷纷:

看论文真的是个很好的习惯,但是重点是很难坚持,但是如果被人要求少看一篇发一百红包,好像也就不是那么的难了。

关于detection,前两年大红大火,姹紫嫣红,最近这一年半载又开始唱衰声不断。连几天前上课老师都在讲,你们如果还是继续选detection作为课题,是一件很有挑战的事情。无奈,我这个人最大的优点就是头铁,我要继续搞下去。

今天看的这篇论文是SSD,全称single shot multibox detection。这是一篇2016年CVPR上火起来的论文,这几年作为一种很成熟的检测框架被广泛的应用,所以我觉着还是很有必要看看的。

说到SSD,我就绕不开RCNN这个系列,简单的讲解一下,从一开始的RCNN,到Fast RCNN,fasterRCNN都是一种two stage的检测方法,他通过先选出建议框,再通过一个高精度的分类器进行分类,在实际使用中的效果其实都不错。但是RCNN系列有一个让人诟病的地方,由于要先预测回归一次边框,再对边框进行分类,所以速度很慢,没有办法进行实时性的应用。

之后呢,又有人提出了yolo,you only look once这样一个一次性完成边框预测和打分的网络,虽然在网络速度上得到了大幅度的提高,但是精度相对较低,对于尺寸较小以及尺度变化幅度很大的目标没有办法进行很好的适应。

针对YOLO和RCNN系列所存在的不足,SSD这个方法就应运而生。SSD可以说是集中了YOLO与RCNN系列的有点,所以整个网络的性能也就得到了大大的提高。首先,它采取了ONE-stage的思想,较大幅度的提高了网络的运行速度。其次他借鉴采用了RCNN系列中Fast RCNN的anchor思想,并且基于此提出了特征分层提取以适应多尺度的目标这样一种设想。SSD的出现可以说是提供了一种高速高效的检测方法

框架:

先来介绍一下SSD的框架部分,这张图片是作者原文中提供的一个以VGG16为模板的SSD模型,在这个模型中整个SSD的网络分为了六个部分,每一个部分都会进行单独的候选框生成,特征提取,通过这种金字塔架构的多层信息融合,在最后一层有助于完成多尺度的detection。

第一层直接保留了vgg16的前五层进行特征提取,生成一个特征图,然后进行边框的分类和回归,然后将vgg16的fc6和fc7两个变为两个卷积层,作为SSD多级特征中的第二层和第三层。紧接着SSD又添加了四个卷积层用来继续进行高层语义的提取工作。在每一个层级的操作中,每个层级都包含了多个小卷积层的操作。以上所介绍的部分就是SSD中比较出名的多比例特征图检测(Multi-scale featuremaps for detection)。

具体讲解:

1、默认方框的生成(类比fasterrcnn中的anchors)

文中设置了默认边界框的集合和每个特征图单元(cell)关联,这些默认的方框用不同的方式覆盖了特征图上所有的点。特征图上的每一个cell都会有对应个数,不同纵横比的方框,然后通过对每个默认方框进行每一类的预测,并且通过非极大值抑制来检测出最后我们所需要的目标出来。

是不是不是很好理解,我给大家举一个具体的例子,选取Conv9的Feature Map,假定输出大小为5x5。SSD网络中作者设置Conv9的每个点默认生成6个box,如下图所示。因此在这一层上,共生成了5x5x6=150个boxes。这样是不是就好理解多了,25个像素,在每个像素称为cell的格子上都会生成六个相应的候选框,所以最终一共会获得150个box。

2、其实还有一个很重要的问题,就是在网络的训练过程中,每一个层级都需要给出相应的score和边框回归,那么这个过程具体是怎么样的呢。首先边框回归是四个数,其次对于每个类别都需要给出一个置信度,假如一共有20个类别,加上背景则一共有21个类别,那么我们最终每个box都会生成一个25维的特征量。

网络的部分,简单的也就讲这么多了,下面还有一个部分就是网络的训练部分,这部分我承认,大多数是基于对原文的翻译,由于还没有开始实践,可能理解上会有所偏差。

训练SSD和训练一个典型的使用区域提议(region proposals)检测器的主要区别,ground truth信息在固定检测器输出的情况下需要指定到特定的输出。

1、匹配策略

训练期间,我们需要决定那个默认盒子匹配一个ground truth,并且网络也相应的进行训练,对于每个我们从默认盒子中选择的ground truth盒子,在位置,纵横比,和比例上不同,我们用bestjaccard overlap 方法匹配ground truth的盒子和默认盒子。不像MultiBox, jaccard overlap的值高于一个阈值(0.5),我们就将二者匹配,这简化了学习问题,使得网络可以对多覆盖(multiple overlapping)默认盒子预测得到高分,而不是选出最大覆盖的那个覆盖
2、Hard Negative Mining

经过匹配策略会得到大量的负样本,只有少量的正样本。这样导致了正负样本不平衡,经过试验表明,正负样本的不均衡是导致检测正确率低下的一个重要原因。所以在训练过程中采用了Hard Negative Mining的策略,根据Confidence Loss对所有的box进行排序,使得正负样本的比例控制在1:3之内,经过作者实验,这样做能提高4%左右的准确度。

3、Data augmentation

数据增广作为一种很常见的模型训练方式,在本文中为了识模型对不同输入目标大小,形状,每个训练样例随机的按照下面进行采样:

 使用完整的原图片输入

采样一个小块,使得目标的最小jaccard overlap是0.1,0.3,0.5,0.7,0.9.

随机采样一个小块

每个样本块的大小是原图片大小的[0.1,1],纵横比在1/2到2之间。如果ground truth的中心在样本块里,我们保留那个重叠部分的ground truth盒子,在完成前面的采样之后,我们把样本块重新调整成固定大小,以0.5的概率进行翻转

三、效果展示

这是SSD和fastrcnn以及yolo在coco数据及上进行的一个对比,可以看到SSD具有很大的优势。

好啦,我的介绍很简短,到这里就结束了,过两天要开始策划跑跑这个模型了。
参考:

1.SSD:single shot multiboxdetector

2、论文阅读笔记:SSD: Single Shot MultiBox Detector

3、[目标检测]SSD:Single Shot MultiBox Detector

PS。有兴趣的可以看看我的rcnn系列:

RCNN系列(一)——开天辟地的rcnn

RCNN系列(二)——要更快的fast-rcnn

RCNN系列(三)——终结者之mask rcnn

谢谢大家伙儿,我是钱多多

学术交流可以关注我的公众号,后台留言,粉丝不多,看到必回。卑微小钱在线祈求

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

与贰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值