49 样式迁移【李沐动手学深度学习v2课程笔记】

news/2024/7/11 1:19:48 标签: 笔记, 深度学习, cnn, YOLO, 人工智能, 网络

1. 样式迁移(Style Transfer)

· 计算机视觉的应用之一,将样式图片中的样式(比如油画风格等)迁移到内容图片(比如实拍的图片)上,得到合成图片
· 可以理解成为一个滤镜,但相对于滤镜来讲具有更大的灵活性,一个滤镜通常只能够改变图片的某个方面,如果要达到理想中的风格,可能需要尝试大量不同的组合,这个过程的复杂程度不亚于模型调参 

1.1 基于CNN的样式迁移

奠基性工作:使用神经网络修改内容图片,使其在样式上接近风格图片 ,上图中的内容图像为西雅图郊区的雷尼尔山国家公园风景照,样式图像为主题为秋天橡树的油画,最终输出的合成图像应用了样式图像的油画笔触让整体颜色更加鲜艳,同时保留了内容图像中物体主体的形状

 

1、首先初始化合成图片(例如将其初始化为内容图片)

· 输入中有一张内容图片(Content Image)和一张样式图片(Style Image)
· 模型所要训练的不是卷积神经网络的权重,而是合成图片,它是样式迁移过程中唯一需要更新的变量,即样式迁移所需迭代的参数模型


2、然后选择一个预训练的卷积神经网络来抽取图片的特征(该卷积神经网络的模型参数在训练中不用更新)

内容图片、样式图片之后和合成图片(Synthesised Image)之前各有一个卷积神经网络,上图中只画了三层,看起来有三个三层的卷积神经网络,实际上三个卷积神经网络都是一样的(它们的权重是一样的)


3、这个深度神经网络凭借多个层逐级抽取图像的特征,因此可以选择其中某些层的输出作为内容特征或者样式特征(上图中的卷积神经网络第二层输出内容特征,第一层和第三层输出样式特征)

· 对于一张输入图片来讲,每一层的卷积神经网络都会有一个输出(特征),整个基于 CNN 的样式迁移的目的是训练出一张合成图片,使得合成图片和内容图片放进同样一个卷积神经网络的时候,合成图片在某一层的输出能够匹配上内容图片在某一层的损失(内容损失,Content Loss),即它们在内容上是相近的;同理,合成图片和内容图片所使用的是同一个卷积神经网络,在某些层的输出(特征)在样式上能够匹配的上。如果训练出一张合成图片同时满足以上需求的话,就可以认为它既保留了内容图片的内容,又保留了样式图片的样式
·

一般来说,越靠近输入层,越容易抽取图片的细节信息;反之,越容易抽取图片的全局信息
为了避免合成图片过多地保留内容图片的细节,选择靠近输出的层(即内容层)来输出图片的内容特征

· 选择不同层的输出(即风格层)来匹配局部和全局的样式

· 在使用卷积神经网络抽取特征时,只需要用到从输入层到最靠近输出层的内容层或者样式层之间的所有层

· 因为在训练的时候无需改变预训练的卷积神经网络的模型参数,所以可以在训练开始之前就提取出内容特征和风格特征


4、通过前向传播(实线箭头方向)计算样式迁移的损失函数,并通过反向传播(虚线箭头方向)迭代模型参数,即不断更新合成图片

样式迁移常用的损失函数由三部分组成:

(1)内容损失通过平方误差函数衡量合成图片与内容图片在内容特征上的差异,使合成图片与内容图片在内容特征上接近;

(2)样式损失也是通过平方误差函数衡量合成图片与样式图片在样式特征上的差异,使合成图片与样式图片在样式特征上接近;

(3)全变分损失有助于减少合成图片中的噪点,有时学到的合成图像中有大量高频噪点(即有特别亮或者特别暗的颗粒像素),常用全变分去噪(Total Variation Denoising),通过降低全变分损失,能够尽可能使临近的像素值相似,来进行去噪

样式迁移的损失函数是内容损失、样式损失和总变化损失的加权和,通过调节这些权重超参数,可以权衡合成图片在保留内容、样式迁移以及去噪三方面的相对重要性

对于给定的输入,如果简单地调用前向传播函数,只能获得最后一层的输出,因为还需要中间层的输出,所以需要进行逐层计算,保留内容层和风格层的输出

在样式迁移中,合成图片是训练期间唯一需要更新的变量,因此可以将合成图片视为模型参数,模型的前向传播只需要返回模型参数即可


5、最后当模型训练结束时,输出样式迁移的模型参数即为最终的合成图片

因为合成图片是样式迁移所需迭代的模型参数,所以只能在训练的过程中抽取合成图片的内容特征和样式特征。合成图片保留了内容图片的内容,并同时迁移了样式图片的样式 

13.12. 风格迁移icon-default.png?t=N7T8https://zh-v2.d2l.ai/chapter_computer-vision/neural-style.html


http://www.niftyadmin.cn/n/5478111.html

相关文章

编程羔手-讲解下YUDAO的Flowable工作流和表格的关系

我这里简单讲解,最好的学习内容就是官方文档(可慢看和作为FYI供你参考) 一般顺序:定义流程模型->流程发布->运行实例,各种查就是历史数据。 数据库表名说明 Flowable的所有数据库表都以ACT_开头。第二部分是说明表用途的两字符标示符…

领鸡蛋游戏养鸡游戏淘宝客源码广告联盟

用户中心 用户信息:显示用户名、头像、鸡蛋数量、足迹等基本信息。我的足迹:展示用户的饲料获取记录明细,包括来源、数量和时间。我的好友:展示邀请的好友列表,支持好友间互动,如串门、偷取/赠送饲料&#…

TypeScript尚硅谷学习

第二章:面向对象 面向对象是程序中一个非常重要的思想,它被很多同学理解成了一个比较难,比较深奥的问题,其实不然。面向对象很简单,简而言之就是程序之中所有的操作都需要通过对象来完成。 举例来说: 操作…

腾讯云视频点播配置说明 | Modstart

开通云点播 开通云点播 云点播VOD_音视频点播_直播回看_音视频上传、存储转码AI处理方案-腾讯云 获取腾讯云 SecretId 和 SecretSecret 注册并且登录 腾讯云

宠物医院管理系统

文章目录 宠物医院管理系统一、系统演示二、项目介绍三、12000字论文参考四、系统部分页面展示五、部分代码展示六、底部获取项目源码和万字论文参考(9.9¥带走) 宠物医院管理系统 一、系统演示 宠物医院管理系统 二、项目介绍 语言&#xf…

力扣经典150题第十一题:H指数

目录 计算研究者的 H 指数问题描述示例 解决方案排序 线性扫描 复杂度分析测试示例总结与展望结语 计算研究者的 H 指数 在本文中,我们将讨论如何计算研究者的 H 指数。H 指数是衡量研究者学术影响力的一种指标,它代表了一个研究者至少发表了几篇论文&…

UDP和TCP之间的对比

TCP优势可靠传输(适合于绝大部分场景) UDP优势更高效率(适合对于性能敏感的场景如局域网内部之间的通信) 如局域网内部之间(如机房)的主机进行通信,局域网内部之间通信的结构比较简单带宽充足…

【网络】P2P打洞原理(简单描述)

本文首发于 ❄️慕雪的寒舍 引入 如果你折腾过NAS或者BT下载等等玩意,可能听说过“P2P打洞”这一技术名词。简单来说,P2P打洞可以让我们直接在外网访问内网的设备,从而让没有公网IP的家庭设备也能获得“公网直连”的速度。 比如绿联、极空间…