AI数字人:图像超分辨率模型 Real-ESRGAN

news2024/10/6 3:08:44

1 Real-ESRGAN介绍

1.1 Real-ESRGAN是什么?

Real-ESRGAN全名为Enhanced Super-Resolution GAN:增强的超分辨率的对抗生成网络,是由腾讯ARC实验室发布的一个盲图像超分辨率模型,它的目标是开发出实用的图像/视频修复算法,Real-ESRGAN 是在 ESRGAN 的基础上使用纯合成数据来进行训练的,基本上就是通过模拟高分辨率图像变低分辩率过程中的各种退化,然后再通过低清图倒推出它的高清图,简单说你也可以把它理解为一个图像/视频修复、放大工具。

github地址:Real-ESRGAN
论文地址:Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data

Real-ESRGAN 目前提供了五种模型,分别是 realesrgan-x4plus(默认)、reaesrnet-x4plus、realesrgan-x4plus-anime(针对动漫插画图像优化,有更小的体积)、realesr-animevideov3(针对动漫视频)和 realesrgan-x4plus-anime-6B,你可以根据你要处理的图片或视频选择合适的模型进行使用。

 1.2 Real-ESRGAN原理

(1)生成器:

采用与ESRGAN[50]相同的生成器(SR网络),即一个具有多个残差-残差密集块(RRDB)的深网络,如图4所示。我们还扩展了原来×4ESRGAN架构,以执行以×2和×1为比例因子的超分辨率。由于ESRGAN是一个重型网络,我们首先使用像素unshuffle (pixel-shuffle[42]的逆操作)来减少空间大小,并在将输入输入到主ESRGAN架构之前扩大通道大小。因此,大多数计算都是在较小的分辨率空间中进行的,这可以减少GPU内存和计算资源的消耗。

Real-ESRGAN采用与ESRGAN相同的生成器网络。对于比例因子of×2和×1,它首先使用像素unshuffle操作来减小空间大小,并将信息重新排列到信道维度

(2)鉴别器:带光谱归一化(SN) 的U-Net鉴别器

由于Real-ESRGAN的目标是解决比ESRGAN更大的退化空间,原有的鉴别器设计在ESRGAN中不再适用。具体来说,Real-ESRGAN中的鉴别器对复杂的训练输出要求有更大的鉴别能力。除了区分全局样式,它还需要为局部纹理产生精确的梯度反馈。受[41,452]的启发,我们还将ESRGAN中的vgg风格鉴别器改进为带有跳跃连接的U-Net设计(图6)。UNet输出每个像素的真实值,并可以向生成器提供详细的per-pixel反馈。
同时,U-Net结构和复杂的退化也增加了训练的不稳定性。我们采用光谱归一化正则化[37]来动态稳定训练。此外,我们观察到光谱归一化也有利于缓解GAN训练引入的过分尖锐和恼人的伪影。通过这些调整,我们能够轻松地训练RealESRGAN,并实现局部细节增强和伪迹抑制的良好平衡。
 

(3)训练过程
分为两个阶段。首先,我们用L1损耗训练了一个psnr导向的模型。得到的模型被real-esrnet命名。然后,我们使用训练的面向psnr的模型作为生成器的初始化,并结合L1损失、感知损失[20]和GAN损失来训练real-esrgan[14,26,4]。

消融实验
二阶退化模型。我们在Real-ESRNet上进行降解的消融研究,因为Real-ESRNet更可控,更能反映降解的影响。我们将Real-ESRNet中的二阶过程替换为经典的退化模型来生成训练对。如fig .8(Top)所示,使用经典的一阶退化模型训练的模型不能有效去除墙面上的噪声或麦田中的模糊,而Real-ESRNet可以处理这些情况。
 

  • Top:Real-ESRNet结果w/和w/o二级降解过程。
  • Bottom:Real-ESRNet结果w/和w/ sinfilter。放大以获得最佳视角

sinc filters。如果在训练过程中不使用sinc filters,恢复的结果将放大存在于输入图像中的振响和超调伪影,如图8(下)所示,特别是在文本和行周围。相反,使用自适应滤波器训练的模型可以去除这些伪影。

(4)SN正则化的U-Net鉴别器

我们首先使用esrgan setting 包括vgg -style 鉴别器和它的损失权重。但是从图9可以看出,该模型不能还原详细的纹理(砖块和灌木),甚至会在灌木树枝上带来令人不快的伪影。使用U-Net设计可以改善局部细节。但是,它会引入不自然的纹理,也会增加训练的不稳定性。SN正则化可以在稳定训练动力学的同时改善复原纹理。

(5)更复杂的模糊核

在模糊合成中去掉了广义高斯核和平台形核。如图10所示,在一些真实的样本上,模型不能像RealESRGAN那样去除模糊和恢复锐利的边缘。然而,在大多数样本上,它们的差异是有限的,说明广泛使用的高阶退化过程的高斯核已经可以覆盖较大的真实模糊空间。由于我们仍然可以观察到稍微更好的性能,我们采用了Real-ESRGAN中那些更复杂的模糊内核。

1.3 创新点

  • 提出了新的构建数据集的方法,用高阶处理,增强降阶图像的复杂度。
  • 构造数据集时引入sinc filter,解决了图像中的振铃和过冲现象。
  • 替换原始ESRGAN中的VGG-discriminator,使用U-Net discriminator,以增强图像的对细节上的对抗学习。
  • 引入spectral normalization以稳定由于复杂数据集和U-Net discriminator带来的训练不稳定情况。

2 Real-ESRGAN部署运行

2.1 conda安装

annoconda安装和使用详见:annoconda环境构建

2.2 运行环境构建

git clone https://github.com/xinntao/Real-ESRGAN.git
cd Real-ESRGAN

conda create -n realesgan python=3.9
conda activate realesgan

pip install basicsr==1.4.2
pip install facexlib==0.3.0
pip install gfpgan==1.3.8

pip install -r requirements.txt

python setup.py develop

2.3 模型下载

通用模型地址:RealESRGAN_x4plus.pth

动漫模型地址:RealESRGAN_x4plus_anime_6B.pth

下载完成后,移动到weights目录下,完成通过命令查看显示如下:

[root@localhost Real-ESRGAN]# ll weights/
总用量 82996
-rw-r--r-- 1 root root       54 7月   6 19:46 README.md
-rw-r--r-- 1 root root 17938799 7月  19 11:15 RealESRGAN_x4plus_anime_6B.pth
-rw-r--r-- 1 root root 67040989 7月   7 15:26 RealESRGAN_x4plus.pth

创建gfpgan模型存储目录:

mkdir -p gfpgan/weights

下载gfpgan模型文件并存储到上面创建目录gfpgan/weights中:

    detection_Resnet50_Final.pth

    parsing_parsenet.pth

    GFPGANv1.3.pth

完成后通过命令查看显示如下:

 [root@localhost Real-ESRGAN]# ll gfpgan/weights/
总用量 530728
-rw-r--r-- 1 root root 109497761 7月   7 15:33 detection_Resnet50_Final.pth
-rw-r--r-- 1 root root 348632874 7月   7 15:33 GFPGANv1.3.pth
-rw-r--r-- 1 root root  85331193 7月   7 15:33 parsing_parsenet.pth

2.4 修改代码(避免从网络下载,从网络下载非常慢且经常失败)

vi Real-ESRGAN/inference_realesrgan.py 
if args.face_enhance:  # Use GFPGAN for face enhancement
        from gfpgan import GFPGANer
        face_enhancer = GFPGANer(
            model_path='https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth',
            upscale=args.outscale,
            arch='clean',
            channel_multiplier=2,
            bg_upsampler=upsampler)
 
修改为:
 
if args.face_enhance:  # Use GFPGAN for face enhancement
        from gfpgan import GFPGANer
        face_enhancer = GFPGANer(
            model_path='./gfpgan/weights/GFPGANv1.3.pth',
            upscale=args.outscale,
            arch='clean',
            channel_multiplier=2,
            bg_upsampler=upsampler)

3 Real-ESRGAN效果展示

经过处理后的图片存储在results目录下

[root@localhost Real-ESRGAN]# ll results/
总用量 7908
-rw-r--r-- 1 root root 3029489 7月  19 11:20 00003_out.png
-rw-r--r-- 1 root root  133649 7月  19 11:17 0014_out.jpg
-rw-r--r-- 1 root root 4928934 7月  19 11:22 children-alpha_out.png

3.1 通用图像增强

python inference_realesrgan.py -n RealESRGAN_x4plus -i inputs/0014.jpg --face_enhance

原始图片:

 增强后的图片:

 3.2 动漫图像增强

python inference_realesrgan.py -n RealESRGAN_x4plus_anime_6B -i inputs/0014.jpg

原始图片:

 增强后的效果: 

4 总结

Real-ESRGAN是一种基于深度学习的图像超分辨率增强方法,通过生成对抗网络实现高质量的图像重建。它在保留细节和增强图像逼真度方面表现出色,可以广泛应用于图像处理和增强领域。在AI数字人打造过程中,Real-ESRGAN主要用于语音驱动人脸后的图像增强,基于此增强技术构建高清数字人视频。

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

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

相关文章

oled拼接屏在柳州的户外广告中有哪些应用展现?

柳州oled拼接屏是一种高端的显示屏,它采用了OLED技术,具有高亮度、高对比度、高色彩饱和度、高刷新率等优点,能够呈现出更加真实、清晰、细腻的图像效果。 同时,柳州oled拼接屏还具有拼接功能,可以将多个屏幕拼接在一…

2023婴幼儿奶粉市场数据分析(天猫数据中心)

我国婴幼儿奶粉市场一直保持着相当大的规模,虽然近几年新生人口数量不断下降,但伴随消费者的消费升级不断加速、大龄孩童吃奶粉的时间延长等,整体来看,婴幼儿奶粉行业市场规模保持平稳。 根据鲸参谋电商数据分析平台的相关数据显示…

240. 搜索二维矩阵 II

题目描述&#xff1a; 主要思路&#xff1a; 利用矩阵中的单调性进行搜索。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int nmatrix.size(),mmatrix[0].size();int in-1,j0;while(i>0&&j<m){if(m…

Hadoop: High Available

序言 在Hadoop 2.X以前的版本&#xff0c;NameNode面临单点故障风险&#xff08;SPOF&#xff09;&#xff0c;也就是说&#xff0c;一旦NameNode节点挂了&#xff0c;整个集群就不可用了&#xff0c;而且需要借助辅助NameNode来手工干预重启集群&#xff0c;这将延长集群的停…

行为型模式 - 命令模式

概述 日常生活中&#xff0c;我们出去吃饭都会遇到下面的场景。 定义&#xff1a; 将一个请求封装为一个对象&#xff0c;使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通&#xff0c;这样方便将命令对象进行存储、传递、调用、增加与管理。 结构 …

美颜SDK与动态贴纸技术的发展趋势:向更智能、更新颖的美化

美颜SDK和动态贴纸技术在近年来迅速发展&#xff0c;成为移动应用、社交媒体和视频直播等领域中不可或缺的元素。本文将探讨美颜SDK和动态贴纸技术的最新发展趋势&#xff0c;包括智能化算法的应用、增强现实的融合以及个性化定制的兴起。我们将展望未来&#xff0c;展示这些技…

LiveGBS流媒体平台GB/T28181功能-平台国标GB28181级联上级如何抓包分析windows抓包和Linux抓包Wireshark和TCPDUMP

LiveGBS平台国标GB28181级联上级如何抓包分析windows抓包和Linux抓包Wireshark和TCPDUMP 1、背景3、抓包工具准备3.1、Linux3.2、windows 3、找到级联的上级ip4、执行命令抓级联的上级ip4.1 Linux4.2 Windwos 5、触发相关操作6、停止抓包6.1、Linux6.2、Windows 7、查看抓包8、…

【笔试训练】排序子序列和倒置字符串

目录 一、选择题 二、倒置字符串 一、选择题 一、A 派生出子类 B &#xff0c; B 派生出子类 C &#xff0c;并且在 java 源代码有如下声明&#xff1a; 1. A a0new A(); 2. A a1new B(); 3. A a2new C(); 问以下哪个说法是正确的&#xff08;D&#xff09; A. 只有第一行能通…

项目化思维

项目任务负责人的角色 整合者 管理者 影响者 明确需求和目标&#xff1a;IPAD四问法 I:Influencer关键影响人 P:Purpose目的 A:Acceptance 成功标准 时间&#xff0c;成本&#xff0c;质量 D:Deliverables 可交付物 MoSCoW原则 任务分解WBS&#xff08;work breakdown str…

【已解决】哪些软件可以解压RAR文件?

RAR文件是我们日常生活及工作中经常用的压缩文件&#xff0c;文件压缩后可以更方便储存或者传输&#xff0c;后续要使用的时候再进行解压。 那RAR文件如何解压呢&#xff1f;哪些软件可以用来解压RAR文件&#xff1f;在这一方面还是小白的小伙伴可以来看看下面的分享。 解压任…

06_本地方法接口+07_本地方法栈

一、本地方法&#xff1f; 本地方法就是Java调用非Java代码的接口。 本地方法的作用是融合不同的编程语言为Java所用&#xff0c;它的初衷是融合 C、C程序 二、为什么要使用Native Method? 三、本地方法栈 Java虚拟机栈用于管理Java方法的调用&#xff0c;而本地方法栈用于…

JVM系统优化实践(20):GC生产环境案例(三)

您好&#xff0c;这里是「码农镖局」CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 某新手开发工程师接到了一个保存Elasticsearch日志的任务&#xff0c;以供后续分析之用。但写代码的时候&#xff0c;误将保存日志的代码段弄成了无限循环&#xff0c;程序…

玩转单细胞(10):替换单细胞Seurat对象UMAP坐标

玩转单细胞往期精彩系列&#xff1a; 玩转单细胞(2):Seurat批量做图修饰 玩转单细胞(3):堆叠柱状图添加比例 玩转单细胞(4):单细胞相关性 玩转单细胞(5):单细胞UMAP图只标记特定细胞群、圈定细胞群及坐标轴修改 玩转单细胞(6):单细胞差异基因展示之对角散点图 玩转单细胞…

《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(5)-Charles如何设置捕获Https会话

1.简介 在大数据时代&#xff0c;互联网时代&#xff0c;个人信息安全尤为重要&#xff0c;网络安全在近日多起电信诈骗事情发酵下的情况下&#xff0c;引起国家&#xff0c;企业&#xff0c;个人对于互联网安全进一步的重视。而之前很多以http协议传输的网站出现的网站信息泄露…

APIKIT 自学日记:不光有测试报告,还可以保存测试方案呢

在 APIkit 中做测试&#xff0c;可以直接查看测试报告的&#xff01; 测试报告 进入测试报告页面&#xff0c;在这里会列出所有手动批量测试、定时测试、Open api测试的测试报告。 查看测试报告 点击顶部的标签&#xff0c;进入定时测试报告列表&#xff0c;你可以在这里选择…

【hadoop】HDFS

HDFS 操作HDFSWeb Console 网页工具操作NameNode操作SecondaryNameNode 命令行Java API HDFS的原理解析数据上传的过程数据下载的过程 HDFS的高级特性回收站配额Quota名称配额空间配额 快照Snapshot安全模式 SafeMode权限管理&#xff1a;类似LinuxHDFS的集群 HDFS的底层原理&a…

LangChain + Embedding + Chromdb,关联使用ChatGLM的本地搭建训练平台教程

一.介绍 OpenAI 在国内用户注册会遇到各种阻力&#xff0c;目前可行的方法是使用本地数据集的功能实现联网搜索并给出回答&#xff0c;提炼出TXT、WORD 文档里的内容。 现在主流的技术是基于强大的第三方开源库&#xff1a;LangChain 。 文档地址&#xff1a;&#x1f99c;…

行为型模式 - 责任链模式

概述 在现实生活中&#xff0c;常常会出现这样的事例&#xff1a;一个请求有多个对象可以处理&#xff0c;但每个对象的处理条件或权限不同。例如&#xff0c;公司员工请假&#xff0c;可批假的领导有部门负责人、副总经理、总经理等&#xff0c;但每个领导能批准的天数不同&a…

2023出海增长背后的隐忧

2023出海增长背后的隐忧 2023.7.19版权声明&#xff1a;本文为博主chszs的原创文章 今年出口逆势增长的领域&#xff0c;新能源车、锂电池、太阳能电池&#xff0c;号称新三样&#xff0c;有数据支撑&#xff0c;看起来鼓舞人心。 见&#xff1a;外贸出口“新三样”&#xf…

Vue2计算属性如何传参

Vue2官网并没解释计算属性应该怎么传值&#xff0c;但是呢&#xff0c;通过闭包的方式(使用箭头表达式)实际上是可以给计算属性传参的&#xff08;当然&#xff0c;多个参数也是可行的&#xff09;。 以下是本人项目开发使用自己基于ElementUI封装的集信息采集与文件上传功能的…