您的位置:首页 > 其它

【深度学习】实时物体检测框架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)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: