这段时间了解了一下深度学习中的目标检测常用的模型,为以后学习打一打基础,其中基于候选区域的目标检测经典模型必属RCNN,FastRCNN,FasterRCNN,网上有很多大牛的博客讲的都很详细,大家可以去查找,我就从者三个模型的训练和测试过程方面简单的总结一下。小白一枚,不足之处多多指正
RCNN
RCNN是一个多阶段训练模型,包括生成候选区域,CNN微调,SVM训练和边界框回归等多个步骤。
训练过程
1. 使用ILSCRC2012训练集对CNN Alexnet模型进行预训练
2. 在验证集上使用SelectResearch对每张图片上生成2000个左右的候选的区域(IoU>0.5的标记正样本,IoU<0.5的标记负样本),将候选框大小调整为224*224大小
3. 将生成的候选区域送入预训练完成的Alexnet网络中进行微调,微调时使用SGD,并将学习率设置为预训练时的1/10(每一个batch中有大约128个候选框,其中正样本32个,负样本96个)
4. 微调完成后,在进行SVM之前需要重新定义正负样本,其中IoU<0.3的为背景负样本,正样本用GT box来表示
5. 将重新定义的候选框从Alexnet中得到4096维度的特征向量,进行SVM训练,为每一个类别训练一个二分类器(目标,背景)
6. 进行边界框回归,在选择线性回归器的样本时使用Hard negative mining method,就是选择假样本中代表性比较高的样本,即选择IoU>0.6的候选框进行回归训练。
具体做法:假如下图中的蓝色box用P来表示,P=(Px,Py,Pw,Ph),这四个值分别表示这个box的中心点横坐标,中心点纵坐标,box宽度以及box高度.红色框为目标的真实box,设为G,G=(Gx,Gy,Gw,Gh),每个元素的含义和P中相同,现在的目的就是想学习到一种变换,这个变换可以将P映射到G.
如何对这个变换进行建模? 作者给出了一种变换关系如下图所示:
其中,Φ5(P)是CNN网络中Pool5计算出的特征,,w_{x,y,h,w}为待学习的回归器参数。
测试过程
- 测试集上的图片使用SelectResearch生成2000个大小的候选区域,并调整到224*224大小
- 使用CNN计算每个特征图的特征向量
- 使用多个SV