Skip to content

foamliu/Image-Captioning

Repository files navigation

图像中文描述

用一句话描述给定图像中的主要信息,中文语境下的图像理解问题。尝试自然语言处理与计算机视觉的结合。

依赖

数据集

使用 AI Challenger 2017 的图像中文描述数据集,包含30万张图片,150万句中文描述。训练集:210,000 张,验证集:30,000 张,测试集 A:30,000 张,测试集 B:30,000 张。

image

下载点这里:图像中文描述数据集,放在 data 目录下。

模型结构

网络结构

CNN图像嵌入器为 ResNet-50: image

模型可视化

image

性能

在 30000 张测试集 (test-a) 图片上测得 BLEU-4 并求均值,得到:0.64684。

用法

数据预处理

提取210,000 张训练图片和30,000 张验证图片:

$ python pre-process.py

训练

$ python train.py

可视化训练过程,执行:

$ tensorboard --logdir path_to_current_dir/logs

演示

下载 预训练模型 放在 models 目录,然后执行:

$ python demo.py
1 2 3 4
image image image image
微波荡漾的海水里站着三位戴着墨镜的男士 平坦的球场上有一位穿着球服的男士在打篮球 球场上有一个穿着运动服的男人在打篮球 亮堂的会议室里有一群坐着的人在开会
image image image image
平整的道路上站着一位右肩背着包的女士 碧绿的球场上跑着两位穿着球服的男士 两名运动员在绿茵茵的运动场上抢足球 平坦的球场上有一位右手拿着球拍的男士在打羽毛球
image image image image
舞台上有一个右手拿着话筒的女人在唱歌 人来人往的大厅里走着一个斜挎着包的女人 绿树环绕的公园里有两个女人在做瑜伽 绚丽的舞台上走着两个手里拿着话筒的人讲话
image image image image
房间里的沙发上有一个右手拿着笔的女人在写字 平坦的球场上有两位穿着裙子的女士在跳舞 平整的道路上走着一位戴着墨镜的女士 碧绿的球场上有一群戴着头盔的人在打橄榄球
image image image image
琳琅满目的商店里站着一个右肩背着包的女人 平坦的舞台上站着一位左手插兜的男士 波涛汹涌的海面上有一个双手握着船桨的人在划船 光线充足的房间里有两个坐着的人在交谈

性能评估

多进程多 GPU 的生成图像描述,并计算 BLEU-4:

$ python bleu_main.py

光束搜索 (Beam Search)

展示不同的光束尺寸(beam size)对图像描述的影响:

$ python beam_search.py
1 2
image Normal Max search: 一个 戴着 墨镜 的 女人 和 一个 穿着 牛仔裤 的 男人 走 在 道路 上
Beam Search, k=3: 一个 戴着 墨镜 的 女人 和 一个 右手 拎 着 包 的 男人 走 在 道路 上
Beam Search, k=5: 一个 右手 拎 着 包 的 女人 挽 着 一个 戴着 帽子 的 男人 走 在 道路 上
Beam Search, k=20: 平整 的 道路 上 走 着 两个 戴着 墨镜 的 人
image Normal Max search: 运动场 上 一个 人 的 前面 有 一个 穿着 西装 的 男人 在 给 一个 穿着 运动服 的 男人 按摩 腿
Beam Search, k=3: 运动场 上 有 两个 穿着 西装 的 男人 坐在 椅子 上 交谈
Beam Search, k=5: 运动场 上 有 两个 穿着 西装 的 男人 坐在 椅子 上 讲话
Beam Search, k=20: 碧绿 的 球场上 坐 着 一位 双手 搭 在 腿 上 的 男士
image Normal Max search: 一个 穿着 运动服 的 男人 走 在 运动场 上
Beam Search, k=3: 足球场 上 走 着 一个 穿着 运动服 的 男人
Beam Search, k=5: 碧绿 的 球场上 走 着 一位 穿着 球服 的 男士
Beam Search, k=20: 平整 的 球场上 走 着 一位 穿着 球服 的 男士
image Normal Max search: 一个 戴着 帽子 的 男人 和 一个 穿着 黑色 上衣 的 男人 在 室内 的 桌子 旁 交谈
Beam Search, k=3: 房间 里 有 一个 右手 拿 着 夹子 的 女人 在 给 一个 戴着 眼镜 的 男人 夹菜
Beam Search, k=5: 房间 里 有 一个 右手 拿 着 夹子 的 女人 在 给 一个 戴着 眼镜 的 男人 夹菜
Beam Search, k=20: 明亮 的 房间 里 坐 着 两位 在 干活 的 男士
image Normal Max search: 一个 穿着 红色 衣服 的 女人 在 人群 前 的 T台 上 走秀
Beam Search, k=3: 一群 人 的 前面 有 一个 右手 拎 着 包 的 女人 在 T台 上 走秀
Beam Search, k=5: 平坦 的 T台 上 有 一位 双手 插 兜 的 女士 在 走秀
Beam Search, k=20: 人来人往 的 T台 上 有 一个 右手 拎 着 包 的 女人 在 走秀
image Normal Max search: 道路 上 一个 人 的 旁边 有 一个 戴着 帽子 的 男人 在 采访 一个 戴着 帽子 的 男人
Beam Search, k=3: 道路 上 有 一个 戴着 帽子 的 男人 和 一个 戴着 帽子 的 男人 在 交谈
Beam Search, k=5: 道路 上 一群 人 的 旁边 有 一个 右手 拿 着 话筒 的 男人 在 讲话
Beam Search, k=20: 人来人往 的 道路 上 有 一个 戴着 帽子 的 男人 在 接受 采访
image Normal Max search: 大厅 里 一群 人 的 旁边 有 一个 穿着 白色 上衣 的 女人 在 下 国际象棋
Beam Search, k=3: 大厅 里 一群 人 旁边 有 一个 戴着 眼镜 的 女人 在 下 国际象棋
Beam Search, k=5: 屋子里 一群 人 旁边 有 一个 戴着 眼镜 的 女人 在 下 国际象棋
Beam Search, k=20: 明亮 的 大厅 里 一群 人旁 有 一位 戴着 眼镜 的 女士 在 下 国际象棋
image Normal Max search: 一个 穿着 比基尼 的 女人 坐在 海边 的 沙滩 上
Beam Search, k=3: 海边 的 沙滩 上 坐 着 一个 双手 放在 腿 上 的 女人
Beam Search, k=5: 海边 的 沙滩 上 坐 着 一个 穿着 比基尼 的 女人
Beam Search, k=20: 金灿灿 的 沙滩 上 坐 着 一个 长 头发 的 女人
image Normal Max search: 一个 穿着 短袖 的 男人 在 房间 里 骑 自行车
Beam Search, k=3: 房间 里 有 一个 坐在 轮椅 上 的 女人 在 弹 吉他
Beam Search, k=5: 房间 里 有 一个 坐在 轮椅 上 的 女人 在 弹 吉他
Beam Search, k=20: 明亮 的 房间 里 有 一位 双手 拿 着 扫把 的 女孩 在 扫地
image Normal Max search: 两个 穿着 球衣 的 男人 在 球场上 争抢 足球
Beam Search, k=3: 足球场 上 有 两个 穿着 不同 球衣 的 男人 在 抢球
Beam Search, k=5: 足球场 上 有 两个 穿着 不同 球衣 的 男人 在 抢球
Beam Search, k=20: 绿草 茵茵 的 足球场 上 有 两个 男 运动员 在 踢足球