赞
踩
对于单标签的图像分类问题,它可以分为跨物种语义级别的图像分类,子类细粒度图像分类,以及实例级图像分类三大类别。
参考链接:https://cloud.tencent.com/developer/news/329760
1.1 跨物种语义级别的图像分类
它是在不同物种的层次上识别不同类别的对象,比较常见的包括如猫狗分类等。这样的图像分类,各个类别之间因为属于不同的物种或大类,往往具有较大的类间方差;
常见分类任务:
1.2 子类细粒度图像分类
细粒度图像分类,相对于跨物种的图像分类,级别更低一些。它往往是同一个大类中的子类的分类,如不同鸟类的分类,不同狗类的分类,不同车型的分类等。
常见分类任务:
1.3实例级图像分类
如果我们要区分不同的个体,而不仅仅是物种类或者子类,那就是一个识别问题,或者说是实例级别的图像分类,最典型的任务就是人脸识别。
常见分类任务:
人脸识别:在人脸识别任务中,需要鉴别一个人的身份,从而完成考勤等任务。人脸识别一直是计算机视觉里面的重大课题,虽然经历了几十年的发展,但仍然没有被完全解决,它的难点在于遮挡,光照,大姿态等经典难题
MNIST与LeNet5
在计算机视觉分类算法的发展中,MNIST 是首个具有通用学术意义的基准。这是一个手写数字的分类标准,包含 60000 个训练数据,10000 个测试数据,图像均为灰度图,通用的版本大小为 28×28。
这是一个经典的卷积神经网络,它包含着一些重要的特性,这些特性仍然是现在CNN网络的核心。
卷积层由卷积,池化,非线性激活函数构成。从1998年至今,经过20年的发展后,卷积神经网络依然遵循着这样的设计思想。其中,卷积发展出了很多的变种,池化则逐渐被带步长的卷积完全替代,非线性激活函数更是演变出了很多的变种。
稀疏连接,也就是局部连接,这是以卷积神经网络为代表的技术能够发展至今的最大前提。利用图像的局部相似性,这一区别于传统全连接的方式,推动了整个神经网络技术的发展。
ImageNet与AlexNet
在李飞飞等人数年时间的整理下,2009年,ImageNet数据集发布了,并且从2010年开始每年举办一次ImageNet大规模视觉识别挑战赛,即ILSVRC。ImageNet数据集总共有1400多万幅图片,涵盖2万多个类别,在论文方法的比较中常用的是1000类的基准。
2012年AlexNet出现,是第一个真正意义上的深度网络,与LeNet5的5层相比,它的层数增加了3层,网络的参数量也大大增加,输入也从28变成了224,同时GPU的面世,也使得深度学习从此进行GPU为王的训练时代。
AlexNet有以下的特点:
总体的数据参数大概为240M,远大于LeNet5。
GoogLeNet和VGGNet
2014年的冠亚军网络分别是GoogLeNet和VGGNet,
其中VGGNet包括16层和19层两个版本,共包含参数约为550M。全部使用3×3的卷积核和2×2的最大池化核,简化了卷积神经网络的结构。VGGNet很好的展示了如何在先前网络架构的基础上通过简单地增加网络层数和深度就可以提高网络的性能。虽然简单,但是却异常的有效,在今天,VGGNet仍然被很多的任务选为基准模型。
GoogleNet的核心是Inception Module,它采用并行的方式。一个经典的inception结构,包括有四个成分。1×1卷积,3×3卷积,5×5卷积,3×3最大池化,最后对四个成分运算结果进行通道上组合。这就是Inception Module的核心思想。通过多个卷积核提取图像不同尺度的信息然后进行融合,可以得到图像更好的表征。自此,深度学习模型的分类准确率已经达到了人类的水平(5%~10%)。
与VGGNet相比,GoogleNet模型架构在精心设计的Inception结构下,模型更深又更小,计算效率更高。
ResNet
2015年,ResNet获得了分类任务冠军。它以3.57%的错误率表现超过了人类的识别水平,并以152层的网络架构创造了新的模型记录。由于ResNet采用了跨层连接的方式,它成功的缓解了深层神经网络中的梯度消散问题,为上千层的网络训练提供了可能。
SeNet
2017年,也是ILSVRC图像分类比赛的最后一年,SeNet获得了冠军。这个结构,仅仅使用了“特征重标定”的策略来对特征进行处理,通过学习获取每个特征通道的重要程度,根据重要性去降低或者提升相应的特征通道的权重。
参考地址:https://cloud.tencent.com/developer/article/1144333
细粒度物体的差异仅体现在细微之处。如何有效地对前景对象进行检测,并从中发现重要的局部区域信息,成为了细粒度图像分类算法要解决的关键问题。对细粒度分类模型,可以按照其使用的监督信息的强弱,分为“基于强监督信息的分类模型”和“基于弱监督信息的分类模型”两大类。
基于强监督信息的细粒度图像分类模型
所谓“强监督细粒度图像分类模型”是指:在模型训练时,为了获得更好的分类精度,除了图像的类别标签外,还使用了物体标注框(Object Bounding Box)和部位标注点(Part Annotation)等额外的人工标注信息,如图所示。
下面介绍基于强监督信息细粒度分类的几个经典模型。
Part-based R-CNN
Part-based R-CNN就是利用R-CNN算法对细粒度图像进行物体级别(例如鸟类)与其局部区域(头、身体等部位)的检测,其总体流程如图3所示。
首先利用Selective Search等算法在细粒度图像中产生物体或物体部位可能出现的候选框(Object Proposal)。之后用类似于R-CNN做物体检测的流程,借助细粒度图像中的Object Bounding Box和Part Annotation可以训练出三个检测模型(Detection Model):一个对应细粒度物体级别检测;一个对应物体头部检测;另一个则对应躯干部位检测。然后,对三个检测模型得到的检测框加上位置几何约束,例如,头部和躯干的大体方位,以及位置偏移不能太离谱等。这样便可得到较理想的物体/部位检测结果(如图3右上)。接下来将得到的图像块(Image Patch)作为输入,分别训练一个CNN,则该CNN可以学习到针对该物体/部位的特征。最终将三者的全连接层特征级联(Concatenate)作为整张细粒度图像的特征表示。显然,这样的特征表示既包含全部特征(即物体级别特征),又包含具有更强判别性的局部特征(即部位特征:头部特征/躯干特征),因此分类精度较理想。但在Part-based R-CNN中,不仅在训练时需要借助Bounding Box和Part Annotation,为了取得满意的分类精度,在测试时甚至还要求测试图像提供Bounding Box。这便限制了Part-based R-CNN在实际场景中的应用。
Pose Normalized CNN
有感于Part-based R-CNN,S. Branson等人提出在用DPM算法得到Part Annotation的预测点后同样可以获得物体级别和部位级别的检测框,如图4所示。与之前工作不同的是,Pose Normalized CNN对部位级别图像块做了姿态对齐操作。此外,由于CNN不同层的特征具有不同的表示特性(如浅层特征表示边缘等信息,深层特征更具高层语义),该工作还提出应针对细粒度图像不同级别的图像块,提取不同层的卷积特征。在图4中,我们针对全局信息,提取FC8特征;基于头部信息则提取最后一层卷积层特征作为特征表示。最终,还是将不同级别特征级联作为整张图像的表示。如此的姿态对齐操作和不同层特征融合方式,使得Pose Normalized CNN在使用同样多标记信息时取得了相比Part-based R-CNN高2%的分类精度。
Mask-CNN
最近,我们也针对细粒度图像分类问题提出了名为Mask-CNN的模型。同上,该模型亦分为两个模块,第一是Part Localization;第二是全局和局部图像块的特征学习。需要指出的是,与前两个工作的不同在于,在Mask-CNN中,我们提出借助FCN学习一个部位分割模型(Part-Based Segmentation Model)。其真实标记是通过Part Annotation得到的头部和躯干部位的最小外接矩形,如图5(c)所示。在FCN中,Part Localization这一问题就转化为一个三分类分割问题,其中,一类为头部、一类为躯干、最后一类则是背景。
FCN训练完毕后,可以对测试集中的细粒度图像进行较精确地part定位,图6展示了一些定位效果图。可以发现,基于FCN的part定位方式可以对大多数细粒度图像进行较好的头部和躯干定位。同时,还能注意到,即使FCN的真实标记是粗糙的矩形框,但其预测结果中针对part稍精细些的轮廓也能较好地得到。在此,我们称预测得到的part分割结果为Part Mask。不过,对于一些复杂背景图像(如图6右下)part定位结果还有待提高。
在得到Part Mask后,可以通过Crop获得对应的图像块。同时,两个Part Mask组合起来刚好可组成一个较完整的Object Mask。同样,基于物体/部位图像块,Mask-CNN训练了三个子网络。
在此需要特别指出的是,在每个子网络中,上一步骤中学到的Part/Object Mask还起到了一个关键作用,即“筛选关键卷积特征描述子”(Selecting Useful Convolutional Descriptor),如图7(c)-(d)。这个模块也是我们首次在细粒度图像分类中提出的。筛选特征描述子的好处在于,可以保留表示前景的描述子,而去除表示背景的卷积描述子的干扰。筛选后,对保留下来的特征描述子进行全局平均和最大池化(Global Average/Max Pooling)操作,后将二者池化后的特征级联作为子网络的特征表示,最后将三个子网特征再次级联作为整张图像的特征表示。
实验表明,基于筛选的Mask-CNN在仅依靠训练时提供的Part Annotation(不需要Bounding Box,同时测试时不需额外监督信息)取得了目前细粒度图像分类最高的分类精度(在经典CUB数据上,基于ResNet的模型对200类不同鸟类分类精度可达87.3%)。此外,借助FCN学习Part Mask来进行Part定位的做法也取得了Part定位的最好结果。
基于弱监督信息的细粒度图像分类模型
虽然上述三种基于强监督信息的分类模型取得了较满意的分类精度,但由于标注信息的获取代价十分昂贵,在一定程度上也局限了这类算法的实际应用。因此,目前细粒度图像分类的一个明显趋势是,希望在模型训练时仅使用图像级别标注信息,而不再使用额外的Part Annotation信息时,也能取得与强监督分类模型可比的分类精度。这便是“基于弱监督信息的细粒度分类模型”。细粒度分类模型思路同强监督分类模型类似,也需要借助全局和局部信息来做细粒度级别的分类。而区别在于,弱监督细粒度分类希望在不借助Part Annotation的情况下,也可以做到较好的局部信息的捕捉。当然,在分类精度方面,目前最好的弱监督分类模型仍与最好的强监督分类模型存在差距(分类准确度相差约1%~2%)。下面介绍三个弱监督细粒度图像分类模型的代表。
Two Level Attention Model
顾名思义,该模型主要关注两个不同层次的特征,分别是物体级别和部件级别信息。当然,该模型并不需要数据集提供这些标注信息,完全依赖于本身的算法来完成物体和局部区域的检测。其整体流程如图8所示。
该模型主要分为三个阶段。1. 预处理模型:从输入图像中产生大量的候选区域,对这些区域进行过滤,保留包含前景物体的候选区域;2. 物体级模型:训练一个网络实现对对象级图像进行分类;在此需要重点介绍的是,3. 局部级模型。我们来看,在不借助Part Annotation的情况下,该模型怎样做到Part检测。
由于预处理模型选择出来的这些候选区域大小不一,有些可能包含了头部,有些可能只有脚。为了选出这些局部区域,首先利用物体级模型训练的网络来对每一个候选区域提取特征。接下来,对这些特征进行谱聚类,得到K个不同的聚类簇。如此,则每个簇可视为代表一类局部信息,如头部、脚等。这样,每个簇都可以被看做一个区域检测器,从而达到对测试样本局部区域检测的目的。
Constellations
Constellations方案是利用卷积网络特征本身产生一些关键点,再利用这些关键点来提取局部区域信息。对卷积特征进行可视化分析(如图9所示),发现一些响应比较强烈的区域恰好对应原图中一些潜在的局部区域点。因此,卷积特征还可以被视为一种检测分数,响应值高的区域代表着原图中检测到的局部区域。不过,特征输出的分辨率与原图相差较大,很难对原图中的区域进行精确定位。受到前人工作的启发,我采用的方法是通过计算梯度图来产生区域位置。
具体而言,卷积特征的输出是一个W×H×P维的张量,P表示通道的个数,每一维通道可以表示成一个W×H维的矩阵。通过计算每一维通道P对每一个输入像素的平均梯度值,可以得到与原输入图像大小相同的特征梯度图:
上面公式可以通过反向传播高效地完成计算。这样,每一个通道的输入都可以转换成与原图同样大小的特征梯度图。在特征梯度图中响应比较强烈的区域,即可代表原图中的一个局部区域。于是每一张梯度图中响应最强烈的位置即作为原图中的关键点:
卷积层的输出共有P维通道,可分别对应于P个关键点位置。后续对这些关键点或通过随机选择或通过Ranking来选择出重要的M个。得到关键点后分类就是易事啦。其分类处理流程如图10所示。
Bilinear CNN
深度学习成功的一个重要精髓,就是将原本分散的处理过程,如特征提取,模型训练等,整合进了一个完整的系统,进行端到端的整体优化训练。不过,在以上所有的工作中,我们所看到的都是将卷积网络当做一个特征提取器,并未从整体上进行考虑。最近,T.-Y. Lin、A.RoyChowdhury等人设计了一种端到端的网络模型Bilinear CNN,在CUB200-2011数据集上取得了弱监督细粒度分类模型的最好分类准确度。
如图11所示,一个Bilinear模型Β由一个四元组组成:Β=(fA,fB,Ρ,C)。其中,fA,fB代表特征提取函数,即图中的网络A、B,P是一个池化函数(Pooling Function), C则是分类函数。
一种对Bilinear CNN模型的解释是,网络A的作用是对物体/部件进行定位,即完成前面介绍算法的物体与局部区域检测工作,而网络B则是用来对网络A检测到的物体位置进行特征提取。两个网络相互协调作用,完成了细粒度图像分类过程中两个最重要的任务:物体、局部区域的检测与特征提取。另外,值得一提的是,Bilinear模型由于其优异的泛化性能,不仅在细粒度图像分类上取得了优异效果,还被用于其他图像分类任务,如行人重检测(Person Re-ID)。
图像分析中除监督环境下的分类任务,还有另一大类经典任务——无监督环境下的图像检索。相比细粒度图像分类,检索任务上的研究开展较晚,下面重点介绍两个该方面的工作。
图像检索(Image Retrieval)按检索信息的形式,分为“以文搜图”(Text-Based)和“以图搜图”(Image-Based)。在此我们仅讨论以图搜图的做法。传统图像检索任务一般是检索类似复制的图像(Near-Duplicated Images),如图所示。左侧单列为Query图像,右侧为返回的正确检索结果。可以看到,传统图像检索中图像是在不同光照不同时间下同一地点的图像,这类图像不会有形态、颜色、甚至是背景的差异。
而细粒度图像检索,如图,则需要将同为“绿头鸭”的图像从众多不同类鸟类图像中返回;同样,需要将“劳斯莱斯幻影”从包括劳斯莱斯其他车型的不同品牌不同车型的众多图像中检索出来。细粒度图像检索的难点,一是图像粒度非常细微;二是对细粒度图像而言,哪怕是属于同一子类的图像本身也具有形态、姿势、颜色、背景等巨大差异。可以说,细粒度图像检索是图像检索领域和细粒度图像分析领域的一项具有新鲜生命力的研究课题。
L. Xie、J. Wang等在2015年首次提出细粒度图像“搜索”的概念,通过构造一个层次数据库将多种现有的细粒度图像数据集和传统图像检索(一般为场景)融合。在搜索时,先判断其隶属的大类,后进行细粒度检索。其所用特征仍然是人造图像特征(SIFT等),基于图像特征可以计算两图相似度,从而返回检索结果(如图14所示)。
SCDA
SCDA(Selective Convolutional Descriptor Aggregation)是我们近期提出的首个基于深度学习的细粒度图像检索方法。同其他深度学习框架下的图像检索工作一样,在SCDA中,细粒度图像作为输入送入Pre-Trained CNN模型得到卷积特征/全连接特征(如图15所示)。区别于传统图像检索的深度学习方法,针对细粒度图像检索问题,我们发现卷积特征优于全连接层特征,同时创新性的提出要对卷积描述子进行选择。不过SCDA与之前提到的Mask-CNN的不同点在于,在图像检索问题中,不仅没有精细的Part Annotation,就连图像级别标记都无从获取。这就要求算法在无监督条件下依然可以完成物体的定位,根据定位结果进行卷积特征描述子的选择。对保留下来的深度特征,分别做以平均和最大池化操作,之后级联组成最终的图像表示。
很明显,在SCDA中,最重要的就是如何在无监督条件下对物体进行定位。通过观察得到的卷积层特征(如图16所示),可以发现明显的“分布式表示”特性。对两种不同鸟类/狗,同一层卷积层的最强响应也差异很大。如此一来,单独选择一层卷积层特征来指导无监督物体定位并不现实,同时全部卷积层特征都拿来帮助定位也不合理。例如,对于第二张鸟的图像来说,第108层卷积层较强响应竟然是一些背景的噪声。
基于这样的观察,我们提出将卷积特征(HxWxD)在深度方向做加和,之后可以获得Aggregation Map(HxWx1)。在这张二维图中,可以计算出所有HxW个元素的均值,而此均值m便是该图物体定位的关键:Aggregation Map中大于m的元素位置的卷积特征需保留;小于的则丢弃。这一做法的一个直观解释是,细粒度物体出现的位置在卷积特征张量的多数通道都有响应,而将卷积特征在深度方向加和后,可以将这些物体位置的响应累积——有点“众人拾柴火焰高”的意味。而均值则作为一把“尺子”,将“不达标”的响应处标记为噪声,将“达标”的位置标为物体所在。而这些被保留下来的位置,也就对应了应保留卷积特征描述子的位置。后续做法类似Mask-CNN。实验中,在细粒度图像检索中,SCDA同样获得了最好结果;同时SCDA在传统图像检索任务中,也可取得同目前传统图像检索任务最好方法相差无几(甚至优于)的结果(如图17所示)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。