图像理解的进化史

如何把图像中的信息变成故事

结合CNCC2017中国计算机大会李飞飞报告和近几年计算机视觉的论文来看;

图像检测与分类(image detection & classification)

大致分为三个领域:

物体检测(object detection)

经典算法:rcnn、fast rcnn、SPP-NET、faster rcnn
主要论文
Girshick, Ross, et al. “Rich feature hierarchies for accurate object detection and semantic segmentation.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.
Girshick, Ross. “Fast r-cnn.” Proceedings of the IEEE International Conference on Computer Vision. 2015.
He, Kaiming, et al.“Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition”ECCV, 2014.
Girshick, Ross, et al. ”Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks.“ Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
关于此部分的博客太多了,
论文详解的参考链接
http://www.360doc.com/content/16/1229/08/10724725_618579769.shtml
几种算法的发展和比较请看
http://www.cnblogs.com/dudumiaomiao/p/6560841.html
http://www.cnblogs.com/skyfsm/p/6806246.html
github上都有基于caffe的源码实现。

动作检测/行为识别(action detection/action recognization)

场景分类(scene catogorization)

图像多标注

多任务学习

多任务学习是一种归纳迁移机制,基本目标是提高泛化性能。多任务学习通过相关任务训练信号中的领域特定信息来提高泛化能力,利用共享表示采用并行训练的方法学习多个任务。说白了就是在同一个网络模型中共享权值和参数,以达到同时解决多个任务的标注方法。
流行方法:通过修改caffe实现多任务学习
参考链接:
https://zhuanlan.zhihu.com/p/22190532?utm_medium=social&utm_source=weibo
http://blog.csdn.net/numeria/article/details/75532998

多示例多标注学习

首先先来明白几个概念:对图像中的对象进行特征提取,得到一个特征向量来描述这个对象,这样就得到了一个示例(instance),把示例与该对象所对应的类别标记(label)关联起来就得到了一个例子(example)。
图像理解的进化史_第1张图片
此图拷贝自文章《MIML:多示例多标记学习》来自南京大学。
如果看上述对比图还是不懂的话,那么我用具体图片实例来说明一下
图像理解的进化史_第2张图片
我们用很多含有老虎的图片来训练得到”老虎“这个标签就是多示例学习;
我们从从多张老虎的图片中判断出它的颜色、它的品种等多个属性就是多标记学习
图像理解的进化史_第3张图片
我们能同时从这幅图像中判断出斑马、羚羊、河流等多个物体、场景等标签就是多示例多标签学习。
这样就很明了了吧 = =
其中有两个工具包
入门matlab版本(多示例学习):http://www.cs.cmu.edu/~juny/MILL/
深度学习版本:https://github.com/kingfengji/DeepMIML
近几年关于图像多标注方法的论文很多涉及到多任务学习、多示例学习等字眼,可阅读论文:
Feng, Ji. ”Deep MIML network“. AAAI Conference on Artificial Intelligence, 2017.

视觉内容对齐(visual concept alignment)

图像描述(image description/image caption)

关于图像描述的内容自15年提出后,这几年层出不穷、微软、谷歌、斯坦福大学都在这方面发表了论文,并公布了其源代码在github上。
此处我们仅仅讲一下google的有开源工具的论文:Show and Tell: A Neural Image Caption Generator.
开源工具:neuraltalk
其主要思想是通过深度CNN和RNN组成一个端到端的网络模型,输入图像,输出生成的句子。
直接进入方法论部分:
统计机器翻译领域取得的进展表明,给定一个强大的序列模型,通过最大化一个给定输入序列的正确翻译能够取得显著的成果。这些模型利用了回复神经网络的特点:将可变长度输入编码成固定的维度向量,并使用该表示将其解码为期望输出句子。(如果这个特点看不懂的话,建议去看一下自动编码器)
此论文利用此特点,将处理图像的CNN模型替换RNN的encoder,然后得到固定维度向量,通过最大化正确输出概率(公式1)得到end-to-end网络模型。
这里写图片描述 (1)
其中 是网络模型参数,S 是正确的图像描述文本,I 是图像输入。
由于S 表示一个语句输出,所以此条件概率可以应用链式法则(这个看不懂去维基百科查chain rule,概率论中的链式法则),得到公式2
这里写图片描述 (2)
得到此条件概率很容易与RNN结合起来,采用RNN建模,可变长度的单词通过一个固定长度隐状态或者memory ht来表达,这个记忆单元在输入新的xt时更新。得到公式3
这里写图片描述 (3)
此论文选择LSTM模型来生成句子,这个模型用来确定公式(3)中的函数f ,关于LSTM不多说直接上图上公式,对此部分不懂的去看LSTM模型。
参考博客:http://blog.csdn.net/dream_catcher_10/article/details/48522339
图像理解的进化史_第4张图片
图像理解的进化史_第5张图片
训练阶段的目标是使公式(2)的条件概率最大,论文中采用的训练过程的end-to-end网络模型如图所示。
图像理解的进化史_第6张图片
其余几篇比较经典的关于image caption的论文如下:
Standord:
Deep Visual-Semantic Alignments for Generating Image Descriptions
Baidu/UCLA:
Explain Images with Multimodal Recurrent Neural Networks
Toronto:
Unifying Visual-Semantic Embeddings with Multimodal Neural Language Models
Microsoft:
Xinlei Chen et. Learning a Recurrent Visual Representation for Image Caption Generation
Hao Fang et. From Captions to Visual Concepts and Back
可阅读的参考博客的Image2Sentence部分。
http://blog.csdn.net/u012162613/article/details/43971429

关系检测(relation detection)

物体之间的关系识别是即物体识别之后下一个图像理解的重点。对于关系识别,这里着重讲解论文《visual relationship detection with language priors》,这也是李飞飞在CNCC上提到的一片重要论文,发表于ECCV。
此论文用来进行关系检测的主要方法是:分别训练两种视觉模型,一种来识别物体,一种来识别关系。
关系识别的一个挑战在于没有足够的关系训练样本。比如说骑行这个动作,图片可能是人骑马、人骑车、人骑骆驼等等,想要将这些样本统统搜集起来是高耗能的。本论文在进行关系检测的同时,也证实了这种方法用于zero-shot detection的可能性。//(Zero-shot learning 指的是我们之前没有这个类别的训练样本。但是我们可以学习到一个映射X->Y。如果这个映射足够好的话,我们就可以处理没有看到的类了。来自知乎https://www.zhihu.com/question/50996014)
图像理解的进化史_第7张图片
由图可见此方法的大体流程是:输入图片,经过RCNN产生多个物体检测框,每个物体检测框分别经过视觉模型和语言模型进行打分,给定阈值将得分高于阈值的输出得到关系标签(person - riding - horse)
训练方法:
视觉外观模块:
训练了一个CNN来对100个物体进行分类,同时训练了另一个CNN来对70个predicates进行分类。这里有实验表明,将每个objects predicates对分开进行训练得到的效果要比visual phrases’ detectors(将所有对一起训练)好。则视觉模型V如下:
这里写图片描述
0-是{zk, sk}的参数集合,zk和sk是将CNN特征转换到关系可能性得到的参数。P(O)是物体CNN得到的objects likelihoods,CNN(O1,O2)是predicate likelihoods.

语言模块:
由于关系之间存在着语义关联性。比如与就存在着语义相似性,所以说我们即使没有任何的例子,我们也可以通过horse这个例子推出。所以说我们的语言模型要做的就是将关系映射到一个嵌入空间中,类似的关系被优化为相互靠近。首先,我们使用word2vec将two objects in a relationship映射到词嵌入空间,然后,我们将两个向量聚集起来利用映射参数W转化到关系向量空间。这个映射说明了物体之间的交互行为。
预测映射函数如下:
这里写图片描述
其中W是一个集合:{{w1, b1},…{wk,bk}},其中每一行代表着K个predicates。

训练映射函数
我们想要得到映射函数能使关系越相似的越接近,所以我们启发式来建立这种关系,其中两个关系之间的距离与其组件对象和谓词之间的word2vec距离成正比:
这里写图片描述
关系可能性
如果一个relationship在训练数据中出现的频率高于另一个Relationship我们考虑这个relationship有更高的再发生可能性,所以我们的排名损失函数为:
这里写图片描述
对象函数
我们将视觉外观模型和语言模型结合起来通过排名损失函数来最大化真实relationship的得分:
图像理解的进化史_第8张图片
最终的损失函数结合了以上三个公式,迭代训练得到最终的参数0-和W。
这里写图片描述
整个训练算法如下:
图像理解的进化史_第9张图片

场景理解(scene understanding)

场景理解是现在计算机视觉中的一个热点,CNCC大会中有两位大牛学者:李飞飞、陈熙霖都提到他们实验室正在做这部分,而且方向出奇的一致,都是关于生成场景图的。
我以李飞飞实验室出的论文(Scene Graph Generation by Iterative Message Passing)来简单介绍一下场景图方面的知识。
这里写图片描述
李飞飞在大会上就用这幅图举过例子:通过物体检测我们可以得到相同两个标注框及其标签,但是两幅图像却是呈现了完全不同的场景。通过这点我们认识到光是物体识别是做不到图像理解的。因此,他们转向了场景理解的研究。
此论文的主要工作是,通过得到图像中的物体标注框的标签以及标注框与标注框之间的关系自动生成与图片相关的场景图。
图像理解的进化史_第10张图片
如上图所示,场景图的概念是Johnson et al.[18]提出的:是一种图像的结构化表示,其中场景图中的结点对应于具有其对象类别的对象边界框,并且边对应于它们在对象之间的成对关系。
此论文的主要思想是物体类别及其关系预测得益于其周围信息,所以提出了一个联合推理框架,通过消息传递方案使上下文信息通过场景图拓扑传播。使用了GRU模型(RNN的一种)分别构造来形成一个端到端的场景图生成网络,以及一个message pooling函数来动态的整合GRU的隐藏状态到信息。特别地,由于场景图的特殊结构构成了一种消息传递通道的二分结构,所以论文中同时构建了两个子图:node GRU和edge GRU。整个流程如下图:
图像理解的进化史_第11张图片
对于变量的设定,两种以对象为中心的变量(每一个物体框建议):1)object class label 2)四个边缘检测框坐标。还要推出两两物体之间的以关系为中心的变量。公式1所示。
这里写图片描述 (1)
与其他概率模型一样,此模型的共同目标是给定图像和标注建议的最大化概率函数:
这里写图片描述 (2)
为了同时利用node GRN和edge GRN的信息,此论文设计了新的pooling函数,即message pooling函数。第n次迭代的GRN以n-1次迭代的隐藏状态和incoming message作为输入得到第n次迭代后的隐藏状态输出。利用message pooling函数将node GRN和edge GRN输出的隐藏状态整合得到输出信息。如(3)、(4)所示。
图像理解的进化史_第12张图片
mi是node GRU输出,mi→j是edge GRU输出;其中v,w是GRU中的参数,h是隐藏状态;看不懂此公式的可以结合GRU的模型来看一下;
GRU模型参考博客:
http://www.cnblogs.com/taojake-ML/p/6272605.html

句子整合到段落(sentence to paragraph)

你可能感兴趣的:(计算机视觉)