R-CNN随笔No.3

来源:互联网 发布:出租淘宝号的平台 编辑:程序博客网 时间:2024/04/28 23:44
        今天我来解说一下R-CNN在ILSVRC 2013数据集上的详细内容。
        在前面(随笔No.2)我们已经提到了一些内容,我们在这给出更详细的解释。首先要说明一下ILSVRC 2013数据集与VOC数据不同,其缺乏homogeneous(同质);因此我们需要做一些处理。
        我们先简单介绍一下ILSVRC 2013 检测数据集,这个数据集被分为三个部分:train(395,918),val(20,121),和test(40,152)(括弧中的数字表示图像数量)。其中val和test取自于PASCAL VOC中图像具有相同场景和复杂程度的图像分布,其图像中的目标均使用bounding-box标记出;而train取自于ILSVRC 2013 分类图像相同的分布,其图像中的目标单一,居中且可能未被标出。
        train数据缺乏注释,fine-tuning和训练SVM所需的负样本来自哪呢?train数据与val和test服从不同的分布,那训练数据是全部使用还是使用部分呢?
        对上述问题,我们的策略是这样的:我们使用val数据和一些train数据(正样本)来生成新的训练数据。由于训练和验证阶段都需要使用val数据,我们需要把val等分为两部分val1和val2。具体分割方法是这样的,首先生成一系列候选方案(使用图像中所含类别的数目进行聚类,再使用随机抽样),然后选择最大类不平衡最小的一个。
        在ILSVRC 2013上region proposals是怎样生成呢?我们使用与在PASCAL上相同的方法。但要做出一个小小的改变,因为selective search 不是缩放不变的,其生成的region的数依赖于图像的大小,而ILSVRC图像大小不一,我们在使用selective search之前需要将图片同意大小,在val上,selective search在每张图片上平均生成2403个region proposals,包含真实边框的概率达91.6%,略低于在PASCAL上的结果。
        在训练时使用什么数据呢?我们的训练数据包括:val1的数据和来自train每个类的N个真实边框。我们将这个新数据集称为val1+trainN,在下面的内容中我们将展示N取0,500,1000时的效果。
        训练数据用在R-CNN的三个过程中。1.CNN fine-tuning,2.训练SVM,3.训练bounding-box regressor。我们使用与在PASCAL数据上相同的设置进行50k次SGD来fine-tuning网络。在训练SVM时,我们将val1+trainN中的所有真实边框作为正例。在从val1中随机挑选的5000幅图像(负例,train中没有负例)进行hard negative mining,其比使用val1全部数据只低了0.5个百分点,而时间却减少了一般。在val1上训练bounding-box regressor。
 
图1 在ILSVRC2013 上的ablation研究
        Ablation研究,上图展示了在上述三个过程中使用不同的数据是的效果。首先我们可以观察到在val2和test上的mAP非常接近,这说明val2可以很好的表示test。在第一列种我们看到不经过fine-tuning,并使用val1训练SVM时mAP为20.9%,而当使用val1+trainN训练SVM时mAP达到24.1%,在第四列数据中,我们使用val1进行fine-tuning后,mAP达到26.5%,但这时会产生过拟合(正样本太少),所以我们有了第五列数据(使用val1+trainN进行微调),这时mAP达到29.7%,最后在使用val1进行bounding-box regressor后,mAP达到31.0%,提升相对在PASCAL(提升8个百分点)上的较小。
        作者在文章中表示了R-CNN和OverFeat的关系,认为OverFeat也是一种R-CNN,OverFeat相比的R-CNN的最大特点是速度快。R-CNN可以借鉴OverFeat的思路进一步提高自身速度。
        好了,到此我们就将R-CNN的实验内容全部叙述完了,接下来我们要介绍博客中遗留的内容----R-CNN的附录部分,并作一些知识的补充,拜拜。
1 0
原创粉丝点击