1.目标检测问题
1.1分类和回归
目标检测,即是分类问题,也是回归问题。
分类Classification:对打框的部分进行分类,是目标物体?还是背景?解决识别与分类(classification)。
回归Regression:cat(x,y,w,h),逼近这四个数值(例如:欧式距离作为损失函数);可以用来校正目标框。解决定位(localization)。
目标检测问题,可以大体分为级联的两步/两个模型:
- 识别。是不是目标?
- 分类。如果是目标的话,是什么目标?
1.2概念
Ground Truth、Region Proposal
对训练数据上的目标物体进行打框,需要手动去做;有公司专业做这部分工作。目标的真实标记区,也叫Ground Truth。目标框也叫 Region Proposal(Proposal:建议。可以理解为目标框是一种选区的建议,即选定的区域并不一定真的是目标)。
正/负样本
正样本:如果某个region proposal和当前图像上的所有ground truth中重叠面积最大的那个的IOU大于等于0.5(阈值),则该region proposal作为这个ground truth类别的正样本,否则作为负样本。另外正样本还包括了Ground Truth。
负样本:区域A与GT的重合度在20~50%之间,且A和其他任何一个已生成的负样本之间的重合度<=70%,则A为负样本。
IOU、NMS
IOU(Intersection Over Union)是测量在特定数据集中检测相应物体准确度的一个标准。一般IOU>0.5时,就可以认为目标检测的比较准确。
NMS(Non-Maximum Suppression)非极大值抑制:
每个边界框有一个置信度得分(confidence score),即分类器的类别分类概率,根据概率排序。
将置信度最高的边框A放入最终输出列表,计算剩下边框与A的IOU。设定阈值,用来删除重叠度较大的边界框。重复上述过程,直到边界框列表为空。
非极大值抑制,在计算机视觉任务中得到了广泛的应用,例如边缘检测、人脸检测、目标检测(DPM,YOLO,SSD,Faster R-CNN)等。
1.3技术演进
two stage
two stage:Proposals+Detection(class-agnostic proposals,class-specific detection)
算法:古典的目标识别、R-CNN、SppNet、Fast R-CNN、Faster R-CNN、(FCN,unet语义分割)、R-FCN等。
one stage
one stage:Detection(class-specific detection)
算法:YOLO、SSD、Retinanet等。
2.古典目标识别
2.1Selective Search选择搜索
CPU运行环境下,Selective Search可以在几秒内给出1000个Region Proposal。因为效率较低,一般不再使用Selective Search,它只是作为古典目标识别的一部分。
SS是一种图像bounding box算法,2011年由KoenE.A提出。
选择搜索的主要思路:我们想要框选的区域应该是有相似性或连续性的(颜色、纹理、大小等相似),对输入图像用分割算法得到很多子区域,根据相似性再对子区域进行合并提取bounding boxes候选边界框,不断进行区域迭代合并。在迭代过程中,对合并的子区域打上bounding boxes,这些boxes就是候选框。
选定候选框的其他算法还有很多,例如:
Selective Search的策略就是将层次聚类的思想用到了区域合并上。
2.2古典目标识别的步骤
- 构造训练集。使用SS进行区域融合,采纳正负样本,负样本会远多于正样本。
- 提取正负样本的特征。将正负样本转为特征向量:SIFT算法、HOG算法。
- SVM训练,分类超平面依赖于支持向量,正负样本的数量比例不影响分类效果。
- 反馈False Positive(预测为正,实际为负)。收集FP,结合第三步得到的SVM权值作为初始权值,进行SVM二次训练。False Negative不如FP那么关键,所以不用收集FN。
- 测试。使用SS得到图像的候选区域,对每个区域提取特征向量,用SVM对区域进行软分类,并按分类概率值进行排序,保留概率值>0.5的区域A并计算它们与概率值更高区域之间的重叠程度IOU,如果IOU>30%,则把A也去除,最后剩下的就是目标区域(NMS)。
2.3古典目标识别的不足
用SS提取候选框,效率低下;SVM用于二分类,古典目标识别更多是用于目标的定位,或者区分开目标与背景。
4.R-CNN
R-CNN(Region-based Convolutional Neural Network)即通过CNN来代替古典目标识别中的SIFT/HOG算法来将图像区域(regions)转变为向量。
4.1 R-CNN网络结构
R-CNN对比古典目标识别
R-CNN与古典目标识别的相同:
使用Selective Search提取候选框(RoI:Regions of Interest);
使用SVM进行分类。
R-CNN与古典目标识别的不同:
- Warped:对图像区域变形(resize)成统一的大小,是为了网络最后样本能以同样维度输入SVM,而不得不采取的做法。区域变形之后其实会影响分类结果。
- ConvNet:是指CNN网络中的卷积层和池化层,作用是将resize后的图像区域转成vector。ConvNet使用已有的预训练的网络结构(VGG16/AlexNet等),迁移学习,只需要结合softmax进行微调Fine-tune(log loss交叉熵);ConvNet训练好了之后,接入SVM,使用hinge loss训练SVM;接入线性回归,使用MSE训练Bbox reg。