一、目标检测概述
-
什么是目标检测?
目标检测不仅要在图像中找出目标物体,还要标记出其具体位置。目标检测.png 目标检测的难点?
-
常见的问题:
定位不准确
识别的类别错位
把背景误认为是目标
检测的目标物错位
二、传统目标检测
传统的目标检测一般分为三个阶段:首先在给定的图像上选择一些候选的区域,然后对这些区域提取特征,最后使用训练的分类器进行分类。
-
区域选择
采用穷举法滑动窗口,选择出目标可能存在的窗口。 -
特征提取
手动特征提取,常用的特征提取法有SIFT和HOG等。 -
分类器
主要有SVM,Adaboost等
,传统目标检测存在两个主要问题:1.基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余;2.是手工设计的特征对于多样性没有很好的鲁棒性。
1.基于HOG的目标检测
1)图像预处理(统一亮度、色彩强度)
2)计算图像中每一个像素点的梯度大小和方向
3)将图像分为像素的模块,使用HOG计算次模块的向量表达(向量长度为9)
4)与4个相邻的区域做四次Normalization,将四次的Normalization的结果连接为一个长度为36的向量,并且将其正则化成为单位向量
5)将图像向量作为分类器的输入,训练图像并分类。
三、RCNN家族系列
针对传统目标检测中存在的两个问题:穷举法滑动窗口冗余和手动特征提取效果不好,RCNN系列采取了相应的解决措施。
RCNN
针对滑动窗口
RNN采用了,对图像进行region proposal(候选区域)的选取。这可以保证在选取较少窗的情况保持较高的召回率,并且获取的候选窗口要比滑动窗口的质量更高。
针对特征选取
RNN采用进行图像特征提取。
使用Region proposal+CNN的RCNN框架,代替了使用的滑动窗口+手工设计特征的传统目标检测结构,使得目标检测取得了巨大突破。
1.1 RCNN检测的总体流程:
1)用selective search算法选取候选框
2)将候选区域resize成CNN输入的尺寸,进行特征提取
3)使用SVM进行分类(为每个类都训练一个SVM分类器)
1.2 RCNN训练阶段的流程:
1)预训练
先在ImageNet上训练一个分类神经网络(CNN)
2)选取候选框
用selective search算法选取候选框,并将候选框resize为同样大小
3)Fine-tuning
在自己的训练数据集中微调预训练好的CNN:把ImageNet上预训练的网络从1000个输出,改为K+1个输出,作为一个识别K+1种类别的分类问题。(其中K为自己训练数据集中感兴趣的目标类别数,1为背景类:IOU<0.5的预选框)
4)提取特征向量
将每一个候选区域输入到Fine-tune后的CNN中,去掉CNN的最后一个分类层,就得到了图像的特征向量(类似Image caption项目)
5)训练SVM分类器
使用特征向量为每一个类别训练一个二元SVM分类器。(候选区域与真实区域的IOU值大于0.3的为正样本,其它为负样本)
6)预测目标位置
为了减少Selective Search选取的候选区定位差误,使用regression模型预测新的定位(x, y, w, h)
1.3 RCNN预测阶段的流程:
训练阶段,数据做了什么处理,测试阶段也要做同样的处理。在RCNN中,测试集数据也要先使用selective算法提取图像预选框,然后再进行模型预测。
1)选取预选框
使用selective search选取测试图像的预选框,并resize为固定大小
2)提取图像特征向量
将预选框输入到训练好的CNN中,进行图像特征提取
3)类别预测
将特征向量输入到为该类别训练的SVM分类器进行类别预测
4)位置预测
使用Bounding-box回归,预测目标最终的位置
1.4 RCNN架构
1.5 RCNN缺点:
-
预选框选取速度慢。
对于每一张图,需要使用Selective Search算法选择2000个候选框,这个过程本身就比较慢。 -
特征提取速度慢。
每个预选框都要单独进入CNN中进行特征提取,存在大量重复计算 -
四个分离的部分没有重用计算:
Selective Search:选择候选区域
CNN:提取图像特征
SVM:目标类别识别
Bounding-box回归:定位
Selective Search算法原理
1)使用图像分割算法创建候选区域
2)使用贪心算法合并候选区域(通过相邻区域的相似度)
3)重复迭代第二步,直到达到停止条件
Bounding-box回归
Bounding-box 回归是用来微调预选框的,使预测出来的目标定位更加准确。但并非所有的预选框都包含真实的目标,Bounding-box Regression只计算包含目标的预选框(IOU>0.6),其它预选框则抛弃。
在Bounding-box Regression的训练过程中,为预选框的位置,
为真实框的位置,Bounding-box Regression的目标就是学会一种映射将P转换为G。这种映射关系公式为:
关于Bounding-box回归,:
训练时,其目标就是找到预选框和真实框之间的映射关系;
测试时,采用这种'映射关系',对预测出的预选框进行微调,使得预选框定位更加准确。
2.Fast RCNN
Fast-RCNN不再像RCNN一样,把每个候选框都单独通过CNN提取特征,而是将整个图像通过CNN一次性提取特征,大大减少了计算量,提高了目标检测的加速。
2.1 Fast RCNN工作流程:
1)将一整张图像直接输入到CNN网络中,一次性提取图像特征,得到CNN特征矩阵
2)仍然使用select search算法对图像提取预选框
3)将可能包含目标的预选框,在第一步提取的CNN特征图上,找到其对应的特征矩阵
4)通过ROI Pooling层,将预选框对应的特征矩阵,resize为同样大小
5)将预选框特征图输入到CNN网络中,进行目标检测(分类+回归)
2.2 Fast RCNN优缺点:
优点:
- 使用ROI池化层将不同size的预选框特征图,映射为同一大小
- 使用一个Softmax分类代替了多个SVM分类器
- 使用多任务损失函数,同时进行分类和回归
- 将RCNN中下面3个独立模块整合在一起:
CNN:提取图像特征
SVM:目标类别识别
Bounding-box回归:定位
缺点:
- 预选框的选取仍然是使用Selective Search算法,非常耗时
- 并为实现真正意义上的“端到端”架构
2.3 Fast RCNN架构图:
3.Faster RCNN
Faster RCNN不再使用select search传统的算法提取预选框,而是采用Region Proposal Netword神经网络直接产生预选框。
Faster RCNN将一直以来分离的region proposal和CNN分类融合到了一起,使用端到端的网络进行目标检测,在速度和精度上都得到了不错的提高,实现真正意义上的“端到端”架构。