您的位置:首页 > 其它

【论文笔记】Multi-label Image Recognition by Recurrently Discovering Attentional Regions

2018-10-10 11:38 302 查看

摘要

这篇论文主要提出了一种新的深度结构来实现多标注图像识别,多标注图像识别是一般视觉理解的一个基本和实际任务。以前在解决这个任务时往往选择region proposals,但这种方法会导致冗余计算,性能也达不到最好。作者通过开发一个循环可记忆模型来实现可解释性以及多标注图像分类。这个模块包含两种交替执行的模块:1.一个空间转换层 spatial transformer layer,用来在卷积特征映射中找到感兴趣区域(不用region proposals);2.一个LSTM(Long-Short Term Memory,长短期记忆)子网络,用来按顺序预测所定位区域的语义标记,同时获得这些区域的全局依赖性,LSTM还可以输出空间转换器的参数。经验证,这种方法在多标注图像分类的大规模基准中(如MS-COCO和PASCAL VOC 07),准确性和效率上的表现比其他现有技术水平优异。

1.介绍

在计算机视觉中,识别多标注图像是一个基础但实际的问题,而现实世界的图像往往包含丰富且多样的语义信息。多标注图像分类与单标注图像分类相比要困难得多,因为它不仅包含单标注图像分类的困难(例如,由视点、尺度、遮挡、光照引起的类内差),还需要深入了解图像来准确预测多个对象类别的存在(例如,语义标注与区域如何关联,并且获得它们的依赖关系)。

然后作者提到,CNNs结合目标定位技术来进行多标注图像分类时,会产生冗余计算,还过度简化了上下文之间的联系以及标注之间的相互依赖性。王等人提出的将RNNs和CNNs组合使用,这种方法忽视了语义标注和区域之间的关联,也没充分利用图像中的空间上下文。对比这些方法后他提出了一个端对端的可训练框架,该框架得到与多个语义标注相对应的注意区域,并获得这些区域的全局上下文依赖性。这种方法不需要去寻找假设区域(也就是可能存在在目标的区域),图1展示的是该方法生成的两个例子。


图1. 对应于语义标注(在图像下方可见)的这些区域(由不同颜色显示)在分类方面是可以区别开的,尽管它们不能很好地保留对象的边界。

为了在多标注图像上提取有意义和可区别的区域,作者提出了一个与CNNs结合的循环可记忆模块,包含两个部分:1.一个空间转换层,用来在卷积特征映射中找到注意区域;2.一个LSTM子网络,用来分别预测注意区域的标注分数,并且输出空间转换层的参数,同时还可以获得注意区域的全局上下文信息。这两部分在循环学习中交替执行,获得区域 与标注之间的相关性,同时该方法还可以提高多标注分类的可区分性。

这项工作主要分为三方面:

  • 提出一种能够自动识别图像上的语义感知区域的方法,同时获得其相互联系。
  • 提出空间变换器的三个新的约束,使其学习获得更有意义的区域,进而促进多标注分类。
  • 在PASCAL VOC 和Microsoft COCO 等大型基准进行了广泛的实验和评估,证明了该模型在识别准确性和效率方面优于其他领先的多标注图像分类方法。

2.相关工作

由于大规模标注数据的建立(如PASCAL VOC,COCO)以及深度CNNs的快速发展,图像分类方面的性能大幅度提升。最近几年里,许多研究者尝试将深度CNNs应用于多标注图像识别问题,已经取得了成功。

2.1 多标注图像识别
传统多标注图像识别方法应用了BOW模型(bag-of-words,词袋)来解决问题,这种模型在简单基准上性能良好,但由于它在很大程度上依赖于人工低级特征,因此可能无法对具有复杂场景的图像进行分类。相反地,通过深度模型学习获得的特征被证明通用性良好,并且远比人工特征有效。

然后作者介绍了一些论文,这些方法在提取图像特征时都没有用到空间信息,不能明确地将图像区域和检测到的分类标注对应起来,当背景复杂时也极易受到影响。为了解决这个问题,许多研究者提出只关注有信息的区域,这有效消除了非目标区域的影响。之后介绍了Wei、Yang等人的论文,这些方法解决了区域和标注的问题,但如果无法生成object proposals时,这些基于object proposals的方法都不可行,并且很难在训练和测试中生成端对端的结构。作者提出建立一个神经网络中的循环可记忆模型,同时定位注意区域并预测不同区域的标注。这种方法不用提前提取目标特征区域,因此非常有效并且可以以端对端训练。

2.2 视觉注意模型
(注:参考为添加链接描述 视频:添加链接描述
注意模型被应用到了许多计算机视觉任务中,比如图像分类、显著度检测、图像字幕。这种模型大部分都用到循环神经网络,并使用强化学习技术优化其模型。我个人的理解是它在模拟人的大脑:人在看见一张图片时,虽然接收到 整张图片的信息,但是我们都只会关注其中的一小部分,比如一张“羊在绿地上吃草”的图,我们肯定都去关注那只羊而不是绿地,也就是说大脑对于这种图片的关注不是平均的,它在不同区域有不同的权值,比如羊的权值肯定就远远大于绿地的权值。

3.模型

图2展示了所提出的模型结构。

输入图像 I 先被送入VGG-16 ConvNet,不进行object proposals(注:object proposals方法我大致理解为去看哪里有物体,目标检测分类就两步,一是获得对象可能存在的区域,而是判断这个区域内的标签,object proposals也就是先获得对象可能存在的位置,也不知道怎么翻译比较好)。让图像经过几个卷积层和最大池化层,以获得卷积特征映射,记为fIf_IfI​,然后把它输入到循环可记忆模块。循环可记忆注意模型包括以迭代方式协同工作的空间变换器(ST)和LSTM网络,直接根据输入图像特征来预测标签分布。具体地,在一个迭代过程中,ST定位LSTM的注意区域,然后LSTM预测关于该区域的标签分数,同时更新ST的参数,最后总结几个注意区域的分数。

3.1 用于注意区域定位的ST
ST是基于样本的差分模块,它把输入映射空间转换为具有给定大小的输出映射,输出对应于输入映射的一个子区域,很容易在神经网络中嵌入一个ST层并且将它训练成标准反向传播算法。作者的方法中,ST被用于定位注意区域。

ST层从整个输入图像的特征图fIf_IfI​提取注意区域的特征,记为fkf_kfk​。计算过程如下:首先定义一个空间转换矩阵M(刚开始参数是我们给,后面通过学习不断更新参数),然后基于fkf_kfk​的坐标获得对应区域的fIf_IfI​的坐标,再通过双线性插值生成包含注意区域的fkf_kfk​。图3展示了坐标映射的一个例子。为了定位注意区域,作者将变换矩阵M约束为仅包含裁剪、平移和缩放,表示为
M=[sx0tx0syty]M=\begin{bmatrix} s_x&0&t_x\\ 0&s_y&t_y\end{bmatrix}M=[sx​0​0sy​​tx​ty​​]
其中的sxs_xsx​,sys_ysy​,txt_xtx​,tyt_yty​是缩放和转换参数。作者采用一个标准的神经网络来估计这些参数,从而实现端对端。
(缩放和平移函数其实就是矩阵操作,比如假设原来坐标是(x,y,1)T(x,y,1)^T(x,y,1)T,左乘这个M就变成了(sxx+tx,syy+ty)T(s_x x+t_x,s_y y+ty)^T(sx​x+tx​,sy​y+ty)T)

总之,这部分我的理解就是,我们定义一个转换矩阵M,通过不断的学习来更新这个M里面参数,使其与输入图像的特征图fIf_IfI​相乘就能获得我们关心的区域的坐标,至于如何更新M的参数则与后面的LSTM有关系。

3.2 循环可记忆注意模型
这个模型的核心是循环可记忆注意模块,包含LSTM网络和空间变换器的循环计算过程。在第k次迭代中,这个模型找到了一个注意区域,通过采用下面这个空间变换器来提取相应的特征:
fk=st(fI,Mk),Mk=[sxk0txk0syktyk]f_k=st(f_I,M_k),M_k=\begin{bmatrix}s^k_x&0&t^k_x\\0&s^k_y&t^k_y\end{bmatrix}fk​=st(fI​,Mk​),Mk​=[sxk​0​0syk​​txk​tyk​​]
其中st(·)是空间变换函数,MkM_kMk​是网络在上一次迭代估计的变换矩阵。在第一次迭代时把整张图片作为注意区域,也就是把初始变换矩阵设置为
M0=[100010]M_0=\begin{bmatrix}1&0&0\\0&1&0\end{bmatrix}M0​=[10​01​00​]
作者还强调了是在特征映射fIf_IfI​上应用空间变换器操作,而不是在输入图像上,这是为了避免重复计算过多的卷积过程。样本特征映射fkf_kfk​作为LSTM的输入,计算记忆单元和隐藏状态。计算过程可以表示为
xk=relu(Wfxfk+bx)ik=σ(Wxixk+Whihk−1+bi)gk=σ(Wxgxk+Whghk−1+bg)ok=σ(Wxoxk+Whohk−1+bo)mk=tanh(Wxmxk+Whmhk−1+bm)ck=gk⨀ck−1+ik⨀mkhk=ok⨀ckx_k=relu(W_{fx}f_k+b_x)\\i_k=σ(W_{xi}x_k+W_{hi}h_{k-1}+b_i)\\g_k=σ(W_{xg}x_k+W_{hg}h_{k-1}+b_g)\\o_k=\sigma(W_{xo}x_k+W_{ho}h_{k-1}+b_o)\\m_k=tanh(W_{xm}x_k+W_{hm}h_{k-1}+b_m)\\c_k=g_k \bigodot c_{k-1}+i_k \bigodot m_k\\h_k=o_k \bigodot c_kxk​=relu(Wfx​fk​+bx​)ik​=σ(Wxi​xk​+Whi​hk−1​+bi​)gk​=σ(Wxg​xk​+Whg​hk−1​+bg​)ok​=σ(Wxo​xk​+Who​hk−1​+bo​)mk​=tanh(Wxm​xk​+Whm​hk−1​+bm​)ck​=gk​⨀ck−1​+ik​⨀mk​hk​=ok​⨀ck​
其中relu(·)是修正线性函数,σ(⋅)\sigma(·)σ(⋅)是sigmoid函数,tanh(·)是双曲正切函数;hk−1h_{k-1}hk−1​和ck−1c_{k-1}ck−1​是上一次迭代的隐藏状态和记忆细胞;ik,gk,ok,mki_k,g_k,o_k,m_kik​,gk​,ok​,mk​是分别是输入门,忘记门,输出门和输入调制门的输出。门可以确保LSTM的稳健训练,因为它们在梯度消失和梯度爆炸时也运行良好。
(LSTM理解和公式参考:添加链接描述添加链接描述

记忆细胞ckc_kck​对先前k-1个区域中的有用信息进行编码,这种做法可能会带来两个好处。1.不同类别的目标之间是紧密相连的,因此“记忆”以前的信息将有助于识别当前注意区域的目标;2.这种模型能找到所有我们可能关注的区域,还会考虑之前找到的注意区域的信息,增强了注意区域之间的多样性和互补性。

M的更新规则。给出隐藏状态hkh_khk​,分类器和网络可以被表示为
zk=relu(Whzhk+bz)sk=Wzszk+bs,k≠0Mk+1=Wzmzk+bmz_k=relu(W_{hz}h_k+b_z)\\s_k=W_{zs}z_k+b_s,k≠0\\M_{k+1}=W_{zm}z_k+b_mzk​=relu(Whz​hk​+bz​)sk​=Wzs​zk​+bs​,k̸​=0Mk+1​=Wzm​zk​+bm​
其中sks_ksk​是第k个区域的预测分数分布,Mk+1M_{k+1}Mk+1​是下一次迭代的变换矩阵。第一次迭代(k=0)中没有s,只估计了矩阵M,因为一开始没有获得注意区域。

Category-wise max-pooling.。总共迭代K+1次,获得K个分数向量{s1,s2,⋯ ,sK}\lbrace s_1,s_2,\cdots,s_K\rbrace{s1​,s2​,⋯,sK​},其中sk={sk1,sk2⋯ ,,skC}s_k=\lbrace s^1_k,s^2_k\cdots,,s^C_k\rbracesk​={sk1​,sk2​⋯,,skC​}表示C类标签上的分数。作者采用Category-wise max-pooling.来处理分数获得最终结果S={s1,s2,⋯ ,sC}S=\lbrace s^1,s^2,\cdots,s^C\rbraceS={s1,s2,⋯,sC},它就是选取每个类别里分数最高的来作为结果。
sc=max(s1c,s2c⋯ ,,sKc),c=1,2,⋯ ,C.s^c=max(s^c_1,s^c_2\cdots,,s^c_K),c=1,2,\cdots,C.sc=max(s1c​,s2c​⋯,,sKc​),c=1,2,⋯,C.

下面两个图是我用画图软件随便画的,非常粗糙…分别是整个方法的大致过程和LSTM的理解。

4.Learning

4.1 分类损失
应用Euclidean loss(欧几里德损失)作为目标函数。假设有N个训练样本,每个样本xix_ixi​都有标注向量yi={yi1,yi2,⋯ ,yiC}y_i=\lbrace y^1_i,y^2_i,\cdots,y^C_i\rbraceyi​={yi1​,yi2​,⋯,yiC​}。如果样本包含c类标签,那么yic(c=1,2,⋯ ,C)y^c_i(c=1,2,\cdots,C)yic​(c=1,2,⋯,C)被定为1,否则为0。第i个样本的 ground-truth概率向量被定义为P^i=yi/∣∣yi∣∣1\hat{P}_i=y_i/||y_i||_1P^i​=yi​/∣∣yi​∣∣1​,分母也就是标注向量yiy_iyi​元素绝对值之和。预测的概率向量为
pic=exp(sic)∑c′=1Cexp(sic′)c=1,2,⋯ ,Cp^c_i=\frac{exp(s^c_i)}{\sum_{c^\prime=1}^{C} {exp(s^{c\prime}_i)}} c=1,2,\cdots,Cpic​=∑c′=1C​exp(sic′​)exp(sic​)​c=1,2,⋯,C
sics^c_isic​上面定义过了,是最终得到的第 i 张图里对第 c 类的预测分数,上面这个公式其实就是和 ground-truth概率向量一样被归一化了,是softmax过程(如果没记错的话),使得这张图的预测概率向量(ground-truth概率向量)所有元素之和为1。

分类损失函数定义为
Lcls=1N∑i=1N∑c=1C(pic−p^ic)2L_{cls}=\frac{1}{N}\sum_{i=1}^{N} \sum_{c=1}^{C} {(p^c_i-\hat{p}^c_i)^2} Lcls​=N1​i=1∑N​c=1∑C​(pic​−p^​ic​)2
基本事实 ground-truth是在各个领域中使用的术语,指的是直接观察(即经验证据)提供的信息,而不是推理提供的信息。

4.2 注意区域约束的损失
论文采用的方法是融合所有注意区域的分数来获得最终结果,所以所选择的注意区域中一定要包含输入图像中的所有对象,如果少了则很容易发生错误,因为LSTM网络在预测时从未见过这个对象。实验证明可以通过定义分类损失来训练模型,但这种方法也有明显的缺点:

  • 冗余。ST层经常选择与最突出的目标相对应的相同区域,由于该组注意区域是冗余的,因此难以检测出现在输入图像中的所有对象。
  • 无视小的对象。ST层倾向于定位相对较大的区域,无视小的目标,会降低分类性能。
  • 空间翻转。所选择的注意区域可能是垂直或水平镜像。

为了解决这些问题,进一步定义了一个损失函数,它包含对变换矩阵M的参数的三个约束。
Anchor constraint。注意区域分散在不同的语义区域会更好,第一次迭代时,不添加约束能更容易地找到突出的区域,在这之后使用anchor constrain选取除了图像中心以外的其他K-1个注意区域。在图像中心画出一个半径为22\frac{\sqrt{2}}{2}22​​的圆,并均匀地在上面选取anchor,如图4。

实验中使K=5,所以四个anchor点分别是(0.5,0.5),(0.5,-0.5),(-0.5,0.5), (-0.5,-0.5)。anchor constraint表示为:

其中的(cxk,cyk)(c_x^k,c_y^k)(cxk​,cyk​)是第k个anchor point的位置坐标。txk,tykt_x^k,t_y^ktxk​,tyk​是平移参数?查出来说它可以保证在选择注意区域时不会总是去选突出的区域,这里我没有理解。

尺度约束Scale constraint。这个约束把尺度参数设置为一定范围内,使得定位的注意区域尺寸不会太大。它可以表示为:
lS=lsx+lsyl_S=l_{s_x}+l_{s_y}lS​=lsx​​+lsy​​
其中

α\alphaα是一个阈值,实验中把它设为0.5。

Positive constraint。这也是限制尺度参数的,Positive constraint优先选择一个有正尺度参数的变换矩阵,可以使得注意区域不被镜像:
lP=max(0,β−Sx)+max(0,β−Sy)l_P=max(0,\beta-S_x)+max(0,\beta-S_y)lP​=max(0,β−Sx​)+max(0,β−Sy​)
β\betaβ是阈值,设置为0.1。
也就是当sx,sys_x,s_ysx​,sy​为0.1-0.5之间,lP,lSl_P,l_SlP​,lS​都为0。
把上述三个变换矩阵参数的约束结合起来,定义一个注意区域的损失,这个损失可以用三者的加权和来表示:
Lloc=lS+λ1lA+λ2lPL_{loc}=l_S+\lambda_1l_A+\lambda_2l_PLloc​=lS​+λ1​lA​+λ2​lP​
λ1,λ2\lambda_1,\lambda_2λ1​,λ2​是权重,分别设为0.01、0.1。

这篇论文使用分类损失和定位损失来进行训练,总的损失函数可以被表示为:
L=Lcls+γLlocL=L_{cls}+\gamma L_{loc}L=Lcls​+γLloc​
由于分类任务在训练中是主要的,所以把平衡系数γ\gammaγ设置为0.1,优化器则使用最近提出的Adam算法和标准反向传播。

5.实验

(这部分只是大概翻了下)
5.1 设置
Implementation details。在训练阶段用两步训练机制来初始化之后的卷积神经网路:CNN先在ImageNet上预训练,然后进一步在目标多标注分类数据集上微调,ImageNet是一个大规模单标注分类数据集。学习到的参数被用于初始化对应层的参数,而网络中其他新加进来的层的参数是由Xavier 算法初始化的,不是人工调整。所有的训练图像的尺寸先设置为NxN,然后随机裁剪为(N-64)x(N-64),可以通过水平翻转来增强训练样本。论文训练了两个模型,N分别取为512和640,两个模型的优化器都是用的是batch size为16的Adam算法,动量分别为0.9、0.99,学习速率初始设置为0.00001,30个epoch后除以10。每个尺度的模型都训练45个epoch,选择其中验证损失最低的模型作为之后测试的模型。

测试阶段对不同尺度进行10视图评估(ten-view evaluation),首先将输入图像设置为NxN,N为512/640,然后选取5个(N-64)x(N-64)大小的patches,即选4个角patch1个中心patch,以及它们的水平翻转视图。把NxN的图像输入到VGG-16 ConvNet中,然后相应地在conv5_3特征映射上获得特征,从而获得所有patches的特征。对于每个patch,模型在每个注意区域上提取特征,最后通过max-pooling最大池化来总结这个patch的特征。通过平均所有patches的特征,获得图像的表示。最后使用LIBLINEAR library对每个类别都训练出一个one-vs-rest SVM分类器。【后面讲了作者用GTX TITAN-X训练的时间以及好处】

评估指标Evaluation metrics。对于每个图像,给予它排名最高的k个标注,然后与真实标注相比较。计算了整体的精度、召回率recall、F1(OP,OR,OF1)和每个类的精度、召回率recall、F1(CP,CR,CF1)。

其中C是标注的数量,NicN_i^cNic​是第i个标签预测对了的图像数量,NipN_i^pNip​是预测的第i个标签的图像数量,NigN_i^gNig​是真实的第i个标签的图像数量。

同时也采用了每个类的平均精度(AP),以及所有类别的平均精度(mAP)。总体的F1和每个类的F1,以及mAP是相对比较重要的。

5.2 与目前最先进的方法比较
这一部分主要是论文的模型与其他目前比较先进的方法进行比较,比如FeV + LV-20-VD ,HCP ,RLSD ,CNN-RNN ,VeryDeep和CNN-SVM,是基于PASCAL VOC 2007 和Microsoft COCO这两个数据集上进行比较的。VOC 2007使用比较广泛,MS-COCO比VOC晚发布,更具有挑战性。PASCAL VOC 2007数据集包含来自20个对象类别的9,963个图像,table1是实验结果,以前是HCP和FeV + LV表现较好,mAP分别达到90.9%和90.6%,而该论文的模型达到了91.9%,512/640单尺度模型都超过了之前的性能。

对于MS-COCO数据集,采用top-3标签,并滤除概率低于阈值0.5的标签,因此一些图像的标签数量将小于3。table2可以看出,每一类的F1 score为67.4%和整体的F1 score为72.0,与之前最好的情况相比,粉笔提高了5.4%和4.2%。

5.3 Ablation Study
这部分主要说了论文用的一些方法相比较其他方法有哪些地方比较好。
5.3.1 Attentional regions v.s. object proposals
Attentional regions能够发现判别区域,有助于识别。object proposals虽然在目标检测中十分有效,但是proposals太多时就很难得到满意的召回率,而且检查这些proposals特别耗时,有额外的计算开销。 图5显示了论文提出的模型生成的区域,能更好地区别区域(例如,狗的头部),并且它们大多数集中在语义对象的区域上。

为了方便比较分类性能,在同一个网络使用两种方法。首先删除了注意区域的ST,用选定的五个对象proposals来代替,其他地方都不变。table3给出了基于VOC 2007的mAP,可以看出注意区域方式的性能更好。

object proposals需要上百个甚至更多的proposals来覆盖大部分对象,而该论文的模型依然比它要性能更好,比如table1里面的HCP和F2v+LV。

5.3.2 注意区域的约束分析
前面为了方便多标注图像分类,对注意区域的定位提出了三种新的约束,现在把它们都删除了,基于VOC 2007数据集重新训练了模型,来验证它们到底有什么作用。结果如table4所示,mAP明显下降,可看出约束是有效的。然后删除三个约束中的一个,再重新训练,可以发现性能也下降了,说明任何一个约束都是有效的。基于MS-COCO也是同样结果(table5)。

5.3 多尺度多视图评估
table6是single-scale + single-crop, single-scale + multi-crop ,multiscale + multi-crop的展示。结果可看出,multi-scale + multi-crop性能最好。
multi-crop:从原始图像中裁剪中一部分相对小一点的图像。

6.结论

这篇论文主要是介绍了一种在深度神经网络结构中引入循环可记忆注意模型的方法来解决多标签图像识别问题。具体来说就是,循环可记忆注意模型由两部分组成:一个定位图像中注意区域的ST层;一个LSTM单元,根据局部区域的特征预测标记分数,并保留这个区域之前的信息。实验结果显示性能很好(准确度、效率)。

笔记:
1.太长的公式没必要手打;
2.背景介绍和介绍其他论文方法的部分也没必要一一翻译;
3.不知道怎么翻译的词也没必要非找到准确的翻译,理解它的意思就可以,写笔记的时候直接写英语就行了,重要的是它的内容而不是怎么翻译;
4.最最重要的是模型部分,有时候定义损失的情况也比较新颖重要,其他部分花的时间可以少点;

讨论:(这些问题来源于网上)
1.解决了什么问题?
多标注图像识别
2.提出了怎样的方法?
先获得注意区域,然后在这个注意区域上获得每个类标签的分数
3为什么会提出这个方法?
之前的方法需要提前去提取假设区域,有冗余计算,性能也不是很好
4.设计了怎样的模型?
CNN+ST+LSTM
5建立在什么样的假设上?
假设LSTM里的记忆细胞可以记住前面K-1个注意区域的信息,因为注意区域之间是相互联系的;好像还有注意区域必须包括所有目标?否则LSTM在预测分数时可能会出错。
6.这篇文章的关键点是什么?
应该是利用ST层来获得注意区域,之前都是额外用一个提取层或者查找的方式,来获得假设区域,用ST层的话就没有冗余计算。LSTM也有个好处是可以记住前面的信息,保证了注意区域之间的相关性。它还是个端到端的,更方便了。
7.贡献是什么?
这个回答跟第6个问题的差不多。
8.如何通过这个模型验证了作者所提出的观点?
论文后面做比较了,性能确实更好。
9.这个模型为什么能work?
额,因为LSTM能记忆信息,还可以返回去更新ST中的M矩阵参数?

新手新手,有错误还望各位大佬指正。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐