作者:FAIZAN SHAIKH
翻译:和中华
校对:白静
本文共2200字,建议阅读10分钟。
本文用浅显易懂的方式解释了什么是“看图说话”(Image Captioning),借助github上的PyTorch代码带领大家自己做一个模型,并附带了很多相关的学习资源。
介绍
深度学习目前是一个非常活跃的领域---每天都会有许多应用出现。进一步学习Deep Learning最好的方法就是亲自动手。尽可能多的接触项目并且尝试自己去做。这将会帮助你更深刻地掌握各个主题,成为一名更好的Deep Learning实践者。
这篇文章将和大家一起看一个有趣的多模态主题,我们将结合图像和文本处理技术来构建一个有用的深度学习应用,即看图说话(Image Captioning)。看图说话是指从一个图像中基于其中的对象和动作生成文本描述的过程。例如:
这种过程在现实生活中有很多潜在的应用场景。一个明显的应用比如保存图片的描述字幕,以便该图片随后可以根据这个描述轻松地被检索出来。
我们开始吧!
注意: 本文假定你了解深度学习的基础知识,以前曾使用CNN处理过图像问题。如果想复习这些概念,可以先阅读下面的文章:
Fundamentals of Deep Learning – Starting with Artificial Neural Network
Architecture of Convolutional Neural Networks (CNNs) demystified
Tutorial: Optimizing Neural Networks using Keras (with Image recognition case study)
Essentials of Deep Learning – Sequence to Sequence modelling with Attention (using python)
目录
什么是Image Captioning问题?
解决任务的方法
应用演练
下一步工作
什么是Image Captioning问题?
设想你看到了这张图:
你首先想到的是什么?下面是一些人们可以想到的句子:
A man and a girl sit on the ground and eat . (一个男人和一个女孩坐在地上吃东西)
A man and a little girl are sitting on a sidewalk near a blue bag eating . (一个男人和一个小女孩坐在蓝色包旁边的人行道上吃东西)
A man wearing a black shirt and a little girl wearing an orange dress share a treat .(一个穿黑色衬衣的男人和一个穿橘色连衣裙的小女孩分享美食)
快速看一眼就足以让你理解和描述图片中发生的事情。从一个人造系统中自动生成这种文字描述就是Image Captioning的任务。
该任务很明确,即产生的输出是用一句话来描述这幅图片中的内容---存在的对象,属性,正在发生的动作以及对象之间的互动等。但是与其他图像处理问题一样,在人造系统中再现这种行为也是一项艰巨的任务。因此需要使用像Deep Learning这样先进复杂的技术来解决该任务。
在继续下文之前,我想特别感谢Andrej Kartpathy等学者,他们富有洞察力的课程CS231n帮助我理解了这个主题。