风格迁移-StyTr 2 : Image Style Transfer with Transformers
风格迁移-StyTr 2 : Image Style Transfer with Transformers
论文链接:Image Style Transfer with Transformers
源码链接:StyTR-2
文章目录
- 风格迁移-StyTr 2 : Image Style Transfer with Transformers
- StyTR架构图
- 图像内容编码器
- 内容感知位置编码(CAPE,Content-Aware Positional Encoding)
- 风格图像编码器
- 图像和风格融合解码器
- 图像解码器
- 损失函数
- 内容感知损失(Content Perceptual Loss, Lc)
- 风格感知损失(Style Perceptual Loss, Ls)
- 身份损失 1(Identity Loss 1, Lid1)
- 身份损失 2(Identity Loss 2, Lid2)
- 总损失函数(Total Loss, L)
StyTr的核心创新在于将Transformer应用到图像风格迁移任务中。传统的风格迁移方法多基于卷积神经网络(CNN),而StyTr引入了Transformer的注意力机制,能够捕捉图像的全局依赖关系,并在迁移过程中实现更细腻的风格融合。
StyTR架构图
主要由四部分组成:图像内容编码器(b图中黄色区域),风格图像编码器(上面Style value区域),图像和风格融合解码器(Transformer decoder),图像解码器(最后decoder)。下面将从这四个部分介绍这个模型,并且每一部分有什么创新点。
图像内容编码器
主要黄色区域,这一部分直接使用transformer的注意力机制,但是有些不同的是,这里位置编码的嵌入与传统的位置编码不同,传统的位置编码多使用正余弦函数只考虑像素之间的相对距离,本篇论文中则采用内容感知位置编码(CAPE,Content-Aware Positional Encoding)来实现的位置编码的嵌入。
内容感知位置编码(CAPE,Content-Aware Positional Encoding)
内容感知位置编码(CAPE,Content-Aware Positional Encoding)的核心思想是,为图像风格迁移任务引入一种更加灵活和适应性的位置信息编码方式。相比于传统的正弦位置编码(sinusoidal PE)只考虑像素之间的相对距离,CAPE还基于图像的语义内容来调整位置编码。这样可以确保在风格迁移任务中,不同尺度的图像仍然能保持一致的空间关系。
CAPE的工作原理
内容感知:CAPE根据图像的语义内容生成位置信息。它不仅考虑每个块的相对位置,还考虑了图像的内容信息(例如颜色、纹理、物体的形状等),这样能让模型更好地保持图像的结构,并在风格迁移过程中得到更自然的结果。
尺度不变性:风格迁移涉及不同尺度的图像,而传统的位置编码在处理不同大小的图像时会有一定局限。CAPE通过重新调整位置编码的大小(使用一个固定大小的编码矩阵,比如18×18,然后根据图像的大小进行缩放),确保无论图像大小如何,其空间关系不会改变。这种做法解决了不同尺度图像之间的空间不一致性问题。
CAPE的原理是让位置编码不再只依赖于像素之间的距离,而是通过引入图像的语义内容来使编码更加智能和灵活。这种方法可以在风格迁移中保持图像的空间结构一致性,同时适应不同大小的图像,从而得到更好的风格迁移效果。
风格图像编码器
在风格迁移任务中,风格编码器的主要作用是将输入的风格图像转化为一个特征表示序列,从而能够与内容图像的特征进行融合,完成风格迁移。风格编码器的处理方式与内容编码器类似,但有一个重要的不同点:风格编码器不考虑位置编码。
**原因:**与内容图像不同,风格图像的空间结构在风格迁移任务中并不需要严格保持。也就是说,风格图像的每个部分(比如颜色、纹理等)的具体位置并不重要,重要的是这些特征本身。因此,风格编码器不需要为风格图像加入位置编码。这样做的目的是为了让模型更加自由地将风格特征应用到内容图像的不同部分,而不必受到空间位置的限制。
图像和风格融合解码器
主要是将图像特征与风格特征相融合。
输入Transformer解码器:内容序列 (Yc)+风格序列 (Ys)
生成查询、键和值
在Transformer中,解码器使用内容序列和风格序列生成三组关键数据:
查询 (Q):用内容序列 Yc 生成,具体为 YcWq,其中 Wq是一个学习到的权重矩阵。
键 (K) 和 值 (V):用风格序列 Ys 生成,分别为 YsWk和 YsWv,其中 Wk和 Wv是另外两个学习到的权重矩阵。
计算Transformer解码器的输出
图像解码器
整个CNN解码器的流程是为了从Transformer解码器输出的低分辨率特征序列中生成高质量的风格迁移图像。通过三层卷积层的逐步上采样和细化处理,模型能够更好地恢复图像中的细节,并最终输出一个符合期望风格和内容的高分辨率图像。
虽然可以直接将这个特征序列上采样回到原始图像的分辨率,但为了得到更精细的结果,作者选择使用一个三层的CNN解码器来进一步优化和细化特征。直接上采样可能导致结果粗糙,细节不足,因此需要卷积操作来增强局部信息和细节。
三层CNN解码器的结构
这个三层的CNN解码器用于逐步扩展图像的尺寸,并将特征转换为最终的RGB图像。具体的操作包括:
- 3x3卷积 (Conv):每一层首先进行3x3卷积操作。3x3卷积核能够很好地提取局部特征,帮助增强细节。
- ReLU激活函数:每层卷积后使用ReLU(修正线性单元)激活函数。ReLU通过引入非线性,有助于网络捕捉更复杂的特征。
- 2倍上采样 (Upsample):在每一层中,通过上采样操作将特征图的尺寸扩展一倍。这种逐步上采样的方法有助于逐渐恢复图像的高分辨率结构,同时保持细节。
损失函数
损失函数主要由四个组成:内容感知损失(Content Perceptual Loss, Lc)、风格感知损失(Style Perceptual Loss, Ls)、身份损失 1(Identity Loss 1, Lid1)、身份损失 2(Identity Loss 2, Lid2)构成总损失函数。说明Io表示输出图像,Ic表示内容图像,Is表示风格图像。
内容感知损失(Content Perceptual Loss, Lc)
风格感知损失(Style Perceptual Loss, Ls)
身份损失 1(Identity Loss 1, Lid1)
身份损失 2(Identity Loss 2, Lid2)
总损失函数(Total Loss, L)
需要源码讲解可以联系我
相关文章:

风格迁移-StyTr 2 : Image Style Transfer with Transformers
风格迁移-StyTr 2 : Image Style Transfer with Transformers 论文链接:Image Style Transfer with Transformers 源码链接:StyTR-2 文章目录 风格迁移-StyTr 2 : Image Style Transfer with TransformersStyTR架构图图像内容编码器内容感知位置编码&…...
上百种【基于YOLOv8/v10/v11的目标检测系统】目录(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)
待更新(持续更新),早关注,不迷路............................................................................... 目标检测系统操作说明【用户使用指南】(pythonpyside6界面系统源码可训练的数据集也完成的训练模型ÿ…...

记录搜罗到的Matlab 对散点进行椭圆拟合
需要基于一些散点拟合椭圆估计并计算出椭圆的参数和周长,搜罗到直接上代码 (1)有用的椭圆拟合及参数计算函数 function W fitellipse(x,y) % 构造矩阵 D [x.*x, x.*y, y.*y, x, y,ones(size(x))]; S D*D; G zeros(6); G(1,3) 2; G(3,1)…...

分享我最近使用《柬埔寨语翻译通》App的体验,不会说高棉语也能去柬埔寨旅游,畅通无阻!
最近,我尝试了一款名为《柬埔寨语翻译通》的应用程序,它旨在帮助用户进行中文和高棉语之间的翻译。以下是我使用这款应用的一些体验和感受。 双向翻译功能:我首先测试了它的翻译功能。《柬埔寨语翻译通》能够将中文翻译成高棉语,反…...

文本语义检索系统的搭建过程,涵盖了召回、排序以及Milvus召回系统、短视频推荐等相关内容
大家好,我是微学AI,今天给大家介绍一下本文详细介绍了文本语义检索系统的搭建过程,涵盖了召回、排序以及Milvus召回系统的相关内容。通过使用PyTorch框架,我们提供了样例代码,以帮助读者更好地理解和实践。该系统具有广…...
redis在项目中运用(基础)
mysql学完命令之后,学过jdbc。 redis也要使用Java连接redis数据库 1.Jedis 2.RedisTemplate[重点] 1、Jedis【了解】 jedis是redis的java版本的客户端实现,jedis中提供了针对redis命令的操作 1.1导入jar文件 Maven方式 <dependency><group…...

libaom 源码分析系列:svc_encoder_rtc.cc 文件
源码函数关系 文件功能:实现 AV1 svc 编码的 RTC 功能 demo文件位置:libaom/examples/svc_encoder_rtc.cc文件内函数关系图: 结构体 AppInput:svc_encoder_rtc.cc 所属 demo 的结构体,作为从命令行接受参数的结构体;AvxVideoWriter:输出视频写入结构体;aom_codec_enc_c…...
MySQL备份和还原,用mysqldump、mysql和source命令来完成
MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。 mysqldump命令使用方法 1运行 | cmd |利用 cd C:\Program Files\MySQL\MySQL Server 9.0\bin”命令进入bin文件夹 2输入命令 mysqldump -h127.0.0.1 -P3306 -uroot -pQWERTY zssjkcf>d:123.sql mysqldump -…...

MySQL Server、HeidiSQL(MySQL 数据库工具)
目录 一、MySQL Server (一)官网下载 (二)安装与配置 二、HeidiSQL软件 (一)安装 1. 官网下载 2. 打开 3. 使用 (1)打开服务 (2)新增数据库 ÿ…...
矩阵相关算法
矩阵旋转90度 给定一个 n n 的二维矩阵 matrix 表示一个图像,请你将图像顺时针旋转 90 度。 #include <iostream> #include <vector>using namespace std;void rotate(vector<vector<int>>& matrix) {int n matrix.size();// 第一步…...
微信小程序-封装通用模块
文章目录 微信小程序-封装通用模块封装toast和modal封装storage封装网络请求 微信小程序-封装通用模块 封装toast和modal /** 提示消息框 */ function toast({title "数据加载中",icon "none",duration 2000,mask true, }) {wx.showToast({title,ico…...

Modnet 人像抠图(论文复现)
Modnet 人像抠图(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 Modnet 人像抠图(论文复现)论文概述论文方法复现WebUI部署 论文概述 人像抠图(Portrait matting)旨在预测一个精确的 alpha 抠图,可以用…...

利用session机制造测试账号,无需前端也可以测试后端接口
适用场景:我们在测试的时候经常会遇到前端还没有开发完毕,后端已经结束开发了,但是后端的有些接口是需要特定的账号身份调用才会生效,此时因为前端未开发完毕,所以我们不能通过web页面进行登录,那么如何解决…...
JAVA_18
JAVA_18 1.IO流2.JAVA_IO流3.标准输入输出4.对象序列化5.字符编码与字符集6.异常处理和资源关闭 1.IO流 IO流(Input/Output stream)是用于在程序和外部设备(如文件、网络等)之间进行数据传输的机制。它是Java中处理输入和输出操作的一种抽象方式。概念: 输入流(Input Stream):…...

Linux升级openssl版本
Linux升级openssl版本 服务器编译依赖库检查 $ yum -y install gcc gcc-c make libtool zlib zlib-devel版本检测 $ openssl version OpenSSL 1.0.1e-fips 11 Feb 2013 $ ssh -V OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013下载openssl 地址:https://www.o…...

多态对象的存储方案小结
某个类型有几种不同的子类,Jackson中的JsonTypeInfo 和JsonSubTypes可以应对这种情形,但有点麻烦,并且name属性必须是字符串、必须用Jackson为基础的json工具类对json字符串和对象进行序列化和反序列化。用过一次这种方案后边就不想再用了。 …...
Linux 之 nano 编辑器
使用git提交的时候,发生冲突或要记录相关信息时会弹出nano这个编辑器。 nano [选项] [[行,列] 文件名]... nano[必要参数][选择参数][文件] 命令行白的部分是组合键,后面的则是该组合键的功能。指数符号(^)代表的是键盘的[ctrl]按键,(M)表示…...
zipkin启动脚本并指定mysql数据存储
#!/bin/bash# 配置部分 ############################################################## Zipkin JAR 文件的名称 # 这里指定了 Zipkin 的可执行 JAR 文件,确保该文件在当前目录中可用。 ZIPKIN_JAR"zipkin-server-2.23.2-exec.jar"# PID 文件的位置 # 该…...

超越GPT-4的视觉与文本理解能力,开源多模态模型领跑者 - Molmo
Molmo是由艾伦人工智能研究所(Ai2)发布的一系列多模态人工智能模型,旨在提高开放系统在性能上与专有系统(如商业模型)之间的竞争力。以下是对Molmo的详细总结: Molmo是什么: Molmo是基于Qwen2和…...
输入输出--I/O流【C++提升】()
1.1基础知识: 在C中,输入输出(IO)流是通过标准库中的 <iostream> 头文件来处理的。C 提供了几种基本的输入输出流类,最常用的有以下几种: std::cin:用于输入。std::cout:用于…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...

【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...
C++ 类基础:封装、继承、多态与多线程模板实现
前言 C 是一门强大的面向对象编程语言,而类(Class)作为其核心特性之一,是理解和使用 C 的关键。本文将深入探讨 C 类的基本特性,包括封装、继承和多态,同时讨论类中的权限控制,并展示如何使用类…...