【NeurIPS-2022】CodeFormer: 将人脸复原转化为码本预测以减少LQ-HQ映射的不确定性

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除!


文章目录

  • 前言
  • 论文
    • 动机
    • 方法
    • 实验
  • 总结
  • 互动
  • 致谢
  • 参考
  • 往期回顾


前言

盲人脸恢复是一个高度不适定的问题,通常需要辅助指导,各种先验已经被用来减轻这个问题的不适定性,包括几何先验,参考先验和生成先验。

LQ-HQ映射不确定性仍然存在,并且输出质量因输入图像的退化而恶化。一些基于生成先验方法,通过迭代优化或直接潜在编码将退化的人脸投影到连续的无限空间中。在严重退化的情况下,很难找到准确的潜在向量,导致低保真度的结果。

进而将盲人脸恢复作为码本预测任务可大大降低恢复映射的不确定性和模糊性,同时提供丰富的视觉原子来生成高质量的人脸。进一步依赖可控的特征变换模块,允许灵活的保真度和质量之间的权衡。


论文

论文名: Towards Robust Blind Face Restoration with Codebook Lookup Transformer

论文速递: 点我转跳哦

代码通道: GitHub、Gitee

动机

本质上实现以下内容即可实现较高质量的复原:

  • 改进/改进从LQ输入到期望输出的映射
  • 补充输入中丢失的高质量细节

在这里插入图片描述

(a)连续生成先验(顶部)和离散码本先验(底部)的恢复框架。(B)HQ/LQ面部特征和码本的 t-SNE 可视化。

  • 高质量图像,面部组件的潜在向量/码本是可分的

  • 退化图像,面部组件的潜在向量/码本分布边界不清晰

    • 因此在连续潜在空间,退化严重就很难找到准确的潜在向量进行优化,导致复原质量不高。
    • 将潜在空间选取有限的码本, 可大幅减少LQ到HQ的错误映射。

方法

在这里插入图片描述

CodeFormer框架。首先学习一个离散的码本和一个解码器,通过自重构学习来存储人脸图像的高质量视觉部分。在固定码本和解码器的情况下,引入Transformer模块来进行码序列预测,对低质量输入的全局人脸组成进行建模。

  • 第一阶段 - 学习码本:为了减少LQ-HQ映射的不确定性并补充高质量的恢复细节,对量化的自动编码器进行预训练,以学习上下文丰富的码本,去提高网络的表现力以及对降级的鲁棒性。

  • 第二阶段 - 码本Transformer学习:由于LQ面部中纹理的破坏,最近邻匹配通常无法找到用于面部恢复的准确码本,采用Transformer来对全局相互关系进行建模,以实现更好的码本预测。自编码器的编码器后面插入一个包含九个自注意块的Transformer模块。

  • 第三阶段 - 可控特征转换:其实第二阶段已经获得了一个很好的人脸恢复模型,利用可控特征变换(CFT)模块来控制信息流从LQ编码器EL到解码器DH。

将512 × 512 × 3的人脸图像表示为16 × 16的码元序列,使用四个NVIDIA Tesla V100 GPU进行训练,羡了这算力。

实验

毫无疑问,吊打当时的先进方法,上图。

在这里插入图片描述

合成数据集

在这里插入图片描述


在这里插入图片描述

真实数据集

在这里插入图片描述


在这里插入图片描述

侧脸也不赖


总结

总结: CodeFormer通过学习一个小的离散但有表现力的码本空间,将人脸恢复转化为码元预测,大大降低了恢复映射的不确定性,简化了恢复网络的学习。同时通过一个有表现力的Transformer模块从降级的面孔中探索全局组合和依赖性,以获得更好的码本预测。


互动

  • 上述内容对你有帮助吗?

欢迎在评论区解答上述问题,分享你的经验和疑问!

当然,也欢迎一键三连给我鼓励和支持:👍点赞 📁 关注 💬评论。


致谢

欲尽善本文,因所视短浅,怎奈所书皆是瞽言蒭议。行文至此,诚向予助与余者致以谢意。


参考

[1] Towards Robust Blind Face Restoration with Codebook Lookup Transformer
[2] https://gitee.com/qianxdong/CodeFormer
[3] https://github.com/sczhou/CodeFormer?tab=readme-ov-file


往期回顾


👆 DeepSeek本地化部署保姆级教程👆

👆 EfficientTrain++帮你降低网络训练的成本👆

👆 PyCharm环境下Git与Gitee联动👆

👆 【CVPR-2023】DR2:盲人脸复原👆

👆 轻量化设计如何提高模型的推理速度👆

👆 正则化与正则剪枝👆

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

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

相关文章

JAVA-多线程join()等待一个线程

引言:更多线程的认识可以看一篇博客: JAVA-Thread类实现多线程-CSDN博客 一、join()的作用 我们知道线程是随机调度执行的,但是有时候我们需要另一个任务完成了,我们才能继续,这个时候我们就可以使用join去等待线程结束…

《AI大模型开发笔记》——企业RAG技术实战

RAG(Retrieval-Augmented Generation)介绍 Retrieval-Augmented Generation for Large Language Models: A Survey: https://arxiv.org/abs/2312.10997 github项目: https://github.com/Tongji-KGLLM/RAG-Survey RAGFlow项目 ragflow项目地址: https://github.com/inf…

蓝桥杯备考:特殊01背包问题——》集合subset

我们划分成两个集合,实际上我们只需要看一部分就行了,也就是从集合的所有元素里挑出恰好满足集合总和的一半儿,当然,如果我们的集合总和是奇数的话,我们是无论如何也挑不出刚好一半儿的,因为我们没有小数&a…

python字符级差异分析并生成 Word 报告 自然语言处理断句

import difflib from docx import Document from docx.shared import RGBColor from snownlp import SnowNLPdef analyze_char_differences(text_a, text_b):"""分析两个文本的字符级差异:param text_a: 第一个文本:param text_b: 第二个文本"""…

尝试在软考66天前开始成为软件设计师-数据库系统

三级模式-两级映射 层次型架构设计 ---便利,应变能力↗ 外模式 (用户与数据库系统的接口 视图概念模式 (数据库中全体数据的逻辑结构和特征内模式 (数据物理结构和存储方式 外模式/模式映像。 该映像存在于外部级和概念级之间,实现了外模式到概念模式…

Hadoop•常用命令

听说这是目录哦 操作命令🥯退出清屏切换工作目录移动文件查看创建删除复制文件内容查看编辑解压缩其它命令技巧 系统命令🍕vim操作命令(命令模式下)光标移动复制粘贴(vi编辑器内部)删除、撤销 若vi,vim,ls找不到命令⚠️能量站&am…

linux之 内存管理(1)-armv8 内核启动页表建立过程

一、内核启动时,页表映射有哪些? Linux初始化过程,会依次建立如下页表映射: 1.恒等映射:页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射:页表基地址init_pg_dir; 3.fixmap映射:页表基地址为…

IntelliJ IDEA 快捷键系列:重命名快捷键详解

目录 引言一、默认重命名快捷键1. Windows 系统‌2. Mac 系统‌ 二、操作步骤与技巧1. 精准选择重命名范围‌2. 智能过滤无关内容‌ 三、总结 引言 在代码重构中,‌重命名变量、类、方法‌ 是最常用的操作之一。正确使用快捷键可以极大提升开发效率。本文针对 ‌Ma…

Swagger-告别手写文档

文章目录 1. 引言2. Swagger是什么?3. SpringBoot2.7.3集成Swagger4. 常见注解 1. 引言 在RESTful API开发中,维护准确、易读的接口文档是团队协作的核心挑战,通常接口文档分为离线的和实时的。离线的接口文档工具有 YAPI等,其中…

深入解析 C++ Vector:全面掌握 STL 核心容器的原理与高效实践

一、Vector 的核心概念与特性 Vector 是 C 标准库中最常用的动态数组容器,其底层基于连续内存存储元素,兼具数组的高效访问与动态扩容的灵活性。以下是其核心特性: 1.1 核心特性对比 特性普通数组Vector 容器内存分配静态固定动态增长访问效…

element-plus中DatePicker 日期选择器组件的使用

1.选择某一天 代码&#xff1a; <el-date-pickerv-model"invoice_date"type"date"placeholder"请选择日期"style"width: 200px;"clearable /> 运行效果&#xff1a; 问题所在&#xff1a;这个数据的格式不是我们后端需要的那种&…

Python Bug修复案例分析:Python 中常见的 IndentationError 错误 bug 的修复

在 Python 编程的世界里&#xff0c;代码的可读性和规范性至关重要。Python 通过强制使用缩进来表示代码块的层次结构&#xff0c;这一独特的设计理念使得代码更加清晰易读。然而&#xff0c;正是这种对缩进的严格要求&#xff0c;导致开发者在编写代码时&#xff0c;稍有不慎就…

Deal - DbC、检查Python 值、异常和副作用

文章目录 一、关于 Deal特点 二、安装三、30秒内使用 Deal四、其它贡献 一、关于 Deal Deal 是用于 design by contract (DbC) 和 检查值、异常和副作用的Python库。简而言之&#xff0c;交易使您能够编写bug的代码。 通过在代码中添加一些装饰器&#xff0c;您可以获得免费测…

Linux 一步部署DHCP服务

#!/bin/bash #脚本作者和日期 #author: PEI #date: 20250319 #检查root权限 if [ "$USER" ! "root" ]; then echo "错误&#xff1a;非root用户&#xff0c;权限不足&#xff01;" exit 0 fi #防火墙与高级权限 systemctl stop firewa…

MyBatis操纵数据库-XML实现(补充)

目录 一.多表查询二.MyBatis参数赋值(#{ }和${ })2.1 #{ }和${ }的使用2.2 #{ }和${ }的区别2.3 SQL注入2.3 ${ }的应用场景2.3.1 排序功能2.3.2 like查询 一.多表查询 多表查询的操作和单表查询基本相同&#xff0c;只需改变一下SQL语句&#xff0c;同时也要在实体类中创建出…

【Java篇】一气化三清:类的实例化与封装的智慧之道

文章目录 类和对象&#xff08;中&#xff09;五、对象的构造及初始化5.1 如何初始化对象5.2 构造方法5.2.1 构造方法的概念5.2.2 构造方法的特性 5.3 默认初始化5.4 就地初始化 六、封装6.1 封装的概念6.2 访问限定符6.3 封装扩展之包6.3.1 包的概念6.3.3导入包6.3.3全类名6.3…

深入解析 `SQL_SMALL_RESULT`:MySQL 的“小优化”大作用

深入解析 SQL_SMALL_RESULT&#xff1a;MySQL 的“小优化”大作用 在 MySQL 的查询优化工具箱中&#xff0c;SQL_SMALL_RESULT 是一个容易被忽略但可能带来小幅性能提升的关键字。它适用于特定场景&#xff0c;尤其是涉及 GROUP BY 或 DISTINCT 计算的小数据集查询。本文将深入…

python-leetcode 48.括号生成

题目&#xff1a; 数字n代表生成括号的对数&#xff0c;设计一个函数&#xff0c;用于生成所有可能并且有效的括号组合。 方法一&#xff1a;回溯 可以生成所有 2**2n 个 ‘(’ 和 ‘)’ 字符构成的序列&#xff0c;然后检查每一个是否有效即可 为了生成所有序列&#xff0c…

用css绘制收银键盘

最近需求说需要自己弄个收银键盘&#xff0c;于是乎直接上手搓 主要基于Vue3写的&#xff0c;主要是CSS <template><view class"container"><view class"info"><image class"img" src"" mode"">&l…

C# | 超简单CSV表格读写操作(轻松将数据保存到CSV,并支持读取还原)

C# | 超简单CSV表格读写操作&#xff08;轻松将数据保存到CSV&#xff0c;并支持读取还原&#xff09; 文章目录 C# | 超简单CSV表格读写操作&#xff08;轻松将数据保存到CSV&#xff0c;并支持读取还原&#xff09;一、上位机开发中的CSV应用背景二、CSV读写实战教学1. 基本对…