码迷,mamicode.com
首页 > 其他好文 > 详细

目标检测 — one-stage检测(二)

时间:2018-05-23 12:30:18      阅读:369      评论:0      收藏:0      [点我收藏+]

标签:目标   问题:   完全   上下   参考   span   能力   isp   区域   

 

  one-stage检测算法,其不需要region proposal阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度,比较典型的算法如YOLO,SSD,Retina-Net。

4、SSD(2016)

  SSD结合了YOLO中的回归思想和Faster-RCNN中的Anchor机制,使用全图各个位置的多尺度区域特征进行回归,既保持了YOLO速度快的特性,也保证了窗口预测的跟Faster-RCNN一样比较精准。

  SSD的核心是在特征图上采用卷积核来预测一系列Default Bounding Boxes的类别、坐标偏移。为了提高检测准确率,SSD在不同尺度的特征图(5个)上进行预测。

  技术分享图片

模型设计:

(1)采用多尺度特征图用于检测

  所谓多尺度采用大小不同的特征图,CNN网络一般前面的特征图比较大,后面会逐渐采用stride=2的卷积或者pool来降低特征图大小,利用多个尺度图来做检测,比较大的特征图来用来检测相对较小的目标,而小的特征图负责检测大目标。

(2)采用卷积进行检测

  SSD直接采用卷积对不同的特征图来进行提取检测结果。对于形状为m*m*p的特征图,只需要采用 3*3* p这样比较小的卷积核得到检测值。减少参数量。

(3)设置先验框

  SSD借鉴了Faster R-CNN中anchor的理念,每个单元设置尺度或者长宽比不同的先验框,预测的边界框(bounding boxes)是以这些先验框为基准的,在一定程度上减少训练难度。

训练技巧:

(1)先验框匹配

  在训练过程中,首先要确定训练图片中的ground truth(真实目标)与哪个先验框来进行匹配,与之匹配的先验框所对应的边界框将负责预测它。

  SSD的先验框与ground truth的匹配原则主要有两点。首先,对于图片中每个ground truth,找到与其IOU最大的先验框,该先验框与其匹配。第二个原则是:对于剩余的未匹配先验框,若某个ground truth的 技术分享图片 大于某个阈值(一般是0.5),那么该先验框也与这个ground truth进行匹配。

  为了保证正负样本尽量平衡,SSD采用了hard negative mining,就是对负样本进行抽样,抽样时按照置信度误差(预测背景的置信度越小,误差越大)进行降序排列,选取误差的较大的top-k作为训练的负样本,以保证正负样本比例接近1:3。

(2)损失函数

  损失函数定义为位置误差(locatization loss, loc)与置信度误差(confidence loss, conf)的加权和。对于位置误差,其采用Smooth L1 loss,对于置信度误差,其采用softmax loss。

  技术分享图片

(3)对每一张特征图,按照不同的大小(Scale) 和长宽比(Ratio)生成生成k个默认框(Default Boxes)

(4)数据扩增

  主要采用的技术有水平翻转(horizontal flip),随机裁剪加颜色扭曲(random crop & color distortion),随机采集块域(Randomly sample a patch)(获取小目标训练样本)

  • 数据扩增技术很重要,对于mAP的提升很大;
  • 使用不同长宽比的先验框可以得到更好的结果;
  •  采用多尺度的特征图用于检测也是至关重要的。

5、DSSD(2017)

  最大的贡献,在常用的目标检测算法中加入上下文信息。

  SSD算法对小目标不够鲁棒的最主要的原因是浅层feature map的表征能力不够强。DSSD就使用了更好的基础网络(ResNet-101)和Deconvolution层,skip连接来给浅层feature map更好的表征能力。

   技术分享图片

6、RetinaNet(2017)

  提出Single stage detector不好的原因完全在于:

  1. 极度不平衡的正负样本比例: anchor近似于sliding window的方式会使正负样本接近1000:1,而且绝大部分负样本都是easy example,这就导致下面一个问题:
  2. gradient被easy example dominant的问题:往往这些easy example虽然loss很低,但由于数 量众多,对于loss依旧有很大贡献,从而导致收敛到不够好的一个结果。

  作者提出了一个新的one-stage的检测器RetinaNet,达到了速度和精度很好地trade-off。使用改进的损失函数Focal Loss。

  Focal Loss从交叉熵损失而来。二分类的交叉熵损失如下:

 技术分享图片

 技术分享图片

 

参考博客:http://lanbing510.info/2017/08/28/YOLO-SSD.html

 

目标检测 — one-stage检测(二)

标签:目标   问题:   完全   上下   参考   span   能力   isp   区域   

原文地址:https://www.cnblogs.com/eilearn/p/9074587.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!