1 简介
Hi,大家好,这里是丹成学长,今天向大家介绍
基于深度学习的目标检测算法
2 目标检测概念
普通的深度学习监督算法主要是用来做分类,如图1所示,分类的目标是要识别出图中所示是一只猫。
在ILSVRC(ImageNet Large Scale Visual Recognition Challenge)竞赛以及实际的应用中,还包括目标定位和目标检测等任务。
其中目标定位是不仅仅要识别出来是什么物体(即分类),而且还要预测物体的位置,位置一般用边框(bounding box)标记,如图2所示。
而目标检测实质是多目标的定位,即要在图片中定位多个目标物体,包括分类和定位。
比如对图3进行目标检测,得到的结果是好几只不同动物,他们的位置如图3中不同颜色的框所示。
从算法不难看出,R中的区域都是合并后的,因此减少了不少冗余,相当于准确率提升了,但是别忘了我们还需要继续保证召回率,因此算法1中的相似度计算策略就显得非常关键了。如果简单采用一种策略很容易错误合并不相似的区域,比如只考虑轮廓时,不同颜色的区域很容易被误合并。选择性搜索采用多样性策略来增加候选区域以保证召回,比如颜色空间考虑RGB、灰度、HSV及其变种等,相似度计算时既考虑颜色相似度,又考虑纹理、大小、重叠情况等。
总体上,选择性搜索是一种比较朴素的区域提名方法,被早期的基于深度学习的目标检测方法(包括Overfeat和R-CNN等)广泛利用,但被当前的新方法弃用了。
5.1.2 OverFeat
OverFeat的核心思想有三点:
1 区域提名:结合滑动窗口和规则块,即多尺度(multi-scale)的滑动窗口;
2 分类和定位:统一用CNN来做分类和预测边框位置,模型与AlexNet[12]类似,其中1-5层为特征抽取层,即将图片转换为固定维度的特征向量,6-9层为分类层(分类任务专用),不同的任务(分类、定位、检测)公用特征抽取层(1-5层),只替换6-9层;
3 累积:因为用了滑动窗口,同一个目标对象会有多个位置,也就是多个视角;因为用了多尺度,同一个目标对象又会有多个大小不一的块。这些不同位置和不同大小块上的分类置信度会进行累加,从而使得判定更为准确。
OverFeat的关键步骤有四步:
1 利用滑动窗口进行不同尺度的区域提名,然后使用CNN模型对每个区域进行分类,得到类别和置信度。从图中可以看出,不同缩放比例时,检测出来的目标对象数量和种类存在较大差异;
当然Overfeat也是有不少缺点的,至少速度和效果都有很大改进空间,后面的R-CNN系列在这两方面做了很多提升。
5.2 基于区域提名的方法
主要介绍基于区域提名的方法,包括R-CNN、SPP-net、Fast R-CNN、Faster R-CNN、R-FCN。
5.2.1 R-CNN
如前面所述,早期的目标检测,大都使用滑动窗口的方式进行窗口提名,这种方式本质是穷举法,R-CNN采用的是Selective Search。
以下是R-CNN的主要步骤:
区域提名:通过Selective Search从原始图片提取2000个左右区域候选框;
区域大小归一化:把所有侯选框缩放成固定大小(原文采用227×227);
特征提取:通过CNN 络,提取特征;
分类与回归:在特征层的基础上添加两个全连接层,再用SVM分类来做识别,用线性回归来微调边框位置与大小,其中每个类别单独训练一个边框回归器。
其中目标检测系统的结构如图6所示,注意,图中的第2步对应步骤中的1、2步,即包括区域提名和区域大小归一化。
SPP-net的 络结构如图8所示,实质是最后一层卷积层后加了一个SPP层,将维度不一的卷积特征转换为维度一致的全连接输入。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!