R-CNN中的SVM理解

参考自:(二)目标检测算法之R-CNN - 胖白白 - 博客园 (cnblogs.com)

(1条消息) R-CNN算法学习(步骤三:SVM分类)_Dlog的博客-CSDN博客_rcnn svm

        SVM是一个二分类器,针对固定类别,比如猫,理想情况下,输入一个n维的特征向量,输出是0表示该物体不是猫,输出为1表示该物体是猫。在训练一个SVM时首先要准备好多训练样本,这些训练样本分为两个部分,输出为1的属于正样本,输出为0的表示负样本。利用这些样本训练完一个SVM二分类器后,输入一个检测数据,输出的是一个0-1之间的数,表示该检测数据是猫的概率大小值。

        在R-CNN中,训练其中的SVM时,首先要知道的时针对每个要分类的类别都要单独训练一个SVM,也就是如果我们要R-CNN网络实现20个类别的分类检测,需要训练20个SVM。

SVM训练样本分类规则问题?

        其次SVM训练之前,需要准备训练所需要的正样本和负样本,这里就涉及到了设为正负样本的规则问题。我们知道只有当我们知道只有当bounding box把整个猫猫都包含在内,那才叫正样本;如果bounding box 没有包含到猫猫,那么我们就可以把它当做负样本。但问题是当我们的检测窗口只有部分包含物体,那该怎么定义正负样本呢?作者测试了IOU阈值各种方案数值0,0.1,0.2,0.3,0.4,0.5。最后通过训练发现,如果选择IOU阈值为0.3效果最好,即当重叠度小于0.3的时候,我们就把它标注为负样本。(此处的IOU阈值,比如阈值0.3,是指当前bounding box与整个猫猫都包含的bounding box交叉部分占两个bounding box的并集的百分比是0.3)(此处SVM的训练数据中,IOU阈值小于0.3的被划为负样本,而检测框真值,就是图像中真正的bounding box(即IOU=1)被划为每个类别的正样本,IOU阈值在0.3-1之间的样本此阶段被忽略,不使用)理解来源自论文附录B

R-CNN中SVM训练情况?

        我们通过5个卷积层后接2个全连接层CNN提取2000的预选框的4096维的特征向量(即每个预选框截取的图像对应一个4096维特征向量,每张训练图像的2000个预选框,卷积网络的输出就是2000*4096维的矩阵)。后面接SVM进行二分类,假设检测N个类别,那么会提供20个不同类别的SVM分类器,每个分类器都会对2000个候选区域的特征向量分别判断一次,这样得出[2000, 20]的得分矩阵。计算情况如下图:

        针对一张图像,R-CNN中SVM阶段的输出是2000*20的矩阵(前提是在一张图像取2000个预选区域,且网络要分为20个类别)

        也就是每个SVM分类器要做的是判断2000个预选框区域属于某个类别的概率。

R-CNN论文理解(2)_lyychlj的博客-CSDN博客

R-CNN论文理解:

问题一:微调阶段和SVM阶段阈值不同的原因?

        微调阶段是由于CNN对小样本容易过拟合,需要大量训练数据,故对IoU限制宽松:Ground Truth+与Ground Truth相交IoU>0.5的建议框为正样本,否则为负样本;
        SVM这种机制是由于其适用于小样本训练,故对样本IoU限制严格(负样本和正样本的限制都更加严格了):Ground Truth为正样本,与Ground Truth相交IoU<0.3的建议框为负样本。

问题二:为什么微调之后,训练SVM呢?简单地将最后一层微调网络(21路Softmax回归分类器)作为对象检测器不是更加简洁么?

        因为微调时和训练SVM时所采用的正负样本阈值不同,微调阶段正样本定义并不强调精准的位置,而SVM正样本只有Ground Truth;并且微调阶段的负样本是随机抽样的,而SVM的负样本是经过hard negative mining方法筛选的,是更加严格的负样本;导致在采用SoftMax会使PSACAL VOC 2007测试集上mAP从54.2%降低到50.9%。(IoU大于0.5就作为正样本会导致网络定位准确度的下降,故使用了SVM来做检测,全部使用ground-truth样本作为正样本,且使用非正样本的,且IoU大于0.3的“hard negatives”,提高了定位的准确度。

问题三:可以不进行特定样本下的微调吗?可以直接采用AlexNet CNN网络的特征进行SVM训练吗?

        微调阶段只调fc6、fc7层的权值参数。前面5层卷积层的权值参数不动。
        文中设计了没有进行微调的对比实验,分别就AlexNet CNN网络的pool5、fc6、fc7层进行特征提取,输入SVM进行训练,这相当于把AlexNet CNN网络当做万精油使用,类似HOG、SIFT等做特征提取一样,不针对特征任务。实验结果发现f6层提取的特征比f7层的mAP还高,pool5层提取的特征与f6、f7层相比mAP差不多;
        在PASCAL VOC 2007数据集上采取了微调后fc6、fc7层特征较pool5层特征用于SVM训练提升mAP十分明显;
        由此作者得出结论:不针对特定任务进行微调,而将CNN当成特征提取器,pool5层得到的特征是基础特征,类似于HOG、SIFT,类似于只学习到了人脸共性特征;从fc6和fc7等全连接层中所学习到的特征是针对特征任务特定样本的特征,类似于学习到了分类性别分类年龄的个性特征。        概括来说:前面CNN卷积层是用来提取基础特征的,而后面的全连接层是用来提取针对特定任务特定样本的特定综合特征,所以微调环节对特定分类任务非常有必要,前期预训练环节使用非常大的且种类繁多的数据集使得CNN卷积环节对基础特征的提取更加具有多样性,也更加稳定(就是可以最大程度的提取出图像中全部的基础特征)并且大量的数据也可以防止过拟合。

问题四:针对SVM训练阶段,由于训练数据太大,难以装进内存问题?

        我们选择了标准的hard negative mining method

        难负例挖掘算法,用途就是正负例数量不均衡,而负例分散代表性又不够的问题,hard negative就是每次把那些顽固的棘手的错误,再送回去继续练,练到你的成绩不再提升为止.这一个过程就叫做’hard negative mining’

问题五:可视化部分(论文3.1)

        根据我们想要了解,想要可视化的某一层的特征,想知道这一层学到了什么东西,可视化环节的策略是根据这一层得到的特征结果反推至原始图像上的所对应的部位区域,利用这个部位区域所展示的内容来显示这一层学到了原图片的什么东西什么特征,也就是这一层更关注原始图像的哪些特征。

       

具体步骤:

        直接可视化第一层filters非常容易理解,它们主要捕获方向性边缘和对比色。难以理解的是后面的层。Zeiler and Fergus提出了一种可视化的很棒的反卷积办法。我们则使用了一种简单的非参数化方法,直接展示网络学到的东西。这个想法是单一输出网络中一个特定单元(特征),然后把它当做一个正确类别的物体检测器来使用。
        方法是这样的,先计算所有抽取出来的推荐区域(大约1000万),计算每个区域所导致的对应单元的激活值,然后按激活值对这些区域进行排序,然后进行最大值抑制,最后展示分值最高的若干个区域。这个方法让被选中的单元在遇到他想激活的输入时“自己说话”。我们避免平均化是为了看到不同的视觉模式和深入观察单元计算出来的不变性。
        我们可视化了第五层的池化层pool5,是卷积网络的最后一层,feature_map(卷积核和特征数的总称)的大小是6 x 6 x 256 = 9216维。忽略边界效应,每个pool5单元拥有195×195的感受野,输入是227×227。pool5中间的单元,几乎是一个全局视角,而边缘的单元有较小的带裁切的支持。
理解1:也就是pool5的输出一共有256个特征,针对每一个特征,有6*6个单元,每个单元对应与输入的227*227的感受野是195*195,所以6*6个单元的中间单元几乎是原图227*227的全局视角,边缘单元有带剪裁的部分,此处可以忽略,在附录D中选取的就是pool5输出特征图每个通道上的(3,3)位置的单元
        论文图4的每一行显示了对于一个pool5单元的最高16个激活区域情况,这个实例来自于VOC 2007上我们调优的CNN,这里只展示了256个单元中的6个(附录D包含更多)。我们看看这些单元都学到了什么。第二行,有一个单元看到狗和斑点的时候就会激活,第三行对应红斑点,还有人脸,当然还有一些抽象的模式,比如文字和带窗户的三角结构。这个网络似乎学到了一些类别调优相关的特征,这些特征都是形状、纹理、颜色和材质特性的分布式表示。而后续的fc6层则对这些丰富的特征建立大量的组合来表达各种不同的事物。

        (理解2:此步就是针对所有抽取出来的每张图2000个预选框区域,所有图像共1000万个预选框区域,计算每个区域所导致的选定pool5层单元的激活值,按照激活值对这些区域进行排序,使用非极大值抑制算法,展示激活值最高的16个区域,图3展示了256个特征中6个特征的每个特征16个激活值最高的区域

        (理解3:此处的非极大值抑制的具体使用是,比如此处排序的是1000万个预选框区域的激活值,先选择激活值最大的预选框a,然后在剩下的预选框中,将与预选框a的IOU交并比大于一定阈值的预选框剔除,并将预选框a保存下来,然后在剩下的所有预选框中继续选择激活值最大的预选框b,并在剩下的预选框中,将与预选框b的IOU交并比大于一定阈值的预选框剔除,并将预选框b保存下来,以此往复,找到所有被保留下来的预选框。此处是展示前16个被保留下来的预选框区域

        (理解4:说实在的非极大值抑制就是在同一图像同一物体周边的多个重复的预选框,选出最优的那一个,剔除,但可视化这里,最优的选取根据想是可视化单元的激活值大小

        如果要转载,请标明出处,love you。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值