计算摄影——风格迁移

news2024/11/24 6:58:24

        这一章来总结一下图像风格迁移相关的内容,风格迁移的任务是将一幅图作为内容图,从另外一幅画中抽取艺术风格,两者一起合成新的艺术画,要求合成的作品即保持内容图的主要结构和主体,又能够具有风格图的风格,如下图:

 风格迁移的思想基础

        生物学家证明了人脑处理信息具有不同的抽象层次,人的眼睛看事物可以根据尺度调节抽象层次,当仔细在近处观察一幅图时,抽象层次越低,我们看到的是清晰的纹理,而在远处观察时则看到的是大致的轮廓。实际上卷积神经网络就是实现和证明了这样的分层机制的合理性。将各个神经元看做是一个图像滤波器,输出层就是由输入图像的不同滤波器的组合,网络由浅到深,内容越来越抽象。

        研究者基于此特点提出图片可以由内容层(content)与风格层(style)两个图层描述,内容层描述图像的整体信息,风格层描述图像的细节信息。

        所谓内容,指得是图像的语义信息,即图里包含的目标及其位置,它属于图像中较为底层的信息,可以使用灰度值,目标轮廓等进行描述。

        而风格,则指代笔触,颜色等信息,是更加抽象和高层的信息。

格拉姆矩阵(Gram matrix)

        提到风格迁移,必须要先讲一下格拉姆矩阵,我们知道向量的内积也叫向量的点乘,就是对这两个向量对应位一一相乘之后求和的操作,内积的结果是一个标量,他可以用来判断向量a和向量b之间的夹角和方向关系。

        Gram矩阵是两两向量的内积组成,所以Gram矩阵可以反映出该组向量中各个向量之间的某种关系。n维欧式空间中任意k个向量之间两两的内积所组成的矩阵,称为这k个向量的格拉姆矩阵(Gram matrix),很明显,这是一个对称矩阵。如下图:

        在深度学习的图像特征中,格拉姆矩阵可以看做feature之间的偏心协方差矩阵(即没有减去均值的协方差矩阵),在feature map中,每个数字都来自于一个特定滤波器在特定位置的卷积,因此每个数字代表一个特征的强度,而Gram计算的实际上是两两特征之间的相关性,哪两个特征是同时出现的,哪两个是此消彼长的等等。因此可以用于度量各个维度自己的特性以及各个维度之间的关系。内积之后得到的多尺度矩阵中,对角线元素提供了不同特征图各自的信息,其余元素提供了不同特征图之间的相关信息。这样一个矩阵,既能体现出有哪些特征,又能体现出不同特征间的紧密程度。     

基于在线图像优化的慢速图像重建方法(Slow Image Reconstruction based on Online Image Optimisation) 

        基于图像优化的方法是在图像像素空间做梯度下降来最小化目标函数,以Gary等人提出的经典算法为例,原理图如下:

        简单说便是输入一张随机噪声构成的底图,通过计算Style Loss和Content Loss,迭代update底图,使其风格纹理上与Style Image相似,内容上与原照片相似。论文用 Gram 矩阵来对图像中的风格进行建模和提取,再利用慢速图像重建方法,让重建后的图像以梯度下降的方式更新像素值,使其 Gram 矩阵接近风格图的 Gram 矩阵(即风格相似),然后,用VGG网络提取的高层feature map来表征图像的内容信息,通过使 VGG 网络对底图的提取的高层feature map接近目标图高层的feature map来达到内容相似。

        改方案迁移的图像效果还算不错,缺点就是慢。

基于离线模型优化的快速图像风格化迁移算法(Fast Neural Method Based On Offline Model Optimisation)

        该方案为了解决上面慢的问题,它的特点是首先使用数据集对某一种风格的图进行训练得到一个风格化模型,然后在使用的时候只需要将输入图经过一次前向传播就可以得到结果图。根据一个训练好的前向网络能够学习到多少个风格作为分类依据,这里可以将这一类算法再细分为单模型单风格(PSPM)、单模型多风格(MSPM)和单模型任意风格(ASPM)的快速风格化迁移算法

PSPM的快速风格迁移(Per-Style-Per-Model Fast Neural Method)

        这个模型可以分为两部分,Image Transform Net是图像转换网络,VGG16是损失网络。图像转换网络输入x,输出y,它和风格图ys,内容图yc经过同样的网络,分别计算风格损失和内容损失,注意这里的yc实际上就是输入图x。内容损失采用的是感知损失,风格损失与基于图像优化的方法一样采用Gram矩阵来定义

         值得一提的是,在最开始的风格迁移研究中都是采用 BN,但后来发现把 BN 替换成 IN (Instance Normalization) 的效果更好。IN 和 BN 的区别在于,IN 是针对每个样本标准化。

MSPM 的快速风格转移(Mutil-Style-Per-Model Fast Neural Method)

        上面的方案对于每一个风格都要训练一个模型,因此研究人员很快便开始研究单模型多风格框架。这个思路的解决方案就是发掘不同风格网络之间的共享部分,然后对新的风格只去改变其有差别的部分,并保持共享部分不变

这就是 Google Brain 的众大佬们研究出来的一个 MSPM 算法的基本思路 A Learned Representation for Artistic Style。他们发现在训练好的一个风格化网络基础上,只通过在 Instance Norlization 层上做一个仿射变换(他们起了个名字叫 Conditional Instance Normalization,简称 CIN),就可以得到一个具有完全不同风格的结果。因此把风格化网络中间的几层单独拎出来(文章中起了个名字叫 StyleBank 层),与每个风格进行绑定,对于每个新风格只去训练中间那几层,其余部分保持不变。就得到了MSPM方案。

单模型任意风格(ASPM)

        上面提到IN起到了一种风格标准化的作用,通过改变 IN 公式中的 γ 和 β 值可以实现不同风格的标准化,从而转换到特定风格。基于此作者提出了 AdaIN (Adaptive Instance Normalization),这也是论文最重要的内容。通过 AdaIN 可以实现任意风格迁移,例如给定内容图的特征 x 和风格图的特征 y,AdaIN 可以将 y 的风格迁移到 x 上,公式如下。

        公式中的 μ(y) 表示风格图的均值,σ(y) 表示风格图的方差,和 IN 公式中的 γ 和 β 对应,能够把内容图 x 转换成 y 的风格。模型结构如下:

        损失包括内容损失和风格损失两部分。内容损失的计算是比较AdaIN层的输出与最终的输出图之间的L2损失,风格损失则使用了VGG不同特征层的均值和方差的L2损失而不是使用基于Gram矩阵的损失,形式更加简单。 

 基于对抗生成网络的风格迁移

        这里主要讲一下StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation,在 starGAN 之前,也有很多 GAN模型 可以用于 image-to-image,比如 pix2pix(训练需要成对的图像输入),UNIT(本质上是coGAN),cycleGAN(单域迁移)和 DiscoGAN。而 starGAN 使用 一个模型 实现 多个域 的迁移,这在其他模型中是没有的,这提高了图像域迁移的可拓展性和鲁棒性。下图展示了在域迁移中 传统GAN 的做法和 starGAN 的做法的区别:

       

左边是 传统的GAN,右边是 starGAN。传统的域迁移 需要在不同的两个域之间相互进行特征提取,这就导致在有 k 个域的情况下需要 k(k-1) 个生成器。而 starGAN 则解决了这个问题,自始至终只需要一个生成器。网络结构如下:

         对于判别器,它的输入是一张图片,它需要去鉴别出这张图片是真实图片还是生成器产生的图片,同时它还需要分辨出这张输入的图片来自哪种风格的。损失由两部分loss组成:对抗损失和域分类损失;

        对于生成器,它有两个输入,分别是目标风格和输入图片,它的输出是一张符合目标风格的图片。生成器损失由三部分构成:对抗损失和域分类损失和重构损失。域分类损失的权重系数设置为1,重构损失的权重系数设置为10

参考资料: 

图像风格迁移_Arwin(Haowen Yu)的博客-CSDN博客_图像风格迁移

【计算摄影】浅析图像风格迁移背后的核心技术 - 知乎

格拉姆矩阵(Gram matrix)详细解读_张博208的博客-CSDN博客_格拉姆矩阵

【生成对抗网络】starGAN 详细解读___阿健__的博客-CSDN博客_stargan

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精品spring boot+MySQL新冠物资管理系统vue

《spring bootMySQL新冠物资管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 使用技术: 操作系统:Windows 10、Windows 7、Windows 8 开发语言:Java 使用框架:spring boot 前端技术&…

人乳铁蛋白:艾美捷Kamiya ELISA试剂盒解决方案

乳铁蛋白是一个分子量为80 kDa的铁结合糖蛋白,属于转铁蛋白家族 [1] 。乳铁蛋白在初乳和牛奶中含量高,在眼泪、唾液、和支气管分泌物、胆汁和胃肠液等粘膜分泌物中的含量较低。此外,乳铁蛋白也是中性粒细胞的组成成分。 1939年Sorensen等人在…

java计算机毕业设计springboot+vue健康体检信息管理系统

项目介绍 随时代变化,中国作为一个经济发展快速,人口基础较为庞大的国家,健康体检产业发展迅速。健康体检也基本上成为了每家每年必须要考虑的事情。在用户群体的规模如此庞大的基础上,以健康体检为主要内容的行业应运而生,并且随着用户数量的不断增加,其规模也随之不断发展。…

java实现延时处理

业务场景: 1、生成订单30分钟未支付,则自动取消,我们该怎么实现呢? 2、生成订单60秒后,给用户发短信 延时任务和定时任务的区别: 定时任务有明确的触发时间,延时任务没有;定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期;定时任务一般执行的…

大三Web课程设计(可以很好的应付老师的作业) 家乡主题网页设计 我的家乡广州

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

【Redis】介绍

文章目录NoSQL 数据库Redis 数据库配套视频课: https://www.bilibili.com/video/BV1Rv41177Af/NoSQL 数据库 1、NoSQL 定义 NoSQL(Not Only SQL)泛指非关系型数据库。NoSQL不依赖业务逻辑方式存储,而以简单的key-value模式存储&…

27K测试老鸟6年经验的面试心得,四种公司、四种问题…

这里总结了下自己今年的面试情况 先说一下自己的个人情况,普通二本计算机专业毕业,懂python,会写脚本,会selenium,会性能。趁着金三银四跳槽季,面试字节跳动测试岗技术面都已经过了,本来以为是…

阿里云弹性公网ip如何从包年包月转换为按量付费(按使用流量计费)?

开通包年包月的弹性公网ip后,想将计费方式转换为按量付费(按使用流量计费)的,应该如何操作呢? 操作流程如下: 第一步,包年包月转换为按量付费(按固定带宽计费)。 1.登录…

【C++11】基础改变

1.关于C11的介绍 C11标准为C编程语言的第三个官方标准,正式名叫ISO/IEC 14882:2011 - Information technology -- Programming languages -- C 。 在正式标准发布前,原名C0x。它将取代C标准第二版ISO/IEC 14882:2003 - Programming languages -- C 成为C…

上线3天,下载4万,ChatGPT中文版VSCode插件来了

ChatGPT 这几天可谓是风头无两。作为一个问答语言模型,它最大的优点就是可以回答与编程相关的问题,甚至回复一段代码。 尽管有人指出 ChatGPT 生成的代码有错误,但程序员们还是对它写代码、找 bug 的功能很感兴趣,有人还给 VScode…

一千字认识NodeJS

在学习Node.js时,发现一处课程通过介绍网站开发来引入Node.js的思路很有意思,在此将整个过程以自己的理解记录了下来,供大家学习交流😀😀😀 前端和后端 众所周知,前端程序yuan通常写的是浏览器…

数据库--------用户的授权

目录 授权例1例2例3例4例5收回例1例2例3授权 GRANT语句格式: GRANT <权限> [,<权限>]

SpringBoot打的jar包瘦身

文章目录正常打包瘦身方法一&#xff1a;Dloader.path指定依赖包位置瘦身方法二&#xff1a;配置文件里指定依赖包位置正常打包 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plu…

Talk预告 | 香港理工大学计算机系助理教授杨波:无监督2D/3D物体实例分割

本期为TechBeat人工智能社区第462期线上Talk&#xff01; 北京时间12月14日(周三)20:00&#xff0c;香港理工大学计算机系助理教授——杨波的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “无监督2D/3D物体实例分割”&#xff0c;届时将介绍香港理…

PyTorch深度学习框架学习记录(1)--安装,MNIST手写数字识别

文章目录框架发展安装cpu版本GPU版本学习记录MNIST手写数字识别数据的准备工作框架发展 Caffe框架&#xff08;2015&#xff09; 优势&#xff1a;只写配置文件 劣势&#xff1a;运行环境配置繁琐 Tensorflow 1.x&#xff08;2016&#xff09; 开发成本高&#xff0c;上手较…

正则表达式教程

视频&#xff1a;null正则表达式进阶是正则表达式30分钟入门40分钟进阶&#xff08;绝对能学会&#xff09;的第2集视频&#xff0c;该合集共计2集&#xff0c;视频收藏或关注UP主&#xff0c;及时了解更多相关视频内容。https://www.bilibili.com/video/BV19t4y1y7qP/?p2&…

如何用3D流体实现逼真水流效果?

华为应用市场在2022年HDC大会期间发布了一款3D水流主题&#xff0c;基于华为HMS Core Scene Kit服务能力&#xff0c;展现立体灵动的水流岛屿&#xff0c;可跟随用户指尖实现实时流体波动效果&#xff0c;既趣味又解压。 让变幻莫测的物质来实现我们在影视和游戏等多种应用场景…

sentinel 规则持久化

原始模式 如果不做任何修改&#xff0c;Dashboard 的推送规则方式是通过 API 将规则推送至客户端并直接更新到内存中&#xff1a; 这种做法的好处是简单&#xff0c;无依赖&#xff1b;坏处是应用重启规则就会消失&#xff0c;仅用于简单测试&#xff0c;不能用于生产环境。 se…

【Android】数据存储

一、文件存储 特点&#xff1a;openFileInput()和openFileOutput()读取设备上的文件。 优点&#xff1a;适用于存储大量的数据&#xff0c;可以存储图片、视频、文本等数据。 缺点&#xff1a;如果采用内部存储的方式&#xff0c;存储过量的数据可能会导致内存的不足&#xff…

2022年度手机行业排行榜(年度手机行业分析)

如今&#xff0c;随着手机普及率的不断增长&#xff0c;当前手机市场在逐渐饱和。在这一的态势下&#xff0c;手机行业中细分市场成为发展的必然趋势&#xff0c;随着市场细分和目标人群锁定的不断明确&#xff0c;手机市场中中小品牌手机的生存空间在逐渐被挤压&#xff0c;手…