大家应该都会有这样的经历:逛街时看到路人的萌犬可爱至极,可仅知是“犬”殊不知其具体品种;初春踏青,见那姹紫嫣红丛中笑,却桃杏李傻傻分不清……实际上,类似的问题在实际生活中屡见不鲜。如此问题为何难?究其原因,是普通人未受过针对此类任务的专门训练。倘若踏青时有位资深植物学家相随,不要说桃杏李花,就连差别甚微的青青河边草想必都能分得清白。为了让普通人也能轻松达到“专家水平”,人工智能的研究者们希望借助计算机视觉(computer vision,CV)的技术来解决这一问题。如上所述的这类任务在CV研究中有个专门的研究方向,即,「细粒度图像分析」(fine-grained image analysis)。
细粒度图像分析任务相对通用图像(general/generic images)任务的区别和难点在于其图像所属类别的粒度更为精细。下图为例,通用图像分类其任务诉求是将“袋鼠”和“狗”这两个物体大类(蓝色框和红色框中物体)分开,可见无论从样貌、形态等方面,二者还是能很容易被区分;而细粒度图像分类任务则要求对“狗”该类类别下细粒度的子类,即分别为“哈士奇”和“爱斯基摩犬”的图像分辨开来。正因同类别物种的不同子类往往仅在耳朵形状、毛色等细微处存在差异,可谓“差之毫厘,谬以千里”。不止对计算机,对普通人来说,细粒度图像任务的难度和挑战无疑也更为巨大。
在此,本文针对近年来深度学习方面的细粒度图像分析任务,分别从「细粒度图像分类」(fine-grained image classification)和「细粒度图像检索」(fine-grained image retrieval)两大经典图像问题进行进展综述。考虑到受众范围广泛,在此略去繁杂技术细节,以期读者可以对细粒度图像分析领域提纲挈领的窥得全貌。
![](https://i-blog.csdnimg.cn/blog_migrate/1b32e02774a324c623718072f5bf2043.jpeg)
细粒度图像分类
诚如刚才提到,细粒度物体的差异仅体现在细微之处。如何有效地对前景对象进行检测,并从中发现重要的局部区域信息,成为了细粒度图像分类算法要解决的关键问题。对细粒度分类模型,可以按照其使用的监督信息的多少,分为“基于强监督信息的分类模型”和“基于弱监督信息的分类模型”两大类。- 基于强监督信息的细粒度图像分类模型
![](https://i-blog.csdnimg.cn/blog_migrate/1c5fb324d916c5d5d577157f0f26c517.jpeg)
下面介绍基于强监督信息细粒度分类的几个经典模型。
- Part-based R-CNN [1]
相信大家一定对R-CNN不陌生,顾名思义,Part-based R-CNN就是利用R-CNN算法对细粒度图像进行物体级别(如,鸟)与其局部区域(头、身体等部位)的检测,其总体流程图如图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/dc78b2f606c99214e3d2fc5e97b73b36.png)
- Pose Normalized CNN [3]
有感于Part-based R-CNN, S. Branson等人提出在用DPM算法[2]得到part annotation的预测点后同样可以获得物体级别和部位级别的检测框,如下图。与之前工作不同的是,Pose Normalized CNN对部位级别图像块做了姿态对齐操作。此外,由于CNN不同层的特征具有不同的表示特性(如浅层特征表示边缘等信息,深层特征更具高层语义),该工作还提出应针对细粒度图像不同级别的图像块,提取不同层的卷积特征。如下图,针对全局信息,提取FC8特征;基于头部信息则提取最后一层卷积层特征作为特征表示。最终,还是将不同级别特征级联作为整张图像的表示。如此的姿态对齐操作和不同层特征融合方式,使得Pose Normalized CNN在使用同样多标记信息时取得了相比Part-based R-CNN高2%的分类精度。
![](https://i-blog.csdnimg.cn/blog_migrate/d675b45b253ee827c1b292f4f9f97cab.png)
- Mask-CNN [4]
最近,我们也针对细粒度图像分类问题提出了名为Mask-CNN的模型。同上,该模型亦分为两个模块,第一是part localization,第二是全局和局部图像块的特征学习。需要指出的是,与前两个工作的不同在于,在Mask-CNN中,我们提出借助FCN学习一个部位分割模型(part-based segmentation model)。其真实标记是通过part annotation得到的头部和躯干部位的最小外接矩形,如下图(c)所示。在FCN中,part localization这一问题就转化为一个三分类分割问题,其中,一类为头部,一类为躯干,最后一类则是背景。
![](https://i-blog.csdnimg.cn/blog_migrate/3e3d42466075badde55b0e5b7076fee2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1ec7d787b9d0b4971c101b3d13d4a06c.png)
在得到part mask后,可以通过crop获得对应的图像块。同时,两个part mask组合起来刚好可组成一个较完整的object mask。同样,基于物体/部位图像块,Mask-CNN训练了三个子网络。
在此需要特别指出的是,在每个子网络中,上一步骤中学到的part/object mask还起到了一个关键作用,即「筛选关键卷积特征描述子」(selecting useful convolutional descriptor),如下图(c)-(d)。这个模块也是我们首次在细粒度图像分类中提出的。筛选特征描述子的好处在于,可以保留表示前景的描述子,而去除表示背景的卷积描述子的干扰。筛选后,对保留下来的特征描述子进行全局平均和最大池化(global average/max pooling)操作,后将二者池化后的特征级联作为子网络的特征表示,最后将三个子网特征再次级联作为整张图像的特征表示。
![](https://i-blog.csdnimg.cn/blog_migrate/9f5ec1f3b646859b6d6b1ea74c2b16b7.png)
- 基于弱监督信息的细粒度图像分类模型
不过上述三种基于强监督信息的分类模型虽然取得了较满意的分类精度,但由于标注信息的获取代价十分昂贵,在一定程度上也局限了这类算法的实际应用。因此,目前细粒度图像分类的一个明显趋势是,希望在模型训练时仅使用图像级别标注信息,而不再使用额外的part annotation信息时,也能取得与强监督分类模型可比的分类精度。这便是“基于弱监督信息的细粒度分类模型”。思路同强监督分类模型类似,也需要借助全局和局部信息来做细粒度级别的分类。而区别在于,弱监督细粒度分类希望在不借助part annotation的情况下,也可以做到较好的局部信息的捕捉。当然,在分类精度方面,目前最好的弱监督分类模型仍与最好的强监督分类模型存在差距(分类准确度相差约1~2%)。下面介绍三个弱监督细粒度图像分类模型的代表。
- Two Level Attention Model [5]
顾名思义,该模型主要关注两个不同层次的特征,分别是物体级别和部件级别信息。当然,该模型并不需要数据集提供这些标注信息,完全依赖于本身的算法来完成物体和局部区域的检测。其整体流程如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/e0812a78aad7d18b04eec285a30e4493.png)
该模型主要分为三个阶段。(1) 预处理模型:从输入图像中产生大量的候选区域,对这些区域进行过滤,保留包含前景物体的候选区域;(2) 物体级模型:训练一个网络实现对对象级图像进行分类。在此需要重点介绍的是(3)局部级模型。我们来看,在不借助part annotation的情况下,该模型怎样做到part检测。
由于预处理模型选择出来的这些候选区域大小不一,有些可能包含了头部,有些可能只有脚。为了选出这些局部区域,首先利用物体级模型训练的网络来对每一个候选区域提取特征。接下来,对这些特征进行谱聚类,得到k个不同的聚类簇。如此,则每个簇可视为代表一类局部信息,如头部、脚等。这样,每个簇都可以被看做一个区域检测器,从而达到对测试样本局部区域检测的目的。
- Constellations [6]
Constellations的方案是利用卷积网络特征本身产生一些关键点,再利用这些关键点来提取局部区域信息。对卷积特征进行可视化分析(如下图),发现一些响应比较强烈的区域恰好对应于原图中一些潜在的局部区域点。因此,卷积特征还可以被视为一种检测分数,响应值高的区域代表着原图中检测到的局部区域。不过,特征输出的分辨率与原图相差较大,很难对原图中的区域进行精确定位。受到前人工作的启发,作者采用的方法是通过计算梯度图来产生区域位置。
![](https://i-blog.csdnimg.cn/blog_migrate/a5c75c994c4f32d38ea78ff3f4982751.jpeg)
具体而言,卷积特征的输出是一个W × H × P 维的张量,P表示通道的个数,每一维通道可以表示成一个W × H 维的矩阵。通过计算每一维通道p对每一 个输入像素的平均梯度值,可以得到与原输入图像大小相同的特征梯度图:
![m^{(p)}_{x,y}(I)=\frac{\partial}{\partial I_{x,y}}\sum_{j,j'} f^{(p)}_{j,j'}(I)](https://i-blog.csdnimg.cn/blog_migrate/3a9be459a329c1b37816e8665a02e053.png)
上式可以通过反向传播高效地完成计算。这样,每一个通道的输入都可以转换成与原图同样大小的特征梯度图。在特征梯度图中响应比较强烈的区域,即可代表原图中的一个局部区域。于是每一张梯度图中响应最强烈的位置即作为原图中的关键点:
卷积层的输出共有P维通道,可分别对应于P个关键点位置。后续对这些关键点或通过随机选择或通过ranking来选择出重要的M个。得到关键点后分类就是易事啦。其分类处理流程如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/525647dfbe802f51579df36b6016738c.jpeg)
- Bilinear CNN [7]
深度学习成功的一个重要精髓,就是将原本分散的处理过程,如特征提取,模型训练等,整合进了一个完整的系统,进行端到端的整体优化训练。不过,在以上所有的工作中,我们所看到的都是将卷积网络当做一个特征提取器,并未从整体上进行考虑。最近,Lin等人[7]设计了一种端到端的网络模型Bilinear CNN,在CUB200-2011数据集上取得了弱监督细粒度分类模型的最好分类准确度。
![\mathcal{B}](https://i-blog.csdnimg.cn/blog_migrate/4c6ef593500fa2b691fc661e21fcbbcb.png)
![\mathcal{B}=(f_A,f_B,\mathcal{P},\mathcal{C})](https://i-blog.csdnimg.cn/blog_migrate/4c6ef593500fa2b691fc661e21fcbbcb.png%3D%28f_A%2Cf_B%2C%5Cmathcal%7BP%7D%2C%5Cmathcal%7BC%7D%29)
![f_A](https://i-blog.csdnimg.cn/blog_migrate/94cdec6429352c300965d8d4aa9bc475.png)
![f_B](https://i-blog.csdnimg.cn/blog_migrate/560be2a22d9e075288a57d247930a403.png)
![\mathcal{P}](https://i-blog.csdnimg.cn/blog_migrate/32b9ae0c8acce927592ecb9d14442000.png)
![\mathcal{C}](https://i-blog.csdnimg.cn/blog_migrate/2f89669fb3dfddd6b6abeae34a5cdec6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4f7e9d71c2f977f1b96604800397046b.jpeg)
![f: \mathcal{L}\times \mathcal{I}\rightarrow R^{c\times D}](https://i-blog.csdnimg.cn/blog_migrate/542d03b74cfa13069668c951028340fa.png)
![\mathcal{I}](https://i-blog.csdnimg.cn/blog_migrate/087045c0a53d4cc9813c0e954fa7777b.png)
![\mathcal{L}](https://i-blog.csdnimg.cn/blog_migrate/c48d6210ebc77f2a971d67649a8e321a.png)
![c\times D](https://i-blog.csdnimg.cn/blog_migrate/f3123dec907fbca55af6b94b7381b90c.png)
![{\rm bilinear}(l,\mathcal{I},f_A,f_B)=f_A (l,\mathcal{I})^T f_B(l,\mathcal{I})](https://i-blog.csdnimg.cn/blog_migrate/15172f2eee7f52607a1276a5b0c922a5.png)
![\mathcal{P}](https://i-blog.csdnimg.cn/blog_migrate/32b9ae0c8acce927592ecb9d14442000.png)
![\phi (\mathcal{I})=\sum_{l\in \mathcal{L}} {\rm bilinear}(l,\mathcal{I},f_A,f_B)](https://i-blog.csdnimg.cn/blog_migrate/99466640d1d0a0859fd10138500683af.png)
最新网络结构:
Look Closer to See Better: Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition
细粒度图像检索
以上介绍了细粒度图像分类的几个代表性工作。图像分析中除监督环境下的分类任务,还有另一大类经典任务——无监督环境下的图像检索。相比细粒度图像分类,检索任务上的研究开展较晚,下面重点介绍两个该方面工作。
图像检索(image retrieval)按检索信息的形式,分为“以文搜图”(text-based)和“以图搜图”(image-based)。在此我们仅讨论以图搜图的做法。传统图像检索任务一般是检索类似复制的图像(near-duplicated images),如下图(b)所示。左侧单列为query图像,右侧为返回的正确检索结果。可以看到,传统图像检索图像是在不同光照不同时间下同一地点的图像,这类图像不会有形态、颜色、甚至是背景的差异。
![](https://i-blog.csdnimg.cn/blog_migrate/50b7d2808b4693d8f22a4bb2239d4967.png)
而细粒度图像检索,如图(a),则需要将同为“绿头鸭”的图像从众多不同类鸟类图像中返回;同样,需要将“劳斯莱斯幻影”从包括劳斯莱斯其他车型的不同品牌不同车型的众多图像中检索出来。细粒度图像检索的难点,一是图像粒度非常细微;二是对细粒度图像而言,哪怕是属于同一子类的图像本身也具有形态、姿势、颜色、背景等巨大差异。可以说,细粒度图像检索是图像检索领域和细粒度图像分析领域的一项具有新鲜生命力的研究课题。
![](https://i-blog.csdnimg.cn/blog_migrate/cf8781e16f70fd135870aa03eae9d6b9.png)
- Fine-Grained Image Search [8]
[8]在2015年首次提出细粒度图像“搜索”的概念,通过构造一个层次数据库将多种现有的细粒度图像数据集和传统图像检索(一般为场景)融合。在搜索时,先判断其隶属的大类,后进行细粒度检索。其所用特征仍然是人造图像特征(SIFT等),基于图像特征可以计算两图相似度,从而返回检索结果。
![](https://i-blog.csdnimg.cn/blog_migrate/6630ce6d5b7d72c4d9fdca6eed0cde6b.jpeg)
- SCDA [9]
Selective Convolutional DescriptorAggregation (SCDA) 是我们近期提出的首个基于深度学习的细粒度图像检索方法[9]。同其他深度学习框架下的图像检索工作一样,在SCDA中,细粒度图像作为输入送入pre-trained CNN模型得到卷积特征/全连接特征。区别于传统图像检索的深度学习方法,针对细粒度图像检索问题,我们发现卷积特征优于全连接层特征,同时创新性的提出要对卷积描述子进行选择。不过SCDA与之前提到的Mask-CNN的不同在于,在图像检索问题中,不仅没有精细的part annotation,就连图像级别标记都无从获取。这就要求算法在无监督条件下依然可以完成物体的定位,根据定位结果进行卷积特征描述子的选择。对保留下来的深度特征,分别做以平均和最大池化操作,之后级联组成最终的图像表示。
![](https://i-blog.csdnimg.cn/blog_migrate/080c6e1935e450812f4249ad74a27930.png)
![](https://i-blog.csdnimg.cn/blog_migrate/79b7207f92592733f9c7defbd912b5f2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c5fa138e0af4bfded1f1b1f163d73e74.png)
展望
细粒度图像分析任务在过去的十年里一直是计算机视觉中的热门研究领域,尤其在深度学习繁荣的近几年,方法和问题可谓“常做常新”。不过随着深度学习方法研究的深入,在传统细粒度图像分析问题上,如鸟类、狗、车等子类分类和检索,尤其分类问题的准确率,可以说是到了瓶颈期。虽然时常会有不少细粒度图像分类工作问世,但每年也大概只能将分类准确率提升1个百分点左右(在经典的鸟类分类上,目前强监督分类模型为87.3%左右,弱监督模型为84.1%左右)。这便催生了细粒度图像分析任务的不同设定,如基于网络数据的细粒度图像分类、基于wiki知识获取的细粒度图像分类等等。
同时,更加广义的“细粒度图像分析”研究也越来越多。常见的行人重检测(person Re-ID)、人脸判别(face verification)、示例级别检索(instance retrieval)等问题都可以用传统细粒度图像分析的思路去解决,也期待更加优秀的相关工作出现。笔者于阿德莱德。
(声明:原文版权属于CSDN《程序员》杂志原创,作者为本人,发表于2017年4月刊。欢迎订阅!)
References
[1] N. Zhang, J. Donahue, R. Girshick, and T. Darrell. Part-based R-CNNs for fine-grained category detection. In European Conference on Computer Vision, Part I, LNCS 8689, pages 834–849, Zurich, Switzerland, Sept. 2014. Springer, Switzerland.
[2] S. Branson, G. V. Horn, S. Belongie, and P. Perona. Birdspecies categorization using pose normalized deep convolutional nets. InBritish Machine Vision Conference, pages 1–14,Nottingham, England, Sept. 2014.
[3] S. Branson, O. Beijbom, and S. Belongie. Efficient large-scale structured learning. InIEEE Conference on Computer Vision and Pattern Recognition, In Proceedings of IEEE Conference on Computer Vision and Pattern Recognition, pages 1806–1813, Portland, Oregon, Jun. 2013.
[4] X.-S. Wei, C.-W. Xie and J. Wu. Mask-CNN: Localizing Parts and Selecting Descriptors for Fine-Grained Image Recognition.arXiv:1605.06878, 2016.
[5] T. Xiao, Y. Xu, K. Yang, J. Zhang, Y. Peng, and Z. Zhang.The application of two-level attention models in deep convolutional neural network for fine-grained image classification.InProceedings of IEEE Conference on Computer Vision andPattern Recognition, pages 842–850, Boston, MA, Jun. 2015.
[6] M. Simon and E. Rodner. Neural activation constellations:Unsupervised part model discovery with convolutional networks. InProceedings of IEEE International Conference onComputer Vision, pages 1143–1151, Sandiago, Chile, Dec.2015.
[7] T.-Y. Lin, A. RoyChowdhury, and S. Maji. Bilinear CNN models for fine-grained visual recognition. InProceedings of IEEE International Conference on Computer Vision, pages 1449–1457, Sandiago, Chile, Dec. 2015.
[8] L. Xie, J. Wang, B. Zhang, and Q. Tian. Fine-grained image search.IEEE Transactions on Multimedia, vol. 17, no. 5, pp. 636–647, 2015.
[9] X.-S. Wei, J.-H. Luo, J. Wu, and Z.-H. Zhou. Selective Convolutional Descriptor Aggregation for Fine-Grained Image Retrieval.IEEE Transactions on Image Processing, 2017, in press.
[10] G. E. Hinton. Learning distributed representations of concepts. InAnnual Conference of the Cognitive ScienceSociety, Amherst, MA, 1986, pp. 1–12.