【python|小乐趣儿】老照片修复神器

老照片修复神器

  • 如何发现黑科技(qiong(穷) o(╯□╰)o)
    • 1. 克隆开源的GFPGAN项目
    • 2. 安装依赖包
    • 3. 使用方法(修复人脸)
      • 3-1. 默认只修复人脸
        • 执行windows cmd命令:
      • 3-2. 使用Real-ESRGAN增强背景(非面部)区域
        • 修改代码,支持在CPU上运行未优化的 RealESRGAN:
        • 执行windows cmd命令:
    • 4. 对比总结

如何发现黑科技(qiong(穷) o(╯□╰)o)

某天刷小red书发现可以将老照片修复成和刚拍的照片一样,看博主的视频,直呼也太神奇了。然后就根据博主推荐的小程序、app等注册试了试,oh,竟然要充money,哼,我就不信,我找不到免费的…

于是乎,就有了如下方法(腾讯开源项目),修复照片人脸还是很ok的,关键是不要钱,哈哈哈哈。

1. 克隆开源的GFPGAN项目

# GFPGAN 真实场景人脸复原的实用算法。t clone https://github.com/TencentARC/GFPGAN.git
cd GFPGAN

2. 安装依赖包

# Install basicsr - https://github.com/xinntao/BasicSR
# BasicSR (Basic Super Restoration) 是一个基于 PyTorch 的开源 图像视频复原工具箱, 用于训练和推理, 比如 超分辨率, 去噪, 去模糊, 去 JPEG 压缩噪声等.
pip install basicsr

# Install facexlib - https://github.com/xinntao/facexlib
# facexlib 是一个基于 pytorch 的库,提供实用的人脸相关功能的集合,例如检测、对齐、识别、跟踪、人脸修复的 utils 等。它只提供推理(没有训练)。
pip install facexlib

pip install -r requirements.txt
python setup.py develop

# Real-ESRGAN 盲图像超分辨率模型。
# 需要增强背景(非面部)区域的话,还需安装Real-ESRGAN模型
pip install realesrgan

3. 使用方法(修复人脸)

3-1. 默认只修复人脸

执行windows cmd命令:

示例:
python310 inference_gfpgan.py -i inputs/whole_imgs -o results_1.4  -v 1.4 -s 4 

注: 
-i 输入,需要处理的图片路径
-o 输出,保存处理后的图片路径
-v 指定GFPGAN模型版本, 当前支持'v1.2', 'v1.3', 'v1.4'三个版本,1.4相比1.3更加真实,当然各取所需
-s 图像的最终超采样比例. 默认: 2, 最大值是 4,可理解为放大

3-2. 使用Real-ESRGAN增强背景(非面部)区域

源代码默认是不支持在CPU上运行未优化的 RealESRGAN ,因为运行会比较缓慢。但如果真的要使用它,就需要修改相应的代码。否则,会有如下提示:

UserWarning: The unoptimized RealESRGAN is slow on CPU. We do not use it. If you really want to use it, please modify the corresponding codes.

修改代码,支持在CPU上运行未优化的 RealESRGAN:

#  修改inference_gfpgan.py后:

    # ------------------------ set up background upsampler ------------------------
    if args.bg_upsampler == 'realesrgan':
        if not torch.cuda.is_available():  # CPU
            # import warnings
            # warnings.warn('The unoptimized RealESRGAN is slow on CPU. We do not use it. '
            #               'If you really want to use it, please modify the corresponding codes.')
            # bg_upsampler = None
            from basicsr.archs.rrdbnet_arch import RRDBNet
            from realesrgan import RealESRGANer
            model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=2)
            bg_upsampler = RealESRGANer(
                scale=2,
                model_path='https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.1/RealESRGAN_x2plus.pth',
                model=model,
                tile=args.bg_tile,
                tile_pad=10,
                pre_pad=0,
                half=False)  # need to set False in CPU mode else: bg_upsampler = None

执行windows cmd命令:

示例:
python310 inference_gfpgan.py -i inputs/whole_imgs -o results_1.4  -v 1.4 -s 4 

注: 
-i 输入,需要处理的图片路径
-o 输出,保存处理后的图片路径
-v 指定GFPGAN模型版本, 当前支持'v1.2', 'v1.3', 'v1.4'三个版本,1.4相比1.3更加真实,当然各取所需
-s 图像的最终超采样比例. 默认: 2, 最大值是 4,可理解为放大

执行结束后,输出文件路径会出现4个目录:
【python|小乐趣儿】老照片修复神器_第1张图片
cmp是人脸对比图:
【python|小乐趣儿】老照片修复神器_第2张图片
cropped_faces 是人脸原图:
【python|小乐趣儿】老照片修复神器_第3张图片
restored_faces是人脸修复后的图:
【python|小乐趣儿】老照片修复神器_第4张图片

restored_imgs是修复后的完整图片:
【python|小乐趣儿】老照片修复神器_第5张图片
完整图,修复前后的大图:
【python|小乐趣儿】老照片修复神器_第6张图片

【python|小乐趣儿】老照片修复神器_第7张图片
【python|小乐趣儿】老照片修复神器_第8张图片

【python|小乐趣儿】老照片修复神器_第9张图片
【python|小乐趣儿】老照片修复神器_第10张图片

【python|小乐趣儿】老照片修复神器_第11张图片

4. 对比总结

  1. 除人脸外,背景几乎未修复,但是使用Real-ESRGAN增强面部区域的话,效果会好很多
  2. 总的来说,清晰了好多倍呀,不必ps差哦,而且不要钱

原图均来源于百度,如有侵权,请联系作者删除,谢谢~

你可能感兴趣的:(小乐趣儿,python,python,开发语言)