Real-ESRGAN实战使用教程

项目地址:https://github.com/xinntao/Real-ESRGAN
图像超分辨率(Super-Resolution, SR)技术旨在从低分辨率图像生成高分辨率图像,应用广泛,如电视、视频监控、医学成像等多个领域。近年来,生成对抗网络(GANs)的引入使得图像超分辨率技术取得了显著进展。其中,Real-ESRGAN 作为一种先进的超分辨率技术,因其在处理真实世界图像时的卓越表现,受到了广泛关注。

什么是 Real-ESRGAN
Real-ESRGAN(Enhanced Super-Resolution Generative Adversarial Networks)是一种基于 ESRGAN 的改进型模型,专为处理真实世界图像中的复杂和多样的降质情况而设计。它通过结合多尺度特征提取与生成对抗训练,能够生成高质量和细节丰富的高分辨率图像。

Real-ESRGAN的优化是在ESRGAN的基础上做的,主要内容如下:
(1)给出了一个数据高阶退化过程。即拼接几个典型退化过程来建模(其中还包括sinc filter),从而获得更加接近现实的低质图像。最终作者采用了一个二阶退化过程,以求在简单性和有效性之间取得良好的平衡。这很重要,我们后面重点介绍。
(2)判别器用U-Net代替VGG。Real-ESRGAN中的鉴别器对复杂的训练输出需要更大的鉴别能力,它还需要为局部纹理产生精确的梯度反馈,而不是只区分全局样式。因此使用更加强大的U-Net作为判别器。输出每个像素的真实度值,并可以向生成器提供详细的每像素反馈,增强了图像对细节上的对抗学习。判别器我们下面也会重点介绍。
(3)引入谱归一化(Spectral Normalization)以稳定由于复杂数据集和U-Net判别器带来的训练不稳定情况。

好了,结束这些理论的东西,我也不太擅长讲一些理论的东西,我更偏向于是一个实践派。所以我来讲一讲如何实践使用这个Real—ESRGAN模型,但是哈,如果有必要的话,我会带大家一起读代码,更深层次的去学习这个模型,后面再说,哈哈哈。

一,环境配置
1,实践第一步,那当然是配置环境啦,我也看过人家的配置环境过程,不堪入目,就全是把人家官方文档的东西硬抄下来,能不能运行就没啥保障了,起码我自己配环境的时候,真的是恶心的要die了。
ok,来讲第一个要注意的点,运行一个新项目的时候,大家都会创建一个虚拟环境吧,不创建的叉出去谢谢,这个时候就会出现各种问题,(用conda还好,但是我用conda经常容易依赖报错),所以我一般用python自带的功能,或者用virtualenv,用python自带的就好啦,创建完以后呢,重要的坑来了。
一个是在windows环境下,下载三方库的时候经常会有依赖冲突报错,但是按理来说,人家把那些库的版本拿出来给你,一般来说都是可以用的,但是为什么会报错呢,很大一部分原因就是,虚拟环境与外部系统环境之间起了冲突,什么意思呢,意思就是,你明明是在虚拟环境内下载的对应的库,但是很多时候发现,都会跟外面的系统环境冲突,这个时候一般来说都是环境变量冲突导致的,可能是因为默认环境变量是系统环境的原因,所以就会跟虚拟环境冲突,明明使用的是虚拟环境,结果python还是使用的系统环境的路径,这个问题一直困扰了好久,基本上你没有想到这一茬的话,在里面转个几天都出不来,很是恶心,这下面是windows环境下的处理方法。把pythonpath变量的第一个改成你想要用的就行。
在这里插入图片描述

2,第二个问题就是最恶心的问题,他的basicsr库有问题,清华源下载不了,但是他不会这样给你报错,他会给你报一堆依赖冲突的错误,但是实际上换个源就好了,或者直接在GitHub上下载他的预编译版本。
pip install basicsr -i https://mirrors.aliyun.com/pypi/simple/ --timeout 1000

3,再一个就是这个,这个是他的项目本身就存在的一个问题,在这个issues里面解释的很清楚,最好是用第二种方法,直接改代码,强制改文件后缀是不可取的。
https://github.com/xinntao/Real-ESRGAN/issues/555

基本上容易踩坑的就是这些了,再结合官方文档上面的东西就可以正常使用啦。

额外的小知识:
在图像处理中,使用 negative_prompt(反向提示词)而不是仅用 positive_prompt(正向提示词)有几个重要原因:

  1. 更精确的控制
  • 正向提示词告诉模型"要做什么"
  • 反向提示词告诉模型"不要做什么"
  • 两者结合能更精确地控制输出结果
  1. 防止不必要的创造性
  • Stable Diffusion 模型本质上是一个生成模型,倾向于添加新内容
  • 通过反向提示词明确禁止添加新内容,能更好地保持原图的内容和构图
  1. 避免常见问题
  • 即使有很好的正向提示词,模型也可能生成模糊、噪点等问题
  • 通过反向提示词明确禁止这些问题,能获得更稳定的结果
  1. 更可控的结果
  • 正向提示词可能被模型过度解释,导致意外的改变
  • 反向提示词帮助限制模型的创造性,使结果更符合预期

在我们的画质提升场景中,我们主要想保持原图内容不变,只提升画质,所以使用反向提示词特别重要。它能有效防止模型添加或改变内容,专注于画质提升这一目标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炼丹上岸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值