您的位置:首页 > 移动开发 > Objective-C

CNN: Single-label to Multi-label

2015-12-01 15:30 716 查看
一、本文的主要思想

    1、通过BING将一张图像生成很多小块图像,然后用聚类的方法,在这些小图像中选出一小部分作为待识别的hypotheses;

    2、将每张图像的这些hypotheses输入到shared CNN中,每个hypothesis 会产生一个预测,将这些所有的预测采用一个max-pooling得到最后的结果。

二、本文方法的优势

    1、不需要真是的bounding box 信息;

    2、这种结构对冗余的或者噪声的hypotheses非常鲁棒;

    3、在训练阶段不需要每个hypothesis的label信息;

    4、可以通过大规模的单标签数据进行预训练;

    5、此方法输出的结果就是多标签预测的结果。

三、single-label CNN 没有扩展为多标签的原因

    1、多标签相对于单标签而言,每个对象的位置、姿态和尺度都不一样;

    2、对象之间有遮挡,同时姿态也是一个很大的挑战;

     


    3、如果用于多标签的话,训练的参数成指数增加,这样就需要更多的训练的数据,同时获取单标签数据的成本要远低于多标签数据;

四、HYPOTHESES-CNN-POOLING具体结构

    1、Hypotheses Extraction

      采用BING的方法生成hypotheses,然后通过聚类的方法(normalized cut algorithm)将每张图像的所有hypotheses聚类为10类,每类选top1(根据BING生成的得分),由于作者测试过top1-top5效果差不多;聚类后的hypotheses用做后面的Hypotheses-fine-tuning。

     


   2、Initialization of HCP

      (1)Pre-training on single-label image set

         首先在大规模单标签数据库Imagenet上面训练,注意数据的增强方法:crops+flips

       (2)Image-fine-tuning(I-FT) on multi-label image set

         在对标签数据库(如VOC)上面进行基于整图的多标签数据fine-tuning;

         注意三点:A、直接resize到256*256,没有数据增强

                   B、误差的计算

                   C、参数的初始化:前面七层采用预训练的参数,第八层采用均值为0,方差为0.01的高斯随机初始化;卷积层的学习率、前两层的全连接和最后一层全连接的学习率分别为:0.001、0.002和0.01,之所有选用不同的学习率,原因有二:其一是卷积层学习是低层特征,其二是全连接成学习的是特定的任务的特征。

         这两步的示意图:

       


     3、Hypotheses-fine-tuning(H-FT)

        基于hypothesis(第一步中得到的)的fine-tuning,每张图像的hypotheses分别输入到I-FT得到的CNN模型当中,示意图如下:

        


        注意两点:

          A、对每个hypothesis得到的c维prediction进行融合,采用max-pooling的方法得到c维预测向量,在降融合后的c维预测向量输入到一个c维的softmax层中(不理解的地方:为什么得到的c维预测向量还要输入到softmax中,也可以直接把这个c维求误差不就 可以了嘛),采用与I-FT中相同误差计算方式

          B、同样采用不用的学习率

     4、Multi-label Classification for Test Image

             测试阶段和H-FT的过程类似,只是为了提高精度,作者每张图像的10个聚类中选择的top50,获得了不错的效果。

     


五、实验结果

    在VOC所标签数据库上面取得了做好的实验结果,并且尝试了和别的方法的结合,识别率更是有了很大的提升。

    


    


六、总结

   个人本文主要贡献贡献在于将前人的研究成果进行了很好的融合,建立起一个精确的多标签识别的框架,并且取得了很好的结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CNN object detection