Image Caption - im2txt 踩过的坑
学习Image Caption的同学在开始实践项目时,可以在github上找到一大堆不同的Image Caption Project,有很多项目也都对应的有其实现版本的论文,都很好。但是有一点不太好,大家貌似都不太愿意上传自己的参数文件,可能因为训练时间长,过程艰辛,且文件较大。本文从Google-Tensorflow/models/im2txt开始简要总结一下在实现期间的各种坑。
模型简介
Google在im2txt项目中实现自家的论文《Show and Tell: A Neural Image Caption Generator》,采用经典CNN+RNN框架。其中CNN为Inception-v3结构,RNN为LSTM结构。具体结构如下
关于该框架的细节在这里不多说,可以去看论文,本文主要说一下在工程实践时应该注意的问题,毕竟纸上得来终觉浅,绝知此事要恭行。
工程实践
在实践Image Caption中,因为大多数工程都不会给出训练好的参数文件,Google在tensorflow/im2txt中也一样,所以需要我们自己进行训练。在训练过程中,重点其实在数据准备工作中,这一步完成了后面都会比较顺利。
实践过程中,可以结合本文和im2txt官方文档一起进行。整个训练在一块NVIDIA Tesla K20m上需要花费1-2周时间,其中1周可以达到效果,2周达到峰值效果。所以这个工程对硬件和时间的要求还是比较高的。
注意一下,以下所有工程必须建立在Python2.7,否则会发生编码错误。下面详细介绍实践过程。
MSCOCO数据准备
数据下载是一个漫长的任务,在工程的第一步我们应该先让数据下载起来,再去处理其他任务,达到效率最大化。
Image Caption一般都在MSCOCO数据集进行训练,所以首要任务是下载