一行命令实现看图说话|Google的im2txt模型

1.项目介绍

这次给大家介绍一个google的深度学习模型im2txt,这个模型的作用跟它的名字一样,image-to-text,把图像转为文字,也就是图片描述。
这个模型是使用 2015 MSCOCO Image Captioning Challenge 的数据集训练出来的

论文链接

项目参考

我对原始googel的项目做了很多简化,减少了项目前期准备,优化了效果展示。

im2txt模型是一个深度神经网络模型,可以实现如下图像描述的效果:

对于生活中常见的一些场景,它还是可以比较正确地描述出图片中的情况。

该模型是一个encoder-decoder模型。encoder是编码器,它是一个CNN模型,常用于图像识别,目标检测等领域。各种常见的卷积网络都可以,比如,VGG,Inception,ResNet等等。这里我们用的是使用 ILSVRC-2012-CLS数据集训练出来的Inception-V3模型。把图片输入Inception-V3中,可以得到一个固定长度的向量,这个向量可以看成是从图像中提取出来的特征。

decoder是解码器,它是一个LSTM模型,常用于语言模型或机器翻译等领域。我们把encoder中输出的固定长度的向量输入到decoder中,获得关于图像的描述。如下图所示:

图中的{s0, s1, …, sN-1} 表示图像的描述,每个s代表一个词,图中的{wes0, wes1, …, wesN-1} 是每个词的词向量,比如word2vec。输出的{p1, p2, …, pN} 表示LSTM模型预测句子中的下一个词所对应的概率分布。{log p1(s1), log p2(s2), …, log pN(sN)}表示正确词的对数似然估计。

2.环境准备

我的实验环境为:

  • Python-3.6
  • Tensorflow-1.12

其他版本的软件基本上也适用。

Python的安装建议使用Anaconda
Anaconda下载

Tensorflow的安装在Anaconda安装完以后使用命令 pip install tensorflow 安装。

3.模型准备

因为github上放模型不方便,所以训练好的模型我存放在我的百度云盘上,大家可以通过云盘下载。
百度云盘链接
密码:khtx

模型下载好之后解压,然后把几个模型相关的文件存入项目文件夹的根目录中的model文件夹中,如下图:

4.运行模型

  • im2txt文件夹中是项目主要程序
  • images文件夹中是需要测试的图片
  • model文件夹中是训练好的模型
  • img2txt.py是可以直接执行的python文件
  • img2txt.ipynb是jupyter文件,推荐使用

显示看图说话只需要执行一行命令,在项目文件根目录执行:python img2txt.py或者用jupyter打开img2txt.ipynb,在jupyter中运行可以更方便查看运行结果。

5.运行效果

我随机着了一些照片来测试,其中包含一张我养的猫的照片。图片的标题为模型给出的预测结果。

这张照片识别效果还是很好的,正确描述了图片中的主要物体鸟,并且正确识别了鸟的数量两只,图片的背景水也识别出来了。

我家的猫,模型给出的描述是“一张猫的特写图片,一只猫躺在沙发上”,描述基本上也算是比较正确。

预测结果是“一个年轻的男孩在草地上踢足球”,这个描述完全正确。

预测结果是“一个男人在冲浪板上冲浪”,描述也比较正确。

上面都是一些好的结果,当然也会很多识别不好的结果,比如下面这些:

预测结果为“一个女人穿着粉红色的雨伞站在人行道上”,因为模型本身没有日常的生活常识,所以它不知道人是不会穿着粉红色雨伞在身上的。同时它对动作的描述不够准确,这个人穿着芭蕾舞裙,并且她是在跳舞。

预测结果为“水上冲浪板上的人”,这次模型的预测结果就错得离谱了。因为图中没有人,也没有冲浪板。我们看到这幅图第一感觉应该是被图中漂亮的极光所吸引,不过模型还不具备欣赏美景的能力,所以它的没有注意到天上绿绿的光,和漫天星空,它只看到了这个石头有点像人,石头旁边的陆地有点像冲浪板。

总的看来,这个模型可以比较好的识别比较简单的场景的,不过由于它不具备推理能力,没有生活常识,欣赏能力,所以一些复杂情况的图片它就不能很好的判断了。

6.视频描述

既然AI可以做图像描述,那么视频描述肯定也是可以的。

video2txt.py是可以直接执行的python文件,可以传入一个视频并生成一个带有描述的新的视频
video2txt.ipynb是对应的jupyter文件

我找到星爷的经典电影大话西游来做测试,我们理想的效果应该是:

但实际上是:

很显然AI现在还看不懂电影,大家纯属娱乐就可以。

视频:
视频链接

完整项目代码可以到我的github下载
我的github
喜欢的朋友,记得starfollow哦。

7.作者介绍

实战 | 一行命令实现看图说话(Google的im2txt模型)相关推荐

  1. 超详细!“看图说话”(Image Caption)项目实战

    超详细!基于pytorch的"看图说话"(Image Caption)项目实战 0.简介 1.运行环境 1.1 我的环境 1.2 建立环境 2.理论介绍 3.运行项目 3.1 项目 ...

  2. 可以辨识艺术品的地图 Google Lens运用AI让机器学会看图说话

    Wescover 策划了一张 Google Lens 在旧金山各地都能辨识的艺术品原始地图,并表示不久的将来,将继续在全球提供 Google Lens 内容.Wescover 声称,到目前为止,已记录 ...

  3. 看图说话实战教程 | 第三节 | 模型构建及训练

    欢迎来到<看图说话实战教程>系列第三节.在这一节中,我们正式进入看图说话深度模型的构建与训练. 文章目录 1. 加载数据 2. 构建模型 3. 拟合模型 4. 完整代码 5. 结束语 1. ...

  4. 看图说话实战教程 | 第一节 | 教程简介及准备工作

    引言 从上图中你看到了什么? 你会说"一条站在草地上的小狗"."草地上的一条白色小狗"等等,这些都是能够描述这张图片传达的信息的. 对我们人类而言,用文字描述图 ...

  5. 《预训练周刊》第27期:谷歌发布最新看图说话模型、GitHub:平台上30%的新代码受益于AI助手Copilot...

    No.27 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 本期周刊,我们选择了9篇预训练相关的论文,涉及少样本理解.图像检测.决策图.大模型微调.对话微调.分子建模.蛋白质结构预测 ...

  6. 教你用PyTorch实现“看图说话”(附代码、学习资源)

    作者:FAIZAN SHAIKH 翻译:和中华 校对:白静 本文共2200字,建议阅读10分钟. 本文用浅显易懂的方式解释了什么是"看图说话"(Image Captioning), ...

  7. [导入]看图说话,编写VS2005插件,增强VS2005 IDE

    前几天写了个小插件,发了个bog,说要把过程写出来,今天来个看图说话吧. 1.使用VS2005.创建新项目,选择Visual Studio 外接程序模版. 2.VS2005会启动外接程序向导 3.选择 ...

  8. 谷歌浏览器中文版_中国科学家设计超薄指尖传感器,厚度不到A4纸五分之一 / 谷歌发布地图时光机:百年前,你家街道啥样?/ AI看图说话首超人类...

    关注我们了解计算机视觉最新动态 ! 动态先览 1 中国科学家设计超薄指尖传感器,厚度 不到A4纸五分之一 2 谷歌发布地图「时光机」:100年前, 你家街道长啥样? 3 仿真环境跟车2分钟,就让自动驾 ...

  9. 看图说话之网络2008

    看图说话之网络2008 2008年即将过去,来记住这一年发生的几则网事吧.看图说话,欢迎各位看官留言指正补足. 1.恒源祥引发的网络声讨 2008年的除夕,"恒源祥羊羊羊"广告的升 ...

最新文章

  1. python 连续矫正_Python实现系统时间自动校正 | 学步园
  2. Intel Realsense D435 当摄像头运行过程中突然USB线断开,对RuntimeError: Frame didn't arrived within 5000的异常捕获及处理
  3. 语言设计谁年龄大_这桌子谁设计的?脑洞够大,除能360°翻转,打台球,乒乓球都行...
  4. android startanimation 回调,ScheduledThreadPoolExecutor执行莫名停止问题Android几个动画回调运行线程...
  5. rabbitmq——镜像队列
  6. linux不显示无线网卡驱动安装失败,Linux_Ubuntu无线网卡驱动安装方法,安装了Ubuntu后发现没有无线网 - phpStudy...
  7. Bootstrap是什么
  8. Linux 环境下 Git 安装与基本配置
  9. Eclipse 插件开发 资料贡献
  10. 【Linux】修改权限命令chmod用法示例
  11. C++程序设计一(进制转换)
  12. 协同多智能体学习的价值分解网络的原理与代码复现
  13. 水电图纸——安装配电箱,插座——3.8
  14. 控制台程序实现暂停功能
  15. NVIDIA发布新驱动,支持RTX 4090,性能飞起!
  16. 驾驶机动车在高速公路上倒车、逆行、穿越中央分隔带掉头的一次记6分。
  17. 微支付开发部分代码示例
  18. 简述具有五层协议的网络体系结构各层的主要功能。
  19. 内网渗透-内网穿透猕猴桃抓密码提权烂土豆提权
  20. xss基础认证钓鱼代码收集

热门文章

  1. [xrun]Cadence Xcelium仿真环境搭建及常用Option总结
  2. 【Android游戏开发】登录以及支付SDK总结
  3. python求n的阶乘代码_python计算n的阶乘的方法代码
  4. B.背单词 。。 KMP。模板题
  5. Python简短代码实现五子棋小游戏。。。
  6. 年薪170W阿里P8,征婚被喷 你不配!
  7. 物联网设备的网络连接---下篇
  8. POX安装和部分配置
  9. Python练习题答案: 摩门经【难度:2级】--景越Python编程实例训练营,1000道上机题等你来挑战
  10. IRI 2016模型计算二维全球电离层TEC分布网格(Fortran离线版)