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

news2024/11/25 6:49:16

对比度保持连贯性损失 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.coloradmin.cn/o/1493450.html

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

相关文章

Yolov8改进交流

YOLO v8改进 YOLOv8的改进,我接触的主要分为网络改进和代码改进,网络改进就是以注意力、主干为主,代码改进就是类似于Iou,类别权重等修改。 以下是yolov8的原始模型。 # Ultralytics YOLO 🚀, AGPL-3.0 license # YO…

防爆小型气象站

TH-FBCQX1(FB01)随着科技的进步和安全生产意识的提高,防爆小型气象站在危化品场所的应用越来越受到重视。这些气象站不仅能够实时监测和记录关键气象数据,还能够提供预警功能,确保危化品场所的安全运行。 一、防爆小型气象站的功能与特点 防爆…

STM32FreeRTOS消息队列(STM32Cube高效开发)

文章目录 一、队列(一)简介(二)FreeRTOS队列特点1、入队阻塞:队列满了,此时无法继续写入数据2、出队阻塞:队列为空,此时无法读出数据3、入队阻塞解除,有多个任务等待时&a…

史称GPT-4最强劲敌——Claude 3 大模型它来了【附体验教程】

Anthropic 的 Claude 3 Sonnet 模型现已在亚马逊云科技的 Amazon Bedrock 正式可用。 Amazon Bedrock 是目前 第一个 也是 唯一 一个提供 Claude 3 Sonnet 的托管服务 。 Claude 3 免费测试体验者福利🧧:https://mp.weixin.qq.com/s/hszLRa8B5zKsTDg2bmI…

missing_aware_prompts

MSA layers [1] 辅助信息 作者使用旧版pytorch_lightning,不建议复现 参考文献 [1] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advance…

python+java+node.js+php基于vue的大学生体质测试管理系统16z15

陕商院学生体测管理系统,需要先进行登录,登录后确定权限,进行操作。包括老师管理、学生管理、首页、体质测试、公告资讯、留言板、个人中心、成绩查询功能。陕商院学生体测管理系统利用nodejs语言开发的一款基于nodejs 管理系统,数…

Claude 3家族惊艳亮相:AI领域掀起新浪潮,GPT-4面临强劲挑战

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-agd7RSCGMblYxo85 {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

umi4 项目使用 keepalive 缓存页面(umi-plugin-keep-alive、react-activation)

umi4使用keepalive 配置文件config\config.ts export default defineConfig({plugins: [umi-plugin-keep-alive], });安装add umi-plugin-keep-alive yarn add umi-plugin-keep-alive页面 A import { KeepAlive, history, useAliveController } from umijs/max; const Page…

VSCode安装

前言 Visual Studio Code 是一个轻量级功能强大的源代码编辑器,支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。适用于 Windows、macOS 和 Linux。它内置了对…

软件设计师软考题目解析20之英语题

想说的话:要准备软考了。0.0,其实我是不想考的,但是吧,由于本人已经学完所有知识了,只是被学校的课程给锁在那里了,不然早找工作去了。寻思着反正也无聊,就考个证玩玩。 本人github地址&#xf…

【JavaSE】面向对象——多态性

多态性 多态性的概念 所谓多态性,理解为一个事物的多种形态。具体点就是去完成某个动作时,不同的对象会产生不同的状态。 多态性的好处 多态在Java中指的是父类的引用指向子类的对象,或者可以说是子类的对象赋给父类的引用。这样在我们的…

【CSS】关于文字的换行问题

给固定宽度的div中写入一些文字&#xff0c;你会发现文字可能会超出&#xff0c;实例如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&qu…

小白跟做江科大51单片机之AT24C02数据存储

1.导入Delay、key、LCD1602相关文件 2.控制逻辑 以I2C去写入&#xff0c;用AT24C02包装好&#xff0c;main调用即可 3.编写I2C代码 看着这六个状态编 图1 开和关 图2 发送一个字节 图3 接收一个字节 图4 接收和发送应答 #include <REGX52.H> sbit I2C_SCL P2^1; sbi…

2024年Java者未来的出路在哪里,java多线程面试

重要 大环境对于我们能力要求越来越高&#xff0c;医学专家又说今年冬天新冠肺炎将“席卷重来”。 如果疫情再次爆发&#xff0c;势必将再次影响企业的正常运作&#xff0c;一波裁员浪潮你又能否抗住&#xff1f; 不管如何&#xff0c;明年金三银四又是一波跳槽时机&#xf…

CUDA学习笔记04:向量之和

参考资料 CUDA编程模型系列二(向量操作)_哔哩哔哩_bilibili &#xff08;非常好的学习资料&#xff01;&#xff09; vs2019 随意新建一个空项目&#xff0c;按照之前的环境配置配好项目依赖&#xff1a; CUDA学习笔记02&#xff1a;测试程序hello world-CSDN博客 代码结构…

k倍区间c++

题目 输入样例&#xff1a; 5 2 1 2 3 4 5输出样例&#xff1a; 6 思路 本题默认所有读者已经理解了如何求前缀和。 可以利用双层循环分别枚举左端点和右端点即可枚举完所有区间&#xff0c;而对于每个区间&#xff0c;利用一维前缀和判断它是否是一个k倍区间&#xff0c;是…

必看内容!物联网ESP8266与阿里云物联网平台通信

一、硬件连接 wifi模块ESP8266-01S接线&#xff1a; TXD接RXD&#xff08;USB&#xff09; RXD接TXD (USB) VCC接3.3V GNDGPIO0接地 二、调试工具 三、烧录MQTT固件 购买的ESP8266一般没带MQTT固件&#xff0c;所以无法通过MQTT指令与云平台通信&#xff0c;需要烧录固件。 …

1、Linux-安装

一、Linux和Windows的一些区别 1、Linux严格区分大小写——【Windows创建文件夹时不区分大小写】 2、Linux中所有内容都以文件形式存储&#xff0c;包括硬件 3、Linux不靠拓展名区分文件类型&#xff0c;而是可以通过读取文件开头的一些字节来区分。 但是在实际使用中一般要…

C#,电话数字键盘问题(Mobile Numeric Keypad problem)的算法与源代码

1 电话数字键盘问题 提供移动数字键盘。您只能按向上、向左、向右或向下至当前按钮的按钮。不允许您按最下面一行的角点按钮&#xff08;即.*和#&#xff09;。 移动键盘 给定一个数N&#xff0c;找出给定长度的可能数。 示例&#xff1a; 对于N1&#xff0c;可能的数字数为…

Guava处理异常

guava由Google开发&#xff0c;它提供了大量的核心Java库&#xff0c;例如&#xff1a;集合、缓存、原生类型支持、并发库、通用注解、字符串处理和I/O操作等。 异常处理 传统的Java异常处理通常包括try-catch-finally块和throws关键字。 遇到FileNotFoundException或IOExce…