The Application of Two-level Attention Models in CNN for Fine-grained Image Classification

来源:互联网 发布:java 表单提交 编辑:程序博客网 时间:2024/05/29 13:32

这篇文章主要讲细粒度分类问题。普通的分类问题是类间差距较大,例如将一幅图像分类为猫或狗。不同于普通分类,细粒度分类问题类与类之间差异很小,比如将鸟按品种分类。两个不同品种的鸟之间的差异可能仅仅在于鸟的眼睛,嘴巴,腿等部位,其他部位区分度很小。这也造成了细粒度分类问题比普通分类问题难。自深度学习发展以来,图像分类问题最典型的的就是AlexNet,即2012年Hinton和他的学生参加ImageNet图像分类竞赛获得冠军所使用的网络,但是用这个网络直接用于细粒度分类却效果不佳,针对这个问题,这篇文章用两个级别的模型解决细粒度分类问题,以鸟的品种分类为例,步骤如下:
1. 首先利用selective search从图像中提取出很多patches(这些patches包含潜在的目标), 但这些patchs中有很多patch是噪声(例如在一个鸟的细粒度分类中产生了树枝等背景的patch)
2. 去除第1步产生的noisy patches:
利用预训练(利用ImageNet中鸟的子类训练)的CNN网络(文章称为FilterNet)筛选出包含正样本的patch。
具体实现:将最后softmax层输出中所有属于父类的分数相加(例如把所有品种的鸟的得分相加),并设定一个阈值,去除不包含鸟的patch,示意图如下:
这里写图片描述
3. 利用FilterNet挑选出的patch训练一个CNN网络(本文称之为DomainNet)
4. object-level attention:
对于一幅图像,利用步骤1提取出很多patch后,首先经过步骤2的FilterNet去除树枝树叶等noisy patch,从而挑选出包含鸟的patch,这些patch经过DomainNet后计算出最后一层(softmax层)的平均类别分布
5.Part-Level Attension:
DomainNet的隐藏层的神经元呈现一种聚类的模式(clustering pattern),例如第4个卷积层的某些神经元对鸟的头部有响应,另外的某些神经元对鸟的腿部有响应。
将DomainNet的第4个卷积层的filters(其实是第4个卷积层不同的channel)根据相似性做谱聚类(spectral clustering),将第4个卷基层的filters分为k类。
本文取k=3,这3类可以检测不同的parts(如分别检测鸟的头部,腿,腹部)。分别挑选出这3个类最大得分所对应的的patch,这些patch即为有区分的part。将这些parts调整大小后输入到DomainNet得到激活值。将不同parts的激活值和原图像的激活值连接起来,训练一个SVM分类器。
6.计算最终得分
final score = object score +  part score
object_score是第4步object attention的softmax层的输出,part_score是第5步SVM的决策值。
这里写图片描述

0 0
原创粉丝点击