Code Monkey home page Code Monkey logo

image-captioning's Introduction

图像中文描述

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

依赖

数据集

使用 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: 绿草 茵茵 的 足球场 上 有 两个 男 运动员 在 踢足球

image-captioning's People

Contributors

foamliu avatar foamliu-ms avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.