深度学习的应用介绍
深度学习已经在图像、语音、自然语言处理等各个不同的领域展现出了优异的性能。本文将带着大家看看深度学习在机器视觉领域的应用现状及其他方面的应用。
目录
物体检测
物体检测是从图像中确定物体的位置,并进行分类的问题,如下图所示要从图像中确定物体的种类和物体的位置。
不难发现,物体检测比物体识别(以整个图像为对象进行识别)更难,因为物体检测需要对图像中的每种类别进行识别并判断其位置。
人们提出了多个基于CNN的方法,其中一个较为有名的方法是R-CNN,下图显示了R-CNN的处理流。图中,“2.Extract region proposals”(候选区域的提取)和“3.Compute CNN features”(CNN特征的计算)的处理部分。这里,首先以某种方法找出形似物体的区域,然后对提取的区域应用CNN进行分类。R-CNN中会将图像变形为正方形,或者在分类时使用SVM(支持向量机)。
在R-CNN的前半部分的处理---候选区域的提取(发现形似物体的处理)中,可以使用机器视觉领域积累的各种各样的方法。R-CNN论文中使用了一种被称为Selective Search的方法,最近还提出了一种基于CNN来进行候选区域提取的Fster R-CNN的方法,它用一个CNN来完成所有处理,使得高速处理成为可能。
图像分割
图像分割是指在像素水平上对图像进行分类。如下图所示,使用像素为单位对各个对象分别着色的监督数据进行学习,然后,在推理时,对输入图像的所有像素进行分类。
如果选择神经网络进行图像分割,最简单的方法是以所有像素为对象,对每个像素执行推理处理(比如准备一个对某个矩形区域中心的像素进行分类的网络,以所有像素为对象执行推理处理。大家想一想,图像是不是由像素数据构成的嘛)。
有人提出了一个名为“FCN(fully convolutional network)”的方法,该方法通过一次forward处理,对所有像素进行分类(如下图所示),FCN将全连接层替换成发挥相同作用的卷积层。在物体识别中使用的网络的全连接层中,中间数据的空间容量被作为排成一列的节点进行处理,而只由卷积层构成的网络中,空间容量可以保持原样直到最后的输出。
FCN的特征在于最后导入了扩大空间大小的处理。基于这个处理,变小了的中间数据可以一下子扩大到和输入图像一样的大小。FCN最后进行的扩大处理是基于双线性插值法的扩大(通过逆卷积运算来实现的)。
图像标题的生成
有一项融合了计算机视觉和自然语言的研究,能对一副照片进行标题文字生成,如下图所示,第一张照片生成了“A person riding a motorcycle on a dirt road”,翻译过来指“在肮脏的道路上骑摩托车的一个人”,太神奇了,就连肮脏的道路也被正确理解了。
一个基于深度学习生成图像标题的代表性方法是NIC(Neural Image Caption)的模型。如下图所示,NIC由深层的CNN和处理自然语言的RNN(Recurrent Neural Network)构成。RNN是具有循环连接的网络,经常被用于自然语言、时间序列数据等连续性的数据上。
NIC基于CNN从图像中提取特征,并将这个特征传给RNN。RNN以CNN提取出的特征为初始值,循环地生成文本。基于NIC,可以生成惊人的高精度的图像标题。我们将组合图像和自然语言等多种信息进行的处理称为多模态处理。
RNN的R表示Recurrent(循环的)。这个循环指的是神经网络的循环的网络结构。根据这个循环结构,神经网络会受到之前生成的信息的影响(记忆能力),这是RNN的特征,比如,生成“我”这个词后,下一个生成的词受到“我”这个词的影响。如果生成了“是”,那么下一个要生成的词受“我是”这个词的影响。因此,对于自然语言、时间序列数据等连续性的数据,RNN以记忆过去的信息的方式运行。
图像风格变换
有一项研究是使用深度学习来“绘制”带有艺术气息的画。如下图所示,输入两个图像后,会生成一个新的图像。两个输入图像中,一个称为“内容图像”,另一个称为“风格图像”。
如果指定将梵高的绘画风格应用于内容图像,深度学习就会按照指示绘制出新的画作。此项研究出自论文“A Neural Algorithm of Artistic Style”,一经发表就受到全世界的广泛关注。
该方法是在学习过程中使网络的中间数据近似内容图像的中间数据。这样一来,就可以使输入图像近似内容图像的形状。。此外,为了从风格图像中吸收风格,导入了风格矩阵的概念。通过在学习过程中减小风格矩阵的偏差,就可以使输入图像接近梵高的风格。
图像的生成
图像风格变换需要输入两个图像,而图像的生成不需要任何图像(当然,事先需要用大量的图像进行学习,“画”新图时不需要任何图像)。比如,基于深度学习,可以实现从零生成“卧室”的图像。下图展示的图像是基于DCGAN(deep convolutional generative adversarial network)方法生成的卧室图像的例子。DCGAN属于无监督学习
图中的图像都是基于DCGAN生成的图像,这些图像是谁都没有见过的。DCGAN会将图像的生成过程模拟化。使用大量图像(比如,印有卧室的大量照片)训练这个模型,学习结束后,使用这个模型,就可以生成新的图像。
DCGAN中使用了深度学习,其技术要点是使用了生成者(generator)和识别者(discriminator)这两个神经网络。生成者生成近似真品的图片,识别者判断它是不是真图像。像这样,通过让两者以竞争的方式学习,生成者会学习到更加精妙的图像作假技术,识别者则会成长为能以更高精度辨别真假的鉴定师。两者互相切磋、共同成长,这是GAN的有趣之处。在这样的切磋中成长起来的生成者最终会掌握画出足以以假乱真的图像的能力。
自动驾驶
自动驾驶技术中,正确识别周围环境的技术尤为重要。这是因为要正确识别时刻变化的环境、自由来往的车辆和行人是非常困难的。
在识别周围环境的技术中心,深度学习的力量备受期待。比如,基于CNN的神经网络SegNet,可以像下图那样高精度地识别行驶环境。
该图对输入图像进行了分割(像素水平的判别)。观察结果可知,在某种程度上正确地识别了道路、建筑物、人行道、树木、车辆等。可见,今后若能基于深度学习使这种技术进一步实现高精度化、高速化的话,自动驾驶的实用化可能也就没那么遥远。
强化学习(Deep Q-Network)
就像人类通过摸索试验来学习一样,让计算机也在摸索试验过程中自主学习,这称为强化学习。这和有“教师”在指导的“监督学习”有所不同。
强化学习的基本框架是,代理根据环境选择行动,然后通过这个行动改变环境。根据环境的变化,代理获得某种报酬。强化学习的目的是决定代理的行动方针,以获得更好的报酬。如下图所示。
在使用了深度学习的强化学习方法汇总,有一个叫作Deep Q-Network(DQN)的方法。该方法基于被称为Q学习的强化学习算法。在Q学习中,为了确定最合适的行动,需要确定一个被称为最优行动价值函数的函数。DQN使用了深度学习(CNN)。
在DQN的研究中,有让电子游戏自动学习,并实现了超过人类水平的操作的例子。如下图所示,DQN使用CNN把游戏图像的帧作为输入,最终输出游戏手柄的各个动作的“价值”。
在DQN中,输入数据只有电子游戏的图像,实际上,DQN可以用相同的结构学习《吃豆人》、Atari等游戏,甚至取得了超过人类的成绩。
人工智能AlphaGo击败围棋冠军的新闻受到了广泛关注。这个AlphaGo技术的内部也用了深度学习和强化学习。AlphaGo学习了3000万个专业棋手的棋谱,并且不停地重复自己和自己的决战,积累了大量的学习经验。AlphaGo和DQN都是Google的Deep Mind公司进行的研究。