Skip to content

Latest commit

 

History

History
 
 

fine_grained_IR

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

深度学习: 细粒度图像识别 (fine-grained image recognition)

细粒度图像识别 (fine-grained image recognition),即 精细化分类,不同品种的花、鸟、狗、汽车

    细粒度图像分类(Fine-Grained Categorization),
    又被称作子类别图像分类(Sub-Category Recognition),
    是近年来计算机视觉、模式识别等领域一个
    非常热门的研究课题. 其目的是对粗粒度的大类别
    进行更加细致的子类划分, 但由于子类别间细微的
    类间差异和较大的类内差异, 较之普通的图像分类
    任务, 细粒度图像分类难度更大.

目前, 绝大多数的分类算法都遵循这样的流程框架:

    首先找到前景对象(鸟)及其局部区域(头、脚、翅膀等), 
    之后分别对这些区域提取特征. 对所得到的特征进行适当的处理之后, 用来完成分类器的训练和预测.        

南大 细粒度图像分类 综述

细粒度图像识别算法研究 百度文库参考

百度开放平台 细粒度图像分类

识别后对植物/汽车详细介绍的接口为欧拉蜜-百科 自然语言理解 NLU 图灵的也可以

细粒度分类-车辆分类

见微知著:细粒度图像分析进展

精细化分类

识别出物体的大类别(比如:计算机、手机、水杯等)较易,但如果进一步去判断更为精细化的物体分类名称,则难度极大。
最大的挑战在于,同一大类别下 不同 子类别 间的 视觉差异 极小。因此,精细化分类 所需的图像分辨率 较高。

目前,精细化分类的方法主要有以下两类:

1. 基于图像重要区域定位的方法:
   该方法集中探讨如何利用弱监督的信息自动找到图像中有判别力的区域,从而达到精细化分类的目的。
2. 基于图像精细化特征表达的方法:
   该方法提出使用高维度的图像特征(如:bilinear vector)对图像信息进行高阶编码,以达到准确分类的目的。

按照其使用的监督信息的多少 分为 强监督 和 弱监督 信息的细粒度图像分类模型

细粒度图像分析进展综述

A. 基于强监督信息的细粒度图像分类模型

    是指,在模型训练时,为了获得更好的分类精度,
    除了图像的类别标签外,
    还使用了物体标注框(object bounding box)和
    部位标注点(part annotation)等额外的人工标注信息。

    借助于标注框能够完成对前景对象的检测, 从而排除掉背景噪声的干扰; 而局部区域位置则可以用来
    对一些有用的局部区域进行定位, 或者进行姿态对齐等, 以实现局部特征的提取.

    算法框架有:

0. DeCAF Deep Convolutional Activation Feature

    具体而言, 
    首先使用标注框对图像进行裁剪,得到前景对象, 
    再利用预训练的卷积网络对图像提取DeCAF特征.
    他们提取的是第6层网络特征, 即第一个全连接层的输出, 之后训练一个
    多类别的逻辑回归(Logistic Regression)模型来进行图像分类.
    但是在测试时需要标注框。

1. 基于部件的CNN Part-based R-CNN

    a. 借助细粒度图像中的Object Bounding Box和Part Annotation可以训练出三个检测模型(Detection Model):
    使用 R-CNN区域卷积网络得到不同的检测框
            1. 一个对应细粒度物体级别检测;
            2. 一个对应物体头部检测;
            3. 另一个则对应躯干部位检测。
    b. 然后,对三个检测模型得到的检测框加上位置几何约束、和边框约束,例如,头部和躯干的大体方位、以及位置偏移不能太离谱等。
            1. 边框约束,局部区域 超出 对象区域 的像素点数量不能超过一个阈值。
            2. 几何约束,混合高斯模型。

    c. 接下来将得到的图像块(Image Patch)作为输入,分别训练一个CNN特征提取网络,则该CNN可以学习到针对该物体/部位的特征。
    d. 最终将三者的全连接层特征级联(Concatenate)作为整张细粒度图像的特征表示,通过分类器SVM 进行分类。
    显然,这样的特征表示既包含全部特征(即物体级别特征),
    又包含具有更强判别性的局部特征(即部位特征:头部特征/躯干特征),因此分类精度较理想。
    缺点,前期使用的SS 区域产生算法,会产生大量无关区域, 这会在很大程度上影响算法的速度.

局部驱动的区域卷积网络 Part-based R-CNN   

2. 姿态归一化CNN Pose Normalized CNN

    在细粒度图像分类任务中, 除了至关重要的 局部区域信息 之外, 
    还有一个十分显著的特点: 
    其巨大的 类内方差会 对最终的分类性能造成很大的影响.
    0. 检测局部区域, 使用预先训练好的DPM算法完成关键点的检测,检测出K个关键点Yt;
    a. 姿态对齐, Pose Normalized CNN对 部位级别图像块 做了姿态对齐操作。
       首先使用训练数据训练 P个原型参数 Rp={参考图像,标注框,关键点位置信息(归一化到标注框内)}
       再根据 0步骤得出的关键点 和 原型参数 求解一个对关键点坐标的一个变换函数。(旋转,平移,相似,放射)
    b. 此外,由于CNN不同层的特征具有不同的表示特性(如浅层特征表示边缘等信息,深层特征更具高层语义),
    该工作还提出应针对细粒度图像不同级别的图像块,提取不同层的卷积特征。
            1. 我们针对全局信息(整个物体对象),提取FC8特征;
            2. 基于头部信息则提取最后一层卷积层特征作为特征表示,
            3. 对于躯干部分我们提取FC6层的特征。
    c. 最终,将不同级别特征级联作为整张图像的表示,进行SVM的模型训练。
    如此的姿态对齐操作和不同层特征融合方式,使得分类精度提高。

    优缺点:
    它在原有的局部区域模型的基础上, 进一步考虑了鸟类的不同姿态的干扰, 减轻了类内方差造成的
    影响, 从而取得了较好的性能表现. 
    但是, 该算法对于关键点的检测精度较为敏感。

Pose Normalized CNN

3. 基于部位分割模型的 Mask-CNN

论文笔记

    在训练时仅需要part annotations(关键点,分成两个集合:头部和躯干,三类分割问题)和image-level标签这两个信息,
    a. 部位分割模型,区域mask预测网络,使用全卷积网络Fully Convolutional Network (FCN) ,学习 头部、躯干、背景三分类问题。
       红色的称作head mask,蓝色的称作torse mask,这两个合并在一起就是一个完整的物体,称作object mask.
    b. 区域特征提取网络 VGG-16模型
       三种mask对应的最小矩形区域图像和原图像,共四种图像四个输入,
       通过五个卷积层、relu层和池化层,最终得到512维的特征向量。
       如果输入尺寸统一为224*224,那么它们特征向量为7*7*512,其实它也对应着一张图像7*7方格的空间位置;
    c. 筛选特征描述子
       把三种Mask用最近邻方法缩放成7*7大小地二值矩阵,有mask的区域为1,无mask的区域为0,
       对应于 区域特征提取网络 的输出特征图,对应二值矩阵为1的格子保留 512-d的特征描述子,为0的格子的特征描述子设置为0
       得到新的筛选后的 特征描述子map
    d. 分别进行全局平均和最大池化(Global Average/Max Pooling)操作后得到2个512-d的向量,
       经过L2正则化处理后,两向量级联成一个 1024-d的向量,作为子网络的特征表示。
    e. 最后将四个子网特征再次级联作为整张图像的特征表示,得到 4096-d 的特征向量,
       再送进全连接层 + softmax归一化分类,得到结果。
       由于CUB200-2011有200个类别,所以最终向量也是长200。

    训练时,所有图像都保持原有的分辨率,并且只取中间384*384的部分(应该是为了统一尺寸+去除部分背景);
    M-CNN的四个线程都是端到端训练的,而且参数同时学习;
    训练M-CNN时,前面的FCN参数保持不变。
    作者还用水平翻转的方法使训练图像翻倍。在测试时将原图和对应的翻转图像的预测求平均,并输出得分最高的那个分类。
    直接使用softmax的结果要比使用logistic回归差

Mask-CNN    

MATLAB CODE

B. 基于弱监督信息的细粒度图像分类模型

在模型训练时仅使用图像级别标注信息,而不再使用额外的part annotation信息时,也能取得与强监督分类模型可比的分类精度。
仅使用图像的类别标签 + 物体标注框。
思路同强监督分类模型类似,也需要借助全局和局部信息来做细粒度级别的分类。
而区别在于,弱监督细粒度分类希望在不借助part annotation的情况下,也可以做到较好的局部信息的捕捉。
算法框架有:

1. 两级注意力算法 Two Level Attention Model

    该模型主要关注两个不同层次的特征, 分别是对象级(Object-Level)和
    局部级(Part-Level), 即在以往强监督工作中所使用的标注框和局部区域位置这两层信息.

       a. 在预处理阶段, 主要是从原始图像中检测并提取前景对象, 以减少背景信息带来的干扰.           仅仅使用卷积网络来对ss算法产生的区域中的背景区域进行过滤. 这样导致的结果是, 对于一张输入图像, 可能对应许多包含前景对象的候选区域.

       b. 对象级模型,对对象级图像进行分类。 一个区域候选, 经过卷积网络之后, 得到一个softmax 层的输出. 对所有区域的输出求平均, 作为该图像最终的softmax层输出.

       c. 局部级模型, 为了从繁杂的候选区域中选出关键的局部区域           1. 首先利用对象级模型得到的网络来对每一个候选区域提取特征.           2. 对这些特征进行谱聚类, 得到k个不同的聚类簇, 每个簇代表一个局部信息, 如头部、脚等.         3. 将不同局部区域的特征级联成一个特征向量,用来训练SVM, 作为局部级模型给出的分类器.        d. 最后, 将对象级模型的预测结果与局部级模型的结果相结合, 作为模型的最终输出.

两个不同层次的特征    

2. 星座(Constellations)算法

Constellations

3. Bilinear CNN

Bilinear CNN

数据库

CUB200-2011 Caltech-UCSD Birds-200-2011

       共包含200 种不同类别, 其中每类都有30+ 个训练图像,共11,788张鸟类图像数据. 每张图像包含15个局部部位标注点(part annotation)用来标记鸟类的身体部位,312 个二值属性, 1个标注框, 以及语义分割图像 鸟类数据集

Stanford Dogs 120种不同种

    狗的图像数据, 共有20,580 张图, 只提供标注框 和 类别标注数据

狗类数据集

Oxford Flowers

    分为两种不同规模的数据 库, 分别包含17种类别和102种类别的花. 其中,
    102种类别的数据库比较常用, 每个类别包含了40到258 张图像数据, 总共有8,189张图像. 
    该数据库只提供语义分割图像, 不包含其他额外标注信息.

花类数据集

Cars

    提供196类不同品牌不同年份不同车型的车辆图像数据, 一共包含有16,185张图像, 
    分成训练集(8,144张)和测试集(8,041张)
    只提供标注框信息。

Stanford Cars 汽车数据集

FGVC-Aircraf Fine-Grained Visual Classification of Aircraft

    提供102 类不同的飞机照片,每一类别含有100 张不同的照片, 整个数据库共
    有10,200张图片, 只提供标注框信息.

飞机数据集

算法框架

1. CNN  特征提取网络(科目卷积层 、 属目卷积层、种目卷积层)    提取不同层面的特征
2. APN  注意力建议网络   得到不同的关注区域
3. DCNN 卷积细粒度特征描述网络
4. 全连接层之后得到粗细粒度互补的层次化特征表达,再通过 分类网络softmax 输出结果

注意力模型(Attention Model) 注意力机制

被广泛使用在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中,
是深度学习技术中最值得关注与深入了解的核心技术之一。  
视觉注意力机制是人类视觉所特有的大脑信号处理机制。
人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,
而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息。
这是人类利用有限的注意力资源从大量信息中快速筛选出高价值信息的手段,
是人类在长期进化中形成的一种生存机制,人类视觉注意力机制极大地提高了视觉信息处理的效率与准确性。

把Attention仍然理解为从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,
忽略大多不重要的信息,这种思路仍然成立。
聚焦的过程体现在权重系数的计算上,权重越大越聚焦于其对应的Value值上,
即权重代表了信息的重要性,而Value是其对应的信息。

图片描述(Image-Caption)

是一种典型的图文结合的深度学习应用,输入一张图片,人工智能系统输出一句描述句子,语义等价地描述图片所示内容。    
可以使用Encoder-Decoder框架来解决任务目标。
1. 此时编码部分Encoder输入部分是一张图片,一般会用CNN来对图片进行特征抽取;
2. 解码Decoder部分使用RNN或者LSTM和注意力机制来输出自然语言句子。

RA-CNN

MSRA通过观察发现,对于精细化物体分类问题,其实形态、轮廓特征显得不那么重要,而细节纹理特征则起到了主导作用。
因此提出了 “将判别力区域的定位和精细化特征的学习联合进行优化” 的构想,从而让两者在学习的过程中相互强化,
也由此诞生了 “Recurrent Attention Convolutional Neural Network”(RA-CNN,基于递归注意力模型的卷积神经网络)网络结构。

   RA-CNN 网络可以更精准地找到图像中有判别力的子区域,然后采用高分辨率、精细化特征描述这些区域,进而大大提高精细化物体分类的精度: 论文地址

RA-CNN思想

1. 首先原图大尺度图像通过 CNN 卷积网络 提取特征,
   一部分进过APN(Attention Proposal Net 注意力建议网络)得到注意力中心框(感兴趣区域,例如上半身区域),
   另一部分通过全连接层再经过softmax归一化分类概率输出;
2. 对第一步得到的注意力中心框(感兴趣区域,例如上半身区域),再进行1的步骤,
   得到更小的注意力中心框,和分类概率;
3. 对第二步得到的注意力中心框(感兴趣区域,例如头部区域),通过卷积网络提取特征,
   通过全连接层再经过softmax归一化分类概率输出;