文章是2017 CVPR的,主要用于多标签图像分类
虽然深度卷积神经网络(CNNs)在单标签图像分类方面取得了巨大成功,但需要注意的是,现实世界的图像通常包含多个标签,这些标签可以对应于一幅图像中不同的物体、场景、动作和属性,传统的多标签图像分类方法是对每个类别学习独立的分类器,并对分类结果进行排序或阈值设定。这些技术虽然执行的很顺利,但是不能明确的利用图像中的标签依赖关系。在本文中,我们利用递归神经网络(RNNs)来解决标签依赖关系的问题。结合CNNs,本文提出的CNN-RNN框架学习一个联合图像-标签嵌入来描述语义标签依赖性和图像-标签相关性,并通过端到端(从头到尾)的训练将两者融合在一个统一的框架中,在公共基准数据集上的实验结果表明,该体系结构取得了比最先进的多标签分类模型更好的性能。
每个真实世界的图像都可以用多个标签进行注释,因为一幅图像通常具有丰富的语义信息,比如对象、部件、场景、动作以及它们的交互或属性。对丰富的语义信息及其依赖关系进行建模是图像理解的关键。因此,多标签分类任务越来越受到重视,深卷积神经网络在过去几年在单标签图像分类方面取得巨大成功,证明了端到端(端到端指的是输入是原始数据,输出是最后的结果)框架的有效性,受此启发,我们探索学习一种统一的多标签图像分类框架。
将CNNs扩展到多标签分类的一种常用方法是将其转化为多个单标签分类问题,利用排名损失或交叉熵损失对其进行训练,但是,当单独处理标签时,这些方法无法建模多个标签之间的依赖关系(目前所拥有的方法的缺陷)。以往的研究表明,多标签分类问题具有很强的标签共现相关性。例如,天空和云通常同时出现,而水和汽车几乎从不同时出现。
对于标签依赖的建模,现有的研究大多基于图形模型,其中常用的方法是用成对相容概率或共现概率对共现依赖进行建模,并利用马尔可夫随机场来推断最终的联合标签概率。然而,当处理大量标签时,如果标签具有高度重叠的含义,则这些成对概率的参数可能会过大,而许多参数是多余的。此外,这些方法中的大多数要么不能建模高阶关联[39],要么牺牲计算复杂度来建模更复杂的标签关系。在本文中,我们用递归神经网络(RNNs)明确地建模标签依赖关系,以捕获高阶标签关系,同时保持计算复杂度可控(高阶策略:考虑多个标签之间的关联,比如对每个标签考虑所有其它标签的影响,二阶策略:考虑两个标签之间的相关性,对相关标签和不相关标签进行排序),我们发现,RNN能显著提高分类精度。
对于CNN部分,为了避免过拟合的问题,以往的方法通常假设所有的分类器都具有相同的图像特征(分类器:参数W被称为权重,其中每个类的分类器就是W的一个行向量),然而,当使用相同的图像特征来预测多个标签时,图像中较小的物体很容易被忽略或难以独立识别,在此工作中,我们设计了基于先前预测结果的RNNs框架来适应图像特征,通过将注意力模型隐式编码在CNN-RNN结构中。其背后的想法是隐式地调整图像中的关注区域,以便CNN在预测不同标签时可以将注意力集中在图像的不同区域。例如,当预测图1中图像的多个标签时,我们的模型将在识别出主要对象(例如飞机,大比利牛斯山脉,射箭)后将注意力转移到较小的标签(例如跑道,人,帽子),这些小物体本身很难识别,但只要有足够的上下文,就可以很容易地推断出来。
图1展示了从2012年分类数据集ImageNet中随机选取的三幅图像。第二行显示对应的标签注释。对于每个图像,在ImageNet数据集中只有一个标签(即飞机,大比利牛斯山脉,射箭)被注释。然而,每个图像实际上包含多个标签,如第三行所示。
最后,许多标签有着重叠的意思,如 c a t cat cat和 k i t t e n kitten kitten意思几乎一样并且经常可以互换,利用语义冗余不仅可以降低计算成本,而且可以提高泛化能力,因为语义重复的标签可以获得更多的训练数据。
标签语义冗余可以通过联合图像/标签嵌入来利用,可以通过规范相关分析,度量学习或学习排名方法来学习。联合图像/标签嵌入将每个标签或图像映射为联合低维欧几里德空间中的嵌入向量,以使语义相似标签的嵌入彼此接近,并且并且在同一空间内,每个图像的嵌入应与其相关标签的嵌入位置接近。联合嵌入模型可以利用标签语义冗余,因为它本质上共享语义相似标签的分类参数,但是,在大部分的这些模型当中,标签共现依赖关系在很大程度上被忽略。
本文提出了一种统一的多标签图像分类CNN-RNN框架,该框架以端到端方式有效地学习了语义冗余和共现依赖关系,所提模型的框架如图2所示。多标签RNN模型学习联合的低维图像标签嵌入以对图像和标签之间的语义相关性进行建模,图像嵌入向量由深层CNN生成,而每个标签都有其自己的标签嵌入向量。通过使用长期短期记忆递归神经元对低维空间中的高阶标签共现依赖性进行建模,从而将标签上下文信息保持在其内部记忆状态中。RNN框架按有序预测路径顺序计算多标签预测的概率,其中可以基于图像嵌入和递归神经元的输出来计算每个时间步长的标签先验概率(先验概率是指根据以往经验和分析得到的概率,可以根据之前获得的标签和图像来获得下一次的标签),在预测期间,可以使用波束搜索算法大致找到概率最高的多标签预测。本文提出的CNN-RNN框架是一个统一的框架,结合了联合图像/标签嵌入和标签共现模型的优点,并且可以端到端的方式进行训练。
图2阐述了CNN-RNN框架如何用于多标签图像分类,该框架学习联合嵌入空间以表征图像标签关系以及标签依赖性。首先输入一张图片,经过VGG网络对图片特征进行提取,然后并将图片特征嵌入到联合嵌入空间,同样将标签也嵌入到此空间当中,红点代表标签嵌入,蓝点代表图像嵌入,黑点则表示图像嵌入和递归神经元输出嵌入的总和。递归神经元通过顺序连接关节嵌入空间中的标签嵌入来对联合嵌入空间中的标签共现依赖性进行建模,在每个时间步长,基于图像嵌入和循环神经元的输出来计算标签的概率。在每一个时间步,都会输出一个神经元的状态,和蓝色点的图片特征进行相结合,然后再找到与其距离最近的红色点即所对应的就是此标签。在第一个时间步的时候不需要标签,也就是后续独热向量全为0,在其他时间步输入的则为预测出来的最大标签。可以看到,RNN神经元每一次输出后都会输出一个标签,首先输出主体船,然后再输出其他如海。
与最新的多标签图像分类方法相比,提出的RNN框架具有以下优点:
∙ \bullet ∙ 该框架采用端到端模型来利用语义冗余和共现依赖性,这两者对于有效的多标签分类都是必不可少的。
∙ \bullet ∙ 相比于此任务中的其他标签共现模型,循环神经元是用于高阶标签共现依赖关系的更紧凑和更强大的模型。
∙ \bullet ∙ 递归神经元中的隐式注意力机制适应图像特征,以更好地预测需要更多上下文的小物体
我们对包括NUS-WIDE,Microsoft COCO和PASCAL VOC 2007在内的公共多标签基准数据集进行了详尽的实验,以评估提出的CNN-RNN框架。实验结果表明,与当前最新的多标签分类方法相比,该方法具有明显更好的性能。我们还通过反卷积网络可视化RNN框架的关注区域,有趣的是,可视化显示RNN框架在预测不同标签时可以专注于相应的图像区域,这与人类的多标签分类过程非常相似(证明在每一个时间步RNN都能够对不同的区域进行重点关注,类似于attention机制)。
图像分类的进展部分是由于创建了大规模的手标记数据集(例如ImageNet)以及深度卷积神经网络的发展。 将深度卷积神经网络扩展到多标签分类的最新工作取得了良好的效果。 深度卷积排序优化了top-k排序的目标,它对正标签的损失赋更小的权值。Hypotheses-CNN-Pooling 使用最大池来汇总来自多个假设区域提议的预测。 这些方法很大程度上独立地对待每个标签,而忽略了标签之间的相关性。
多标签分类也可以通过学习联合图像/标签嵌入来实现。 多视图规范相关性分析是一种三向规范分析,可将图像,标签和语义映射到相同的潜在空间。能够有效地利用了标签语义冗余,但是在对标签共现依赖性进行建模方面存在不足。
目前已经提出了多种方法来利用标签共现依赖性进行多标签图像分类。如学习一连串的二进制分类器,其中每个分类器根据给定的输入特征和已经预测的标签来预测当前标签是否存在,标签共存依赖关系也可以通过图形模型建模,这些模型大多只捕捉成对的标签相关性,当标签数量较大时计算成本较高。所提出的RNN模型中的低维递归神经元是高阶标签相关性的更有效的计算表示。基于LSTM的神经网络可以有效地建立一个序列的长期时间依赖性模型,我们证明了带有LSTM的RNN也是标签依赖的有效模型
由于我们的目标是描述高阶标签相关性,我们使用长短期记忆(LSTM)神经元作为我们的周期性神经元,它已经被证明是一个长期依赖的强大模型。
RNN 是一类神经网络,它保持内部隐藏状态,以通过其单元之间的有向循环连接来模拟具有任意长度的序列的动态时间行为。可以将其视为采用非线性过渡函数并能够对长期时间依赖性进行建模的隐马尔可夫模型扩展。LSTM通过向RNN神经元添加三个门来扩展RNN:忘记门 f f f以控制是否忘记当前状态; 输入门 i i i指示是否应读取输入; 输出门 o o o控制是否输出状态。这些门使LSTM能够按顺序学习长期依赖关系,并使优化变得更容易,因为这些门帮助输入信号有效地通过循环隐藏状态 r ( t ) r(t) r(t)进行传播而不影响输出。LSTM还有效地解决了RNN训练中经常出现的梯度消失/爆炸问题。
结合图来介绍一下LSTM(文章介绍的稍微简略了一些,而且和网上介绍的LSTM不大一样,这里的细胞状态就是隐藏层状态,而网上的隐藏层状态是通过了输出门的细胞状态):
在本文中,LSTM的第t个时间步的输入是第t-1个时间步的隐藏层状态 r ( t − 1 ) r(t-1) r(t−1)以及标签 k k k的标签嵌入(下面会详细介绍),然后使用遗忘门和输入门对 r ( t − 1 ) r(t-1) r(t−1)状态进行更新为 r ( t ) r(t) r(t)状态,然后使用输出门将 r ( t ) r(t) r(t)中需要输出的信息计为 o ( t ) o(t) o(t)并输出,这个也就是递归神经网络的输出,并且整个网络所采用的激活函数是Relu。
∙ \bullet ∙步骤一(遗忘门 f t f_{t} ft):
在时间步 t t t时,决定从细胞状态 r t − 1 r_{t-1} rt−1中丢弃的信息。此门读取上一个时间步的隐藏层状态 r ( t − 1 ) r(t-1) r(t−1)以及在此时间步所对应的标签嵌入 w k ( t ) w_{k}(t) wk(t),此时采用ReLU激活函数来将数值规范到0-1之间(0表示完全舍弃,1表示完全保留), U f r U_{f_{r}} Ufr对应的则是权重.
∙ \bullet ∙步骤二(输入门 i t i_{t} it):
接着要创建一个新的候选值向量 x t x_{t} xt,此向量输入与上述门相同
∙ \bullet ∙步骤三:
更新细胞状态,将 r t − 1 r_{t-1} rt−1更新为 r t r_{t} rt,此时需要对细胞进行遗忘和更新,用旧细胞状态 r ( t − 1 ) r(t-1) r(t−1)与遗忘门 f t f_{t} ft进行点乘来丢弃掉要丢弃的信息,再将 i t i_{t} it和 x t x_{t} xt进行点乘来获得需要更新的信息,进行相加从而获得新状态。
∙ \bullet ∙步骤四(输出门 o t o_{t} ot):
基于细胞状态 r ( t ) r(t) r(t)来确定输出什么值,此时通过激活函数确定细胞状态的哪个部分输出出去
o ( t ) = r ( t ) ⋅ o t o(t)=r(t) \cdot o_{t} o(t)=r(t)⋅ot
然后将更新状态下的细胞状态 r t r_{t} rt与输出门 o t o_{t} ot进行点乘从而获得最终的输出 o ( t ) o(t) o(t),而 r ( t ) r(t) r(t)仍作为细胞状态输入到下一个时间步中。
针对多标签分类问题,本文提出了一种新的网络神经网络(CNN-RNN)框架,CNN-RNN框架图如图4所示:它包括两个部分:CNN部分从图像中提取语义表示; RNN部分对图像/标签关系和标签依赖性进行建模。
图4 介绍了提出的多标签分类RNN模型的结构。首先输入一张图片通过ConvNet网络输出图片表示I,同时标签以独热向量的形式通过标签嵌入映射到低维空间中的 w k ( t ) w_{k}(t) wk(t),然后在每一个时间步输入 w k ( t ) w_{k}(t) wk(t)以及上一个隐藏层状态状态 r ( t − 1 ) r(t-1) r(t−1),最后RNN网络输出 o ( t ) o(t) o(t),然后将图像表示I和RNN输出 o ( t ) o(t) o(t)共同通过映射层映射到低维空间获得 x ( t ) x(t) x(t)再通过预测层来获得预测标签的概率,将最大的那个作为输出。
我们将多标签预测分解为有序预测路径,例如,标签“斑马”和“大象”可以分解为(“斑马”,“大象”)或(“大象”,“斑马”)。预测路径的概率可以由RNN网络计算。 图像,标签和递归表示被投影到相同的低维空间,以对图像-文本关系以及标签冗余进行建模。RNN模型被用作该空间中标签共现依赖性的紧凑而强大的表示形式。它在每个时间步都嵌入了预测标签,并保持隐藏状态以对标签共现信息建模。给定先前预测的标签,可以根据图像和周期性嵌入的点积来计算目前标签的先验概率。可以将给定预测路径中给定先前标签中的每个标签的先验概率乘积来获得预测路径的概率。
一个标签 k k k可以被表示为一个独热向量 e k = [ 0 , . . . 0 , 1 , 0 , . . . , 0 ] e_{k}=[0,...0,1,0,...,0] ek=[0,...0,1,0,...,0],其中第 k k k个位置用1表示,其余位置用0代替。标签嵌入可以通过将独热向量与标签嵌入矩阵 U l U_{l} Ul相乘得到。标签 k k k的标签嵌入实际上就是标签嵌入矩阵 U l U_{l} Ul的第 k k k行
w k w_{k} wk的尺寸通常比标签的数量小得多,此时 w k w_{k} wk就是映射到低维空间中的结果了。
递归层对之前预测的标签进行嵌入,并通过学习非线性函数在其隐藏的循环状态中对共现依赖性进行建模:
其中 r ( t ) r(t) r(t)和 o ( t ) o(t) o(t)分别是递归层在时间步长 t t t处的隐藏状态和输出, w k ( t ) w_{k}(t) wk(t)是第k个标签在预测路径中的标签嵌入, h o ( . ) h_{o}(.) ho(.)则代表非线性RNN函数。
递归层的输出和图像表示被投影到与标签嵌入相同的低维空间中。
其中 U o x U_{o}^{x} Uox和 U I x U_{I}^{x} UIx分别是递归图层输出和图像表示的投影矩阵,他们的列数与标签嵌入矩阵 U l U_{l} Ul相同,同时可以看出此时的 x t x_{t} xt实际表示的就是联合空间中的黑色点也就是图像特征和输出状态结合后所获得的标签嵌入信息, o ( t ) o(t) o(t)表示时间步t时的状态输出, I I I是卷积神经网络的图像表示,综上所述,原始的标签用标签嵌入矩阵将标签嵌入到低维空间中,RNN每个时间步的输出和原始的图像表示也用投影矩阵嵌入到低维空间中。后续可说明所学习的联合嵌入有效地表征了图像和标签的相关性。
最后,可以通过将 U l U_{l} Ul的转置和 x t x_{t} xt相乘以计算 x t x_{t} xt与每个标签嵌入之间的距离来计算标签分数:
利用softmax对得分进行归一化,可以计算出预测的标签概率,将最大的那个标签作为下一个RNN的输入。
预测路径是一个标签序列 ( l 1 , l 2 , . . . , l N ) (l_{1},l_{2},...,l_{N}) (l1,l2,...,lN),其中利用图像 I I I和之前预测的标签 l 1 , l 2 , . . . , l t − 1 l_{1},l_{2},...,l_{t-1} l1,l2,...,lt−1的信息,可以计算出每个标签 l t l_{t} lt的概率,RNN模型通过找到使先验概率最大化的预测路径来预测多个标签。
公式的目的是获得每个标签的输出顺序,其实就是需要获得在图片I的特征下输出的多个标签概率最大值,也就是在I下得知 l 1 l_{1} l1的最大概率×在 I , l 1 I,l_{1} I,l1已知的情况下 l 2 l_{2} l2的最大概率…×在已知 I , l 1 , . . . , l k − 1 I,l_{1},...,l_{k-1} I,l1,...,lk−1的情况下 l k l_{k} lk的最大概率,并采用波束搜索算法来寻找最优预测路径。
波束搜索算法的一个例子可以在图5中找到。波束搜索算法不是贪婪地预测最可能的标签,而是在每一个时间步长t上找到最可能的n条预测路径作为中间路径S(t)
图5 介绍了一个波束大小N = 2的波束搜索算法的例子。波束搜索算法通过在每个时间步长保留一组中间路径并迭代地添加这些中间路径的标签来找到概率最高的N条最佳路径。例如第一个选取两条路径Cat和Person,第二次则又分别找到概率最高的2条路径,直到最后到达end则结束此时才能成为一条完整的路径
在第t个时间步,我们可以发现有 N N N条路径可供选择,在第 t + 1 t+1 t+1个时间步,我们将N个最可能的标签添加到每个中间路径 P I ( T ) P_{I}(T) PI(T),以获得总计N×N个路径。这些路径中概率最高的N条预测路径构成了时间步t +1的中间路径。以END符号结尾的预测路径被添加到候选路径集C。波束搜索的终止条件是当前中间路径的概率小于所有候选路径的概率。 这表明我们找不到更大可能性的更多候选路径。
在我们的实验中,CNN模块使用了16层VGG网络的Caffe深度学习框架ImageNet 2012分类挑战数据集[5]上进行预训练。 标签嵌入和LSTM RNN层的尺寸分别为64和512。 对于所有的投影层,我们采用权重衰减率为0.0001,动量率为0.9,dropout为0.5(随机删减的神经元比率)。
我们在三个基准的多标签分类数据集上评估了该方法:NUS-WIDE,Microsoft COCO和VOC PASCAL 2007数据集。 评估表明,所提出的方法具有优于最新方法的性能。 我们也定性地表明,该方法学习了联合标签/图像嵌入,并在顺序预测过程中将注意力集中在不同的图像区域
所生成标签的精度和召回率来作为评估指标。 对于每个图像,我们生成k个排名最高的标签,并将生成的标签与真值标签进行比较。精度是正确标注的标签数除以生成的标签数。 召回率是正确标注的标签数除以真实标签的数量。
NUS-WIDE数据集是一个网络图像数据集,其中包含269,648张图像和来自Flickr的5018个标签。 移除嘈杂和稀有标签后,总共有1000个标签。这些图像由人工注释者进一步手动注释为81个概念。 图6的左侧显示了两个标签集的注释和预测示例。
81个标签的注释的质量相对较高,而1000个标签的注释则非常嘈杂。 在图6中,我们可以找到一些具有重复语义的标签,例如“ cloud”和“ clouds”,一些完全错误的标签,例如“ photographer”,以及一些太笼统的标签而没有特定的含义,例如“ beautiful”。
除了能够生成多个标签外,CNN-RNN模型还可以有效地学习联合标签/图像嵌入。 表5中显示了NUS-WIDE和MS-COCO的嵌入空间中标签和与其最近邻居标签。我们可以看到,标签与其最近邻居标签在语义上高度相关。如第一行冰河,找到的最相近邻居为北极、挪威、火山、苔原、湖泊;天空,相近邻居为自然,蓝色,云彩,风景,太棒了等
图9显示了根据标签嵌入 w k w_{k} wk和图像嵌入 U I x I U_{I}^{x}{I} UIxI计算出的NUS-WIDE 1000标签数据集上图像的最近邻居标签。在联合嵌入空间中,图像及其最近邻居标签在语义上相关。此外,我们发现与分类模型预测的排名最高的标签(对应的classification)相比,最近的邻居标签(图中的KNN)通常更细粒度。 例如,最近的邻居标签“hawk”和“glacier”比“bird”和“landscape”更精细.
调查CNN-RNN框架在预测不同标签时注意力的变化是很有趣的。 我们将图10中带有反卷积网络的RNN多标签模型的注意力形象化。给定输入图像,RNN多标签模型在每个时间步的注意力是使用反卷积网络在softmax层上所有标签节点的合成图像的平均值。 该图像的真值标签为“大象”和“斑马”。(注意,attention机制的可视化未使用真值标签)一开始,注意的可视化显示模型在整个图像上看起来并预测了“大象”。在预测“大象”之后,模型将注意力转移到斑马区域并预测“斑马”。 可视化结果显示,尽管RNN框架没有学习明确的注意力模型,但在对不同对象进行分类时,它设法将注意力转移到了不同的图像区域。
图10表示RNN多标记框架的注意可视化。这幅图像有两个真值标签:“大象”和“斑马”。左下角显示的是开始时框架的注意力,右下角显示的是预测“大象”后框架的注意力。
我们提出了用于多标签图像分类的统一CNN-RNN框架。 所提出的框架通过使用CNN和RNN在联合图像/标签嵌入空间中对标签共现依赖性进行建模,结合了联合图像/标签嵌入和标签共现模型的优点。 在几个基准数据集上的实验结果表明,该方法比最新方法具有更好的性能。
注意力可视化结果表明,该模型在预测不同的标签时,能够将注意力转向不同的图像区域。然而,由于对全局视觉特征的识别能力有限,预测小物体仍然是一个挑战。通过建立一个明确的注意模型,不仅可以预测标签,而且可以预测目标的分割,这是一个有趣的方向。