前言
图像处理与自然语言处理的结合,给图像加字幕或者描述。应用前景非常广,比如早教,图像检索,盲人导航等。图像注释问题的通用解法非常接近于Encoder-Decoder结构,下面就几种方法作简单总结。
m-RNN
Mao这篇2015-paper,根据输入语句和图片,为图片生成字幕;以DeepRNN 处理语句,用CNN处理图片。基本思路:直接将图像表示和词向量以及隐向量作为多模判断的输入。
左侧是简单RNN结构,右侧是本文所提的m-RNN(多模式),输入是图片极其对应的语句描述。模型根据之前词和图像来评估下个词的概率分布,每一时间帧上,所有的权重都是共享的。
两层embedding,分别表示语法和语义含义,初始化方法采用随机初始化足矣,不用专用使用pre-trained的词向量。其中多模式模块有三个输入:词向量 w(t) w ( t ) ,隐状态 r(t) r ( t ) ,图像表示 I I 。隐状态
m(t)=g2(Vww(t)+Vrr(t)+ViI) m ( t ) = g 2 ( V w w ( t ) + V r r ( t ) + V i I )
,其中
g2(x)=1.7159tanh(2/3x) g 2 ( x ) = 1.7159 t a n h ( 2 / 3 x )
,这个激活函数能够最大限度的保证梯度集中于非线性范围内,并且加快训练过程。
关于图像的表示,“For the image representation, here we use the activation of the 7th layer of AlexNet (Krizhevsky et al. (2012)) or 15th layer of VggNet (Simonyan & Zisserman (2014))”。
优化函数如下:
log2PPL(w1:L|I)=−1L∑n=1Llog2P(wn|w1:n−1,I) l o g 2 P P L ( w 1 : L | I ) = − 1 L ∑ n = 1 L l o g 2 P ( w n | w 1 : n − 1 , I )
PPL(w1:L|I) P P L ( w 1 : L | I ) 表示在图像
I I
时,句子
的混乱度。
C=1N∑i=1NsLilog2PPL(w(i)1:Li|I(i)+λθ||θ||22)