【深度学习】实时物体检测框架Single-Shot MultiBox Detector(SSD)(1)概述
2017-12-24 23:49
435 查看
一、ssd使用场景及性能分析
目标检测是深度学习图像识别的技术领域,指对单张图片中的物体的类别和位置进行标注。在ssd中,位置信息是通过边界框(bounding-boxes)来描述的。边界框是一组四个数据,xmin,ymin,xmax,ymax(VOC标准格式)共同描述物体的位置信息。
在PASCAL VOC2007 的测试集上,ssd(300x300)取得了72.1的mAP,已经算是非常精准了,更可贵的是它比Fast、Faster R-CNN更快(经测试SSD在nvidia gtx970m上可以取得近30fps的准确度,接近实时,而faster r-cnn不足10fps)
因此,SSD模型在准确性和实时性上,都具有非常高的实用价值。
二、ssd原理初探
SSD(300x300)的网络结构如图所示。与 Fast R-CNN、Faster R-CNN 相似,这几种检测网络都用相同预训练模型( ICLR 2015, VGG16),
并在 ILSVRC CLS-LOC 数据集上进行了预训练
所以网络在图上可以分为两部分,前半部分是VGG-16的基础网络(base network)
而后半部分是额外特征层。
使用下图可以看得更加清晰
state-of-art 的检测系统大致都是如下步骤是:
根据生成逻辑(Selective Search等)生成一系列候选框
在这些候选框中提取特征
经过一个分类器,来判断里面是不是物体,是什么物体
非极大值抑制
但这类方法对于嵌入式系统,所需要的计算时间太久了,不足以实时的进行检测。当然也有很多工作是朝着实时检测迈进,但目前为止,都是牺牲检测精度来换取时间
而ssd模型的原理是
Multi-scale feature maps for detection
在基础网络结构后,添加了额外的卷积层,这些卷积层的大小是逐层递减的,可以在多尺度下进行预测。
Convolutional predictors for detection
每一个添加的特征层(或者在基础网络结构中的特征层),可以使用一系列卷积核,去产生一系列固定大小的 预测结果,具体见下图。对于一个大小为 m×n,具有 p 通道的特征层,使用的卷积核就是 3×3×p 的 kernels。产生的预测结果,那么就是归属类别的一个得分,要么就是相对于默认边界框的位置偏移量(offset)。
在每一个 m×n 的特征图位置上,使用上面的 3×3 的 kernel,会产生一个输出值。预测边界框的位置偏移量值是输出的默认边界框位置与此时 feature map location 之间的相对距离(YOLO 架构则是用一个全连接层来代替这里的卷积层)。
Default boxes and aspect ratios
每一个 box 相对于与其对应的特征图的“格”(feature map cell) 的位置是固定的。 在每一个 feature map cell 中,我们要预测得到的边界框,与默认生成的边界框(default boxes)之间的偏移量(offsets),以及每一个预测边界框中包含物体的得分(每一个类别概率都要计算出)。
因此,对于一个位置上的 k 个边界框中的每一个,我们需要计算出 c 个类,每一个类的分类得分,还有这个 边界框相对于它的默认生成边界框 的 4 个偏移值(offsets)。于是,在特征图中的每一个格上,就需要有 (c+4)×k 个卷积滤波核。对于一张 m×n 大小的特征图,即会产生 (c+4)×k×m×n 个输出结果。
Hard negative mining
在生成一系列的 predictions 之后,会产生很多个符合 ground truth box 的 predictions boxes,但同时,不符合 ground truth boxes 也很多,而且这个 negative boxes,远多于 positive boxes。这会造成 negative boxes、positive boxes 之间的不均衡。训练时难以收敛。
因此,本文采取,先将每一个物体位置上对应 predictions(default boxes)是 negative 的 boxes 进行排序,按照 default boxes 的 confidence 的大小。 选择最高的几个,保证最后 negatives、positives 的比例在 3:1。
本文通过实验发现,这样的比例可以更快的优化,训练也更稳定。
Data augmentation
本文同时对训练数据做了 data augmentation,数据增广。关于数据增广,推荐一篇文章:Must Know Tips/Tricks in Deep Neural Networks,其中的 section 1 就讲了 data augmentation 技术。
每一张训练图像,随机的进行如下几种选择:
使用原始的图像
采样一个 patch,与物体之间最小的 jaccard overlap 为:0.1,0.3,0.5,0.7 与 0.9
随机的采样一个 patch
采样的 patch 是原始图像大小比例是 [0.1,1],aspect ratio 在 0.5 与 2 之间。
当 groundtruth box 的 中心(center)在采样的 patch 中时,我们保留重叠部分。
在这些采样步骤之后,每一个采样的 patch 被 resize 到固定的大小,并且以 0.5 的概率随机的 水平翻转(horizontally flipped)
,
相关文章推荐
- SSD: Single Shot MultiBox Detector 深度学习笔记之SSD物体检测模型
- 深度学习:目标检测-RCNN学习笔记:SSD:Single Shot MultiBox Detector
- 【深度学习:目标检测】RCNN学习笔记(10):SSD:Single Shot MultiBox Detector
- 【论文笔记】物体检测系列 SSD: Single Shot MultiBox Detector
- RCNN系列学习笔记(6):SSD: Single Shot MultiBox Detector
- [目标检测]SSD:Single Shot MultiBox Detector
- CAFFE实验学习笔记(3)——SSD(Single Shot MultiBox Detector)
- SSD+caffe︱Single Shot MultiBox Detector 目标检测+fine-tuning(二)
- 目标检测--SSD: Single Shot MultiBox Detector
- 目标检测,windows 下跑 SSD: Single Shot MultiBox Detector
- 目标检测之SSD(single shot multibox detector)的pytorch代码阅读总结
- 【计算机视觉】目标检测之ECCV2016 - SSD Single Shot MultiBox Detector
- SSD(Single Shot MultiBox Detector)理论学习
- [目标检测]SSD: Single Shot MultiBox Detector
- SSD(single-shot multibox detector)源码学习笔记
- SSD+caffe︱Single Shot MultiBox Detector 目标检测(一)
- SSD: Single Shot MultiBox Detector 检测单张图片
- 3.4 无proposal检测方法(3): SSD: Single Shot MultiBox Detector
- CPU版SSD(Single Shot MultiBox Detector)检测单张图片
- 目标检测方法简介:RPN(Region Proposal Network) and SSD(Single Shot MultiBox Detector)