ComfyUI-Bringing-Old-Photos-Back-to-Life 插件保姆级教程
1. 插件简介
插件地址: https://github.com/cdb-boop/ComfyUI-Bringing-Old-Photos-Back-to-Life
这个插件就像是一个神奇的照片修复师,专门用来修复那些老旧、破损的照片。想象一下,你家里有一些泛黄、有划痕、模糊不清的老照片,这个插件就能帮你把它们变得清晰、鲜艳,就像刚拍出来的一样!
主要功能:
- 修复老照片的质量问题(比如模糊、色彩暗淡)
- 自动去除照片上的划痕和污渍
- 增强照片中人脸的清晰度和细节
- 让老照片重新焕发生机
这个插件基于微软的研究项目,使用了很厉害的人工智能技术,就像给你的照片请了一个专业的修图师。
2. 如何安装
2.1 下载插件
- 打开你的 ComfyUI 安装目录
- 进入
custom_nodes文件夹 - 在这里下载插件:
git clone https://github.com/cdb-boop/ComfyUI-Bringing-Old-Photos-Back-to-Life.git
2.2 安装依赖包
进入插件文件夹,安装必要的软件包:
cd ComfyUI-Bringing-Old-Photos-Back-to-Life
pip install -r requirements.txt --upgrade
注意: 如果在 Windows 上安装 dlib 遇到问题,可能需要先安装 CMake。
2.3 下载模型文件
这个插件需要下载一些模型文件,就像给修图师准备工具一样:
- 基础修复模型 - 下载地址:https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/global_checkpoints.zip
- 人脸检测模型 - 下载地址:http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
- 人脸增强模型 - 下载地址:https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/face_checkpoints.zip
下载后需要放到 ComfyUI 对应的文件夹里(具体位置插件说明里有详细介绍)。
3. 节点详细解析
3.1 BOPBTL_LoadScratchMaskModel 节点 - 加载划痕检测模型
这个节点就像是给你的修图师配备一副"火眼金睛",专门用来发现照片上的划痕和污渍。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| scratch_model | scratch_model | 模型文件列表 | FT_Epoch_latest.pt | 选择用来检测划痕的模型文件,就像选择不同的放大镜 | 指定用于划痕检测的深度学习模型检查点文件 | 从下拉列表中选择你下载的划痕检测模型文件 |
3.2 BOPBTL_ScratchMask 节点 - 生成划痕遮罩
这个节点会分析你的照片,找出所有的划痕和污渍,然后生成一个"地图",标记出哪些地方需要修复。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| scratch_model | scratch_model | SCRATCH_MODEL | - | 连接上一个节点的划痕检测模型 | 输入已加载的划痕检测模型对象 | 连接"加载划痕检测模型"节点的输出 |
| image | image | IMAGE | - | 要检测划痕的照片 | 输入需要进行划痕检测的图像张量 | 连接你要修复的照片 |
| input_size | input_size | full_size/resize_256/scale_256 | full_size | 决定用多大的尺寸来检测划痕,就像选择用多大的放大镜 | 指定输入图像的处理尺寸模式 | full_size保持原尺寸,resize_256调整到256像素,scale_256按比例缩放到256 |
| resize_method | resize_method | 缩放方法列表 | bilinear | 调整图片大小时用什么方法,就像选择不同的拉伸方式 | 图像缩放时使用的插值算法 | bilinear是双线性插值,效果比较平滑 |
3.3 BOPBTL_LoadRestoreOldPhotosModel 节点 - 加载照片修复模型
这个节点是整个修复过程的核心,就像是给修图师准备各种专业工具。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| device_ids | device_ids | 字符串 | "0" | 告诉电脑用哪个显卡来工作,就像选择用哪台机器 | 指定使用的GPU设备ID,-1表示使用CPU | "0"表示用第一块显卡,"1,2"表示用第一和第二块显卡 |
| scratch_detection | scratch_detection | True/False | False | 是否要检测和修复划痕,就像问要不要去除污渍 | 是否启用划痕检测和修复功能 | True表示会检测并修复划痕,False只做基础修复 |
| mapping_patch_attention | mapping_patch_attention | True/False | False | 是否使用高级修复技术,就像问要不要用更精细的工具 | 是否启用补丁注意力机制进行高分辨率修复 | True会使用更先进的修复算法,效果更好但速度更慢 |
| mapping_net | mapping_net | 模型文件列表 | latest_net_mapping_net.pth | 选择映射网络模型,就像选择修复的"配方" | 指定用于特征映射的神经网络模型文件 | 根据是否启用划痕检测选择对应的模型文件 |
| vae_b | vae_b | 模型文件列表 | latest_net_G.pth | 选择B类编码器,就像选择一种特殊的"画笔" | 指定VAE-B模型文件,用于图像编码解码 | 根据修复类型选择quality或scratch版本 |
| vae_a | vae_a | 模型文件列表 | latest_net_G.pth | 选择A类编码器,就像选择另一种"画笔" | 指定VAE-A模型文件,用于图像质量提升 | 通常选择quality版本的模型文件 |
3.4 BOPBTL_RestoreOldPhotos 节点 - 修复老照片
这是真正进行照片修复的节点,就像是修图师开始工作的地方。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| bopbtl_models | bopbtl_models | BOPBTL_MODELS | - | 连接修复模型,就像给修图师提供工具箱 | 输入已加载的照片修复模型集合 | 连接"加载照片修复模型"节点的输出 |
| image | image | IMAGE | - | 要修复的照片 | 输入需要修复的图像张量 | 连接你要修复的老照片 |
| pad_mode | pad_mode | edge/constant/reflect/symmetric/none | edge | 图片边缘处理方式,就像选择相框的样式 | 图像填充模式,处理尺寸不匹配时的边缘 | edge用边缘像素填充,constant用固定颜色填充 |
| pad_constant_value | pad_constant_value | 0-255 | 0 | 如果用固定颜色填充,选择什么颜色(0是黑色,255是白色) | 常数填充模式下使用的像素值 | 0表示黑色填充,128表示灰色填充,255表示白色填充 |
| pad_reflect_type | pad_reflect_type | even/odd | even | 如果用镜像填充,选择镜像的方式 | 反射填充模式的类型 | even是偶对称,odd是奇对称 |
| scratch_mask | scratch_mask | MASK | 可选 | 划痕位置的"地图",告诉修图师哪里有划痕 | 可选的划痕遮罩,指示需要修复的区域 | 连接"生成划痕遮罩"节点的输出,如果不需要可以不连 |
3.5 BOPBTL_LoadFaceDetectorModel 节点 - 加载人脸检测模型
这个节点给修图师配备"人脸识别"能力,能够在照片中找到所有的人脸。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| shape_predictor_68_face_landmarks | shape_predictor_68_face_landmarks | .dat文件列表 | shape_predictor_68_face_landmarks.dat | 选择人脸特征点检测模型,就像给修图师一个"人脸地图" | 指定dlib人脸68个关键点检测模型文件 | 选择你下载的.dat格式的人脸检测模型文件 |
3.6 BOPBTL_DetectFaces 节点 - 检测人脸
这个节点会在照片中找到所有的人脸,并把它们"剪切"出来准备进行增强。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| dlib_model | dlib_model | DLIB_MODEL | - | 连接人脸检测模型,就像给修图师提供"人脸雷达" | 输入已加载的dlib人脸检测模型 | 连接"加载人脸检测模型"节点的输出 |
| image | image | IMAGE | - | 要检测人脸的照片 | 输入需要进行人脸检测的图像张量 | 连接你要处理的照片 |
| face_size | face_size | 256/512 | 512 | 剪切出来的人脸大小,就像选择相片的尺寸 | 检测到的人脸裁剪后的像素尺寸 | 512会得到更清晰的人脸,但处理速度较慢 |
3.7 BOPBTL_LoadFaceEnhancerModel 节点 - 加载人脸增强模型
这个节点为人脸增强准备专门的工具,就像给美容师准备专业设备。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| device_ids | device_ids | 字符串 | "0" | 告诉电脑用哪个显卡来处理人脸,就像选择用哪台美容仪器 | 指定使用的GPU设备ID进行人脸增强计算 | "0"表示用第一块显卡,"-1"表示用CPU |
| face_enhance_model | face_enhance_model | 模型文件列表 | latest_net_G.pth | 选择人脸增强模型,就像选择不同的美容程序 | 指定用于人脸增强的生成对抗网络模型文件 | 256版本速度快,512版本效果好 |
| model_face_size | model_face_size | 256/512 | 512 | 模型处理的人脸尺寸,必须和模型文件匹配 | 指定模型训练时使用的人脸尺寸参数 | 必须和你选择的模型文件对应,不能随意更改 |
3.8 BOPBTL_EnhanceFaces 节点 - 增强人脸
这个节点对检测到的人脸进行美化增强,就像给人脸做美容。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| face_enhance_model | face_enhance_model | FACE_ENHANCE_MODEL | - | 连接人脸增强模型,就像给美容师提供工具 | 输入已加载的人脸增强模型对象 | 连接"加载人脸增强模型"节点的输出 |
| face_count | face_count | FACE_COUNT | - | 人脸数量信息,告诉系统有多少张脸要处理 | 输入人脸检测结果中的人脸计数信息 | 连接"检测人脸"节点的face_count输出 |
| cropped_faces | cropped_faces | IMAGE | - | 剪切出来的人脸图片,就像美容前的照片 | 输入已裁剪的人脸图像张量 | 连接"检测人脸"节点的cropped_faces输出 |
| face_parts | face_parts | IMAGE | 可选 | 人脸各部分的详细信息,就像美容师的参考图 | 可选的人脸部位分割图像,用于精细化增强 | 如果有人脸分割信息可以连接,没有可以不用 |
3.9 BOPBTL_EnhanceFacesAdvanced 节点 - 高级人脸增强
这是人脸增强的高级版本,可以对人脸的各个部位进行精细调整,就像专业美容师可以单独处理眼睛、鼻子、嘴巴等。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| face_enhance_model | face_enhance_model | FACE_ENHANCE_MODEL | - | 连接人脸增强模型 | 输入已加载的人脸增强模型对象 | 连接"加载人脸增强模型"节点的输出 |
| face_count | face_count | FACE_COUNT | - | 人脸数量信息 | 输入人脸检测结果中的人脸计数信息 | 连接"检测人脸"节点的face_count输出 |
| cropped_faces | cropped_faces | IMAGE | - | 剪切出来的人脸图片 | 输入已裁剪的人脸图像张量 | 连接"检测人脸"节点的cropped_faces输出 |
| part_skin | part_skin | IMAGE | 可选 | 皮肤部分的参考图,就像告诉美容师怎么处理皮肤 | 皮肤区域的分割遮罩图像 | 如果有皮肤分割图可以连接 |
| part_hair | part_hair | IMAGE | 可选 | 头发部分的参考图 | 头发区域的分割遮罩图像 | 如果有头发分割图可以连接 |
| part_l_brow | part_l_brow | IMAGE | 可选 | 左眉毛的参考图 | 左眉毛区域的分割遮罩图像 | 如果有眉毛分割图可以连接 |
| part_r_brow | part_r_brow | IMAGE | 可选 | 右眉毛的参考图 | 右眉毛区域的分割遮罩图像 | 如果有眉毛分割图可以连接 |
| part_l_eye | part_l_eye | IMAGE | 可选 | 左眼的参考图 | 左眼区域的分割遮罩图像 | 如果有眼部分割图可以连接 |
| part_r_eye | part_r_eye | IMAGE | 可选 | 右眼的参考图 | 右眼区域的分割遮罩图像 | 如果有眼部分割图可以连接 |
| part_eye_g | part_eye_g | IMAGE | 可选 | 眼镜的参考图 | 眼镜区域的分割遮罩图像 | 如果照片中有眼镜且有分割图可以连接 |
| part_l_ear | part_l_ear | IMAGE | 可选 | 左耳的参考图 | 左耳区域的分割遮罩图像 | 如果有耳部分割图可以连接 |
| part_r_ear | part_r_ear | IMAGE | 可选 | 右耳的参考图 | 右耳区域的分割遮罩图像 | 如果有耳部分割图可以连接 |
| part_ear_r | part_ear_r | IMAGE | 可选 | 耳环的参考图 | 耳环区域的分割遮罩图像 | 如果照片中有耳环且有分割图可以连接 |
| part_nose | part_nose | IMAGE | 可选 | 鼻子的参考图 | 鼻子区域的分割遮罩图像 | 如果有鼻部分割图可以连接 |
| part_mouth | part_mouth | IMAGE | 可选 | 嘴巴的参考图 | 嘴巴区域的分割遮罩图像 | 如果有嘴部分割图可以连接 |
| part_u_lip | part_u_lip | IMAGE | 可选 | 上嘴唇的参考图 | 上嘴唇区域的分割遮罩图像 | 如果有唇部分割图可以连接 |
| part_l_lip | part_l_lip | IMAGE | 可选 | 下嘴唇的参考图 | 下嘴唇区域的分割遮罩图像 | 如果有唇部分割图可以连接 |
| part_neck | part_neck | IMAGE | 可选 | 脖子的参考图 | 脖子区域的分割遮罩图像 | 如果有颈部分割图可以连接 |
| part_neck_l | part_neck_l | IMAGE | 可选 | 项链的参考图 | 项链区域的分割遮罩图像 | 如果照片中有项链且有分割图可以连接 |
| part_cloth | part_cloth | IMAGE | 可选 | 衣服的参考图 | 衣服区域的分割遮罩图像 | 如果有服装分割图可以连接 |
| part_hat | part_hat | IMAGE | 可选 | 帽子的参考图 | 帽子区域的分割遮罩图像 | 如果照片中有帽子且有分割图可以连接 |
3.10 BOPBTL_BlendFaces 节点 - 融合人脸
这个节点把增强后的人脸重新"贴"回原照片上,就像把美容后的脸重新装回照片里。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| original_image | original_image | IMAGE | - | 原始照片,就像是要贴回去的背景 | 输入原始未处理的图像张量 | 连接最开始的原始照片 |
| face_count | face_count | FACE_COUNT | - | 人脸数量信息 | 输入人脸检测结果中的人脸计数信息 | 连接"检测人脸"节点的face_count输出 |
| enhanced_cropped_faces | enhanced_cropped_faces | IMAGE | - | 增强后的人脸,就像美容后的照片 | 输入已增强的人脸图像张量 | 连接"增强人脸"节点的输出 |
| face_landmarks | face_landmarks | FACE_LANDMARKS | - | 人脸位置信息,告诉系统人脸在原图的什么位置 | 输入人脸关键点坐标信息,用于精确定位 | 连接"检测人脸"节点的face_landmarks输出 |
3.11 BOPBTL_DetectEnhanceBlendFaces 节点 - 一键人脸处理
这是一个"一条龙服务"节点,自动完成检测人脸→增强人脸→融合回原图的全部过程,就像一键美颜功能。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| dlib_model | dlib_model | DLIB_MODEL | - | 连接人脸检测模型 | 输入已加载的dlib人脸检测模型 | 连接"加载人脸检测模型"节点的输出 |
| face_enhance_model | face_enhance_model | FACE_ENHANCE_MODEL | - | 连接人脸增强模型 | 输入已加载的人脸增强模型对象 | 连接"加载人脸增强模型"节点的输出 |
| image | image | IMAGE | - | 要处理的照片 | 输入需要进行人脸增强的图像张量 | 连接你要处理的照片 |
4. 使用技巧和建议
4.1 图片尺寸要求
- 图片的宽度和高度最好是8或16的倍数,否则可能会出错
- 如果图片尺寸不合适,建议先用其他节点调整尺寸
- 可以配合 ComfyUI-Image-Round 插件来自动调整尺寸
4.2 模型选择建议
- 基础修复:如果只是想提升照片质量,不需要去除划痕,选择 scratch_detection = False
- 完整修复:如果照片有明显划痕和污渍,选择 scratch_detection = True
- 高质量修复:如果想要最好的效果,启用 mapping_patch_attention = True(但速度会变慢)
4.3 人脸处理建议
- 512尺寸的人脸模型效果更好,但处理速度较慢
- 256尺寸的人脸模型速度快,适合批量处理
- 如果照片中没有检测到人脸,节点会返回原图,不会报错
4.4 设备选择
- 如果有独立显卡,建议使用GPU(device_ids = "0")
- 如果显存不够或没有显卡,可以使用CPU(device_ids = "-1")
- 多显卡用户可以使用 "0,1" 这样的格式
5. 常见问题解答
5.1 安装问题
Q: Windows上安装dlib失败怎么办?
A: 需要先安装CMake,或者寻找预编译的dlib轮子文件。
Q: 提示缺少模型文件怎么办?
A: 确保按照说明下载了所有必要的模型文件,并放在正确的文件夹里。
5.2 使用问题
Q: 处理图片时出现尺寸错误?
A: 图片尺寸需要是8或16的倍数,使用图片调整节点先处理尺寸。
Q: 没有检测到人脸怎么办?
A: 这是正常情况,节点会返回原图。可能是人脸太小、角度不正或者光线太暗。
Q: 处理速度很慢?
A: 可以尝试使用256尺寸的模型,或者关闭高级功能来提升速度。
5.3 效果问题
Q: 修复效果不理想?
A: 可以尝试不同的模型组合,或者调整输入图片的质量和尺寸。
Q: 人脸增强后看起来不自然?
A: 可能是模型尺寸选择不当,或者原图人脸质量太差。
6. 工作流程建议
6.1 基础修复流程
- 加载划痕检测模型(如果需要)
- 加载照片修复模型
- 输入原始照片
- 生成划痕遮罩(如果需要)
- 执行照片修复
6.2 完整修复流程(包含人脸增强)
- 加载所有必要的模型(划痕检测、照片修复、人脸检测、人脸增强)
- 输入原始照片
- 生成划痕遮罩
- 执行基础照片修复
- 检测人脸
- 增强人脸
- 将增强后的人脸融合回修复后的照片
6.3 快速人脸增强流程
如果只想增强人脸,可以使用"一键人脸处理"节点,简化流程。
7. 总结
这个插件是一个功能强大的老照片修复工具,通过人工智能技术可以显著改善老照片的质量。虽然设置过程稍微复杂,但一旦配置好,就能获得非常好的修复效果。
记住最重要的几点:
- 确保下载并正确放置所有模型文件
- 注意图片尺寸要求
- 根据需要选择合适的模型和参数
- 如果遇到问题,先检查模型文件和图片尺寸
希望这个教程能帮助你成功使用这个插件,让你的老照片重新焕发生机!