暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PyTorch深度学习实战 | 图像风格迁移(限免视频)

517

PyTorch是当前主流深度学习框架之一,其设计追求最少的封装、最直观的设计,其简洁优美的特性使得PyTorch代码更易理解,对新手非常友好。

本文为实战篇,介绍图像风格迁移,扫描文中的二维码可观看视频讲解(限免3天)。


1

图像风格迁移


VGG模型是由Simonyan等人于2014年提出的图像分类模型,这一模型采用了简单粗暴的堆砌3×3卷积层的方式构建模型,并花费了大量的时间逐层训练,最终斩获了2014年ImageNet图像分类比赛的亚军。这一模型的优点是结构简单,容易理解,便于利用到其他任务当中。

VGG-19网络的卷积部分由5个卷积块构成,每个卷积块中有多个卷积(convolution)层,结尾处有一个池化(pooling)层,如图10.1所示。


■ 图10.1VGG-19的网络结构


卷积层中的不同卷积核会被特定的图像特征激活,图10.2展示了不同卷积层内卷积核的可视化(通过梯度上升得到)。可以看到,低层卷积核寻找的特征较为简单,而高层卷积核寻找的特征比较复杂。


■ 图10.2VGG网络中部分卷积层内卷积核的可视化


2

图像风格迁移介绍


图像风格迁移是指将一张风格图Is的风格与另一张内容图Ic的内容相结合并生成新的图像。Gatys等人于2016年提出了一种简单而有效的方法,利用预训练的VGG网络提取图像特征,并基于图像特征组合出了两种特征度量,一种用于表示图像的内容,另一种用于表示图像的风格。他们将这两种特征度量加权组合,通过最优化的方式生成新的图像,使新的图像同时具有一幅图像的风格和另一幅图像的内容。

图10.3对风格迁移的内部过程进行了可视化。上面的一行中,作者将VGG网络不同层的输出构建风格表示,再反过来进行可视化,得到重构的风格图片;下面的一行中,作者将VGG网络不同层的输出构建内容表示,再反过来进行可视化,得到重构的内容图片。可以看到,低层卷积层提取的风格特征较细节,提取的内容特征较详细;高层卷积层提取的风格特征较整体,提取的内容特征较概括。


■ 图10.3风格迁移中使用的风格数学表示和内容数学表示


3

内容损失函数


1

内容损失函数的定义

内容损失函数用于衡量两幅图像之间的内容差异大小,其定义如下。

其中,Xl和Yl分别是两幅图片由VGG网络某一卷积层提取的特征图(feature map),l表示卷积层的下标,i和j表示矩阵中行与列的下标。可见两幅图像的内容损失函数是由特征图对位求差得到的。低层卷积特征图对图片的描述较为具体,高层卷积特征图对图片的描述较为概括。Gatys等人选择了第4个卷积块的第2层(conv4_2)用于计算内容损失,因为我们希望合成的图片的内容与内容图大体相近,但不是一笔一画都一模一样。


2

内容损失模块的实现

模块在初始化时需要将内容图片的特征图传入,通过detach()方法告诉AutoGrad优化时不要变更其中的内容。forward()方法实现上面的公式即可。


4

风格损失函数


1

风格损失函数的定义

风格损失函数用于衡量两幅图像之间的风格差异大小。首先需要通过计算特征图的Gram矩阵得到图像风格的数学表示。给定VGG在一幅图像中提取的特征图Xl,与之对应的Gram矩阵Gl定义如下。

Gram矩阵本质上是特征的协方差矩阵(只是没有减去均值),表示的是特征与特征(卷积核与卷积核)的相关性。

设由以上方式获得Xl和Yl对应的Gram矩阵Gl和Hl,风格损失函数定义如下。

其中,Nl和Ml分别为特征图的通道数与边长,ωl为权重。Gatys等选择了conv1_1,conv2_1, conv3_1, conv4_1, conv5_1用于计算风格损失。


2

计算Gram矩阵函数的实现

因为PyTorch传入数据必须以批的形式,传入的input的大小为[batch_size, channels, height, width]。计算Gram矩阵时,先用view方法改变张量的形状,然后再将它与它自己转置进行点积即可。


3

风格损失模块的实现

模块在初始化时需要将风格图片的特征图传入并计算其Gram矩阵,通过detach()方法告诉AutoGrad优化时不要变更其中的内容。forward()方法实现上面的公式即可。


实操可扫码观看(限免3天)


实例讲解

PyTorch深度学习实战


下期预告

深度学习简介

 1. 计算机视觉 

 2. 自然语言处理

 3. 强化学习

深度学习框架

4. PyTorch

PyTorch环境搭建

5. PyTorch环境搭建(Linux和Windows平台)

实战篇

6. 搭建卷积神经网络进行图像分类



精彩回顾

实战篇

8. 基于RNN的文本分类




5

参考书籍


《PyTorch深度学习实战-微课视频版》

数学基础和深度学习知识点与8个完整的实战案例相结合,配有详细的视频讲解,手把手带你通关深度学习。

ISBN:9787302568209

作者:吕云翔 刘卓然 主编 关捷雄 欧阳植昊 杨卓谦 华昱云 陈妙然 黎昆昌 吕可馨 王渌汀 副主编

价格:59.90元

扫码微店优惠购书



内容简介

本书在内容安排上十分精良,为便于数学基础较薄弱的读者学习,引入了深度学习数学基础;再由浅入深地以实战案例讲解的方式,对于误差反向传播法、卷积运算等进行详细剖析,使读者在实现层面上理解;此外还加入了前沿技术,如Batch Normalization等内容。本书提供了8个完整的项目案例、完整的构建过程、详细的视频讲解以及相应源代码,使读者能在实战案例中,深入完成深度学习的学习与掌握。


6

精彩推荐


文章转载自清华计算机学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论