赞
踩
在计算机视觉中,图像分类和目标检测任务是比较成熟的领域,已经应用到实际的产品领域。而“看图说话”要实现的功能是,给定一张图像,计算机能告诉我们图片的内容,显然,这会使一个比较复杂的任务,因为它涉及到了如下的子任务:
1)检测图像中的目标;
2)目标的属性,比如颜色、尺寸等;
3)目标之间的关联;
4)语言模型,用于把上面的信息表述成句子;
为了实现看图说话的功能,初步的想法是使用多个模型,分别实现上面的各个子任务,然后把每个子任务的结果进行逻辑上的组合。作为谷歌的大作,“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(St∣I,S0,...,St−1),L(I,S)=−logp(S∣I),因此,优化的目标是给定任意输入图像I,输出序列S的联合概率最大化,这里是将联合概率展开成了条件概率的乘积的形式。
上面的文章使用的是有监督的方法,只能识别训练集中出现的目标,因此在应用中是非常受限制的。大牛Lisa Anne在CVPR 2016上发的一篇文章“Deep Compositional Captioning”,第一次解决了描述novel 目标的目的(训练集中不存在该目标),作为一篇oral文章,作者提供了文章的代码,https://github.com/LisaAnne/DCC。
为了优化半监督看图说话模型的效果,作者所在团队在CVPR 2017发了一篇新的文章“Captioning Images with Diverse Objects”,这里主要阐述这篇文章中的思想。
文中将所提模型称之为“Novel Object Captioner (NOC)”,其网络结构如下图,它包含了三个子任务:语言建模+目标识别模型+图文生成。从直觉上可见,当联合训练时,模型可以实现下面的目标:(1)生成读起来通顺的文本;(2)识别图像中的视觉目标;(3)生成合理的图片描述。当(2)和(3)互补时,可以使的生成的文本包含(2)的结果,这里(2)为imagenet 1000类的目标,(3)为MSCOCO caption数据集,只包含了80类目标,也即在inference阶段,生成的文本中可以包含其余的920种目标。
模型优化的目的是,在给出图像描述的同时尽可能多地识别图中的物体,包括image caption数据集(paired)中未出现或者很少出现的目标,在训练过程中联合优化Image model、Language model 和 Caption模型,整体的目标函数如下,
与常用的CNN分类模型不同,这里我们希望能够尽可能全地描述出图像中存在的所有目标,所以这里的CNN为一个多标签模型,其cross-entropy 损失如下,
其中, l l l 表示标签的总个数, z l z_{l} z
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。