看图讲故事

方案1:基于注意力生成图片描述


输入给本系统一张图片,系统将依靠自身先进的虚拟注意力机制,生成并输出对图片内容的文字描述。

项目主页:

https://github.com/yunjey/show-attend-and-tell

项目描述:

本项目模拟人类的注意力机制,先将注意力放在图像局部从而生成局部的描述,再将所有的局部描述结合起来,生成总描述。下面将分步骤说明本系统的使用方法。

使用方法


Step1:安装软件环境并下载数据集

首先将下面两个项目下载到同一个文件夹里。

本代码使用 Python2.7 并需要 TensorFlow。 除此之外,还要安装一些包去处理 MSCOCO 数据集。我写好了一个脚本来下载 MSCOCO 图片数据集 和 VGGNet19 model
下载将持续几个小时,运行下面的命令,图片将下载在 image/ 文件夹,VGGNet19模型将下载在 data/ 文件夹。


Step2:处理数据集

为了适应 VGGNet , 需要把 MSCOCO image dataset 转换成 224x224 的大小。运行下面的命令可以完成图片缩放,缩放后的图片存储在 image/train2014_resized/ 以及 image/val2014_resized/ 文件夹中。

在训练模型前,还需要预处理
MSCOCO 图片描述数据集,运行下面的命令可以生成图片特征向量:


Step3:开始训练模型

使用下面的命令训练模型。


Step4:使用 Tensorboard 可视化训练过程(可选)

可以使用 Tensorboard 可视化观察/调试训练的过程,运行下面的命令后,访问 http://localhost:6005/ 即可使用 Tensorboard。


Step5:使用模型

测试模型,可视化注意力权重,验证模型的方法请见源码中:evaluate_model.ipynb.

效果展示

模型对训练用图片生成的描述:

(1) Generated caption: A plane flying in the sky with a landing gear down.

(2) Generated caption: A giraffe and two zebra standing in the field.

模型对测试用图片生成的描述:

(1) Generated caption: A plane flying over a body of water.

(2) Generated caption: A zebra standing in the grass near a tree.

参考文献:

Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

Leave A Comment?