用 AI 修复亚运珍贵史料——基于Stable Diffusion WebUI 体验AIGC加持的修复能力
大家好,我是博主Lingxw_w!在开始介绍我的修复之前,首先看一下我生成的照片:
1、背景介绍
2023年,正值亚运110周年,也是第19届杭州亚运会即将举办之际,阿里云与亚奥理事会合作,发起“历久弥新——用 AI 修复亚运会珍贵史料”活动(以下简称“本活动”),开发者使用阿里云的 AI 技术对亚运会历史老照片进行修复,重燃亚运经典,为亚运助威,并有机会入选“亚运史上第一个 AI 修复特展—— 1974 年德黑兰亚运会特展”。今天使用开源社区的高质量图像修复、去噪、上色等算法,并使用 Stable Diffusion WebUI 进行交互式图像修复。
2、领取对应的试用产品
在活动当前页领取对应的产品,准备环境和资源;
我申请试用的是PAI-DSW免费资源包,当前可申请免费使用的资源类型有:ecs.gn6v-c8g1.2xlarge、ecs.g6.xlarge、ecs.gn7i-c8g1.2xlarge。
开通成功后单击进入PAI控制台,在默认工作空间中创建DSW实例。
创建实例:
选择官方镜像中的stable-diffusion-webui-env:pytorch1.13-gpu-py310-cu117-ubuntu22.04。
注意这里不用添加VPC、并且实例的名字不要和教程中的一样,否则会报错。
3、修复步骤
3.1图形去噪
进入PAI-DSW开发环境。
打开:
基于Modelscope实现:https://www.modelscope.cn/models?name=nafnet&page=1
! pip install modelscope
download_from_oss('aigc-data/restoration/repo/','nafnet.zip')
根据需要运行合适的推理任务
# 去模糊
!python NAFNet/demo.py --task deblur --input_dir input --result_dir results
# 去噪
!python NAFNet/demo.py --task denoise --input_dir input --result_dir results
# 去运动模糊
!python NAFNet/demo.py --task de_motion_blur --input_dir input --result_dir results
查看结果:
3.2图像超分
这部分使用的是RealESRGAN 算法;该算法发表于ICCV workshop 2021 用于对图像超分。
该算法提供3个预训练模型:
-RealESRNet_x4plus:基础预模型
-RealESRGAN_x4plus:用GAN Loss训练的RealESRNet
-RealESRGAN_x4plus_anime_6B用动漫数据集微调过的RealESRGAN_x4plus
download_from_oss('aigc-data/restoration/repo/','realesrgan.zip')
# 动漫微调模型
!python Real-ESRGAN/demo.py --model_name RealESRGAN_x4plus_anime_6B --input input/ --output results --tile 512
# realesrgan
!python Real-ESRGAN/demo.py --model_name RealESRGAN_x4plus --input input/ --output results --tile 512
# realesrnet 基础模型
!python Real-ESRGAN/demo.py --model_name RealESRNet_x4plus --input input/ --output results --tile 512
完成图形超分。
3.3上色
基于Modelscope,使用不同的算法进行图像上色及色彩增强。
DDC:https://www.modelscope.cn/models/damo/cv_ddcolor_image-colorization/summary
DDC发表于 ICCV 2023,色彩鲜艳
! pip install modelscope
download_from_oss('aigc-data/restoration/repo/','color.zip')
# DDC no enhance
!python Colorization/demo.py --algo DDC --input_dir input --result_dir results
# DDC with enhance
!python Colorization/demo.py --algo DDC --input_dir input --result_dir results --use_enhance
# DeOldify no enhance
!python Colorization/demo.py --algo DeOldify --input_dir input --result_dir results
# DeOldify with enhance
!python Colorization/demo.py --algo DeOldify --input_dir input --result_dir results --use_enhance
完成DDC的图像上色;
3.4局部重绘
通过Unicolor+SAM的有条件的上色方案,我们可以指定修改位置即颜色,对局部颜色细节进行调整。下载代码及预训练文件:
# 下载/解压 约10min
download_from_oss('aigc-data/restoration/repo/','sam_unicolor.zip')
加载模型文件和待处理的图片;
import os
import cv2
from PIL import Image
import numpy as np
from unicolor.sample.colorizer import Colorizer
from unicolor.sample.utils_func import *
from unicolor.sample.SAM.segment_anything import sam_model_registry, SamPredictor
import sys
import numpy as np
读取上色前的黑白图片以及通过上述无参考的DDC/DeOldify获取的上色图片,并画出坐标系方便选取参考点和参考格
#读取和初始化SAM和Unicolor模型
device = "cuda"
sam_checkpoint = 'unicolor/sample/sam_vit_h_4b8939.pth'
model_type = "vit_h"
sam = sam_model_registry[model_type](checkpoint=sam_checkpoint)
sam.to(device=device)
predictor = SamPredictor(sam)
ckpt_file = 'unicolor/framework/checkpoints/unicolor_mscoco/mscoco_step259999'
colorizer = Colorizer(ckpt_file, device, [256, 256], load_clip=True, load_warper=True) # it will change the workdir
os.chdir('../../') # change back
4、总结、
在这个活动中,充分发挥了阿里云的先进AI技术,对亚运会的珍贵历史照片进行修复和重制。这一过程包括超分辨率处理,去除噪声,上色以及局部重绘等四个关键步骤。通过这些步骤,亚运会的老照片焕发出崭新的生机,重新展现了历史瞬间的细节和色彩。
修复后的照片不仅让人们能够更清晰地看到过去的辉煌瞬间,还让年轻一代更深入地了解亚运历史的丰富内涵。这个活动也唤起了人们对亚运会的热情,为即将到来的第19届杭州亚运会增添了更多的期待和助威声。
此次活动的成功展示了科技和体育的结合,以及人工智能在文化保护和传承方面的巨大潜力。阿里云与亚奥理事会的合作为亚运会的持续发展和传承注入了新的动力,同时也将亚运历史的珍贵财富分享给更多人。我们期待着在未来看到更多这样的创新举措,将亚运的光辉历史传承下去,继续激发人们对体育和文化的热爱。