为啥RCNN用SVM做分类而不直接用CNN全连接之后softmax输出( 二 )




■网友
涉及到cnn的东西,有时候是纯实验的结果,没有特别精准的理论推理
就好像各种滤波器以及conv层的设计。实验出来就是有效果,无他

■网友
因为rcnn是rcnn啊,全神经网络版可以看faster rcnn。
【为啥RCNN用SVM做分类而不直接用CNN全连接之后softmax输出】 然后稍微说下rcnn,它在特征提取时是每个候选框都分别做了一个卷积网络,而且要分的类别数也很大(1000个,对比于Faster筛检到了20个),所以要处理的信息不仅信息量大而且信息间的相关性也很大,因此此时用svm来解决多标记学习问题是合理的。

■网友
RCNN的训练过程
1)有监督预训练。在一个比较大的数据集比如ILSVRC进行有监督的预训练
2)对特定领域的fine-tuning.为了适应不同场合的检测需要,比如VOC共21类。将网络最后1000类分类层换成21类(VOC类和背景类)的分类层。与任一GT的IOU大于0.5的样本作为正样本,否则作为负样本,在每次迭代中,batchsize是128,正样本:负样本=1:3。
3)训练SVM分类器。对每个类都训练一个分类器,这时大于IOU大于0.7认为是正样本,小于0.3认为是负样本。其实之前步骤2)中阈值也是0.3,后来调试为0.5,因为这样可以增加正样本数量防止过拟合。如果采用有softmax的神经网络直接分类,将阈值设定为0.5的话将导致分类得到的正样本位置并不准确。所以在训练SVM分类器的时候阈值是0.7/0.3,保证了定位的准确度。采取hard negative mining 方法(初始时用所有样本训练,但是这样负样本可能远多于正样本,经过一轮训练后将score最高即最容易被误判的负样本加入新的负样本训练集,进行训练,重复以上步骤至达到停止条件比如分类器性能不再提升),使得SVM适用于小样本训练,在样本不平衡时依然可以做到不会发生过拟合。
4)Bounding-box regression 训练。选取的样本与GT的 IOU大于0.6。

■网友

为啥RCNN用SVM做分类而不直接用CNN全连接之后softmax输出

纠正一下。。。关于SVM正负样本的选取,作者已经说的很明确,ground truth作为正样本,iou小于0.3作为负样本,其余区域ignore。不是有些答主说的0.7

■网友
本人初次阅读RCNN论文时也产生了这个疑问。不过参考了一些回答并反复阅读论文之后,对原文的理解渐渐变得清晰。一点拙见,与各位分享:
论文中有这么一段:
为啥RCNN用SVM做分类而不直接用CNN全连接之后softmax输出

其中,本人标记的指的是:将那些与ground-truth的IOU大于等于0.5的区域作为可分类的样本,将IOU小于0.5的区域作为背景样本,对CNN进行训练:
为啥RCNN用SVM做分类而不直接用CNN全连接之后softmax输出

也就是说,作者本想通过CNN进行分类,但是由于ground-truth样本数比较少,只用ground-truth作为可分类样本训练CNN不太合适。所想到了将IOU大于0.5的区域都作为正样本,但是这样导致CNN的mAP由54.2%下降到了50.9%,所以想通过训练SVM来提高分类精度。
谈一谈个人观点:
1.提高精度。更高的精度是研究人员不懈的追求,所以再用SVM提高精度是有必要的(不知道使用了SVM后在速度会不会有没有什么变化)。
2.论文工作量与模型架构的考虑。从另一个角度来说,也许有其他办法来提高CNN的精度,但是如果能够对每类再训练一个SVM,会显得论文的工作量更加饱满且模型架构更加与众不同(前提是引入SVM后分类准确度能够得到提高)。之所以这么说,是因为后面Bounding-box回归时,作者提到了他的方法与文献中方法存在不同点,如下图所示。所以从论文写作的角度来说,方法、架构的不同,也是很有必要的。


推荐阅读