风格迁移-StyTr 2 : Image Style Transfer with Transformers

news2024/11/26 21:36:34

风格迁移-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的工作原理

  1. 内容感知:CAPE根据图像的语义内容生成位置信息。它不仅考虑每个块的相对位置,还考虑了图像的内容信息(例如颜色、纹理、物体的形状等),这样能让模型更好地保持图像的结构,并在风格迁移过程中得到更自然的结果。

  2. 尺度不变性:风格迁移涉及不同尺度的图像,而传统的位置编码在处理不同大小的图像时会有一定局限。CAPE通过重新调整位置编码的大小(使用一个固定大小的编码矩阵,比如18×18,然后根据图像的大小进行缩放),确保无论图像大小如何,其空间关系不会改变。这种做法解决了不同尺度图像之间的空间不一致性问题。

CAPE的原理是让位置编码不再只依赖于像素之间的距离,而是通过引入图像的语义内容来使编码更加智能和灵活。这种方法可以在风格迁移中保持图像的空间结构一致性,同时适应不同大小的图像,从而得到更好的风格迁移效果。

风格图像编码器

在风格迁移任务中,风格编码器的主要作用是将输入的风格图像转化为一个特征表示序列,从而能够与内容图像的特征进行融合,完成风格迁移。风格编码器的处理方式与内容编码器类似,但有一个重要的不同点:风格编码器不考虑位置编码

**原因:**与内容图像不同,风格图像的空间结构在风格迁移任务中并不需要严格保持。也就是说,风格图像的每个部分(比如颜色、纹理等)的具体位置并不重要,重要的是这些特征本身。因此,风格编码器不需要为风格图像加入位置编码。这样做的目的是为了让模型更加自由地将风格特征应用到内容图像的不同部分,而不必受到空间位置的限制。

图像和风格融合解码器

主要是将图像特征与风格特征相融合。

  1. 输入Transformer解码器:内容序列 (Yc)+风格序列 (Ys)

  2. 生成查询、键和值

    • 在Transformer中,解码器使用内容序列和风格序列生成三组关键数据:

    • 查询 (Q):用内容序列 Yc 生成,具体为 YcWq,其中 Wq是一个学习到的权重矩阵。

    • 键 (K)值 (V):用风格序列 Ys 生成,分别为 YsWk和 YsWv,其中 Wk和 Wv是另外两个学习到的权重矩阵。

  3. 计算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)

在这里插入图片描述

需要源码讲解可以联系我

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

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

相关文章

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…

服务器部署‌Traefik 实现子级域名路由服务(对外子域名80,路由对内大端口)

文章目录 1.‌Traefik安装2.启动nginx配置路由 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 前言,领导让我调研在线发布得…

Cocos Creator 原生Android项目打 aab 包,升级到Android14(API 34)

注意:打aab包的前提是需要配置对应gradle文件。这里我简单说下,我这边做的。 1.setting.gradle文件中配置 include ‘:asset_pack’ 。如下图 2.找到对应的 asset_pack 的 gradle文件,一定要改assetPack。如下图: deliveryType = “install-time” //PAD资源分发 安装时分…

LiveGBS流媒体平台GB/T28181常见问题-视频服务器有多个IP多个网段的时候如何配置摄像头下级平台接入多网段收流?

LiveGBS常见问题视频服务器有多个IP多个网段的时候如何配置摄像头下级平台接入多网段收流? 1、背景2、查看设备的出口IP3、默认收流地址配置4、其它网络设备收流配置5、搭建GB28181视频直播平台 1、背景 服务器部署的时候,可能有多个网卡多个网段。Live…

常见webshell后门查杀工具

文章目录 D盾百度webshell在线查杀河马webshellkiller长亭牧云微步在线云沙箱Web Shell DetectorVirusTotal D盾 D盾Webshell后门查杀工具由阿D开发,是一款免费且功能强大的Webshell查杀软件。它利用自行研发的代码分析引擎,能够高效、准确地检测并清除…

Ubuntu QT 交叉编译环境搭建

文章目录 下载安装qtCreatornot a valid identifier 的错误 安装g下载并安装交叉编译器下载交叉编译器安装交叉编译器 下载编译 ARM 的Qt平台源码配置arm的QT平台 下载安装qtCreator 去QT下载官网下载对应需要的QT软件。 这里下载5.12.96版本的 改变安装包权限,…

k8s芜湖

一、k8s简介及部署方法 1、k8s简介 kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能: 自我修复:一旦某一…

DBO-BP回归预测 | MATLAB实现DBO-BP蜣螂优化算法优化神经网络多输入单输出回归预测

回归预测 | MATLAB实现DBO-BP蜣螂优化算法优化神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现DBO-BP蜣螂优化算法优化神经网络多输入单输出回归预测基本介绍程序设计参考资料基本介绍 MATLAB实现DBO-BP蜣螂优化算法优化神经网络多输入单输出回归预测。 蜣螂优化群优…

react理念(二)

react-fiber 虚拟dom在react16中称为fiber。 起源 在react15之前,协调器采用递归的方式来创建dom,递归的过程是不能中断的,如果组件书的层级很深,递归会占用线程很多时间,造成卡顿。为了解决这个问题,re…

统一流程引擎如何具体实现对多系统业务流程的整合?

在信息化时代,企业和组织通常会使用多个业务系统来满足不同的业务需求。然而,这些分散的业务系统往往会导致业务流程的碎片化,降低工作效率。统一流程引擎的出现为解决这一问题提供了有效的途径。它能够整合多系统的业务流程,实现…

【Next.js 入门教程系列】03-路由与跳转

原文链接 CSDN 的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话, 给我的库点个star,关注一下吧 上一篇【Next.js 入门教程系列】02-风格化 路由与跳转 本篇包括以下内容: Define dynamic routesAccess route and…

构建高效作业管理平台:Spring Boot师生协作评审系统

1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…

23年408数据结构

第一题: 解析: 第一点,我们要知道顺序存储的特点:优点就是随用随取,就是你想要查询第几个元素可以直接查询出来,时间复杂度就是O(1),缺点就是不适合删除和插入,因为每次删除和插入一…

Pyramid-Flow – 北大、快手、北邮联合开源的视频生成模型

Pyramid-Flow是什么 Pyramid-Flow是一种先进的视频生成模型,由北京大学、快手科技和北京邮电大学的研究人员联合推出。模型根据文本提示生成长达10秒、分辨率高达1280768、帧率24帧每秒的高清视频。Pyramid-Flow的核心为创新的金字塔流匹配算法,算法将视…

为您的人工智能数据提供类似 Git 的版本管理功能

您过去肯定有过版本控制代码。但是,您是否对数据进行了版本控制?您是否曾经想过与不同的团队协作处理大量数据,而无需提交大量数据?想象一下,使用类似 git 的命令来运行类似存储库的生态系统,在该生态系统中…

模型案例:| SenseCraft Al平台模型训练与部署

导读 2023年以ChatGPT为代表的大语言模型横空出世,它的出现标志着自然语言处理领域取得了重大突破。它在文本生成、对话系统和语言理解等方面展现出了强大的能力,为人工智能技术的发展开辟了新的可能性。同时,人工智能技术正在进入各种应用领…

关于Transformer的相关问题

🎁👉点击进入文心快码 Baidu Comate 官网,体验智能编码之旅,还有超多福利!🎁 🔍【大厂面试真题】系列,带你攻克大厂面试真题,秒变offer收割机! ❓今日问题&am…

MacOS 同时配置github、gitee和gitlab密钥

MacOS 同时配置github、gitee和gitlab密钥 1 在终端中新建 ~/.ssh目录 1.1 生成GitHub、Gitee和Gitlab的SSH密钥对 ssh-keygen -t ed25519 -C "xxxxxxxxxxx.com" -f ~/.ssh/id_ed25519_gitee ssh-keygen -t ed25519 -C "xxxxxxxxxxx.com" -f ~/.ssh/id_…

mac电脑卸载软件在哪里?苹果电脑卸载软件的正确步骤

如今,越来越多的人选择使用Mac电脑来办公,然而,随着使用时间的增长,Mac电脑上安装的软件越来越多,硬盘空间逐渐被占用,电脑性能也可能因此受到影响。许多用户在尝试卸载不再需要的软件时,发现直…

【JVM】原理篇

1 栈上的数据存储 在Java中有8大基本数据类型: 这里的内存占用,指的是堆上或者数组中内存分配的空间大小,栈上的实现更加复杂。 以基础篇的这段代码为例: Java中的8大数据类型在虚拟机中的实现: boolean、byte、char、…