在接触到image caption时,看的论文是《Show and Tell: Lessons learned from the 2015 MSCOCO Image Captioning Challenge》《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》,网络上对这两篇论文的解析也特别多,总的来说,这两篇论文大体思路一致,采用的都是经典的encoder-decoder框架,主要区别在《Show, Attend and Tell》加入了attention机制,《Show and Tell》的NIC模型则没有,加入attention机制后,测试效果往往更好,这里不再赘述这两篇论文的内容。今天,我主要是想要说一下,2015年的一篇论文《From Captions to Visual Concepts and Back》。
论文里的一张处理流程实例图,可以看到,本论文的方法主要分为三步:
1.detect words(检测单词)
2.generate sentences(生成句子)
3.re-rank sentences(重新排序句子)
一、detect word
在detect words这一步,论文采用的是weakly-supervised approach of Multiple Instance Learning。主要考虑到有些描述性质的词如beautiful等,不能精确地在一张图片上框出来,这样一来,经典的目标检测方法训练方法就不能用了。论文通过MIL的方法规避了这一问题。
论文首先建立一个包含1000个常用的训练的caption的词汇表,沿用MIL的bag观念,这里的一个bag就是一张图片,每个bag里的instance就是图片i的region j,其实就是不同的bounding box对应的部分图片。遍历词汇表,如果单词w出现在图片i的caption里,那么这个bag对应w的标签就是positive,反之就是negative。那么图片i出现单词w的概率为
是图片i的第j个region出现单词w的概率,
就是图片i
计算公式为
沿用原论文的解释
论文采用交叉熵损失函数更新权值,查阅引用文献,可知
公式里的就是论文里的
到这里,论文里面提到具体训练过程分为两步,第一步迭代地从正bag中选择instance,第二部利用更新的positive label重新训练分类器(没理解到底怎么操作的)。另外论文里没有提到bounding box具体有多少,尺寸为多少,只提到利用上采样将图片长边延伸到565,送入全卷积神经网络后,fcn8得到12*12的feature map,这些feature map对应开始不同位置的bounding box(这里感觉论文挖了大坑却没填)。
二、generate sentence
论文指出这一步是核心,论文的方法基于统计,是一个统计模型。具体地,论文采用的是maximum entropy language model(MELM)
根据之前单词以及检测到但是还未出现单词预测下一个单词的概率计算公式为:
这个公式形式上类似softmax。