70

深度学习也可以取悦女友

 6 years ago
source link: http://mp.weixin.qq.com/s/AZyqxZf6CbZJoT3qOpHDCQ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

深度学习也可以取悦女友

Original 许铁&&Edison_G 计算机视觉研究院 2017-12-05 03:20 Posted on

深度学习目前在图像处理领域有着非常好的应用和研究,在医学领域可以用它在极早期判断癌症;在安防领域,可以用它来快速检索目标任务,进行可疑或危险人物的检测与抓捕;在金融领域,可以较好的分析风险风控等。

但是今天不说这么深奥的知识,我们今天来说的是一个能有程序取悦我们女朋友的“黑科技”!这一招叫艺术风格变换,就是你点击一下,就可以把你女朋友的大头照换成一个毕加索的后现代艺术作品(当然是取代还是找打要看你的艺术品位)。

Image

艺术风格迁移是一个古老而现代的主题 ,多少艺术家为了描摹他人作品而竞折腰。在出现了深度学习之后,通过简单的训练就可以完成这个简单的任务,接下来,说说何玩转基于神经网络的风格迁移。

其实风格迁移就是把一张图片的内容和另一个图片的风格进行合成的一个方法,比如说你给出一个猫的图片和一个梵高的自画像,就可以生成一只梵高画像版本的猫。

Image

在深度学习没有应用在该领域之前,机器视觉的工程师就尝试用各种滤镜提取图像的纹理信息或者用传统的机器学习方法提取,得到的纹理特征再经过某些变换放回到原始图片中,就得到了一个新的风格图片。

深度学习所作的事情,是把整个过程自动化智能化了。我们利用卷积网络的深层结构去提取图片的信息,来替代之前的各种滤镜或机器学习方法。 

首先,现在的卷积神经网络在分类任务中,表现的非常出色,所以利用现在流行的网络进行学习,可以学习很多丰富的有用信息,而这些丰富、抽象的信息正好是风格迁移的基础。

可视化CNN的各层级结构,会发现不同阶段的可视化是不一样的,越是底层的,就越接近输入图像的纹理信息,如同物品的材质;然而,越是上层的,就越接近实际内容(比较抽象,比较显著),如同物品的种类。

Image

研究人员在Visualizing CNN 2014 提出了,如下就是部分的可视化效果图:

Image

底层神经元关心画面的材质

Image

深层神经元关心物品的种类

现在整个框架就变得特别简单明了,只要用CNN提取图像的丰富特征信息就可以实现,主要通过一张图像的底层信息和另一张图像的高层信息结合,然后就可以简单实现。

Image

用框架中间层的特征信息恢复的内容,可以看到,不同层里都可以找到风格和内容有关的信息, 但是层次越深, 具体的信息就越少, 可以通过一个已训练好的卷积神经网络, 把一张风格图片和内容图片的信息都提取出来, 然后结合在一起!

这里用已经训练好的VGG网络,一种非常流行的CNN图像分类框架,预先设定好一个损失函数,然后再进行反向传播

在进行梯度回传,这里也不例外,我们可以通过设定合理的损失函数,来解决问题。

这个损失函数,正是一种能够测量生成图片与风格图片,内容图片距离的函数。

看我们如何设定这样一个函数。既然我们的深度卷积网络可以做到测量与内容有关的特征,那么我们只需要在这个层次上找一下特征向量的距离就好了。 

Image

图像无非是高维空间的一个点,通过神经网络变换再经过特定降维方法处理后我们可以给它转化成二维曲面上的一个点, 我们会发现,在这个世界里, 狗在狗的国度 , 猫在猫的国度。 而我们只需要度量不同图像的空间距离,就测量了内容的相似度。

Image

然后呢,如何搞定风格,风格通常是一个艺术家眼中主关的有点虚无缥缈的概念,也就是我们通常说的感觉,比如梵高或者莫奈的画,你没有经过艺术熏陶也可以得来。

而在深度学习的角度下,这种感觉却发现与不同神经元活动的相关性有关!也就是说,风格是深度网络神经元活动的某种统计特性!悄悄的,我们把艺术和数学对接上了。( 统计果然是上帝的语言啊有木有!)、

这里我们借助一个叫gram矩阵的数学工具,它通过测量同一层卷积输出不同通道之间的相关性(计算不同通道间的相关性,组成一个矩阵)给出一个对风格的度量。然后,我们在测量一下风格之间的距离不就行了吗?

Image

把CNN某一层对应不同特征的神经元像摊煎饼一样摊开, 然后计算之间的相关性:

Image

得到一个矩阵,矩阵的每个元素对应不同特征间的相关性:

Image

这个损失函数就是gram 矩阵之间的距离!

注意,衡量风格之间的距离,我们是把不同网络层级间的gram矩阵的距离都计算一下加在一起,这样可以把不同层次度量的东西综合起来。

好了,到这一步,大功告成,把两个损失函数叠加在一起就好了。

目标函数的设计学问可大了,改变a和b的比例就能造成很多区别,大家注意风格图片的比例越高,图像就越纹理化。

Image

风格的权重变大的时候, 那图像就变成了意大利瓷砖!

然后我们可以做什么呢?梯度下降!但注意,这里我们优化的目标不是网络权重而是图像本身,这样我们就大功告成了!

当然这里说的只是风格迁移的一种,这种方法的优点是通俗易懂,而缺点是速度很慢。

还有一个方法,是借用生成网络,直接给搞出来,这个方法更快速,更加适合工业封装。我来给大家展示一下这个方法的实质。

Image

像不像GAN的结构

哈哈,这样我们就可以完成一幅艺术作品交给家里领导了,但是不要忘记哦, 这件事给我们的启示绝不止这一个呀。

它给我们启示的是,我们深层神经编码的机制里,深度学习的踪影,你对风格的认知,其实是和内容的认知一样,是可以量化的,而不像某些艺术家所言,完全主观,与数学无关。

不仅可以量化,而且这个信息是可以独立被提取的, 这种信息不是存在于某个神经元之上,而是分布式的存在于多级神经网络的不同尺度之间, 通过每一层神经元的统计规律表达。

虽然我们尚不知道这些猜想是否正确,他们我们人类深奥的视觉处理机制提供了一种聪明的理解方法。

本文作者:许铁,以色列理工大学机器学习博士、巴黎高师理论物理与复杂系统硕士、cruiser创始人 , 在知名神经科学期刊著有论文。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK