深度学习下的目标检测
- 两阶段检测
- 第一阶段提供位置信息、第二阶段提供类别信息
- 先进行区域生成,该区域称之为region proposal,再通过卷积神经网络进行样本分类
- 常见算法:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN
- 一阶段检测
- 不进行区域生成,直接将物体检测和分类问题处理成回归问题。直接在输出层回归边界框的位置和所属类别。标签样式为:y={pc,bx,by,bh,bw,c1,c2,c3}T
- 常见算法:OverFeat、YOLO系列、SSD、RetinaNet
候选区域产生:
- 滑窗检测算法
- 方法:首先对输入图像进行不同窗口大小的滑窗进行从左往右、从上到下的滑动。每次滑动时候对当前窗口执行分类器(分类器是事先训练好的)。如果当前窗口得到较高的分类概率,则认为检测到了物体。对每个不同窗口大小的滑窗都进行检测后,会得到不同窗口检测到的物体标记,这些窗口大小会存在重复较高的部分,最后采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。最终,经过NMS筛选后获得检测到的物体。
- 缺点:滑窗之间存在很大部分的重叠,即存在大量的冗余。对于实时器要求较高的分类器,不推荐使用滑窗法。
- 经典论文:R-CNN、OverFeat
- 区域检测算法(选择性搜索)
- 方法:利用某些算法,将图像分割成多个区域,对这些区域进行合并或检测。子区域合并的方法提取检测框
数据表示:
效果评估
mAP:在所有的置信度阈值的情况下,综合的考虑P准确率和R召回率。值越高越好
非极大值抑制
预测结果中,可能多个预测结果间存在重叠部分,需要保留交并比最大的、去掉非最大的预测结果,这就是非极大值抑制(Non-Maximum Suppression,简写作NMS)。
目标检测模型
两阶段(简单了解)
R-CNN系列
- R-CNN
- 用预训练模型
- 利用选择性搜索提取候选框
- 用SVM进行分类
- Fast R-CNN
- 用选择性搜索生成候选框
- 用softmax进行分类
- 对R-CNN进行改进,训练和测试时间减少
- Faster R-CNN
- 包围边框回归法生成候选区域
- 速度继续加快,实现端到端的目标检测模型
一阶段
YOLO系列(重点学习)
1. YOLOv1(2016)
- 将目标检测定义为一个单一的回归问题。
- 直接在输出层回归边界框所在位置和所属类别
具体思想:
-
将一张图分为S*S个格子,每个格子预测出来B(论文中选用的是2)个候选框,候选框位置由四个值(x,y,h,w)确定。每个网格单元预测B个候选框和这些框的置信度得分。这些置信度分数反映了模型对盒子里有一个物体有多自信。形式上,论文将置信度定义为Pr(Object) * IOU。如果该单元格中不存在对象,则置信度分数应为零(Pr(Object) 值为0)。否则,我们希望置信度分数等于预测框与任何ground truth(这里选择与真实框的iou最大的那个iou)之间的iou(Pr(Object) 为1)。
-
生成候选框的中心是格子的中心
这里的x,y,h,w的值都是经过归一化的值,是相对网格的相对位置。
-
每个格子会预测该格子的两个候选框中的物体是某类的概率。我们只预测一组分类概率,而不考虑框B的数量。这就为我们提供了每个格子中每个候选框的特定类别的置信度分数 Pr(Classi) ∗ IOU。这就是后面每个类的预测的内容(编码了该类别出现在框中的概率以及预测框与该对象的匹配程度)。
-
多个单元格预测一个对象(这个对象比较大),每个框都做这一串,就会产生一些都预测同一个物体的近乎重叠的框,这些框会通过非极大值抑制留下置信度最高的框。
yolov1的网络结构,最后产生的是s * s * (b * 5+c)的形式的特征图
损失函数:
-
定位误差和分类误差同等加权,这并不合理。
解决:类别误差不加权值,定位误差加权值。
-
有的网格中不含物体,这些网格中的置信度往往趋向于零,这就使得包含对象网格的梯度下降变得困难。
解决:λcoord和λnoobj来实现这一点。设λcoord = 5, λnoobj = .5。
-
大物体的小偏差应该比小物体的小偏差影响小。
解决:我们预测边界框宽度和高度的平方根,而不是直接预测宽度和高度。
优缺点:
yolo好处:快、背景误差小、泛化性好
yolo限制:精度上落后于最先进的检测系统、难以处理小物体
其他小的引入:
- 引入学习率动态减少
- dropout防止过拟合
- 数据增强:我们引入了原始图像大小的20%的随机缩放和平移。我们还在HSV色彩空间中随机调整图像的曝光和饱和度,最高可达1.5倍。