老照片修复 ComfyUI 工作流教程分享 效果惊艳 超高清细节 重新上色

前言

最近老照片修复+动态视频的玩法非常火,关于老照片修复的部分,花一天时间,参考了一些博主的工作流,再加上自己总结的一些经验,完成了一版老照片修复上色的完整流程,可以看看下面的效果。

今天,我把老照片详细的修复流程分享给你,希望对你有帮助。

在这里插入图片描述

从技术上来说,修复流程主要分两部分:PS 老照片缺陷修复和 ComfyUI 还原上色工作流。全部所需软件、完整工作流和模型已全部打包好,有需要的自取。

一、Ps 老照片缺陷修复

在这里插入图片描述

1、噪点修复

在这里插入图片描述

Ctrl+J 复制一个图层,保留原始图像

点击菜单-滤镜-Camera Raw 滤镜,点击“细节”-调节“减少杂色”,直到杂色消失,这样图像也会变模糊,我们再调高“细节”,图像会变清晰

根据效果,还可以再调节“清晰度”、“对比度”、“饱和度”等参数

确认后,人物整体变模糊了,下面再来调节清晰度

Ctrl+J 再复制一个图层

点击菜单-滤镜-其它-高反差保留

调节参数,直到人物轮廓刚刚显示出来,确定

图层的融合模式选择“线性光”,不透明度调为30%左右,这样清晰度就提高了

2、缺陷、划痕修复

Ctrl+J 再复制一个图层

点击菜单-滤镜-杂色-蒙尘与划痕,调节参数,直到脏点、划痕消失,确定

创建蒙版,快捷键 Ctrl+i 蒙版反相

前景色修改为白色,选择画笔工具,并调节适合的大小、不透明度、流量,涂抹划痕和噪点区域

3、其它修复工具综合使用

接下来把新建的图层全部合并

点击菜单-图像-调整-去色(后面 AI 部分会重新上色)

再用以下这3个工具,根据图片的情况选择使用

【污点修复画笔工具】可以快速去掉图片中的污点或多余元素

【修复画笔工具】可以将仿制源的纹理、光照、透明度和阴影与修复区域进行智能匹配,完美融入

【修补工具】-绘制修复区域,框出选区-移动选区到合适的的区域覆盖框选区域-松开鼠标取消选区

还可以使用“内容识别”功能来自动填充图像

用套索工具选择需要修改的区域,点击菜单-编辑-填充,选择“内容识别”,还可以调节透明度,根据修改效果来不断调整优化。

本文涉及模型、插件下载请扫描免费获取哦
在这里插入图片描述

二、ComfyUI 还原上色工作流

ComfyUI 还原上色部分大致分为 5 个部分:第一次人像还原、细节重绘部分、还原上色部分、第二次人像还原、高清放大,下面分别来讲一下。

1、第一次人像还原

通过 CodeFormer 对人像脸部进行简单的修复(可以下载 facerestror 插件使用),这个插件分为人脸检测和人脸修复两部分,可以选择不同的检测模型和修复模型,根据效果找一个最佳的组合。

还可以调节 fidelity 参数,范围0~1,0修复强度最大,人脸变化最大,1修复强度最小,根据效果来调整参数。

2、细节重绘部分

这一部分是通过 ControlNet 控制对原图进行重绘,简单修复并加上一些细节。

首先,老照片的背景一般都会泛黄或者有瑕疵,索性先通过 LayerStyle 扣除背景,可以替换掉指定的颜色,其中抠图蒙版的膨胀系数和模糊系数,需要根据效果来调整。

这里选择的是 SD1.5 的大模型,其它 Lora、ControlNet 库也要同步选择 SD1.5 版本的类型。

通用质量提示词,加上 WD反推提示词,还可以根据期望的图像效果,增加自定义的提示词,负面提示词就参考我的工作流的提示词。

注意:反推提示词中如果有破损、黑白、模糊等反映老照片的提示词,需要排除掉,避免影响生图。

ControlNet 使用了 Tile 和 Lineart 来控制,增加细节,并保留原始图像的轮廓,最后,控制降噪参数为 0.3 左右生图,还是同样的,根据出图效果来调整参数。

3、还原上色部分

这一步,根据提示词、ControlNet 的 recolor 模型对照片进行上色。

先对图像对比度、饱和度等进行调整,大模型选择 SDXL 写实大模型,提示词包括颜色、质量等通用提示词,再加上你期望的人物头发、衣服等描述颜色的提示词。

ControlNet 通过 recolor 来进行人像上色,模型文件已经准备好了,你可以到网盘中下载。

4、第二次人像还原

照片上色后,再次通过 facerestore 对人像进行还原,根据效果调整参数,如果效果不好,也可以忽略掉。

5、SUPIR 高清放大

这一步,我们利用 SUPIR 能够高度还原人像的能力,且不会造成与原图差异较大,我们可以根据自己显卡配置,调整放大倍数。

6、SD 超高分辨率放大

如果对照片有超高分辨率的需求,这一步利用 SD 进行分步高清放大。

为了帮助大家更好地掌握 ComfyUI,我在去年花了几个月的时间,撰写并录制了一套ComfyUI的基础教程,共六篇。这套教程详细介绍了选择ComfyUI的理由、其优缺点、下载安装方法、模型与插件的安装、工作流节点和底层逻辑详解、遮罩修改重绘/Inpenting模块以及SDXL工作流手把手搭建。

由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

一、ComfyUI配置指南

  • 报错指南
  • 环境配置
  • 脚本更新
  • 后记

img

二、ComfyUI基础入门

  • 软件安装篇
  • 插件安装篇

img

三、 ComfyUI工作流节点/底层逻辑详解

  • ComfyUI 基础概念理解
  • Stable diffusion 工作原理
  • 工作流底层逻辑
  • 必备插件补全

img

四、ComfyUI节点技巧进阶/多模型串联

  • 节点进阶详解
  • 提词技巧精通
  • 多模型节点串联

img

五、ComfyUI遮罩修改重绘/Inpenting模块详解

  • 图像分辨率
  • 姿势

img

六、ComfyUI超实用SDXL工作流手把手搭建

  • Refined模型
  • SDXL风格化提示词
  • SDXL工作流搭建

img

由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

在这里插入图片描述

img

基于深度学习的老照片上色涉及到多个模型和算法,下面我简单介绍一下其中一种常用的方法,并提供一个对应的 Python 代码实现。 1. 数据准备 首先需要准备一些有标注的彩色照片和对应的黑白照片,作为训练集和测试集。可以从一些公开数据集中获取,如ImageNet,CIFAR等。 2. 模型搭建 接下来需要搭建一个卷积神经网络(CNN)模型,用于学习黑白照片和彩色照片之间的对应关系。这个模型需要包含一个编码器(Encoder)和一个解码器(Decoder),其中编码器用于将输入的黑白照片转换为一个中间表示,解码器用于将这个中间表示转换为彩色照片。 下面是一个简单的模型搭建代码示例: ```python from tensorflow.keras.layers import Conv2D, UpSampling2D, Input from tensorflow.keras.models import Model def build_model(): # 编码器 input_layer = Input(shape=(256, 256, 1)) x = Conv2D(64, (3, 3), activation='relu', padding='same')(input_layer) x = Conv2D(64, (3, 3), activation='relu', padding='same', strides=2)(x) x = Conv2D(128, (3, 3), activation='relu', padding='same')(x) x = Conv2D(128, (3, 3), activation='relu', padding='same', strides=2)(x) x = Conv2D(256, (3, 3), activation='relu', padding='same')(x) x = Conv2D(256, (3, 3), activation='relu', padding='same', strides=2)(x) x = Conv2D(512, (3, 3), activation='relu', padding='same')(x) x = Conv2D(512, (3, 3), activation='relu', padding='same')(x) x = Conv2D(256, (3, 3), activation='relu', padding='same')(x) # 解码器 x = UpSampling2D((2, 2))(x) x = Conv2D(128, (3, 3), activation='relu', padding='same')(x) x = Conv2D(128, (3, 3), activation='relu', padding='same')(x) x = UpSampling2D((2, 2))(x) x = Conv2D(64, (3, 3), activation='relu', padding='same')(x) x = Conv2D(64, (3, 3), activation='relu', padding='same')(x) x = Conv2D(32, (3, 3), activation='relu', padding='same')(x) output_layer = Conv2D(3, (3, 3), activation='sigmoid', padding='same')(x) model = Model(input_layer, output_layer) model.compile(optimizer='adam', loss='mse') return model ``` 3. 模型训练 模型搭建好之后,需要使用训练集对其进行训练。训练的过程中可以使用一些数据增强的技术,如随机裁剪、旋转、翻转等,以增加模型的泛化能力。 下面是一个简单的模型训练代码示例: ```python import numpy as np from tensorflow.keras.preprocessing.image import ImageDataGenerator model = build_model() # 数据增强 datagen = ImageDataGenerator( rescale=1. / 255, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest') # 加载数据集 train_data = datagen.flow_from_directory( 'train/', target_size=(256, 256), batch_size=32, class_mode=None) # 训练模型 model.fit(train_data, epochs=50) ``` 4. 模型测试 模型训练好之后,可以使用测试集对其进行测试,并将黑白照片转换为彩色照片。 下面是一个简单的模型测试代码示例: ```python import cv2 # 加载模型 model = build_model() model.load_weights('model_weights.h5') # 读取黑白照片 img = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE) img = cv2.resize(img, (256, 256)) img = np.expand_dims(img, axis=-1) # 预测彩色照片 pred = model.predict(np.array([img]))[0] pred = pred * 255 pred = pred.astype(np.uint8) # 保存彩色照片 cv2.imwrite('result.jpg', pred) ``` 以上是一个简单的基于深度学习的老照片上色代码实现。由于涉及到多个模型和算法,实现起来比较复杂,需要一定的深度学习和编程知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值