目标检测两大任务:1.区分类别 2.确定位置
锚框:
大多数目标检测是基于锚框:
1.提出多个锚框(边缘框)
2.预测锚框中是否含有关注物体
3.如果含有关注物体,进行偏移,调整锚框到真实边框
IoU交并比:计算两个框之间的相似度。取值范围0-1,0代表无重叠,1代表重合。
交并比就是两个框的交集比上并集
赋予锚框标号
训练过程中生成大量锚框,再为每个锚框赋予标号。锚框可能被标注成背景,要么就标注成相关的真实框以及偏移量。这大量锚框中可能会有大量负样本存在
非极大抑制(NMS)输出
消除重复框:1.选取非背景类的最大预测值。2.去掉所有其他与他的交并比(IoU)大于的预测。3.重复上述过程,直到所有预测框要么被留下要么被消除。
目标检测常用算法
一.区域卷积神经网络(R-CNN)
特点:
- 使用启发式搜索算法选择锚框
- 使用预训练模型将每个锚框的画面感当作图片输入,对每个锚框提取特征
- 训练SVM对锚框进行预训练
- 使用线性回归预测锚框的偏移
由于每个锚框大小不一无法计算,使用兴趣区域池化层将锚框转化成固定大小的输出。
兴趣区域(RoI)池化层:给定锚框划分成nxm块,输出每块最大值,输出值大小总是nxm
二、Fast RCNN
改进:每个图片抽多个锚框,每个锚框都要进行卷积计算抽取特征,计算量太大。Fast RCNN不是对每锚框提取特征
- 而是对整个图片抽取特征
- 之后按照锚框在特征图提取相应位置的特征信息
- 然后使用Rol pooling将提取的特征图转化成大小相同
- 最后将多维的特征图结果传入全连接层进行预测类别和偏移量。
好处:减少特征计算量
三、Faster R-CNN
改进:使用神经网络替代选择搜索锚框算法
四、Mask R-CNN
如果有像素级别的标号,使用FCN来利用这些信息
总结:
- R-CNN是最早、也是最有名的一类基于锚框和CNN的目标检测算法
- Fast/Faster R-CNN持续提升性能
- Faster RCNN和Mask R-CNN在要求精度高的场景下比较适用
四、单发多框检测(SSD)
对每个像素生成锚框 总结:
- SSD通过单神经网络来检测模型
- 在以像素为中心产生多个锚框
- 在多段输出上进行多尺度检测
五、YOLO
主要思想:与SSD一样通过单神经网络来检测,但是每个锚框之间不重复,减少计算量。并且没个锚框预测多个边缘框,防止一个锚框中出现多个物体。