显示,出席和讲述
更新(2016年12月2日) TensorFlow实现Show,Attend和Tell:使用Visual Attention生成神经图像标题,引入基于注意力的图像标题生成器。模型在生成每个单词时将注意力更改为图像的相关部分。
参考
作者的theano代码:https://github.com/kelvinxu/arctic-captions
另一个tensorflow实现:https://github.com/jazzsaxmafia/show_attend_and_tell.tensorflow
入门
先决条件
首先,将此repo和pycocoevalcap克隆到同一目录中。
$ git clone https://github.com/yunjey/show-attend-and-tell-tensorflow.git$ git clone https://github.com/tylin/coco-caption.git
此代码是用Python2.7编写的,需要TensorFlow 1.2。此外,您还需要安装一些软件包来处理MSCOCO数据集。我提供了一个脚本来下载MSCOCO图像数据集和VGGNet19模型。下载数据可能需要几个小时,具体取决于网络速度。运行下面的命令,然后将图像下载到image/
目录中,并将VGGNet19模型下载到data/
目录中。
$ cd show-attend-and-tell-tensorflow$ pip install -r requirements.txt$ chmod +x ./download.sh$ ./download.sh
要将图像提供给VGGNet,您应将MSCOCO图像数据集的大小调整为固定大小224x224。下面运行命令然后调整大小的图像将存储在image/train2014_resized/
和image/val2014_resized/
目录中。
$ python resize.py
在训练模型之前,您必须预处理MSCOCO标题数据集。要生成标题数据集和图像特征向量,请运行以下命令。
$ python prepro.py
训练模型
要训练图像字幕模型,请运行以下命令。
$ python train.py
(可选)Tensorboard可视化
我提供了一个用于实时调试的张量板可视化。打开新终端,在下面运行命令并打开http://localhost:6005/
Web浏览器。
$ tensorboard --logdir='./log' --port=6005
评估模型
要生成字幕,可视化注意力并评估模型,请参阅evaluate_model.ipynb
。
结果
培训数据
(1)生成的标题:飞机在天空中飞行,起落架向下。
(2)生成的标题:长颈鹿和两只斑马站在田野里。
验证数据
(1)生成的标题:站立在干草地的一头大象。
(2)生成的标题:站立在泥土顶部的小象。
测试数据
(1)生成的标题:飞越水体的飞机。
(2)生成的标题:站立在树附近的草的斑马。