Image Caption 任务是一个需要综合计算机视觉和自然语言处理的任务,需要使用计算机建立某种映射方式,将处于视觉模态当中的数据映射到文本模态当中,即让视觉和文字二者之间产生某种对应关系。
让电脑识别图像里的内容,并将电脑自己对图像的描述生成出来。如下所示。
总的来说,这样的映射任务需要如下两个基本需求:
1)语法的正确性,映射的过程当中需要遵循自然语言的语法,使得结果具有可读性;
2)描述的丰富程度,生成的描述需要能够准确描述对应图片的细节,产生足够复杂的描述。
本篇文章的主要内容是针对2015年Google设计的Im2txt这一图像描述模型所做的实验
模型论文链接:
ttps://arxiv.org/abs/1609.06647
Im2txt模型
该模型是一个encoder-decoder模型。
encoder是编码器,它是一个CNN模型,常用于图像识别,目标检测等领域。各种常见的卷积网络都可以,比如VGG,Inception,ResNet等等。
decoder是译码器,它是一个LSTM模型,常用于语言模型或机器翻译等领域。我们把encoder中输出的固定长度的向量输入到decoder中,获得关于图像的描述。
电脑环境准备
Python3.6
tensorflow-1.12
(建议使用Anaconda进行Python的安装,下载网站可以关注本公众号浏览上篇推文《你知道这些常用的Python IDE吗?》获取,在这里使用Anaconda的另一个目的是因为,tensorflow框架可以在安装完Anaconda后,使用pip install tensorflow 就可以安装)
模型和代码准备
这里提供的模型和代码是我已经训练和调试过的,直接下载就可以使用。
im2txt文件夹中是项目主要程序
images文件夹中是需要测试的图片
model文件夹中是训练好的模型
img2txt.py是可以直接执行的python文件
img2txt.ipynb是jupyter文件
在项目文件根目录执行代码:python img2txt.py或者用jupyter打开img2txt.ipynb。就可以运行代码,进行实验。
(注意:需要在img2txt.py文件中将代码的模型路径更改为你放置下载模型的路径)
就是此三行代码,注意更改。
一切准备就绪后即可运行代码。
运行结果
图1.0 电脑识别图片生成语言描述测试一
图1.1 电脑识别图片生成语言描述测试二
图1.2 电脑识别图片生成语言描述测试三
综上来看,该模型基本实现了让电脑进行看图说话的能力,但是在准确性和适用性上还尚有欠缺,有很多可以去修改和完善的空间。
从近年发表的论文和科研研究成果来看
作者们是在此基础上不断改进模型结构,增强数据集,以此增强识别准确度,让电脑逐步变成一个真正的“人”。
可以说人工智能离我们越来越近了。
你害怕吗?
END