AI老照片修复教程简述
阿里云作为第十九届杭州亚运会官方合作伙伴,值此亚运会 110 周年庆典之际,与亚奥理事会联合发起“历久弥新——亚运史料AI修复”计划,由阿里云市场部品牌团队、阿里云开发者团队联合计算平台和存储团队举办“用AI修复亚运老照片”活动。
本教程整合了来自开源社区的高质量图像修复、去噪、上色等算法,并使用 Stable Diffusion WebUI 进行交互式图像修复。参与者可以根据需要进行参数调整,组合不同的处理方式以获得最佳修复效果。参与者还可以在活动页面上传修复后的成果图片,参与比赛,获胜者将有机会获得丰厚的奖品。活动地址:https://developer.aliyun.com/topic/aiforgames,你也可以邀请好友一起修复,有机会赢取iPad等礼品!
使用PAI修复亚运老照片
1. 准备资源和环境
开始教程前,请按以下步骤准备环境和资源:
【重要】:PAI-DSW免费资源包只适用于本教程中的PAI-DSW产品。如果您领取了PAI-DSW资源包后,使用了PAI-DSW及PAI的其他产品功能(如PAI-DLC、PAI-EAS等),PAI-DSW产品产生的费用由资源包抵扣,其他产品功能产生的费用无法抵扣,会产生对应的费用账单。
- 访问阿里云免费试用。单击页面右上方的登录/注册按钮,并根据页面提示完成账号登录(已有阿里云账号)、账号注册(尚无阿里云账号)或实名认证(根据试用产品要求完成个人实名认证或企业实名认证)。
- 成功登录后,在产品类别下选择AI与机器学习>机器学习平台PAI,在交互式建模PAI-DSW卡片上单击立即试用。【说明】:如果您此前已申请过试用PAI的免费资源包,此时界面会提示为已试用,您可以直接单击已试用按钮,进入PAI的控制台。
- 在交互式建模PAI-DSW面板,勾选服务协议后,单击立即试用,进入免费开通页面。【重要】以下几种情况可能产生额外费用。
- 使用了除免费资源类型外的计费资源类型:您申请试用的是PAI-DSW免费资源包,但您创建的DSW实例使用的资源类型非阿里云免费试用提供的资源类型。当前可申请免费使用的资源类型有:ecs.gn6v-c8g1.2xlarge、ecs.g6.xlarge、ecs.gn7i-c8g1.2xlarge。
- 申请试用的免费资源包与使用的产品资源不对应:
- 您创建了PAI-DSW实例,但您申请试用的是PAI-DLC或PAI-EAS产品的免费资源包。您使用DSW产品产生的费用无法使用免费资源包抵扣,会产生后付费账单。
- 您申请试用的是PAI-DSW免费资源包,但您使用的产品是PAI-DLC或PAI-EAS。使用PAI-DLC和PAI-EAS产品产生的费用无法使用DSW免费资源包抵扣,会产生后付费账单。
- 免费额度用尽或超出试用期:领取免费资源包后,请在免费额度和有效试用期内使用。如果免费额度用尽或试用期结束后,继续使用计算资源,会产生后付费账单。请前往资源实例管理页面,查看免费额度使用量和过期时间,如下图所示。
- 开通机器学习PAI并创建默认工作空间。其中关键参数配置如下,更多详细内容,请参见开通并创建默认工作空间。
- 本教程地域选择:华北2(北京)。您也可以根据情况选择华东1(杭州)、华东2(上海)、华南1(深圳)地域。
- 单击免费开通并创建默认工作空间:在弹出的开通页面中配置订单详情。配置要点如下。
- 本教程不需要开通其他产品,您需要在组合开通配置模块,去勾选其他产品的复选框。
- 在服务角色授权模块单击去授权,根据界面提示为PAI完成授权,然后返回开通页面,刷新页面,继续开通操作。
- 开通成功后单击进入PAI控制台,在默认工作空间中创建DSW实例。其中关键参数配置如下,其他参数取默认配置即可。更多详细内容,请参见创建及管理DSW实例。
【说明】:创建DSW实例需要一定时间,与当前的资源数有关。如果您使用地域资源不足,可更换其他支持免费试用的地域申请开通试用并创建DSW实例。
参数 |
描述 |
地域及可用区 |
本教程选择:华北2(北京)。 |
实例名称 |
您可以自定义实例名称,本教程示例为:AIGC_test_01。 |
资源类型 |
本教程选择:GPU规格,规格名称为ecs.gn7i-c8g1.2xlarge。 【说明】:阿里云免费试用提供的资源类型包括以下几种类型:
|
数据集(可选) |
建议您申请免费的OSS或NAS资源包,然后在数据集配置模块单击创建数据集,在弹出的数据集配置页面中重点配置以下参数,其他参数可保持默认值。
|
选择镜像 |
选择官方镜像中的stable-diffusion-webui-env:pytorch1.13-gpu-py310-cu117-ubuntu22.04。 |
2. 在PAI-DSW中打开教程
- 进入PAI-DSW开发环境。
- 登录PAI控制台。
- 在页面左上方,选择DSW实例所在的地域。
- 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击默认工作空间名称,进入对应工作空间内。
- 在左侧导航栏,选择模型开发与训练>交互式建模(DSW)。
- 单击需要打开的实例操作列下的打开,进入PAI-DSW实例开发环境。
- 在Notebook页签的Launcher页面,单击快速开始区域Tool下的DSW Gallery,打开DSW Gallery页面。
- 在DSW Gallery页面中,搜索并找到用AI重燃亚运经典教程,单击教程卡片中的在DSW中打开。
单击后即会自动将本教程所需的资源和教程文件下载至DSW实例中,并在下载完成后自动打开教程文件。
(官方DSW Gallery 暂未正式发布,功能完善开发中,体验版可先下载文件,并在DSW中打开)
3. 导入修复照片
依次运行数据准备节的单元格,可下载提供的亚运老照片并解压至input文件夹中
针对给定的图片,我们支持下列两种方式,或进行组合来自由的进行老照片修复任务:
- 从命令行运行源码修复图片
- 基于SDWebUI修复图片
(如您不需要使用/修改源码,可直接移步至基于 SDWebUI修复图片 节)
4. 基于源码修复图片
4.1 修复概述
根据模型处理方式的不同,我们将老照片图像修复任务的步骤大致分为以下几步:
- 图像去噪:去除图像中的噪声、模糊等
- 图像超分:提升图像分辨率及清晰度
- 面部增强:检测并修复老照片中的人脸
- 图像上色:有条件/无条件的进行老照片上色
- 划痕清理:检测划痕位置/手动标记划痕位置,进行图像填充
在Gallery中,我们整理并集成了大量相关领域的开源算法及其预训练模型供您方便的进行一键式使用。
您也可以在notebook中进一步优化/开发您的老照片修复算法。
已经包含的算法包括:
功能 |
算法 |
链接 |
图像去噪 |
Restormer (CVPR 2022) |
|
NAFNet (ECCV 2022) |
||
图像超分 |
RealESRGAN (ICCVW 2021) |
|
SwinIR (ICCVW 2021) |
||
HAT (CVPR 2023) |
||
面部增强 |
CodeFormer (NeurIPS 2022) |
|
图像上色 |
DDC (ICCV 2023) |
|
DeOldify |
||
Unicolor (TOG2020) |
||
划痕清理 |
LaMa (WACV 2022) |
4.2 修复示例
4.2.1 一般示例
本教程所提供的大部分案例,您可通过一键下载,并运行相应的命令行命令进行执行。
这里我们以RealESRGAN算法进行展示。
Step1: 代码/模型下载
下载解压完成后,您可在对应文件夹中查看该算法的源代码
Step2: 执行推理
具体算法参数,您可参考notebook中的相关参数进行设置。
通过指定输入的文件夹/输出的文件夹,您可运行相关算法进行图像修复的相关任务。
Step3: 算法结果
执行完成后您可在results/{task_name}中看见修复后的图像结果。
4.2.2 有条件上色
我们提供了基于SAM和Unicolor的半交互式上色及修改的管线
step_1: 初始化模型
引入依赖包以及初始化SAM和unicolor模型
step_2:读取图片
读取上色前的黑白图片以及通过上述无参考的DDC/DeOldify获取的上色图片,并画出坐标系方便选取参考点和参考格
step_3:提供提示点
由于该算法使用256x256大小图像下的16x16的方格作为颜色的提示,选择需要改变颜色的方格的左上格点坐标,以及需要改变成的颜色,并选取格点中心作为SAM的提示点(左图为SAM的提示点,右图为unicolor的提示方块)
step_3:选取蒙版
调用SAM生成多个需要替换颜色部分的蒙版,并选择最贴合替换区域的蒙版,如果无参考上色的图片颜色较为流畅,建议使用上色后图片作为输入
step_4: 生成基于参考的图片并替换:
使用unicolor获取指定区域颜色后的图像并用SAM生成的蒙版替换
4.2.3 划痕清理
Step1: 代码/模型下载
Step2: 启动UI
单机生成的链接可进入UI页面
Step3: 交互式操作
Step4: 查看结果
您可在右侧查看结果(如待修复图像分辨率过大,预览可能失败)。您可在控制台中查看图片生成路径,并在页面中打开。
5. 基于SDWebUI修复图片
SD WebUI是目前最受欢迎的AI绘画工具之一,在图像生成任务的基础上,其集成了丰富的超分模型,可用于可视化的图像修复。通过交互式的控制,用户可以更加精细化、方便的进行图像修复任务。
为了解决模型/插件下载困难的用户特点,我们在本教程中预置了图像修复相关插件/模型,供用户更轻松、便捷的体验机遇SD WebUI的老照片修复功能。
已经支持的模型/插件包括:
- 预置插件/模型 列表
插件 |
功能 |
链接 |
stable-diffusion-webui-localization-zh_CN |
页面汉化 |
https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN |
a1111-sd-webui-tagcomplete |
Tag 自动补全 |
|
multidiffusion-upscaler-for-automatic1111 |
Diffusion/VAE的显存优化 |
https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111 |
sd-webui-stablesr |
基于StableSR的超分 |
|
sd-webui-deoldify |
基于DeOldify的图像上色 |
|
sd-webui-controlnet |
基于ControlNet的图像重绘 |
功能 |
模型 |
基模型 |
realisticVisionV40_v40VAE.safetensors |
(仅用于StableSR) |
v2-1_768-ema-pruned.safetensors |
超分 |
4X-UltraSharp |
BSRGAN |
|
ESRGAN |
|
Real ESRGAN |
|
Real ESRGAN Anime |
|
ScuNet |
|
ScuNet PSNR |
|
SwinIR 4x |
|
StableSR |
|
面部增强 |
GFPGAN |
CodeFormer |
|
图像上色 |
DeOldify |
DeOldify_Artistic |
|
ControlNet |
canny |
depth |
5.1 启动SDWebUI
Step1: 代码/模型下载
(我们预置了诸多模型及插件,此处下载&解压需要10-15min)
Step2: 启动SDWebUI
启动完成后,可单击链接进入WebUI界面:
- 您可利用WebUI进行任意的操作来进行老照片的修复,下面我们提供了最常见的三种操作方式。
5.2 附加功能
5.2.1 操作步骤
您可在附加功能选项卡中对图像进行适当的超分/面部增强/图像上色任务。
5.2.2 下载生成图像
生成结果保存在 stable-diffusion-webui/outputs/extras-images/date 文件夹中
在DSW的Notebook选项卡中右键下载(Download)即可将图片下载到本地
5.3 StableSR插件
5.3.1 操作步骤
5.3.2 下载生成图像
生成结果保存在 stable-diffusion-webui/outputs/img2img-images/date 文件夹中
在DSW的Notebook选项卡中右键下载(Download)即可将图片下载到本地
5.4 局部重绘
5.4.1 操作步骤
【可选】(设置ControlNet 进行局部可控的重绘)
5.4.2 下载生成图像
生成结果保存在 stable-diffusion-webui/outputs/img2img-images/date 文件夹中
在DSW的Notebook选项卡中右键下载(Download)即可将图片下载到本地
6. 完成
7. 资源清理及后续
7.1 清理
- 领取免费资源包后,请在免费额度和有效试用期内使用。如果免费额度用尽或试用期结束后,继续使用计算资源,会产生后付费账单。请前往资源实例管理页面,查看免费额度使用量和过期时间,如下图所示。
- 如果无需继续使用DSW实例,您可以按照以下操作步骤停止DSW实例。
- 登录PAI控制台。
- 在页面左上方,选择DSW实例的地域。
- 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击默认工作空间名称,进入对应工作空间内。
- 在工作空间页面的左侧导航栏选择模型开发与训练>交互式建模(DSW),进入交互式建模(DSW)页面。
- 单击目标实例操作列下的停止,成功停止后即停止资源消耗。
- 如果需要继续使用DSW实例,请务必至少在试用到期1小时前为您的阿里云账号充值,到期未续费的DSW实例会因欠费而被自动停止。
7.2 后续
在试用有效期期间,您还可以继续使用DSW实例进行模型训练和推理验证。