- 深度学习高手笔记(卷2):经典应用
- 刘岩(@大师兄)
- 1048字
- 2024-09-05 16:45:33
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层的图像特征,学习G和P的相对位置关系(1.1.4节中的t),然后根据相对位置关系,将候选区域对应成检测框,所以目标函数可以为:
(1.2)
其中,表示候选区域Pi对应的Pool5层特征向量,是可训练的网络参数,λ是正则化系数。