1. 背景

​ 在计算机视觉中,图像分类和目标检测任务是比较成熟的领域,已经应用到实际的产品领域。而“看图说话”要实现的功能是,给定一张图像,计算机能告诉我们图片的内容,显然,这会使一个比较复杂的任务,因为它涉及到了如下的子任务:

1)检测图像中的目标;

2)目标的属性,比如颜色、尺寸等;

3)目标之间的关联;

4)语言模型,用于把上面的信息表述成句子;

2. 相关的论文

2.1 “Show and Tell: A Neural Image Caption Generator”

​ 为了实现看图说话的功能,初步的想法是使用多个模型,分别实现上面的各个子任务,然后把每个子任务的结果进行逻辑上的组合。作为谷歌的大作,“Show and Tell: A Neural Image Caption Generator”这一篇论文首次使用端到端的神经网络实现图文转换功能,该网络结构与语言翻译模型的对比如下,

语言翻译模型source sentence —> encoder —>fixed length vector —> decoder —> target sentence

图文转换模型source image —> encoder —>fixed length vector —> decoder —> target sentence

可以看出,它们是很相似的,区别在于输入的不同,语言翻译模型的输入是序列数据,对应的encoder便是RNN了,而图文转换模型的输入是图片,对应的encoder则为CNN网络,具体的网络结构如下,

​ 注:引用自论文“Show and Tell: A Neural Image Caption Generator”

在训练阶段,模型经过两大阶段:图像信号的forward propagation和误差信号的back propagation。前向传播的公式表示如下,

误差信号的定义如下,

其中, p t ( S t ) = p ( S t ∣ I , S 0 , . . . , S t − 1 ) , L ( I , S ) = − l o g p ( S ∣ I ) p_{t}(S_{t})=p(S_{t}|I, S_{0}, ..., S_{t-1}),L(I, S)=-logp(S|I) pt(St)=p(StI,S0,...,St1)L(I,S)=logp(SI),因此,优化的目标是给定任意输入图像I,输出序列S的联合概率最大化,这里是将联合概率展开成了条件概率的乘积的形式。

2.2 “Captioning Images with Diverse Objects”

​ 上面的文章使用的是有监督的方法,只能识别训练集中出现的目标,因此在应用中是非常受限制的。大牛Lisa Anne在CVPR 2016上发的一篇文章“Deep Compositional Captioning”,第一次解决了描述novel 目标的目的(训练集中不存在该目标),作为一篇oral文章,作者提供了文章的代码,https://github.com/LisaAnne/DCC。

​ 为了优化半监督看图说话模型的效果,作者所在团队在CVPR 2017发了一篇新的文章“Captioning Images with Diverse Objects”,这里主要阐述这篇文章中的思想。

2.2.1 网络结构

​ 文中将所提模型称之为“Novel Object Captioner (NOC)”,其网络结构如下图,它包含了三个子任务:语言建模+目标识别模型+图文生成。从直觉上可见,当联合训练时,模型可以实现下面的目标:(1)生成读起来通顺的文本;(2)识别图像中的视觉目标;(3)生成合理的图片描述。当(2)和(3)互补时,可以使的生成的文本包含(2)的结果,这里(2)为imagenet 1000类的目标,(3)为MSCOCO caption数据集,只包含了80类目标,也即在inference阶段,生成的文本中可以包含其余的920种目标。

2.2.2 优化的目标函数

​ 模型优化的目的是,在给出图像描述的同时尽可能多地识别图中的物体,包括image caption数据集(paired)中未出现或者很少出现的目标,在训练过程中联合优化Image model、Language model 和 Caption模型,整体的目标函数如下,

2.2.2.1 Image-specific Loss

​ 与常用的CNN分类模型不同,这里我们希望能够尽可能全地描述出图像中存在的所有目标,所以这里的CNN为一个多标签模型,其cross-entropy 损失如下,

其中, l l l 表示标签的总个数, z l z_{l} zl 表示第 l l l​ 个输出的真实标签,0或者1。

2.2.2.2 Text-specific Loss

​ 该路分支是一个语言模型,输入文本序列 w 0 , w 1 , . . . , w t − 1 w_{0}, w_{1}, ..., w_{t-1} w0,w1,...,wt1,预测下一个词 w t w_{t} wt,损失函数定义如下,

2.2.2.3 Image-caption Loss

​ 该路分支用于根据输入图像,输出对应的sentence描述,损失函数定义如下,

其中,
S w t ( f C M ( w 0 , . . . , w t − 1 , I ; θ ) ) = P ( w t ∣ w 0 , . . . , w t − 1 , I ) S_{w_{t}}(f_{CM}(w_{0}, ...,w_{t-1}, I; \theta)) = P(w_{t}|w_{0}, ..., w_{t-1}, I) Swt(fCM(w0,...,wt1,I;θ))=P(wtw0,...,wt1,I)

代码链接:https://github.com/vsubhashini/noc/tree/recurrent/examples/noc

3. 数据集介绍

数据集名称 sentence数量/每幅图像 图片数量 数据集介绍
Flickr 30k 5 3.1w http://web.engr.illinois.edu/~bplumme2/Flickr30kEntities/
MS coco 5 8w+ https://arxiv.org/abs/1504.00325

由上表可以看出,每幅图片对应了5个sentence,这是因为给定一幅图像,不同的人对它的描述会是多种多样的,所以这样构造训练集,是很合理的。

4. 评测方法

​ 在得到了看图说话模型后,有多种用于评测模型效果的指标,比如BLEU, METEOR, ROUGE 和 CIDEr,这里主要解释BLEU,在解释BLEU之前,需要说明一下n-Gram模型。

4.1 n-Gram模型

​ n-Gram模型用于对一个序列的联合概率进行建模,也就是估计一个序列(比如一句话)出现的可能性。举例来说,比如一句话有m个词,分别为 w 1 , w 2 , . . . , w m w_{1}, w_{2}, ...,w_{m} w1,w2,...,wm,若想求联合概率 p ( w 1 , w 2 , . . . , w m ) p(w_{1}, w_{2}, ...,w_{m}) p(w1,w2,...,wm),很直接地我们会想到链式法则,即将联合概率的求解分解如下,
p ( w 1 , w 2 , . . . , w m ) = p ( w 1 ) ∗ p ( w 2 ∣ w 1 ) ∗ p ( w 3 ∣ p ( w 1 ) , p ( w 2 ) ) ∗ . . . ∗ p ( w m ∣ p ( w 1 ) , p ( w 2 ) , . . . , p ( w m − 1 ) ) p(w_{1}, w_{2}, ...,w_{m})=p(w_{1})*p(w_{2}|w_{1})*p(w_{3}|p(w_{1}), p(w_{2}))*...*p(w_{m}|p(w_{1}), p(w_{2}), ..., p(w_{m-1})) p(w1,w2,...,wm)=p(w1)p(w2w1)p(w3p(w1),p(w2))...p(wmp(w1),p(w2),...,p(wm1))
n-Gram模型的假设条件是,第k个词出现的可能性只于相邻的n个词有关,用公式表达如下,

p ( w m ∣ p ( w 1 ) , p ( w 2 ) , . . . , p ( w m − 1 ) ) = p ( w m ∣ p ( w m − n ) , p ( w m − ( n − 1 ) ) , . . . , p ( w m − 1 ) ) p(w_{m}|p(w_{1}), p(w_{2}), ..., p(w_{m-1})) = p(w_{m}|p(w_{m-n}), p(w_{m-(n-1)}), ..., p(w_{m-1})) p(wmp(w1),p(w2),...,p(wm1))=p(wmp(wmn),p(wm(n1)),...,p(wm1))

这里的n可以为1,2、、、,n越小,模型的计算量会越小,同时模型的表达能力也会越弱。条件概率是基于语料库中对词频的统计得到的,这种建模方式与神经网络建模有所不同,它属于传统统计机器学习的范畴,不会涉及到模型的训练和参数优化。

4.2 BLEU

​ BLEU衡量的是机器预测的结果(candidate text)和人工标注的结果(reference texts)之间的相似性,取值范围为[0, 1],值越大,表明两者越相似。更详细的解释参见微软的文章https://arxiv.org/abs/1504.00325,如果想直接看中文的话,可以参见 https://livc.io/blog/190。

5. 本地模型效果

​ 根据作者提供的源代码,感兴趣的读者可以跑一下效果。另外,这里提两个待改进的点:(1)论文中将CNN得到的Embedding特征和语言模型得到的Embedding特征进行“Elementwise sum”操作。然而,前者属于图像特征空间,后者属于语义特征空间,可以从多模态学习领域中找些思路;(2)如何更好地引入注意力机制,也值得去研究。

6. 参考文献:

https://arxiv.org/abs/1411.4555

https://arxiv.org/abs/1511.05284

https://arxiv.org/abs/1606.07770

对Image caption的一些理解(看图说话)相关推荐

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

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

  2. Image caption——图像理解——看图说话综述(2015-2018)

    本文章没有太多公式,仅仅讲述个人理解,主要怎对入门人士.文中定有许多错误,希望大家能相互交流. Image caption顾名思义,即可让算法根据输入的一幅图自动生成对应的描述性文字.有点类似于看图说 ...

  3. 看图说话:从图片到文字

    文章目录 模型整体结构 比较翻译模型和看图说话 编码器模型 解码器模型 训练和评估 了解数据集 了解pack_padded_sequence函数和pad_packed_sequence函数 对梯度进行 ...

  4. 谷歌发布最新看图说话模型,可实现零样本学习,多类型任务也能直接上手

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 兴坤 发自 凹非寺 量子位 报道 | 公众号 QbitAI 谷歌新推 ...

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

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

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

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

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

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

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

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

  9. CNN+LSTM:看图说话

    看图说话--CNN和LSTM的联合应用 https://blog.csdn.net/xinzhangyanxiang/article/details/79117869 看图说话是深度学习波及的领域之一 ...

最新文章

  1. Visual Studio 2005 通过静态变量及可系列化的HASHTABLE变量优化工厂模式(Factory)的效率,提升性能(E8.Net工作流应用系统优化系列四)...
  2. 电脑服务器信息,电脑服务器怎么看模块信息
  3. 也说电影《魔比斯环》
  4. 二层和三层工业交换机的主要参数说明
  5. 【转】ABP源码分析三十六:ABP.Web.Api
  6. 响应式建筑设计类dedecms模板
  7. wince系统安装软件_精密空调安装泄漏检测系统软件的作用
  8. 李彦宏发布内部信:宣布升级百度“云+AI”战略
  9. 15 设置系统分词器
  10. alchemy的Box2D版本
  11. LeetCode 101对称二叉树
  12. linux windows市场占有率,Windows 10市场份额罕见倒退:Win7也跌了 Linux暴增111%
  13. java毕业设计房产中介系统mybatis+源码+调试部署+系统+数据库+lw
  14. 国际域名转出与ICANN投诉流程(完结篇)
  15. scrapy 使用无忧代理IP 需要填写无忧代理IP提供的API订单号(请到用户中心获取) 这个是要钱吗??...
  16. java生成pdf文件并打印
  17. VUE仿知乎网站(三)首页主体部分开发
  18. Anbox源码分析(三)——Anbox渲染原理(源码分析)
  19. Xendesktop5.6发布personal vdisk失败的处理方法
  20. #92 Backpack

热门文章

  1. 论文的第n作者、通讯作者
  2. 调用百度文心AI作画API实现中文-图像跨模态生成
  3. 文心一言,通营销之学,成一家之言,百度人工智能AI大数据模型文心一言Python3.10接入
  4. 浏览器播放RTSP摄像头视频
  5. java线程通信的三种方式
  6. Kubernetes部署云原生分布式存储Rook
  7. 51单片机项目之OLED显示多功能门禁系统(密码、刷卡、指纹、WIFI、蓝牙等)(一)硬件设计
  8. YOLOV5代码理解——损失函数的计算
  9. 载货汽车主减速器设计(说明书+CAD图纸+开题报告+任务书+外文翻译……)
  10. c语言return 0;system(pause);,C语言编程,之后出现错误,请大神帮忙看下什么问题?...