目标检测
一、两阶段法
1、概述:
计算机视觉:
数据集:
2、传统目标检测:
(1)基于滑动窗的目标检测
困难:计算量大、很难基于特定的特征去适应多类别
(2)VJ Detector:实时目标检测(人脸)
将图像表示为积分图像,eg: 人脸明暗变化
使用Adaboost,构建多个弱分类器
采用Cascade级联多个强分类器,快速过滤大量不相关窗口
(3)HoG 行人检测
使用物体检测特征描述子,在人脸检测上有效
(4)DPM:
基于HoG行人检测衍生出来的,基于组件的检测特征及算法网络,在HoG特征的基础上提取了更具辨识力的特征
传统目标检测的问题:
3、两阶段目标检测:
**(1)深度学习下的目标检测:**图像->网络->输出类别、框
边界框回归:通过学习一种映射关系,对目标候选的位置进行精化
IOU(交并比):用来衡量真实标注和预测结果的重合程度
NMS(非极大值抑制):消除冗余的检测框
两阶段法: 判断有无目标后回归,后将目标分类后回归
一阶段法:直接对框判断分类,同时对位置进行回归
(2)两阶段法
1)RCNN
问题:
每张图需要额外步骤提取region proposal候选框
存储和重复提取每个region proposal的特征花费大量存储和计算资源
特征提取:
方法:CNN
问题:保存所有数据候选区域的特征,浪费资源
区域分类
方法:为每一个类训练SVM分类器
问题:每个SVM需要单独训练,网络复杂、空间消耗大
边界框回归
方法:最小二乘法线性回归(输入:特征、真是位置;输出:修正位置)
问题:比较笨???
2)SPP-Net
作用:减少了提取特征的时间和用来存储特征的空间
做法:空间金字塔池化
特征划分成多个固定网格(16*16、 4 * 4 、 1 * 1)取pooling
优势:无论特征维度大小,输出维度都统一,提升了CNN提取特征的质量
3)Fast RCNN
与SPP-Net的异同:
a. 都是特征而不是图像的warp
b. SPP-Net是空间金字塔池化
c. Fast R-CNN是ROI Pooling
4)Faster R-CNN
a. region proposal候选框
b. Anchor Box : 用于预测的特征图上的每个点叫anchor,根据就每个点生成的区域叫anchor box
每个点取一个anchor box ,则K=1,通过3*3大小的卷积核滑动,得到与原来特征图相同的6通道大小的特征图:
1:特征图该位置是目标的概率
2:特征图该位置不是目标的概率
3:中心点X坐标
4:中心点Y坐标
5:边框宽度偏移量
6:边框高度偏移量
(1)整体架构
Faster RCNN是一个端到端的网络——输入图片,得到检测框
BackBone部分由16层的VGG网络提取图片特征,其中CNN网络如图所示,黄色是conv层,蓝色是relu激活函数,绿色是pooling层
Backbone输入是一张图片,输出是图片的特征图
之后通过RPN网络得到Anchor。这种方法相较于RCNN中Selective Serach选择性搜索方法,不需要额外步骤提取候选框,且降低了存储和重复提取每个region proposal的特征花费大量存储和计算资源;相较于Fast RCNN分类时为每个类训练相应的SVM分类器,减少了空间消耗和不必要的资源浪费,同时优化了原来的边界框回归方法,从原来的最小二乘法变成了现在的Smooth L1,可以处理数据中的异常值,相较于最小二乘法和L1更加具有鲁棒性。
然后选择包含物体的Anchor输入到ROI Pooling中,ROI pooling所有候选框共享一张特征图,且保持最终输出大小一致,提高了提取特征的速度
最后ROI提取的特征输入BBox Header中,进行分类和回归,将结果解码,去除相似的框,得到最终的预测结果,实现端到端的图片特征提取。
(2)BackBone
VGG16优点:
1、结构简洁
2、小卷积核和连续的卷积层
3、小池化核,使用的是2×2
4、通道数更多,特征度更宽
5、层数更深
6、全连接转卷积
RPN网络首先根据得到的特征图,提取Anchor。每个像素点根据大小和比例不同生成不同大小和长宽比的Anchor。
另外,通过一个3*3的卷积核,得到与原来特征图相同的6通道大小的特征图:
其中两维为分类模块,判断提取的框中是否存在目标;
另外四维为回归模块,判断框与真实框的中心位置(两维)、框的宽、高(两维)的偏移量;
decode:将RPN和Anchor输出解码
(4)ROI Pooling
目的:所有候选框共享一张特征图,且保持最终输出大小一致
做法:
1、输入的固定大小的feature map
2、获取Region proposal 投影之后位置
3、将其划分为(2*2)个sections(因为输出大小为2*2)
4、对每个section做max pooling,最终可以得到右下角所示ROI feature
(5)Back Head
ROI Feature 经过Pooling将特征图压缩,然后这个特征经过两个全连接层作为分类分支和和回归分支的预测,最后再计算LOSS
预测阶段和RPN阶段相似,先将head部分的输出和RPN输出的ROI解码得到预测框,再
filter: 过滤面积过小的
top_k:分数排序,过滤分数较低的
NMS:去掉十分接近的目标框
top_k: 排序,过滤分数低的
5)FPN:
6)R-FCN:
7)Mask R-CNN: