GPEN人像修复图像画质增强模型
该模型全称为cv_gpen_image-portrait-enhancement,输入一张包含人像的图像,算法会对图像中的每一个检测到的人像做修复和增强,对图像中的非人像区域采用RealESRNet做两倍的超分辨率,最终返回修复后的完整图像。
GPEN将预训练好的StyleGAN2网络作为decoder嵌入到人像修复模型中,并通过finetune的方式最终实现修复功能,在多项指标上达到行业领先的效果。
适用范围
本模型适用范围较广,给定任意的包含人像的图片,在设备性能允许的情况下,都能输出修复后的效果图。
如何使用
在ModelScope框架上,提供任意图片,即可以通过简单的Pipeline调用来使用人像修复模型。
前置条件
在执行项目安装之前,我们还需要安装Git和Conda,如果您的电脑还未安装这两个软件,请先根据本站所给出的教程安装。
Windows系统安装Git请参阅此文章:
Windows系统安装Conda请参阅此文章:
安装教程
如果您是初学者,对于命令行不太理解,那么请按下键盘上的Win键+R键
后,在弹出的新窗口内输入CMD并按下回车,打开CMD窗口,按顺序执行如下的每一条命令。
首先我们需要确认一个工作目录,用来存放cv_gpen_image-portrait-enhancement
的相关环境依赖文件。本站所选择的目录为D盘的根目录下openai.wiki
文件夹,完整路径为:D:\openai.wiki
。
检测D盘是否在openai.wiki
目录下有没有cv_gpen_image-portrait-enhancement
文件夹,没有则创建该文件夹。
if not exist D:\openai.wiki\cv_gpen_image-portrait-enhancement mkdir D:\openai.wiki\cv_gpen_image-portrait-enhancement
强制切换工作路径为D盘的openai.wiki\cv_gpen_image-portrait-enhancement
文件夹。
cd /d D:\openai.wiki\cv_gpen_image-portrait-enhancement
环境部署
在CMD中执行下面的命令行,创建Conda虚拟环境至该项目的目录中,方便日后重装系统也能够正常使用,无需重新部署环境。
conda create -y -p D:\openai.wiki\cv_gpen_image-portrait-enhancement\ENV python=3.7
初始化Conda环境,避免后续可能报错。
conda init cmd.exe
激活已创建的Conda环境,这样我们可以将我们后续所需要的所有环境依赖都安装至此环境下。
conda activate D:\openai.wiki\cv_gpen_image-portrait-enhancement\ENV
执行如下命令,安装阿里达摩院
相关依赖。
pip install modelscope
执行如下命令,安装CV2
依赖库。
pip install opencv-python
执行如下命令,安装torch
依赖。
pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsing
此时我们还需要安装一个scikit-image
库,执行如下代码即可。
pip install scikit-image
模型下载
在你首次运行生成代码时,将会自动下载模型,因为下载方式是国内直连,所以下载速度还是挺快的,毕竟是阿里提供的服务。
如果你想找到模型的存在位置,可以在运行中执行以下代码,这将会自动打开ModelScope的各项目缓存目录,模型就在这些目录内。
%USERPROFILE%\.cache\modelscope\hub\damo\cv_gpen_image-portrait-enhancement
如果你不希望自动下载,而是通过国内网盘的方式,本站也提供了模型的网盘下载地址。
使用教程
此模型官方并未给出一个详细的脚本,本站写了一个简单的Python脚本,使用VSCode运行该Python脚本即可。在运行该脚本之前,请先对以下Python脚本中的名称
|格式
|路径
根据自身情况进行修改。
注意:使用VS Code执行该脚本时,VS Code会提示您选择一个Python环境,此时您可以选择路径为D:\openai.wiki\cv_gpen_image-portrait-enhancement\ENV
的Python环境,这就是我们刚刚使用Conda所生成的虚拟环境。
# 此脚本由openai.wiki提供,转载请注明出处,谢谢配合。 import cv2 from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks # 原图名称 resultIMGName = '图像名称' # 原图格式 resultIMGFormat = '.jpg' # 原图路径 resultIMGPath = 'D:\openai.wiki\cv_gpen_image-portrait-enhancement' # 输出图像名称 outputIMGName = '图像名称' # 输出格式 | 尽量不要改 outputFormat = '.png' # 输出路径 outputIMGPath = 'D:\openai.wiki\cv_gpen_image-portrait-enhancement' # 下面的内容尽量不要改动 print (('原图路径:%s/%s%s'%(resultIMGPath,resultIMGName,resultIMGFormat)).replace('\\', '/')) p = pipeline(Tasks.image_portrait_enhancement, model='damo/cv_gpen_image-portrait-enhancement') result = p(('%s/%s%s'%(resultIMGPath,resultIMGName,resultIMGFormat)).replace('\\', '/')) output_path = ('%s/%s%s'%(outputIMGPath,outputIMGName,outputFormat)).replace('\\', '/') print (('输出路径:%s/%s%s'%(outputIMGPath,outputIMGName,resultIMGFormat)).replace('\\', '/')) cv2.imwrite(output_path, result['output_img']) print ('输出完成')
效果示例
下面是一些图像使用效果示例,本站通过对多种使用环境进行对比发现,该模型对于人脸大部照效果较好,但是对于动物和远景等情况下所修复的效果较为一般。
模型局限性以及可能的偏差
- 目前提供的模型只支持512×512分辨率的输入,如果输入人脸分辨率或清晰度高于此,使用本模型可能会导致生成降质效果。
- 真实图片的降质很复杂,本算法使用模拟降质数据训练,可能存在处理不好的case。
- 本算法可能存在色偏等瑕疵现象。
训练数据
训练数据为FFHQ公开数据集。本算法采用监督式的训练,因此需要事先准备好高质-低质的数据对,推荐使用RealESRGAN、BSRGAN等降质方式进行低质数据生成。
微调流程
提供训练数据对的读取地址,设置好需要的分辨率版本(推荐512×512),调整生成器和判别器的学习率以及总epoch数,即可开始训练。
预处理
需要使用降质模型对FFHQ高清人像数据做降质,得到相对应的低质图片。
模型训练代码
# Copyright (c) Alibaba, Inc. and its affiliates. import os import tempfile from modelscope.metainfo import Trainers from modelscope.msdatasets import MsDataset from modelscope.msdatasets.task_datasets.image_portrait_enhancement import \ ImagePortraitEnhancementDataset from modelscope.trainers import build_trainer from modelscope.utils.constant import DownloadMode tmp_dir = tempfile.TemporaryDirectory().name if not os.path.exists(tmp_dir): os.makedirs(tmp_dir) model_id = 'damo/cv_gpen_image-portrait-enhancement' dataset_train = MsDataset.load( 'image-portrait-enhancement-dataset', namespace='modelscope', subset_name='default', split='train', download_mode=DownloadMode.REUSE_DATASET_IF_EXISTS)._hf_ds dataset_val = MsDataset.load( 'image-portrait-enhancement-dataset', namespace='modelscope', subset_name='default', split='validation', download_mode=DownloadMode.REUSE_DATASET_IF_EXISTS)._hf_ds dataset_train = ImagePortraitEnhancementDataset( dataset_train, is_train=True) dataset_val = ImagePortraitEnhancementDataset( dataset_val, is_train=False) kwargs = dict( model=model_id, train_dataset=dataset_train, eval_dataset=dataset_val, device='gpu', work_dir=tmp_dir) trainer = build_trainer( name=Trainers.image_portrait_enhancement, default_args=kwargs) trainer.train()
数据评估及结果
Metric | Value |
FID | 31.72 |
PSNR | 20.80 |
LPIPS | 0.346 |
相关论文以及引用信息
@inproceedings{yang2021gpen, title={GAN Prior Embedded Network for Blind Face Restoration in the Wild}, author={Tao Yang, Peiran Ren, Xuansong Xie, and Lei Zhang}, booktitle={IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, year={2021} }
评论 (0)