实战 | 一行命令实现看图说话(Google的im2txt模型)
一行命令实现看图说话|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
喜欢的朋友,记得star和follow哦。
7.作者介绍
实战 | 一行命令实现看图说话(Google的im2txt模型)相关推荐
- 超详细!“看图说话”(Image Caption)项目实战
超详细!基于pytorch的"看图说话"(Image Caption)项目实战 0.简介 1.运行环境 1.1 我的环境 1.2 建立环境 2.理论介绍 3.运行项目 3.1 项目 ...
- 可以辨识艺术品的地图 Google Lens运用AI让机器学会看图说话
Wescover 策划了一张 Google Lens 在旧金山各地都能辨识的艺术品原始地图,并表示不久的将来,将继续在全球提供 Google Lens 内容.Wescover 声称,到目前为止,已记录 ...
- 看图说话实战教程 | 第三节 | 模型构建及训练
欢迎来到<看图说话实战教程>系列第三节.在这一节中,我们正式进入看图说话深度模型的构建与训练. 文章目录 1. 加载数据 2. 构建模型 3. 拟合模型 4. 完整代码 5. 结束语 1. ...
- 看图说话实战教程 | 第一节 | 教程简介及准备工作
引言 从上图中你看到了什么? 你会说"一条站在草地上的小狗"."草地上的一条白色小狗"等等,这些都是能够描述这张图片传达的信息的. 对我们人类而言,用文字描述图 ...
- 《预训练周刊》第27期:谷歌发布最新看图说话模型、GitHub:平台上30%的新代码受益于AI助手Copilot...
No.27 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 本期周刊,我们选择了9篇预训练相关的论文,涉及少样本理解.图像检测.决策图.大模型微调.对话微调.分子建模.蛋白质结构预测 ...
- 教你用PyTorch实现“看图说话”(附代码、学习资源)
作者:FAIZAN SHAIKH 翻译:和中华 校对:白静 本文共2200字,建议阅读10分钟. 本文用浅显易懂的方式解释了什么是"看图说话"(Image Captioning), ...
- [导入]看图说话,编写VS2005插件,增强VS2005 IDE
前几天写了个小插件,发了个bog,说要把过程写出来,今天来个看图说话吧. 1.使用VS2005.创建新项目,选择Visual Studio 外接程序模版. 2.VS2005会启动外接程序向导 3.选择 ...
- 谷歌浏览器中文版_中国科学家设计超薄指尖传感器,厚度不到A4纸五分之一 / 谷歌发布地图时光机:百年前,你家街道啥样?/ AI看图说话首超人类...
关注我们了解计算机视觉最新动态 ! 动态先览 1 中国科学家设计超薄指尖传感器,厚度 不到A4纸五分之一 2 谷歌发布地图「时光机」:100年前, 你家街道长啥样? 3 仿真环境跟车2分钟,就让自动驾 ...
- 看图说话之网络2008
看图说话之网络2008 2008年即将过去,来记住这一年发生的几则网事吧.看图说话,欢迎各位看官留言指正补足. 1.恒源祥引发的网络声讨 2008年的除夕,"恒源祥羊羊羊"广告的升 ...
最新文章
- python 连续矫正_Python实现系统时间自动校正 | 学步园
- Intel Realsense D435 当摄像头运行过程中突然USB线断开,对RuntimeError: Frame didn't arrived within 5000的异常捕获及处理
- 语言设计谁年龄大_这桌子谁设计的?脑洞够大,除能360°翻转,打台球,乒乓球都行...
- android startanimation 回调,ScheduledThreadPoolExecutor执行莫名停止问题Android几个动画回调运行线程...
- rabbitmq——镜像队列
- linux不显示无线网卡驱动安装失败,Linux_Ubuntu无线网卡驱动安装方法,安装了Ubuntu后发现没有无线网 - phpStudy...
- Bootstrap是什么
- Linux 环境下 Git 安装与基本配置
- Eclipse 插件开发 资料贡献
- 【Linux】修改权限命令chmod用法示例
- C++程序设计一(进制转换)
- 协同多智能体学习的价值分解网络的原理与代码复现
- 水电图纸——安装配电箱,插座——3.8
- 控制台程序实现暂停功能
- NVIDIA发布新驱动,支持RTX 4090,性能飞起!
- 驾驶机动车在高速公路上倒车、逆行、穿越中央分隔带掉头的一次记6分。
- 微支付开发部分代码示例
- 简述具有五层协议的网络体系结构各层的主要功能。
- 内网渗透-内网穿透猕猴桃抓密码提权烂土豆提权
- xss基础认证钓鱼代码收集
热门文章
- [xrun]Cadence Xcelium仿真环境搭建及常用Option总结
- 【Android游戏开发】登录以及支付SDK总结
- python求n的阶乘代码_python计算n的阶乘的方法代码
- B.背单词 。。 KMP。模板题
- Python简短代码实现五子棋小游戏。。。
- 年薪170W阿里P8,征婚被喷 你不配!
- 物联网设备的网络连接---下篇
- POX安装和部分配置
- Python练习题答案: 摩门经【难度:2级】--景越Python编程实例训练营,1000道上机题等你来挑战
- IRI 2016模型计算二维全球电离层TEC分布网格(Fortran离线版)