Deep Visual-Semantic Alignments for Generating Image Descriptions
时间:2015年
Target
generates natural language descriptions of images and their regions
Challenge
- 需要高capability的模型来处理图片信息,生成自然语言
- 模型需要摆脱硬编码模板和一些固定模式,仅仅从数据中学习
- ground-truth数据不能精确到图片中的区域
insight
- 将图片-描述的数据集当作弱标签,label中的词指代图片中的某个未知区域
Contribution
- 提出了能够推断断句和图片区域潜在的对齐关系的模型,将图片特征和文本特征通过一个共享的embedding空间联系起来
- 引入了multimodal RNN结构,接受图片输入并生成description
Model
模型分为两部分,第一部分,将句子中的短语和visual region进行对齐,然后利用对齐后的数据作为标签,训练第二个模型生成短语
第一部分:learn to align visual and language data
表示图片
使用Region CNN(RCNN)来编码图片,CNN在ImageNet上预训练,且在ImageNet Detection Challenge的200类上作了fine-tune,选择top19的location和整张图片来计算图片的表达,将图片编码成20个h(1000~1600)维的向量
I
b
I_b
Ib表示某个bounding box中的pixels,在CNN得到的特征上作投影得到mutimodal embedding
每张图片是20个h维向量的集合
表示句子
使用Bidirectional RNN(BRNN)来编码句子,BRNN接受N个词的输入,然后将他们编码成h维向量,每个词的编码过程会融入其上下文的信息
输入的词用word embedding编码为300维的向量,并且保持不变以避免过拟合。
对齐?(alignment)目标
现在已经将图片和句子编码到了相同的h维空间中,我们可以定义图片k和句子l的匹配程度为
这里
g
k
g_k
gk是图片feature的集合,
g
l
g_l
gl是句子feature的集合,作者发现,下面的式子简化了上式,并去掉了不必要的目标
对于图片k和句子l的匹配程度,只需要求对句子l中每个片段最佳匹配区域的内积之和即可,相比于之前的对每个区域求匹配再求和,最后证明这样做简化了模型且提高了性能,注意k=l时代表图片和句子匹配的情况,最后的max-margin loss为
这样的损失函数鼓励k=l时有更高的匹配得分,k!=l时得分更低,这解决了没有region级别的对应label的问题
解码text segment和image的alignment
v i T s t v_i^Ts_t viTst表示了word t和区域i的匹配程度,但如果直接用这样的得分来匹配词和区域,会导致词scattered且不一致,相邻的词可能被匹配到了图中不同的区域,这里作者使用了Markov Random Field来解决这个问题,最终得到了snippet和region的alignment
第二部分:Muiltimodal Recurrent Neural Network for generating description
这一部分的输入是图片和其对应的description,可以是整张图片及sentence,或者region和snippets,其结构就是cnn encoder + rnn decoder
局限性
- 生成的region caption是一次一个区域,而不是同时生成所有的
- RNN接受的图片特征不够expressive
- 模型不是end-to-end
Terminology
- multimodal embedding
- RCNN
问题
-
什么是stuctured objective that aligns the two modalities through a multimodal embedding
就是将sentence和image都表达成multimodal embedding space 中的向量然后通过内积来衡量相似度 -
v = W m [ C N N θ c ( I b ) ] + b m v=W_m[CNN_{\theta_c}(I_b)]+b_m v=Wm[CNNθc(Ib)]+bm是干啥的
将image feature投影到multimodal embedding空间 -
3.1.4
-
整个文章是否分为两个部分:生成图片中描述部分的对应bounding box,以及给定一张图片,生成描述?第二个模型数据来源于第一个模型?
是的3的第一段有提到,第一个模型生成数据供第二个模型学习 -
总的任务是生成描述及描述区域,难道是先使用RCNN给出proposal然后喂给第二个模型生成caption
看起来是这样