【论文笔记】Show and Tell: Lesson learned from the 2015 MSCOCO Image Captioning Challenge

AK在其开源的neuraltalk和neuraltalk2项目中和此模型进行比较其相似之处,并承认说“but the Google release should work significantly better as a result of better CNN, some tricks, and more careful engineering.“那今天就以此出发,比较一下NIC(Neural Image Caption)模型有什么好的。
项目代码:im2txt。

总体来看,二者并无很大差异,都是end to end,CNN提取特镇,RNN生成语句。而区别都体现在细微之处:

1、NIC从sequence to sequence的machine translation方法中学来了一个洋气的名字叫encoder-decoder模型,encoder是CNN,decoder是RNN。重点在于,这里用的CNN和RNN都和NeuralTalk有很大不同。NIC模型使用了更好的feature extractor–GoogLenet(2015),BatchNorm(2016), 使得获得的图像信息更丰富了;使用了更复杂的LSTM,并在2016年增加了层数和cell数,使得decoder更复杂了,也取得了更好的效果。

2、feature输入方式。NeuralTalk中提取完特征将其作为bias结合其他输入一起,直接输入到了RNN的第一个cell中,感觉有些草率;而NIC将第一个时刻完全留给了feature输入,并不做预测,有种预热的意思。文中还提到,作者经验证实了每次都输入图片不好,所以只在开始输入了一次。
【论文笔记】Show and Tell: Lesson learned from the 2015 MSCOCO Image Captioning Challenge_第1张图片
【论文笔记】Show and Tell: Lesson learned from the 2015 MSCOCO Image Captioning Challenge_第2张图片

3、在其他细节方面:
NIC使用了CNN的pretrained model,并fix住,不对它进行训练,只训练LSTM部分。直到模型稳定了,才又在COCO数据集上对整体模型进行训练。这样的好处是,因为COCO的训练集中有很多关于颜色的描述的词,所以得到的新模型既有原模型的预测稳定性,又使得标注语句更加具体准确。
【论文笔记】Show and Tell: Lesson learned from the 2015 MSCOCO Image Captioning Challenge_第3张图片
LSTM随机初始化,模型使用ensemble综合预测,使用了dropout进一步预防过拟合增加泛化能力,beam search尝试更多,使用schedule sampling等等,更多细节请参考原文。

总体来说,整篇文章无不在吐槽因为训练集小而导致的过拟合问题。也确实如此,image caption问题面临的一个很大的挑战是出现的caption总是训练集中有的,而且细节描述也不到位。此文中说,如果训练集更大了,overfit问题将得到缓解,效果也将会更好。但我私下认为单纯指望更大的训练集也不是长远的办法,从更小的数据集中发现更普遍的规律才能带来更长远的发展空间,我们不妨尝试使用其他手段解决一下overfit 问题(BN over LSTM),或者通过结构的调整将模型的鲁棒性做得更好?

你可能感兴趣的:(papers)