首页 > 编程语言 >小北在GitHub上克隆项目(超详细的图文并解)之用 Python 对图片和视频进行高清修复

小北在GitHub上克隆项目(超详细的图文并解)之用 Python 对图片和视频进行高清修复

时间:2024-10-26 21:21:55浏览次数:3  
标签:并解 Python x4plus args -- ESRGAN GitHub path model

前言

       估计友友们应该在网上看过很多用 AI 修复的高清视频,最近我也有相关需求,需要修复几张图片。于是便去 GitHub 上寻找相关开源项目,结果还真找到一个,效果还很不错,小北这里特意分享出来给友友们~

Real-ESRGAN 对于算法小白的上手还是比较容易的,即便不懂算法知识,也可以直接使用。再配合简单易用的 realesrgan-gui,使用起来就更方便了。Real-ESRGAN GUI - 实用、美观的 AI 图片放大工具Real-ESRGAN GUI 是 AI 图像修复算法 Real-ESRGAN 的开源图形界面。轻松放大低分辨率图像,使图像更清晰,观感更出色。 https://akarin.dev/realesrgan-gui/

软件打开后界面操作很简单,我们主要关注图片/视频的输入输出路径高清放大图片软件,点击开始运行

高清放大图片软件_放大高清图片软件免费_放大高清图片软件下载

当然你也可以通过固定放大或比例宽度/比例高度无损调整所需图片的大小

高清放大图片软件_放大高清图片软件下载_放大高清图片软件免费

无损生成效果请参考以下内容,选择对应模型,其中:

realesrgan-x4plus (默认)

realesrgan-x4plus-anime(针对动漫插图进行了优化高清放大图片软件,尺寸较小)

realesr-animevideov3(用于动漫视频)

放大高清图片软件下载_放大高清图片软件免费_高清放大图片软件

比如我选择realesrgan-x4plus-anime模型,在下面上传一个表情包,选择输出路径,点击导出。

高清放大图片软件_放大高清图片软件下载_放大高清图片软件免费

生成速度极快,效果如下,可以看到清晰度确实有了质的提升,而且图片大小也从原来的48.4KB跃升到了3.81MB!

放大高清图片软件免费_高清放大图片软件_放大高清图片软件下载

不仅如此,还可以用GIF动图来放大,原理就是用这个算法把图片一帧一帧无损放大,然后再合并,速度会比图片无损放大慢一些。

只需找到另一个 gif 图像,也使用 realesrgan-x4plus-anime 模型并上传即可

放大高清图片软件免费_放大高清图片软件下载_高清放大图片软件

生成的效果如下,细节在手机上可能看得不是很明显,不过在电脑上可以看到分辨率也提升了不少,并且动图大小也从原来的0.98MB跃升到了8.95MB!

放大高清图片软件免费_放大高清图片软件下载_高清放大图片软件

除了基本的常用功能外,如果您有进一步的需求,还可以选择不同的模型来测试结果,并通过以下高级设置来调整采样方式、压缩质量、保存格式等

放大高清图片软件免费_放大高清图片软件下载_高清放大图片软件

(补充)

首先了解一下什么是GitHub

官方定义GitHub为是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。很多小伙伴在学习的过程中可以在此平台找到很好的练手项目,用于提升自己的编程能力。以下是使用教程(自己老是忘,所以记录下来)

一、 GitHub使用教程

1.首先是要下载Git Git官网https://git-scm.com/

 官网下载可能会很慢 ,使用镜像下载速度很快:

镜像下载https://registry.npmmirror.com/binary.html?path=git-for-windows/

下载之后在里面会有Git Bash.exe

2.首先创建一个空的文件夹用于存放项目

3.找到需要克隆的项目选择HTTPS就行不必选择其他

4.复制好地址之后 去刚才创建的文件夹中 右键选择 Open Git Bash here

5.点进去之后会显示一个黑窗口  在此输入git init  用于初始化项目 

6.克隆项目的地址 git clone xxx 右键粘贴地址

(eg:https://github.com/Zhiyilang074811/Real-ESRGAN.git

7.当显示100%, done.时就代表项目克隆成功!

(正篇)小北当前的 Python 版本是 3.10Python Releases for Windows | Python.orghttps://www.python.org/downloads/windows/

  1. 下载 Python 3.10 的安装程序: 如果你还没有下载,可以从 Python 的官方网站下载 Python 3.10 的安装程序:Python Downloads

  2. 运行安装程序: 双击下载的 python-3.10.0.exe 文件开始安装。

  3. 安装向导

    • 安装类型:选择“自定义安装”。
    • 安装选项:确保勾选“Add Python 3.10 to PATH”选项。这将允许你在命令行中方便地访问 Python。
    • 安装位置:你可以选择默认的安装位置,或者更改它到你希望的位置。
  4. 开始安装: 点击“Install Now”开始安装。

  5. 完成安装: 安装完成后,点击“Finish”按钮。

  6. 验证安装: 打开命令提示符或 PowerShell,输入以下命令来验证安装:

    python --version
  7. 你应该看到输出 Python 3.10.x,表明 Python 3.10 已经安装。

  8. 确保安装路径没有空格:最好避免在安装路径中使用空格,例如不要在 C:\Program Files\ 下安装。

  9. 管理员权限:在安装 Python 时,最好以管理员权限运行安装程序,这样可以避免权限问题。

首先将 https://github.com/xinntao/Real-ESRGAN.git 克隆下来,项目结构如下:

然后我们要安装相关依赖,为了避免污染本地 Python 环境,这里先创建一个虚拟环境,在当前目录中执行以下命令:

# 创建虚拟环境 env,我当前的 Python 版本是 3.10
python -m venv env

接着将依赖安装到虚拟环境中:

# 首先更新 pip
./env/Scripts/python -m pip install pip --upgrade
# 安装依赖
./env/Scripts/pip install basicsr facexlib gfpgan Pillow opencv-python tdqm -i https://mirrors.cloud.tencent.com/pypi/simple

然后安装 torch,可以选择 CPU 版和 GPU 版,由于我当前的显卡是 RTX3050,所以选择 GPU 版本。注意:torch 的安装包比较大,安装可能会失败,建议先将 .whl 文件下载到本地。PyTorchhttps://pytorch.org/

# torch
https://download.pytorch.org/whl/cu121/torch-2.1.2%2Bcu121-cp310-cp310-win_amd64.whl
# torchvision
https://download.pytorch.org/whl/cu121/torchvision-0.16.2%2Bcu121-cp310-cp310-win_amd64.whl
# torchaudio
https://download.pytorch.org/whl/cu121/torchaudio-2.1.2%2Bcu121-cp310-cp310-win_amd64.whl

(北生建议:J408的网需要下22h,而小北回到寝室3GB的文件 却只需要 短短几分钟~)

下载下来之后进行安装,注意:下载的时候要根据你当前机器选择一个合适的版本。

.\env\Scripts\python.exe -m pip install "C:\GitHub\Real-ESRGAN\torchvision-0.16.2+cu121-cp310-cp310-win_amd64.whl"
.\env\Scripts\python.exe -m pip install "C:\GitHub\Real-ESRGAN\torch-2.1.2+cu121-cp310-cp310-win_amd64.whl"
.\env\Scripts\python.exe -m pip install "C:\GitHub\Real-ESRGAN\torchaudio-2.1.2+cu121-cp310-cp310-win_amd64.whl"
# 安装当前项目
./env/Scripts/python setup.py develop

到目前为止,相关依赖就已经安装完毕了,然后下载模型。

# 下载完之后丢到当前项目的 weights 目录中
https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth
https://github.com/xinntao/RealESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth

# 下载完之后丢到当前项目的 gfpgan/weights 目录中
https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth
https://github.com/xinntao/facexlib/releases/download/v0.2.2/parsing_parsenet.pth

# 下载完之后丢到当前项目的 env/Lib/site-packages/gfpgan/weights 目录中,env 就是我们刚才创建的虚拟环境
https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth

(手动下载)

到此,所有准备工作就算完成了,下面我们来修复图片。

./env/Scripts/python inference_realesrgan.py \
     -n [模型名称],默认 RealESRGAN_x4plus,还可以选择 RealESRGAN_x4plus_anime_6B.pth(针对动漫)
     -i [目录路径或图片文件路径],默认是当前项目的 inputs 目录,注:不能包含中文
     -o [文件输出路径],默认是当前目录的 results 目录,注:不能包含中文
     -s [采样比例],默认是 4,值越大,像素越高
     --face_enhance 是否开启面部增强
     --ext [auto | jpg | png],图片格式,默认 auto,表示和输入图片的格式相同
cd C:\GitHub\Real-ESRGAN
./env/Scripts/python inference_realesrgan.py -i inputs/xiaoyun.jpg -o results -s 1

二、 Python代码使用教程

        图像超分是一种图像处理技术,旨在提高图像的分辨率,使其具有更高的清晰度和细节。这一技术通常用于图像重建、图像恢复、图像增强等领域,可以帮助我们更好地理解和利用图像信息。图像超分技术可以通过多种方法实现,包括插值算法、深度学习等。其中,深度学习的方法在近年来得到了广泛的关注和应用。基于深度学习的图像超分技术,可以利用深度神经网络学习图像的高频部分,从而提高了图像的分辨率和清晰度。

        目前应用较多的应用场景是图像及视频分辨率提高,比如可以提高以往影视作品或图像的分辨率,提高视觉感官效果;或是解决视频经有损压缩后导致视频效果退化问题。今天给大家介绍一下腾讯ARC实验室发布的一个图像超分辨率模型Real-ESRGAN:项目开源地址论文地址

1.1 项目效果展示

2.1 依赖库安装

git clone https://github.com/xinntao/Real-ESRGAN.git
cd Real-ESRGAN
2.1.2 安装依赖
# 安装 basicsr - https://github.com/xinntao/BasicSR
# 我们使用BasicSR来训练以及推断
pip install basicsr
# facexlib和gfpgan是用来增强人脸的
pip install facexlib
pip install gfpgan
pip install -r requirements.txt
python setup.py develop

2.2 模型介绍

        模型下载链接,里面有7个,有些我不知道是干啥用的,所以就没说。

  • realesrgan-x4plus(默认)
  • reaesrnet-x4plus
  • realesrgan-x4plus-anime(针对动漫插画图像优化,有更小的体积)
  • realesr-animevideov3 (针对动漫视频)

2.3 代码使用

        将下载好的模型,放在项目文件中的weights文件夹中,然后打开inference_realesrgan.py和inference_realesrgan_video.py这两个文件就运行就行了,一个是图片超分,一个是视频超分。我这里将代码已经全部注释了,自己可以看看很好理解。

        默认模型是realesrgan-x4plus,需要超分的图片/视频放在项目文件夹的inputs中,输出在results中。

import argparse
import cv2
import glob
import os
from basicsr.archs.rrdbnet_arch import RRDBNet
from basicsr.utils.download_util import load_file_from_url

from realesrgan import RealESRGANer
from realesrgan.archs.srvgg_arch import SRVGGNetCompact


def main():
    """Inference demo for Real-ESRGAN.
    """
    parser = argparse.ArgumentParser()  # 创建一个命令行解析器对象,用于解析命令行参数
    parser.add_argument('-i', '--input', type=str, default='inputs', help='Input image or folder')
    # 添加一个命令行参数 -i, --input,类型为字符串,默认值为 'inputs',用于指定输入图像或文件夹
    parser.add_argument(
        '-n',
        '--model_name',
        type=str,
        default='RealESRGAN_x4plus',
        help=('Model names: RealESRGAN_x4plus | RealESRNet_x4plus | RealESRGAN_x4plus_anime_6B | RealESRGAN_x2plus | '
              'realesr-animevideov3 | realesr-general-x4v3'))
    # 添加一个命令行参数 -n, --model_name,类型为字符串,默认值为 'RealESRGAN_x4plus',用于指定使用的模型名称
    parser.add_argument('-o', '--output', type=str, default='results', help='Output folder')
    # 添加一个命令行参数 -o, --output,类型为字符串,默认值为 'results',用于指定输出文件夹
    parser.add_argument(
        '-dn',
        '--denoise_strength',
        type=float,
        default=0.5,
        help=('Denoise strength. 0 for weak denoise (keep noise), 1 for strong denoise ability. '
              'Only used for the realesr-general-x4v3 model'))
    # 添加一个命令行参数 -dn, --denoise_strength,类型为浮点数,默认值为 0.5,用于指定去噪强度
    parser.add_argument('-s', '--outscale', type=float, default=4, help='The final upsampling scale of the image')
    # 添加一个命令行参数 -s, --outscale,类型为浮点数,默认值为 4,用于指定最终的放大倍数
    parser.add_argument(
        '--model_path', type=str, default=None, help='[Option] Model path. Usually, you do not need to specify it')
    # 添加一个命令行参数 --model_path,类型为字符串,默认值为 None,用于指定模型路径。通常不需要指定。
    parser.add_argument('--suffix', type=str, default='out', help='Suffix of the restored image')
    # 添加一个命令行参数 --suffix,类型为字符串,默认值为 'out',用于指定输出图像的后缀
    parser.add_argument('-t', '--tile', type=int, default=0, help='Tile size, 0 for no tile during testing')
    # 添加一个命令行参数 -t, --tile,类型为整数,默认值为 0,用于指定瓦片大小。0 表示测试时没有瓦片。
    parser.add_argument('--tile_pad', type=int, default=10, help='Tile padding')
    # 添加一个命令行参数 --tile_pad,类型为整数,默认值为 10,用于指定瓦片填充大小
    parser.add_argument('--pre_pad', type=int, default=0, help='Pre padding size at each border')
    # 添加一个命令行参数 --pre_pad,类型为整数,默认值为 0,用于指定每个边界的预填充大小
    parser.add_argument('--face_enhance', action='store_true', help='Use GFPGAN to enhance face')
    # 添加一个命令行参数 --face_enhance,动作是存储为 True,用于指定是否使用 GFPGAN 来增强人脸
    parser.add_argument(
        '--fp32', action='store_true', help='Use fp32 precision during inference. Default: fp16 (half precision).')
    # 添加一个命令行参数 --fp32,动作是存储为 True,用于指定推理期间是否使用 fp32 精度。默认情况下使用 fp16(半精度)
    parser.add_argument(
        '--alpha_upsampler',
        type=str,
        default='realesrgan',
        help='The upsampler for the alpha channels. Options: realesrgan | bicubic')
    # 添加一个命令行参数 --alpha_upsampler,类型为字符串,默认值为 'realesrgan',用于指定 alpha 通道的上采样器。选项:realesrgan | bicubic
    parser.add_argument(
        '--ext',
        type=str,
        default='auto',
        help='Image extension. Options: auto | jpg | png, auto means using the same extension as inputs')
    # 添加一个参数,参数名为'--ext',类型为字符串,默认值为auto,这个参数主要用于指定输入图像的扩展名。
    parser.add_argument(
        '-g', '--gpu-id', type=int, default=None, help='gpu device to use (default=None) can be 0,1,2 for multi-gpu')
    # 添加一个参数,参数名为'-g'或'--gpu-id',类型为整数,默认值为None。这个参数主要用于指定使用的GPU设备。
    args = parser.parse_args()
    # 解析命令行参数,生成一个命名空间args

    # determine models according to model names
    args.model_name = args.model_name.split('.')[0]
    # 根据传入的命令行参数--model-name来选择模型,这里假设模型名称和使用的模型之间的关系已经预设好。
    if args.model_name == 'RealESRGAN_x4plus':  # x4 RRDBNet model
        model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=4)
        netscale = 4
        file_url = ['https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth']
    elif args.model_name == 'RealESRNet_x4plus':  # x4 RRDBNet model
        model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=4)
        netscale = 4
        file_url = ['https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.1/RealESRNet_x4plus.pth']
    elif args.model_name == 'RealESRGAN_x4plus_anime_6B':  # x4 RRDBNet model with 6 blocks
        model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=6, num_grow_ch=32, scale=4)
        netscale = 4
        file_url = ['https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth']
    elif args.model_name == 'RealESRGAN_x2plus':  # x2 RRDBNet model
        model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=2)
        netscale = 2
        file_url = ['https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.1/RealESRGAN_x2plus.pth']
    elif args.model_name == 'realesr-animevideov3':  # x4 VGG-style model (XS size)
        model = SRVGGNetCompact(num_in_ch=3, num_out_ch=3, num_feat=64, num_conv=16, upscale=4, act_type='prelu')
        netscale = 4
        file_url = ['https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesr-animevideov3.pth']
    elif args.model_name == 'realesr-general-x4v3':  # x4 VGG-style model (S size)
        model = SRVGGNetCompact(num_in_ch=3, num_out_ch=3, num_feat=64, num_conv=32, upscale=4, act_type='prelu')
        netscale = 4
        file_url = [
            'https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesr-general-wdn-x4v3.pth',
            'https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesr-general-x4v3.pth'
        ]

    # determine model paths
    if args.model_path is not None:
        # 判断是否传入了模型路径,如果传入了则直接使用该路径,否则会结合模型名称生成一个默认的模型路径
        model_path = args.model_path
    else:
        model_path = os.path.join('weights', args.model_name + '.pth')
        if not os.path.isfile(model_path):
            ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
            for url in file_url:
                # model_path will be updated
                model_path = load_file_from_url(
                    url=url, model_dir=os.path.join(ROOT_DIR, 'weights'), progress=True, file_name=None)

    # use dni to control the denoise strength
    dni_weight = None
    # dni_weight 为 None 表示不使用 DNI
    # 如果使用了 DNI,dni_weight 的值会是一个列表,列表的两个元素分别代表 DNI 网络和原始模型的权重
    if args.model_name == 'realesr-general-x4v3' and args.denoise_strength != 1:
        wdn_model_path = model_path.replace('realesr-general-x4v3', 'realesr-general-wdn-x4v3')
        model_path = [model_path, wdn_model_path]
        dni_weight = [args.denoise_strength, 1 - args.denoise_strength]

    # restorer
    upsampler = RealESRGANer(
        scale=netscale,  # 放大倍率,即超分辨率的因子
        model_path=model_path,   # 预训练模型的路径
        dni_weight=dni_weight,  # DNI网络的权重,用于控制去噪强度(Denoising Network Integration)
        model=model,  # 输入模型,一般是降噪后的图像
        tile=args.tile,  # 分块大小,即将图像切割成多个小块进行超分辨率
        tile_pad=args.tile_pad,   # 块与块之间的填充大小
        pre_pad=args.pre_pad,   # 预处理时的填充大小
        half=not args.fp32,   # 是否使用半精度浮点数进行计算,若args.fp32为True则使用半精度,否则使用全精度
        gpu_id=args.gpu_id)  # GPU的ID,用于在多GPU环境下指定使用哪个GPU进行计算

    if args.face_enhance:  # Use GFPGAN for face enhancement,如果需要使用 GFPGAN 进行人脸增强
        from gfpgan import GFPGANer  # 导入 GFPGAN 人脸增强器的类
        face_enhancer = GFPGANer(
            model_path='https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth',
            upscale=args.outscale,  # 放大倍率,即超分辨率的因子
            arch='clean',   # GFPGAN的架构,这里选择的是'clean'版本
            channel_multiplier=2,  # 通道的乘数,用于扩大模型的通道数
            bg_upsampler=upsampler)  # 使用之前创建的RealESRGAN超分辨率增强器作为背景超分辨率增强器
    # args.output = r"G:\Anaconda\ProjectYOLO\yolov5-7.0\Real-ESRGAN-master\1/"
    os.makedirs(args.output, exist_ok=True)  # 创建输出目录,如果已存在则不报错,继续执行后续代码

    if os.path.isfile(args.input):
        # 判断输入路径是否为一个文件
        paths = [args.input]
        # 如果是文件,直接将其路径加入到paths列表中
    else:
        paths = sorted(glob.glob(os.path.join(args.input, '*')))
        # 如果输入路径不是一个文件,那么它应该是一个包含图像的文件夹
        # 使用glob库获取输入路径下所有的文件路径,并将它们按字母顺序排序后加入到paths列表中
    for idx, path in enumerate(paths):
        # 遍历所有的文件路径
        imgname, extension = os.path.splitext(os.path.basename(path))  # 获取文件名和扩展名
        print('Testing', idx, imgname)  # 打印正在处理的文件信息
        img = cv2.imread(path, cv2.IMREAD_UNCHANGED)
        # 使用OpenCV读取图片,参数cv2.IMREAD_UNCHANGED表示以最接近原始图像的颜色空间读取图像
        if len(img.shape) == 3 and img.shape[2] == 4:
            # 判断图像的维度,如果维度为3且第三个维度的大小为4,说明图像是RGBA格式的,否则不进行特殊处理
            img_mode = 'RGBA'  # 记录图片模式为RGBA
        else:
            img_mode = None  # 否则不记录图片模式
        try:
            if args.face_enhance:
                # 如果需要人脸增强,使用face_enhancer进行人脸增强处理,参数包括输入图像、是否进行人脸对齐、是否只处理中心的人脸部分以及是否将处理后的人脸粘贴回原图
                _, _, output = face_enhancer.enhance(img, has_aligned=False, only_center_face=False, paste_back=True)
            else:
                # 否则,使用upsampler进行图像超分辨率增强,参数包括输入图像、放大倍数以及是否使用GPU加速
                output, _ = upsampler.enhance(img, outscale=args.outscale)
        except RuntimeError as error:
            # 如果在处理过程中出现RuntimeError异常,打印错误信息,并给出可能的解决方案
            print('Error', error)
            print('If you encounter CUDA out of memory, try to set --tile with a smaller number.')
        else:
            # 如果没有出现异常,执行else分支的代码
            # 如果用户没有指定输出文件的扩展名,则自动从输入文件的扩展名中获取输出文件的扩展名;否则使用用户指定的扩展名
            if args.ext == 'auto':
                extension = extension[1:]
            else:
                extension = args.ext
            if img_mode == 'RGBA':  # RGBA images should be saved in png format
                # 如果图片的模式是RGBA,说明图片是RGBA格式的,需要将其保存为png格式的图片
                extension = 'png'
            if args.suffix == '':
                # 根据用户指定的后缀名构造保存路径
                save_path = os.path.join(args.output, f'{imgname}.{extension}')
            else:
                save_path = os.path.join(args.output, f'{imgname}_{args.suffix}.{extension}')
                # 使用OpenCV将处理后的图片保存到指定路径下,参数指定保存的文件格式和压缩质量等选项(这里没有指定压缩质量)
            cv2.imwrite(save_path, output)
            # 保存处理后的图片到指定路径下


if __name__ == '__main__':
    main()

2.4 命令行使用

2.4.1 参数
Usage: python inference_realesrgan.py -n RealESRGAN_x4plus -i infile -o outfile [options]...

A common command: python inference_realesrgan.py -n RealESRGAN_x4plus -i infile --outscale 3.5 --face_enhance

  -h                   show this help
  -i --input           Input image or folder. Default: inputs
  -o --output          Output folder. Default: results
  -n --model_name      Model name. Default: RealESRGAN_x4plus
  -s, --outscale       The final upsampling scale of the image. Default: 4
  --suffix             Suffix of the restored image. Default: out
  -t, --tile           Tile size, 0 for no tile during testing. Default: 0
  --face_enhance       Whether to use GFPGAN to enhance face. Default: False
  --fp32               Whether to use half precision during inference. Default: False
  --ext                Image extension. Options: auto | jpg | png, auto means using the same extension as inputs. Default: auto
2.4.2 参数使用
python inference_realesrgan.py -n RealESRGAN_x4plus_anime_6B -i inputs

3 桌面端轻应用

        作者提供了打包好的桌面端exe程序,无需配置PyTorch等依赖,Windows下载地址

        使用方法也很简单,图片放在realesrgan-ncnn-vulkan.exe同目录下,然后使用cmd命令行跳转至这个目录,输入下面的命令(自己修改)。

./realesrgan-ncnn-vulkan.exe -i 输入图像.jpg -o 输出图像.png -n 模型名字

注意:可执行文件并没有支持 python 脚本 inference_realesrgan.py 中所有的功能,比如 outscale 选项) .

./realesrgan-ncnn-vulkan.exe -i 输入图像.jpg -o 输出图像.png -n 模型名字

        由于这些exe文件会把图像分成几个板块,然后来分别进行处理,再合成导出,输出的图像可能会有一点割裂感(而且可能跟PyTorch的输出不太一样)。

4 总结

        这个开源项目总体来说精度是不错的,图像的分辨率确实有明显的提升,可以将模糊的图片还原出更多的细节,但有时候的效果比较抽象。作者在项目中说会持续更新(PS:作者的重心好像是放在动漫图片超分方面),希望会越来越好。最后分享一下腾讯ARC的Web端使用demo

三、Anaconda环境安装使用教程

D:\桌面\GitHub\Work

查看显卡驱动版本号(第一种方法)560.94

查看显卡驱动版本号(第二种方法)5.6094——560.94

根据显卡驱动版本号,安装对应版本cuda(560.94)

CUDA 12.6 Update 2 Release NotesThe Release Notes for the CUDA Toolkit.icon-default.png?t=O83Ahttps://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

下载对应版本cudahttps://developer.nvidia.com/cuda-toolkit-archiveicon-default.png?t=O83Ahttps://developer.nvidia.com/cuda-toolkit-archive

正常安装将目录指到Work,创建名为jackcui的虚拟环境

conda create -n jackcui jupyter notebook cudnn

切换到jackcui虚拟环境:

activate jackcui

将目录指到:D:\桌面\GitHub\Code\Real-ESRGAN

在pytorch官网复制命令:

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

粘贴到cmd,下载pytorch找到requirements文件,删除已经下载好的内容

输入命令:

python -m pip install -r .\requirements.txt

从inputs文件中放入需要处理的图片,在result文件中查看训练后的图片

在README中下载训练模型,放到指定文件中

⚡ 快速上手

普通图片

下载我们训练好的模型: RealESRGAN_x4plus.pth

wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth -P weights

推断!

python inference_realesrgan.py -n RealESRGAN_x4plus -i inputs --face_enhance

结果在results文件夹

动画图片

训练好的模型: RealESRGAN_x4plus_anime_6B
有关waifu2x的更多信息和对比在anime_model.md中。

# 下载模型
wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth -P weights
# 推断
python inference_realesrgan.py -n RealESRGAN_x4plus_anime_6B -i inputs

结果在results文件夹

运行命令上图中的命令:

python inference_realesrgan.py -n RealESRGAN_x4plus -i inputs --face_enhance

但报错了

pip install --upgrade torch torchvision

看起来你的 torchtorchvision 已经安装了,但是版本是 torch 2.5.0torchvision 0.20.0。根据错误信息,torchvision 的版本可能不包含 torchvision.transforms.functional_tensor 模块。

torchvision 的新版本中,rgb_to_grayscale 函数已经被移到了 torchvision.transforms.functional 模块下。因此,你需要修改 basicsr 库中引用这个函数的代码。

你可以尝试以下步骤来解决这个问题:

  1. 修改代码:找到 basicsr 库中引用 torchvision.transforms.functional_tensor 的代码,并将其更改为 torchvision.transforms.functional

    打开 D:\Anconda\envs\jackcui\Lib\site-packages\basicsr\data\degradations.py 文件,找到以下行:

    from torchvision.transforms.functional_tensor import rgb_to_grayscale

    将其更改为:

    from torchvision.transforms.functional import rgb_to_grayscale
  2. 重新运行脚本:保存更改后,再次运行你的脚本:

    python inference_realesrgan.py -n RealESRGAN_x4plus -i inputs --face_enhance

解决方案是找到_init_文件,注释掉version

再运行一次命令:

python inference_realesrgan.py -n RealESRGAN_x4plus -i inputs --face_enhance

优化视频:下载模型放入指定文件夹:

Real-ESRGAN/docs/anime_video_model.md at master · xinntao/Real-ESRGAN · GitHubReal-ESRGAN aims at developing Practical Algorithms for General Image/Video Restoration. - Real-ESRGAN/docs/anime_video_model.md at master · xinntao/Real-ESRGANicon-default.png?t=O83Ahttps://github.com/xinntao/Real-ESRGAN/blob/master/docs/anime_video_model.md#how-to-use

anaconda下载ffmpeg(这样下载好像不管用)将目录指到:D:\桌面\GitHub\Code\Real-ESRGAN

activate jackcui

md下载ffmpeg:

pip install ffmpeg-python

运行命令:

python inference_realesrgan_video.py -i inputs/video/onepiece_demo.mp4 -n RealESRGANv2-animevideo-xsx2 -s 2 -v -a --half --suffix outx2

标签:并解,Python,x4plus,args,--,ESRGAN,GitHub,path,model
From: https://blog.csdn.net/Zhiyilang/article/details/142573485

相关文章

  • 基于Python+Vue开发的母婴商城管理系统
    项目简介该项目是基于Python+Vue开发的母婴商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的网上母婴商城管理系统项目,大学生可以在实践中学习和......
  • 基于Python+Vue开发的婚恋交友管理系统
    项目简介该项目是基于Python+Vue开发的婚恋交友管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的婚恋相亲交友系统项目,大学生可以在实践中学习和提升......
  • 最新毕设-SpringBoot-健康体检系统-12791(免费领项目)可做计算机毕业设计JAVA、PHP、爬
    springboot健康体检系统摘要在如今IT技术快速发展和Internet广泛应用的时代,电子和网络技术给人们生活带来了便利,同时也会直接或间接损害人们的健康。所以,本次的毕业设计创作的意义就是通过信息化的统一管理,给用户尽心健康体检预约提供了方便。本设计主要实现集人性化、高效......
  • (2024最新毕设合集)基于Django的房价分析平台-65434|可做计算机毕业设计JAVA、PHP、爬虫
    摘要本论文主要论述了如何基于Django框架开发一个房价分析平台,本系统将严格按照软件开发流程进行各个阶段的工作,通过爬虫技术对贵州省的房价数据进行爬取,面向对象编程思想进行项目开发。在引言中,作者将论述房价分析平台的当前背景以及系统开发的目的,后续章节将严格按照软件......
  • 深度学习Python停车场智能车牌识别系统opencv流量费用时间AI源码
    随着智能交通技术的发展,停车场智能车牌识别系统逐渐成为现代停车管理的重要工具。该系统利用深度学习和计算机视觉技术,实现对车辆车牌的自动检测与识别,从而提高停车场的管理效率和用户体验。系统架构与功能模块车牌检测:系统首先利用目标检测算法(如YOLO或FasterR-CNN)对停车......
  • 面试 | Python热门面试题·基础篇
    Python简介Python由GuidovanRossum开发,于1991年2月20日首次发布。它是最广泛使用和最受欢迎的编程语言之一,本质上是解释性的,因此在合并动态语义方面提供了灵活性。它也是一种免费的开源语言,语法非常简单干净。这使开发人员可以轻松Python,Python还支持面向对象编程,......
  • 【2024版】PyCharm专业版下载+安装+汉化教程,Pycharm环境配置和使用指南,零基础小白Pyth
    前言PyCharm是一款由JetBrains公司推出的PythonIDE。它提供了一个简单易用的图形用户界面,并且具有很多有用的功能,如代码补全和自动代码检查,帮助开发人员更加高效地编写Python代码。此外,PyCharm还提供了调试器和版本控制系统集成,使得开发人员能够更加轻松地管理和维护他们的......
  • 自学Python不知道看什么书?10本Python经典好书(附pdf),看完少走一半弯路
    前言Python的语法简单,易于上手,这使得初学者能够快速地掌握编程基础,并迅速投入到实际项目中去。同时Python入门时阅读书籍的作用是多方面的,阅读书籍不仅为初学者提供了系统学习Python的基础、掌握的基础知识,还可以培养他们的编程思维和学习动力,为未来的编程之路打下坚实的基础......
  • 一篇最全Python 爬虫超详细讲解(零基础入门,适合小白)
    爬虫是指通过编程自动从网页上获取信息的技术.想象你平时打开网页,右键点击“查看源代码”,那些你看到的HTML代码就是网页的结构,而爬虫就像一位帮你阅读这些网页内容的“机器人”.创作不易,还请各位同学三连点赞!!收藏!!转发!!!刚入门学习Python的小伙伴可以试试我的这份学习方法......
  • python实战(三)——文本向量化/文本表示
    一、概念    文本向量化是自然语言处理领域的重要环节,也是现在大语言模型开发重要基础。计算机程序无法理解文字信息(实际上非数值类型的信息都无法理解),因此我们需要将文字信息转换成计算机程序可理解的数值类型。通俗来说就是我们的算法模型是一系列函数和公式的组合......