固定风格任意内容的快速风格迁移(讲解网络模型部分)

news2024/11/26 14:39:41

目录

  • 一、目标:求出一个某种固定风格图像转换网络
  • 二、对比一下:v1算法和v2算法的区别在哪里?
  • 三、参数
  • 四、v2算法的优点
  • 五、图像风格转换算法的扩展性
  • 六、网络细节(该算法的特点)
  • 七、参考资料

在这里插入图片描述

下面我们统一把:「固定风格任意内容的快速风格迁移算法」称为v2算法,「固定风格固定内容的快速迁移算法」称为v1算法。具体可以看看 参考资料 里面的 风格迁移三部曲。

一、目标:求出一个某种固定风格图像转换网络

  • fw是 v2 算法的结果,通过这个v2算法,可以求解出一个图像转换的网络,这个网络可以让我们在预测的时候,输入任何一个图像,然后经过Image Transform Net的正向传播,就可以得到图像转换后的结果,y-hat,这个是v2算法得到的结果。
  • 那么这个网络是如何去train的呢?
    • 首先,依然是利用预训练好的VGG16的预训练卷积网络,x是输入的原图像(内容图像),内容图像经过Image Transform Net之后,会得到一个输出,跟内容图像是一个同等大小的输出y-hat
    • y-hat对应的就是在v1算法中的结果图像,结果图像输入到VGG16中去,同时将内容图像yc 和风格图像 ys,输入到网络中去,然后去计算损失函数,在v1算法中,是没有x输入到Image Transform Net这部分,只是随机初始化一个y,然后进行训练,在v2算法中,y并不是随机初始化的,而是由我把内容图像输入到Image Transform Net中去,然后去得到的这个y,所以对这个y进行训练,就相当于是训练 Image Transorm Net这个网络,而不是去train这个y了。

这就是图像风格转换的v2算法。

二、对比一下:v1算法和v2算法的区别在哪里?

  • 核心区别就是这个y-hat的来源,在v1算法中,这个y-hat是随机初始化的,而在v2算法中,这个y-hat是经过转换网络经过转换得到的,所以在v2算法中,这个y-hat相当于转换网络的一个函数。然后对y进行求导,也就是去调整一下这个网络,从而学到一种,专门针对某种图像风格转换网络
  • 在v2这个训练过程中呢?我们只能是一次给一个风格去train一个网络,也就是这个Image Transform Net对应的是一种风格,在训练当中,保持风格图像不变,可以去切换内容图像,也可以不切换,然后去train这个网络,然后就得到了针对这个风格的transform Net。
  • 计算损失函数的时候,都是通过训练好的VGG16去提取它的内容特征和风格特征,然后去做其它的损失函数,内容损失和风格损失都是加权平均得到的。
  • 在固定风格固定内容的图像风格迁移里面的话,输入VGG网络的这个y-hat直接随机初始化得到的,是没有 Image Transform Net这个网络的,那么在这里加入了这个 Image Transform Net网络,那么后面在预测的时候,就直接输入内容图像x,经过 Image Transform Net这个网络就会被转换得到风格迁移后的图像,预测的时候,就不用再经过VGG16,像固定风格固定内容的图像风格迁移,没有这个 Image Transform Net网络,就还得去初始化、经过VGG网络,多次运行梯度下降的方法,这样就会使得整体的效率非常低,相比之下这里进行预测只需要计算一次就可以了,所以会更加节省资源。

三、参数

训练:

  • x是要转换的图像
  • ys是风格图像
  • yc是内容图像
  • x=yc

预测:

  • 输入新图像
  • 经过transformer
  • 得到转换结果

将x输入到中间 Image Transform Net这个网络中,得到y-hat,y-hat再输入到训练好的VGG网络中去,去提取它的内容特征和风格特征,然后去做其它的损失函数,内容损失和风格损失都是加权平均得到的。


四、v2算法的优点

  • 因为你转来转去,都是只要转固定一张图片的风格,那就直接把这张图片的风格给保存下来就行(用Image Transform Net去保存风格),下次直接扔进去转换就行,这样多方便。

五、图像风格转换算法的扩展性

请添加图片描述

同样的网络,稍微变动一下,还可以做图像超清化,因为是图像超清化,所以把ys给去掉,也没有风格损失,x可以是低分辨率的图像,yc是高分辨率的图像,x输入到Image Transform Net中去,假设它能够学习到从低分辨率图像到高分辨率图像的映射,这个映射就是y-hat,同样把y-hat和yc输入到VGG16中去,去计算损失函数,这样经过很多组,这里y和yc是一对图像,低分辨率图像和高分辨率图像,可以输入很多不同的低分辨率图像,和对应的高分辨率图像,训练之后,就可以train出来一个Image Transform Net转换器,这样,同样的一个网络,稍微地做了一下改动,就可以用在其它的任务上。

六、网络细节(该算法的特点)

  • 不使用pooling层,使用strided 和 fractionally strided卷积来做downsampling 和 upsampling。
    • strided就是说卷积的步长为1的时候,图像输入和输出的sized是不会发生成倍的变化的
    • 当strided=2的时候,那么也会发生那种图像sized长宽各占一半的效果,而这种在卷积层上的效果,比pooling层能够保存更多的信息,所以对于这样一个图像生成网络来说,一般会使用strided=2的卷积层来代替pooling层,从而可以保存更多的信息,然后因为图像变小了之后,还是要把它放大回来,fractionally strided就相当于是strided的逆操作。
    • strided = 2的时候,是下采样,图像会变小,strided = 1/2的时候,是上采样,图像会变大,然后使用卷积会比pooling层保存更多的信息
  • 在Image Transform Net中使用了五个residual blocks,也就是残差连接,残差连接在网络结构的那一章已经讲过了,它是一个什么样的结构,在生成问题上使用残差连接,可以有一个好处:残差连接至少是一个恒等连接,比如说:回忆一下残差连接的结构,y = x + f(x),所以说y至少可以等于x,当f(x)=0的时候,所以这样的结构,能够保持输入图像中更多的信息,本来卷积神经网络的卷积,每一层都要保存图像的所有信息,这样才能够使得图像一层一层往下传,传到卷积的后面,不会和图像信息有所消失,那么使用残差连接的时候,天然地就有y = x + f(x),y = x就使得我能够有能力保存所有的图像信息,f(x)就可以从图像中学习更多的信息
  • 那在生成问题中呢,比如说是图像超清化问题,图像的低分辨率图像和高分辨率图像它们相差的信息其实并没有那么多,它们共享的信息有很多,所以高分辨率图像中有许多需要用低分辨率图像中的信息去填充,使用residual blocks能够保存更多的信息,

七、参考资料

  • 神经网络风格迁移讲解视频
  • 风格迁移三部曲

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

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

相关文章

《计算机网络——自顶向下方法》精炼——4.3.1-4.4.1

学习和研究好比爬梯子,要一步一步地往上爬,企图一脚跨上四五步,平地登天,那就必须会摔跤了。——华罗庚 文章目录 路由器工作原理输入端口概述交换结构概述输出端口何处出现排队路由选择控制平面 网际协议:因特网中的转发和编址数据报格式IP数据报分片 路由器工作原…

29 # node 中的 eventloop

process.cwd cwd:current working directory 表示当前用户的工作目录(这个目录可以更改用户自己切换即可) 当用户在哪执行 node 命令,就去哪找配置文件 console.log(process.cwd());__dirname:表示当前文件所在的目…

【计算机网络】网络编程套接字(一)

目录 1.预备知识 1.1.理解源IP地址和目的IP地址 1.2.认识端口号 1.2.1.理解"端口号"和"进程ID" 1.2.2.理解源端口号和目的端口号 1.3.认识TCP/UDP协议 1.3.1.TCP协议 1.3.2.UDP协议 1.4.网络字节序 网络字节序和主机字节序的转换 2.socket编程接…

8B/10B编码

8B/10B编码 8B/10B编码介绍实现方式8b/10b编码中的编码表和字节编码RD控制符号 8B/10B编码 介绍 8b/10b编码是将8位符号映射到10位符号,以实现直流平衡,同时提供足够多的状态来实现时钟恢复。这意味着在一个至少20位的字符串中,1和0的计数之…

[论文阅读笔记74]The Power of Scale for Parameter-Efficient Prompt Tuning

1. 基本信息 题目论文作者与单位来源年份The Power of Scale for Parameter-Effificient Prompt TuningBrian Lester等googleConference on Empirical Methods in Natural Language Processing2021 857 Citations 论文链接:https://arxiv.org/abs/2104.08691 论…

配置SSH远程登录和免密登录

上一篇我们已经讲了如何配置修改Linux的主机名和网络设置,这一篇我们来讲一下配置Linux的SSH免密登录。   首先讲一下我们为什么要配置SSH 免密登录,通过VMware Workstation工具操作虚拟机十分不方便,无法复制内容到虚拟机中,也…

Python使用多进程并行加速业务操作 完整代码

Python使用多进程并行加速业务操作 完整代码 需求分析 完整代码 本demo性能分析 Python中单线程、多线程和多进程的效率对比实验 需求分析 最近在对一个数据集进行处理,共2000条,每条去调一个第三方接口,耗时7-10秒。单线程处理一次要3.…

Vue - 项目编译速度、性能优化、打包体积优化

GitHub Demo 地址 在线预览 Vue - 项目编译速度、性能优化、打包体积优化 序一、编译速度优化1、使用缓存1.1、缓存插件 - HardSourceWebpackPlugin1.2、webpack5 配置cache1.3、cache-loader 插件 2、合理使用source-map3、多线程打包3.1、thread-loader3.2、parallel-webpac…

阿里5面,成功唬住面试官拿了21K,面试也没有那么难吧....

阿里的面试挺独特,每轮面试都没有 HR 约时间,一般是晚上 8 点左右面试官来一个电话,问是否能面试,能的话开始面,不能就约一个其它时间。 全程 5 面,前四面技术面,电话面试,最后一面…

吴恩达 ChatGPT Prompt Engineering for Developers 系列课程笔记--08 Chatbot

08 Chatbot ChatGPT的一种重要功能是作为一个聊天机器人,本节将展示如何和ChatGPT进行对话 1) 不同的角色(Roles) 前面几节的课程中,我们通过如下函数调用ChatGPT的接口,输入用户输入的prompt,返回模型生…

第二章硬件入门之电容

第二章硬件入门之电容 文章目录 第二章硬件入门之电容一、电容是什么?二、实际应用场景常见电容:1.陶瓷电容(无正负极之分)1、旁路2、去耦 2.铝电解电容贴片式插件式3.安规电容x电容Y电容 总结 一、电容是什么? **电容…

【kernel exploit】CVE-2022-2602 UNIX_GC错误释放io_uring注册的file结构-UAF

本文主要参考 [漏洞分析] CVE-2022-2602 io_uring UAF内核提权详细解析 并做一些补充。 影响版本&#xff1a;Linux Kernel < v6.0.3。v6.0.3已修复。 测试版本&#xff1a;Linux-v6.0.2 &#xff08;v6.0.2 测试失败&#xff0c;v5.18.19测试成功&#xff09; exploit及测…

React Fiber 使用 MessageChannel + requestAnimationFrame 模拟实现 requestIdleCallback

由于 requestIdleCallback 兼容性较差且不支持 Safari&#xff0c;React Fiber 需要实现一个 requestIdleCallback polyfill 做浏览器兼容&#xff1b; MDN RequestIdleCallbackMDN RequestAnimationFrameMDN MessageChannel 以下为其使用 MessageChannel requestAnimationF…

vivado中ila的使用方法记录

ILA工具生成方法 一、 ILA工具介绍 在FPGA的开发中&#xff0c;当完成代码设计后&#xff0c;为了验证代码的准确性和各种不同条件下的可靠性&#xff0c;往往需要优先想到通过逻辑仿真进行相关验证。使用逻辑仿真进行验证虽然可以周密的考虑给出不同输入条件下的输出结果或交…

“智慧赋能 强链塑链”—— 汽车行业供应链管理数字化应用探讨

01车企供应链数字化的必要性 汽车供应链是一个复杂的系统&#xff0c;很多汽车企业因为供应链管理不当&#xff0c;造成资源浪费、成本高、客户满意度低等一系列问题&#xff1b;而汽车行业规模技术门槛高、配合协同复杂的特性&#xff0c;决定了其供应链缺口无法在短时间内填…

Three.js系列-报错export ‘Geometry‘ (imported as ‘THREE‘) was not found in ‘three‘

今天遇到报错export ‘Geometry’ (imported as ‘THREE’) was not found in ‘three’ port Geometry (imported as THREE) was not found in three (possible exports: ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, …

为什么大家都不用postman而选择 Apifox呢?

丢掉 Postman&#xff0c;Apifox 更香 作为开发者&#xff0c;丢掉 Postman 和 Jmeter吧&#xff0c;这款国产 API 工具更香&#xff0c;更安全&#xff01;一键即可导入 Postman 数据&#xff01; 一、Apifox 是什么&#xff1f; 1、Apifox 定位 Apifox Postman Swagger …

Altium Designer(AD)局域网内使用解冲突

1. Altium Designer 版本 AD15.0.8&#xff0c;电路设计软件&#xff0c;硬件工攻城狮必备技能&#xff0c;软件攻城狮也要会一点点 2. AD软件出现“Your license is already used on computer “LAPTOP-F99R6OR1” using product “AltiumDesigner” 用同事的安装包解压安装的…

Mysql 索引详细解析——底层->应用

1、索引的数据结构 1.1 概述 索引&#xff08;index&#xff09;是帮助Mysql高效获取数据的数据结构。 索引的本质&#xff1a; 索引是数据结构。简单理解为“排好序的快速查找数据结构”&#xff0c;满足特定查找算法。这些数据结构以某种方式指向数据&#xff0c; 这样就可…

期末计算机网络知识点总结

开篇提示: 因为博主图床使用的是GitHub进行存储的&#xff0c;因此当出现图片无法加载&#xff0c;可以尝试更换网络&#xff0c;或者用其他上网方法。当时想用 Gitee进行存储&#xff0c;但一直失败&#xff0c;过一段时间再试几次。目前这篇博文会一直更新&#xff0c;补充新…