R-CNN论文理解(2)

问题一:微调阶段和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)

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

R-CNN论文理解(2)       

具体步骤:

        直接可视化第一层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。

上一篇:人工智能AI实战100讲(六)-利用CNN来检测伪造图像


下一篇:【图像边缘检测】基于matlab CNN灰度图像边缘提取【含Matlab源码 490期】