深度学习高手笔记(卷2):经典应用
上QQ阅读APP看书,第一时间看更新
 第1章 双阶段检测

1.1.4 训练数据准备

1.SVM分类器的数据准备

标签:由于SVM只能做二分类,因此在N类分类任务中,R-CNN使用了N个SVM分类器。对于第K类物体,与该类物体的真值框的IoU大于0.3的视为正样本,其余视为负样本。R-CNN论文中指出,0.3是通过栅格搜索(grid search)得到的最优阈值。

特征:在决定使用哪一层的特征作为SVM的输入时,R-CNN通过对比AlexNet网络中的最后一个池化层Pool5以及两个全连接层FC6和FC7的特征在PASCAL VOC 2007数据集上的表现,发现Pool5层得到的错误率更低,得出结论——Pool5更能表达输入数据的特征。因此,SVM使用的是从Pool5层提取的特征,原因是全连接会破坏图像的位置信息。

2.岭回归位置精校器的数据准备

特征:位置精校和分类的思路类似,不同之处是它们一个是分类任务,一个是回归任务。同SVM一样,岭回归位置精校器使用的也是从Pool5层提取的特征。候选区域选取的是和真值框的IoU大于0.6的样本。

标签:岭回归位置精校器使用的是相对位置,这有助于降低模型学习的难度,提升对不同尺寸的目标的检测能力。在这里,G = {Gx, Gy, Gw, Gh}表示真值框的坐标和长宽,P = {Px, Py, Pw, Ph}表示候选区域的大小和长宽。相对位置的回归目标为T = {tx, ty, tw, th},它的计算方式为:

(1.1)

3.任务训练细节

CNN预训练。出于当时硬件资源的限制,R-CNN并没有选择容量更大的VGG-16,而是选择了速度更快的AlexNet。预训练指的是在ILSVRC 2013上训练分类网络,微调训练使用了小批次的SGD进行优化,批次大小是128,其中32个正样本,96个负样本。因为预训练是分类任务,所以CNN使用的损失函数是交叉熵损失函数。

SVM分类器训练。SVM的训练使用了难负样本挖掘(hard negative mining,HNM)。对于目标检测我们会事先标记出真值框,然后在算法中生成一系列候选区域,这些候选区域有和标记的真值框重合的,也有没重合的,那么IoU超过一定阈值(通常设置为0.5)的则认定为正样本,阈值之下的则认定为负样本。然后将这些样本放入SVM分类器中训练。然而,这也许会出现一个问题,那就是正样本的数量远远小于负样本,这样训练出来的分类器的效果总是有限的,会出现许多假阳性样本。把其中得分较高的假阳性样本当作所谓的难负样本,既然挖掘出了这些难负样本,就把它们放入SVM分类器中再训练一次,从而加强分类器判别假阳性的能力。

岭回归位置精校器训练。精校器的作用是找到一组映射,使候选区域的位置信息P通过某种映射,能够转化为G。这也可以理解为根据Pool5层的图像特征,学习GP的相对位置关系(1.1.4节中的t),然后根据相对位置关系,将候选区域对应成检测框,所以目标函数可以为:

(1.2)

其中,表示候选区域Pi对应的Pool5层特征向量,是可训练的网络参数,λ是正则化系数。