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

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-ESRGANconda create -n realesgan python=3.9
conda activate realesganpip install basicsr==1.4.2
pip install facexlib==0.3.0
pip install gfpgan==1.3.8pip install -r requirements.txtpython 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 enhancementfrom gfpgan import GFPGANerface_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 enhancementfrom gfpgan import GFPGANerface_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.hqwc.cn/news/29527.html

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

相关文章

Ceph

Ceph简介 Ceph使用C语言开发,是一个开放、自我修复和自我管理的开源分布式存储系统。具有高扩展性、高性能、高可靠性的优点。Ceph目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack,Kubernetes都可与Ceph整合以支持虚拟机镜像的后端存储…

消息队列——RabbitMQ基本概念+容器化部署和简单工作模式程序

目录 基本概念 MQ 的优势 1.应用解耦 2.异步提速 3.削峰填谷 MQ 的劣势 使用mq的条件 常见MQ产品 RabbitMQ简介 RabbitMQ的六种工作模式 JMS RabbitMQ安装和配置。 RabbitMQ控制台使用。 RabbitMQ快速入门——生产者 需求: RabbitMQ快速入门——消费者 小结 基本概…

快7月底了,让我康康有多少准备跳槽的

前两天跟朋友感慨,今年的铜三铁四、裁员、疫情影响导致好多人都没拿到offer!现在已经快7月底了,具体金九银十只剩下2个月。 对于想跳槽的职场人来说,绝对要从现在开始做准备了。这时候,很多高薪技术岗、管理岗的缺口和市场需求也…

【RISC-V】昉·星光 2单板计算机初始调试记录

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

stb_image简单使用

简介stb_image stb_image 是一个非常轻量级的、单文件的图像加载库,用于加载和解码多种图像格式(如BMP、JPEG、PNG、GIF等)的图像数据。它由Sean T. Barrett开发,并以公共领域(Public Domain)许可发布&…

⛳ Git安装与配置

Git安装配置目录 ⛳ Git安装与配置🏭 一,git的安装🎨 1,下载git👣 2,下载完成之后,双击安装即可。💻 3,更改安装目录(没有中文且没有空格)&#x…

支付宝支付上线准备工作(商家自研接入)

商家自研流程 1.创建应用 登录支付宝开放平台创建 网页/移动应用 说明:生成的应用唯一标识 APPID 可用于调用开放产品接口。 2.配置应用 2.1 应用详情 2.2 产品绑定 2.3 开发设置 在开发 > 开发设置 中配置应用信息。 2.3.1 接口加密方式 按操作步骤进行…

SpringCloud学习路线(3)—— Eureka注册中心

一、导引 服务调用出现的问题 服务调用采取的请求地址是静态的,当我们使用服务集群时,很容易造成只能调用固定的微服务上的接口。多个提供者,消费者的使用对象无法确定消费者无法得知提供者的状态 二、Eureka注册中心 (一&…

【Vue】day02-Vue基础入门

目录 day02 一、今日学习目标 1.指令补充 2.computed计算属性 3.watch侦听器 4.综合案例 (演示) 二、指令修饰符 1.什么是指令修饰符? 2.按键修饰符 3.v-model修饰符 4.事件修饰符 三、v-bind对样式控制的增强-操作class 1.语法…

文件IO_文件截断_ftruncate,truncate(附Linux-5.15.10内核源码分析)

目录 1.为什么需要文件截断? 2.truncate函数介绍 2.1 truncate函数 2.2 truncate函数内核源码分析 2.3 truncate函数使用示例 3.ftruncate函数介绍 3.1 ftruncate函数 3.2 ftruncate函数内核源码分析 3.3 ftruncate函数使用示例 3.4 ftruncate和文件偏移量…

java学习路程之篇十、知识点、数组介绍、二维数组介绍、静态初始化、访问元素、遍历元素、动态初始化、内存图、数组常见问题

文章目录 01、数组介绍02、数组静态初始化03、数组元素访问04、数组遍历操作05、数组动态初始化06、数组内存图07、数组常见问题08、二维数组介绍09、二维数组静态初始化10、二维数组遍历11、二维数组动态初始化12、二维数组内存图 01、数组介绍 02、数组静态初始化 03、数组元…

Redis可视化工具(Redis Desktop Manager)

redis是我们平时开发工作中经常用到的非关系型数据库,常用于做数据缓存,分布式锁等。 为了更方便的使用redi,这里给大家推荐一款可视化工具:Redis Desktop Manager。 1.下载与安装 直接到gihub下载,地址 Release 0.…