zoukankan      html  css  js  c++  java
  • 论文阅读(Wei Xiu-Shen : Mask-CNN:Localizing parts and selecting descriptors for fine-grained bird species categorization)

    这是2017年中旬投到PR的一篇关于细粒度检测和分类的文章。

    一作是南大的魏博士,目前任 旷视科技Face++ 南京研究院研究主任(负责人)

    论文地址:https://arxiv.org/abs/1605.06878

    0.ABSTRACT:

    细粒度(fine-grained)图像识别主要有两个难点:

      1)类间差异小(都属于同一个物种下的小类)

      2)类内差异大(受姿态、尺度和旋转等因素影响)

    这篇文章主要证明“selecting useful deep features”对细粒度识别有很大的作用。文中提出的Mask-CNN模型是“全卷积网络”,并基于part annotations利用了FCN来:

      ①定位关键部位(头部、躯干)

      ②生成带weighted object/part mask。

    由于丢弃了全连接层,所以Mask-CNN相对于其他算法,速度更快效率更高;在两个鸟类数据集上取得了state of art的结果。

    1.INTRODUCTION:

    细粒度识别任务(鸟、花、车辆识别)与传统的分类任务相比,其更多的是从"critical parts of object"获得信息。

    最直接的表示物体部位信息的方法就是利用“deep convolutional features”,而在此之前所有“part-based fine-grained approaches”都是直接利用的卷积特征,并没有对特征进行评估、筛选。

    训练时需要两种label:

      ①part annotations :先分成两个子集(头、躯干),然后将覆盖part子集的最小矩形作为 part mask(GT)。剩下的都是background。

        利用FCN将part localization看做是 three-class segmentation task,从而可以在测试阶段,生成weighted mask用在 part localization 和 useful feature selection。有了part-mask,合起来就是object-mask。

      ②image-level label

      结合上面的网络结构示意图可以知道,在最后的卷积层输出feature map后,利用前面得到的part-mask和object-mask作为权重,与对应像素点点乘。然后再分别进行max pooling和average pooling得到最终的feature vector。

    两个细粒度图像识别数据集:

    Caltech-UCSD Bird(CUB)200-2011    

    BirdSnap    

     

     M-CNN的优点和主要贡献:

    • 最先对feature进行select的
    • 丢弃了 全连接层 ,使得网络计算效率更高;与其他算法相比,利用了更少的特征维数;在数据集上取得最好的结果。

    剩下的文章内容组织:Section 2:总结相关工作;Section 3:详细描述了Mask-CNN模型(object/part masks learning procedure | classification training process);Section 4:详细的实验结果和分析;Section 5:总结

     2.RELATED WORK

    细粒度识别方法主要分为三种:

    • Developing powerful deep models to learn a more discriminative feature representation
    • Aligning the object to eliminate pose variations and the infulence of camera position
    • Focusing on part-based representations (本文思路)

      其他的part-based方法在测试时,往往还需要bounding box做辅助,但是本文方法不需要;还有weakly-surpervised part-based方法(利用Heatmap)但是结果都没本文的方法好;本文的中间特征维数低且没有全连接层,所以速度快,效率高。

    3.The Mask-CNN Model

    3.1 是训练FCN,这里用到的是FCN-8s.

    训练FCN时,为了提高效率,所有的训练和测试图片都保持原始的分辨率;训练时从原图的正中间crop出384x384的Image patch作为FCN的输入,躯干和头部的最小覆盖矩阵作为ground truth,其余视为背景部分。

    Inference阶段,FCN输出对应整体、头部和躯干的三个heat maps(文章中说in the same size as the original input image,可我还是不清楚到底是origin image还是crop后的input image大小。)。最终预测出来的segmentation结果作为weighted mask在特征选择阶段会用到。下面是FCN在Inference阶段的输出:

    可以看出虽然ground truth并不准确(因为是最小矩形框),但是网络的输出还是比较精准的。后面的实验表明,object/part-mask对后面的细粒度识别有非常大的改善。

    3.2 训练MASK-CNN网络

    分为三个支流,以original image这个输入的分支举例:

      先将输入resize到hxh(h=224/  h=448),以VGG 16作为基本模型,丢弃全连接层,即最后利用的是pool5输出的features(7x7x512)。同时将上一步中FCN输出的object-mask代入(通过双线性插值将object-mask resize到7*7)。

      接下来就是feature selection :" the descriptor should be kept by weights when it locates in the object region. If it locates in the background region, that descriptor will be discarded."(阈值好像没说。)

      然后分别进行maxpooling和average pooling得到(512+512)-d的特征向量。

    将三个分支分别输出1024-d的特征向量进行连接并送入分类器中进行分类(测试时发现logistic regression比softmax效果要好些).

    [To facilitate the convergence of three- stream CNNs, each single stream corresponding to the whole im- age, head and torso is fine-tuned on its input images separately.]

    4.Experiments

    先介绍连个广泛使用的 细粒度标准数据集 :

      Caltech-UCSD 2011 bird dataset Birdsnap
    categories 200 500
    training images 5994 47386
    test images 5794 2443
    label type part annotations + image label image label

    实验结果当然都是state of art了。结果图前面已经粘过了。

    接下来就是一些对比实验,主要还是之前提到的几点:

    • feature selection非常有用
    • 三个分支对结果都有不同程度的贡献
    • max pooling + average pooling 比任意使用其中一个的结果都要好
    • MASK-CNN的三个分支不能共享前面的卷积层,否则效果变差
  • 相关阅读:
    metasploit模块功能介绍
    虚拟机端口映射
    linux 双网卡实现
    斯坦福第三课:线性代数回顾(Linear Algebra Review)
    斯坦福第二课:单变量线性回归(Linear Regression with One Variable)
    斯坦福第一课:引言(Introduction)
    机器学习的个人见解----深夜总结
    史上最强机器学习资料------来自个人心血总结-----5星级
    如何学习新的知识----心血总结
    21个必知数据科学面试题和答案
  • 原文地址:https://www.cnblogs.com/caffeaoto/p/8511708.html
Copyright © 2011-2022 走看看