【风格迁移】对比度保持连贯性损失 CCPL:解决图像局部失真、视频帧间的连贯性和闪烁

对比度保持连贯性损失 CCPL:解决图像局部失真、视频帧间的连贯性和闪烁

    • 提出背景
    • 解法:对比度保持连贯性损失(CCPL)= 局部一致性假设 + 对比学习机制 + 邻域调节策略 + 互信息最大化
      • 对比学习:在无需标签的情况下有效学习区分特征
      • 应用CCPL的步骤 - 高层次描述
      • 应用CCPL的步骤 - 技术细节
      • 简单协方差变换(SCT)的详细过程
      • 逻辑链条

 


提出背景

论文:https://arxiv.org/pdf/2207.04808.pdf

代码:https://github.com/JarrentWu1031/CCPL

 

如果你能将心爱的照片转换成梵高或毕加索的画作风格,又或者让一段视频流畅地展现出古典油画的韵味,这一切听起来是不是很神奇?

近年来,一项名为“风格转换”的技术正让这种想象成为现实。

把一种图像的风格应用到另一张图像上,但要做得好却非常复杂。

特别是在处理视频时,我们希望转换后的每一帧都能够保持风格的一致性,同时又不失原有的动态效果。

过去的技术往往在保持这种一致性上遇到困难,导致视频在播放时会出现闪烁或是帧与帧之间不连贯的现象。

研究人员提出了一种新的方法,名为“对比度保持连贯性损失”(CCPL)。

方法创新: 与传统的风格转换技术不同,CCPL通过对比学习框架最大化正样本对的互信息来保持局部连贯性,同时避免了与风格化目标的直接矛盾,即避免了生成图像简单复制内容图像的问题。

CCPL通过专注于图像的局部细节,而不是整体,来确保风格转换的连贯性和一致性。

就是让图片的每一小块都进行独立的风格转换,但又能保证整体上的和谐统一。

  • CCPL引入的邻域调节策略显著减少了图像的局部失真问题。这意味着在风格转换过程中,生成的图像在细节上更加准确,同时在视觉质量上得到了显著提升。

除此之外,为了更好地融合不同的风格特征,研究团队还提出了一个名为“简单协方差变换”(SCT)的技术。

通过这种方法,可以更精确地将一个风格的特点融入到另一张图片中,从而达到更自然、更贴近原作风格的转换效果。

这项技术的美妙之处在于,它不仅适用于艺术风格的转换,也同样适用于视频和照片级真实感的风格转换。

 

对于解决图像和视频风格转换中的帧间连贯性和局部一致性问题。

CCPL的核心思想在于通过一种对比学习的框架来维持内容的连贯性,同时允许风格的灵活转换。

这种方法特别适用于处理视频风格转换,其中需要在连续帧之间保持高度的连贯性,以避免产生闪烁或其他视觉不一致的现象。

解法:对比度保持连贯性损失(CCPL)= 局部一致性假设 + 对比学习机制 + 邻域调节策略 + 互信息最大化

大餐制作 = 准备食材 + 烹饪技术 + 调味品匹配 + 味道平衡

准备食材(局部一致性假设):

  • 每道菜的食材需要新鲜且适合该菜式。
  • 这就像局部一致性假设中的每个小区域(或补丁),都需要保持其内容和风格上的连贯性,确保整体风格转换的自然和谐。
  • 之所以用“准备食材”,是因为每道菜的成功都建立在优质食材的基础上

烹饪技术(对比学习机制):

  • 使用正确的烹饪方法来处理不同的食材,比如煎、炒、烤等,以达到最佳风味。
  • 这对应于CCPL中的对比学习机制,通过比较正样本对和负样本对来学习如何在保持内容连贯性的同时进行风格迁移。
  • 之所以用“烹饪技术”,是因为正确的技术能最大化食材的风味,就如对比学习机制最大化风格迁移的效果

调味品匹配(邻域调节策略):

  • 选择合适的调味品来补充和提升食物的味道,保证不同菜品之间的味道是协调的。
  • 在CCPL中,邻域调节策略确保了相邻补丁间风格转换的连贯性,避免了突兀的变化。
  • 之所以用“调味品匹配”,是因为它能让菜品之间的过渡更加自然,类似于邻域调节策略在风格转换中的作用

味道平衡(互信息最大化):

  • 最后,确保整顿大餐中的每道菜味道平衡,不会相互压倒,达到整体的和谐。
  • 互信息最大化则是在CCPL中通过优化正负样本对的相似度和差异度,以确保风格转换的连贯性和一致性。
  • 之所以用“味道平衡”,是因为它要求厨师对整体味道有综合考量,类似于互信息最大化在风格转换中平衡正负样本对的作用

 

CCPL 过程:

在这里插入图片描述
这个过程涉及两帧内容图像(Frame 1 和 Frame 2),它们分别包含了一些局部区域(RA,RB和RC)。

在这两帧中,相同颜色的框代表相同的位置,但可能由于相机移动或物体移动,内容有所不同。

目标是使生成的风格化图像中相对应的区域(R’A,R’B和R’C)之间的变化与内容图像的相应区域之间的变化尽可能一致。

这样可以保持内容的连贯性,并且通过最大化相同位置的补丁之间的互信息来实现这一点。

  • 子特征1:局部一致性假设

    • 描述:CCPL出发点是一个相对温和的假设,即全局的不一致性主要由局部的不一致性引起。
    • 这意味着通过专注于图像或视频的小区域(局部补丁),我们可以更有效地维护整体的连贯性。
    • 原因:这个假设允许算法在没有牺牲整体风格转换效果的情况下,精细控制局部区域的连贯性和风格一致性。
  • 子特征2:对比学习机制

    • 描述:CCPL采用对比学习机制,通过最大化正样本对的相似性(即相同区域的局部补丁)和最小化负样本对的相似性(即不同区域的局部补丁),来保持内容的连贯性。
    • 原因:对比学习机制有效地利用了无标签数据,通过区分相似和不相似的局部特征,强化了模型对风格和内容连贯性的理解,从而在不直接依赖于成对的训练样本的情况下实现风格迁移。
  • 子特征3:邻域调节策略

    • 描述:CCPL引入了一种邻域调节策略,通过调整相邻补丁间的相互作用,减少了局部失真并提升了视觉质量。
    • 原因:这种策略通过确保相邻补丁之间的风格转换连贯性,减少了风格转换过程中可能出现的突兀变化,特别是在视频帧间,这种方法显著提升了视觉连贯性和整体观感。

通过局部一致性的假设,对比学习的应用,以及邻域调节策略的实施,CCPL能够在保持内容连贯性的同时实现风格的高度自由转换,从而在不牺牲风格化效果的前提下,显著提升了转换后图像和视频的视觉质量。

这使得CCPL成为一个强大的工具,适用于各种风格转换任务,包括艺术化转换、照片级真实感转换和视频风格转换。

 


对比学习:在无需标签的情况下有效学习区分特征

子解法: 对比学习

子特征: 正负特征对的互信息最大化。

通过最大化正样本对的互信息同时最小化负样本对的互信息,学习良好的特征表示。

之所以采用对比学习,是因为在无需标签的情况下,可以有效学习区分特征,为图像到图像的转换提供强大的特征表示基础。

我们有一组风景照片和一组著名画家的画作。

我们的目标是学习一个模型,使得我们可以将画家的风格应用到风景照片上,创建出新的、风格化的图像。

在没有对比学习的情况下,我们可能需要大量的 “风景照片-风格化照片” 对作为训练数据,这在现实中是很难获得的。

这时,对比学习就派上用场了。

我们不需要精确的“对”作为训练数据,而是可以使用无标签的图像来学习区分特征。具体来说,对比学习通过以下方式工作:

  1. 正样本对的选择:我们从著名画家的画作中选取一个局部特征(比如一小块画布上的纹理),并从风景照片中选取一个相似的局部特征作为正样本对。

    这两个特征在视觉上是相似的,我们希望模型学会识别和保持这种相似性。

  2. 负样本对的选择:同时,我们还从同一幅风景照片或其他画作中选取与上述特征明显不同的局部特征作为负样本对。

    这些特征在视觉上与选定的特征有显著差异,我们希望模型学会区分这些差异。

  3. 互信息最大化:模型通过最大化正样本对之间的互信息(即使模型能够识别和强调这些特征之间的相似性)和最小化负样本对之间的互信息(即使模型能够区分不相关的特征),来学习区分这些特征。

    这个过程不需要标签,因为它是基于特征相似性和差异性的内在属性。

例如,如果我们正在学习梵高的风格,正样本对可能是一小块表现出梵高特有笔触的画布特征和一张风景照片中相似纹理的部分。

负样本对可能是同一风景照片中的一块平滑无纹理的天空区域。

通过这种方式,对比学习使模型能够学习到如何将梵高的笔触应用到风景照片的相应部分,同时避免在不适合的区域(如平滑的天空)应用这种风格,从而实现更加准确和自然的风格转换效果。

这个过程不依赖于成对的训练样本,而是依赖于模型能够从大量无标签的数据中学习区分和应用风格的能力。

应用CCPL的步骤 - 高层次描述

假设我们有一段城市风景的视频,我们希望将梵高的绘画风格应用于这个视频,同时确保视频中的每一帧都能够在视觉上保持连贯,避免出现闪烁或者风格不一致的问题。

应用CCPL的步骤

  1. 局部一致性假设

    • 我们首先将视频分解为一系列帧,然后将每一帧进一步分割成小的局部区域(或称为补丁)。
    • 这样做的目的是将全局风格转换问题转化为多个局部问题,每个局部问题关注于如何将梵高的风格应用于一个小区域内。
  2. 对比学习机制

    • 接下来,对于视频中的每一个局部补丁,CCPL算法会在梵高的画作中寻找风格上最接近的补丁作为正样本对,同时也会寻找风格差异显著的补丁作为负样本对。
    • 通过这种方式,算法学习在保持原有内容结构的前提下,如何将梵高的风格特征融入到城市风景的每个局部补丁中,同时确保与周围补丁在视觉上的连贯性。
  3. 邻域调节策略

    • 在风格转换过程中,CCPL还会考虑每个局部补丁与其相邻补丁之间的关系,确保相邻补丁之间的风格转换是连贯的。
    • 这一步是通过调整相邻补丁间的相互作用来实现的,比如通过最小化相邻补丁间风格特征的差异。
    • 这样,即使是动态变化的视频场景,每一帧内的风格转换也能够保持自然和连贯,避免了因风格突变导致的视觉闪烁问题。

通过应用CCPL,最终生成的视频不仅成功地将梵高的绘画风格融入到城市风景中,而且每一帧之间都能保持高度的视觉连贯性,使得整个视频看起来既自然又具有艺术感。

观众可以清晰地看到梵高笔触下的城市景象,同时享受到流畅连贯的视觉体验。

这个例子展示了CCPL在实现高质量风格转换,尤其是在处理视频内容时的强大能力。

通过局部一致性假设、对比学习机制和邻域调节策略的结合,CCPL能够有效解决风格转换过程中的视觉不一致问题,提供了一种既实用又高效的解决方案。

 


应用CCPL的步骤 - 技术细节

在这里插入图片描述
首先,内容图像C和生成图像G通过固定的图像编码器E,得到特定层的特征图Cf和Gf。

然后,从Gf中随机采样N个向量(红点),并从Cf中采样相同位置的向量。这些向量之间的差异通过向量减法得到,并通过多层感知机(MLP)映射和归一化,然后计算InfoNCE损失。

这一过程有助于在不同帧间保持图像的时间连贯性。

  1. 特征图提取

    • 首先,生成的图像G和其对应的内容输入C被送入一个固定的图像编码器E。这个编码器是预先训练好的,能够提取图像的深层特征。在这个过程中,我们从特定层得到了生成图像G和内容图像C的特征图,分别表示为Gf和Cf。
    • 这一步骤的目的是将图像转换为更高维的特征表示,这些特征表示更加丰富,能够捕捉到图像的重要视觉属性。
  2. 随机采样和邻域选择

    • 接着,从Gf中随机采样N个向量(表示为红点),每个向量代表了生成图像在特定区域的特征表示。这些向量被表示为Gx_a,其中x=1,…,N。
    • 对于每个采样的向量Gx_a,选择其八个最近的邻域向量(表示为蓝点),表示为Gx,y_n,其中y=1,…,8代表邻域索引。
    • 同样地,也从Cf中在相同位置采样,获取对应的内容特征向量Cx_a和其邻域向量Cx,y_n。
  3. 差异向量的计算

    • 对于每对向量及其邻域,计算差异向量d_g^x,y = G_a^x ⊖ G_nx,y和d_cx,y = C_a^x ⊖ C_n^x,y,其中⊖代表向量减法。
    • 这些差异向量代表了局部区域内特征之间的变化,是CCPL尝试保持一致的关键量。
  4. 对比学习与互信息最大化

    • 为了实现互信息最大化,CCPL尝试让正样本对(即来自相同位置的差异向量对)之间的差异尽可能相似,而让负样本对(即来自不同位置的差异向量对)之间的差异尽可能不同。
    • 通过使用多层感知机(MLP)将差异向量映射到单位球面上,并计算InfoNCE损失,CCPL能够有效地实现这一目标。这种方法不仅强化了生成图像的时间连贯性,而且避免了直接使生成图像G类似于内容图像C的问题,从而不会与风格迁移的目的相矛盾。

简单协方差变换(SCT)的详细过程

在这里插入图片描述
上图是SCT模块的具体结构,以及它如何与其他类似算法(如AdaIN和Linear)进行比较。

SCT模块通过首先对内容特征fc和风格特征fs进行标准化处理,然后通过减少通道维数来降低计算成本,接着计算风格特征的协方差矩阵,最后通过矩阵乘法融合内容特征和风格特征。

这个过程不仅保留了风格特征之间的相关性,而且也简化了网络结构,使其更加轻量和快速。

通过这种方式,SCT模块能够有效地将风格化特征与内容特征融合,生成富有艺术风格的图像。

逻辑链条

对比度保持连贯性损失(CCPL)这样的复杂技术时,子特征之间的逻辑关系可以被视为一个“链条”模型,每个环节都是有序连接的,每一步骤的输出都作为下一步骤的输入。

阶段 1:目标设定

  • 目标:将梵高的风格应用到城市风景视频中,并保持帧间连贯性。

阶段 2:特征图提取(子特征1)

  • 操作:使用编码器E从内容图像C和生成图像G提取特征图Cf和Gf。
  • 逻辑链条:这是链条的起始点,我们需要转换图像到一个可以更好地表征风格和内容的特征空间。

阶段 3:随机采样和邻域选择(子特征2)

  • 操作:从特征图中随机选择特定数量的向量(代表局部区域)及其邻域。
  • 逻辑链条:建立在特征图提取的基础上,这一步骤为后续的对比学习准备了输入数据。

阶段 4:差异向量的计算(子特征3)

  • 操作:计算选定向量与邻域向量之间的差异。
  • 逻辑链条:计算差异向量是为了量化邻域内的风格变化,这对于保持风格连贯性至关重要。

阶段 5:对比学习与互信息最大化(子特征4)

  • 操作:应用对比学习机制,最大化正样本对的互信息,最小化负样本对的互信息。
  • 逻辑链条:这是链条中的关键环节,它利用前面计算出的差异向量来训练模型,使得模型能够在保持内容连贯性的同时实现风格转换。

阶段 6:损失函数优化(子特征5)

  • 操作:通过结合内容损失、风格损失和CCPL,进行模型训练。
  • 逻辑链条:这个阶段整合了所有先前的子特征,并通过优化损失函数来调整模型参数,以达到最佳的风格转换效果。

阶段 7:输出评估(子特征6)

  • 操作:评估生成视频的风格连贯性和视觉效果。
  • 逻辑链条:这是链条的最终环节,它确保了所有先前步骤的有效性,并指导未来的优化方向。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

源码视角,vue3为什么推荐用ref,而不是reactive

ref 和 reactive 是 Vue3 中实现响应式数据的核心 API。ref 用于包装基本数据类型,而 reactive 用于处理对象和数组。尽管 reactive 似乎更适合处理对象,但 Vue3 官方文档更推荐使用 ref。 我的想法,ref就是比reactive好用,官方也…

深入理解nginx的https sni机制

目录 1. 概述2. 初识sni3. nginx的ssl证书配置指令3.1 ssl_certificate3.2 ssl_certificate_key3.3 ssl_password_file4. nginx源码分析4.1 给ssl上下文的初始化4.2 连接初始化4.3 处理sni回调4.2 动态证书的加载5. 总结阅读姊妹篇: 深入理解nginx的https alpn机制 1. 概述 SN…

[BJDCTF2020]EzPHP1 --不会编程的崽

有一说一,这题还是有难度的 base32解码url编码绕过$_SERVER换行符绕过preg_match相同参数,post请求覆盖get请求,绕过$_REQUESTphp伪协议利用sha1数组绕过create_function代码注入 Level 1 右键源码里又发现,拿去base32解码即可…

【Java项目介绍和界面搭建】拼图小游戏——键盘、鼠标事件

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

【go从入门到精通】go包,内置类型和初始化顺序

大家好,这是我给大家准备的新的一期专栏,专门讲golang,从入门到精通各种框架和中间件,工具类库,希望对go有兴趣的同学可以订阅此专栏。 go基础 。 Go文件名: 所有的go源码都是以 ".go" 结尾&…

【大厂AI课学习笔记NO.62】模型的部署

我们历尽千辛万苦,总算要部署模型了。这个系列也写到62篇,不要着急,后面还有很多。 这周偷懒了,一天放出太多的文章,大家可能有些吃不消,从下周开始,本系列将正常更新。 这套大厂AI课&#xf…

C++_红黑树

目录 1、红黑树的规则 2、红黑树节点的定义 3、红黑树插入节点的调整操作 3.1 情况一 3.2 情况二 3.3 情况三 4、红黑树的实现 结语 前言: 在C中,红黑树是二叉搜索树的另一种优化版本,他与AVL树的区别在于保持树的平衡方式不同&…

django的模板渲染中的【高级定制】:按数据下标id来提取数据

需求: 1:在一个页面中显示一张数据表的数据 2:不能使用遍历的方式 3:页面中的数据允许通过admin后台来进行修改 4:把一张数据表的某些内容渲染到[xxx.html]页面 5:如公司的新商品页面,已有固定的…

波斯猫 6页面 宠物动物 长毛猫 HTML5 带背景音乐 JS图片轮播特效 滚动文字 鼠标经过图片 JS时间代码

波斯猫 6页面 宠物动物 长毛猫 HTML5 带背景音乐 JS图片轮播特效 滚动文字 鼠标经过图片 JS时间代码 注册表单 宠物网页成品 海量学生网页成品 个人博客 人物明星 城市家乡 旅游景点 美食特产 购物电商 公司企业 学校大学 科普教育 宠物动物 鲜花花卉 植物水果 茶叶咖啡 健康生…

react native封装ScrollView,实现(滑到底部)和(滑到顶部+手指继续向下滑)时拉取新数据

里面的tw是在react native中使用tailwind的第三方库 只求读者把样式看个大概,主要还是功能的实现 ScrollView的官方文档如下 https://reactnative.cn/docs/scrollview import tw from twrnc import { View, Text, ScrollView, RefreshControl } from react-native …

Python用类实现抽象和封装

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 路在脚下,勇往直前&#x…

Git——Upload your open store

0.default config ssh-keygen -t rsa #之后一路回车,当前目录.ssh/下产生公私钥 cat ~/.ssh/id_rsa.pub #复制公钥到账号 git config --global user.email account_email git config --global user.name account_name1. 上传一个公开仓库 查看当前分支: git branc…

去中心化时代,品牌如何赢得确定性增长

去中心化时代下,品牌面临众多挑战。在如今复杂的环境下,有很多不确定的因素,流量、资本等等,这些都是品牌发展过程中的不确定因素,越是复杂的环境下,品牌越要保证自己核心优势,找到并放大我们的…

华为配置攻击检测功能示例

配置攻击检测功能示例 组网图形 图1 配置攻击检测功能示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 企业用户通过WLAN接入网络,以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时,不影响用户的业务使用。…

AI大预言模型——ChatGPT与AI绘图及论文高效写作

原文链接:AI大预言模型——ChatGPT与AI绘图及论文高效写作 2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网…

【风格迁移】AdaAttN:使用注意力机制和归一化来保持内容结构的同时转移风格特征

AdaAttN:使用注意力机制和归一化来保持内容结构的同时转移风格特征 提出背景AdaAttN 框架自适应注意力归一化(AdaAttN)损失函数视频风格迁移的扩展 自适应注意力归一化(AdaAttN)的应用场景 全流程优化基于特征相似度的…

go 命令行框架cobra

go 命令行框架cobra go 拉取依赖包go get github.com/spf13/cobra 认识spf13/cobra-cli. cobra 命令行框架在golang中的地位也算得上是大明星级别。像k8s,docker都有使用这个框架构建自己命令行这块的功能. 最最最简单的开始----使用命令行工具cobra-cli来初始化你的demo c…

03-grafana的下拉列表选项制作-grafana的变量

一、准备环境 为了实现下拉列表筛选的样例,我们监控两个linux节点; 目前,我们已经有了一个节点了,再添加一个; 二、grafana的仪表盘变量 如果想给仪表盘自定义下拉列表,那么,需要设置变量&#…

Flink StreamGraph生成过程

文章目录 概要SteramGraph 核心对象SteramGraph 生成过程 概要 在 Flink 中,StreamGraph 是数据流的逻辑表示,它描述了如何在 Flink 作业中执行数据流转换。StreamGraph 是 Flink 运行时生成执行计划的基础。 使用DataStream API开发的应用程序&#x…

分享经典、现代和前沿软件工程课程

随着信息技术的发展,软件已经深入到人类社会生产和生活的各个方面。软件工程是将工程化的方法运用到软件的开发、运行和维护之中,以达到提高软件质量,降低开发成本的目的。软件工程已经成为当今最活跃、最热门的学科之一。 本次软件工程MOOC课…