Stable Diffusion:使用ControlNet为黑白照片上色

https://www.dong-blog.fun/post/2019

使用ControlNet的Recolor模型为黑白图片上色

1. Recolor Control-LoRA简介

用途 :专为黑白照片上色设计的轻量化模型
核心特点

• 老照片修复/历史影像彩色化的理想选择

• 基于ControlNet架构,采用LoRA(低秩适应)技术实现模型瘦身:

• 原版ControlNet:4.7GB → Control-LoRA:仅738MB/377MB

• 训练时覆盖多样化图像概念和比例,具备优秀泛化能力

技术文档:HuggingFace项目页

2. 模型下载

官方资源库:ControlNet模型集合

推荐下载以下2个核心模型:

复制代码
sai_xl_recolor_128lora.safetensors   396 MB
sai_xl_recolor_256lora.safetensors   774 MB  

我下载了sai_xl_recolor_256lora.safetensors放在models/ControlNet

SDXL 模型我选择了juggernautXL_v8Rundiffusion.safetensors,放到 models/Stable-diffusion

3. 快速部署指南

3.1 使用预配置Docker镜像

bash 复制代码
kevinchina/deeplearning:sdwebui-contorlnet

3.2 容器启动命令

bash 复制代码
docker run --net host \
    --gpus device=2 \
    -v ./models:/workspace/stable-diffusion-webui/models \
    -it kevinchina/deeplearning:sdwebui-contorlnet bash

3.3 启动WebUI服务

bash 复制代码
cd /workspace/stable-diffusion-webui
/opt/conda/bin/python3 webui.py \
    --enable-insecure-extension-access \
    --skip-python-version-check \
    --skip-torch-cuda-test \
    --skip-install \
    --no-half-vae \
    --timeout-keep-alive 300 \
    --port 7864 \
    --opt-sdp-no-mem-attention \
    --no-download-sd-model \
    --api --listen

4. 打开webui使用

依次按图设置参数:

设置ContorlNet:

recolor_luminance(重着色-亮度)

recolor_intensity(重着色-强度)

5. 使用API批量生图

执行 python generate_recolor_image.py 即可访问API生图

6. 使用 qwen2.5 vl 7b 进行图像描述

在生图的时候,如果有一个较好的图像描述,更有利于生成更好的图像,这里我们开一个 qwen2.5 vl 7b 的API。

教程在这里:https://www.dong-blog.fun/post/2009

这么启动:

复制代码
docker run -it --rm --gpus '"device=1"' \
--shm-size 16G \
--net host \
-v /ssd/xiedong/Qwen/Qwen2.5-VL-7B-Instruct:/Qwen2.5-VL-Instruct \
kevinchina/deeplearning:llamafactory20250311-3 bash

vllm serve /Qwen2.5-VL-Instruct --max-model-len 16384 --tensor-parallel-size 1 --mm-processor-kwargs '{"min_pixels": 784, "max_pixels": 2352000, "fps": 1}' --limit-mm-per-prompt "image=2,video=1"

运行 python request_qwen257b.py 即可请求API拿到图像的描述。

比如拿到:

复制代码
The image features a bouquet of flowers wrapped in white paper. The bouquet includes various types of flowers in soft pastel colors, such as peach, light yellow, and white. Green leaves and stems are interspersed among the flowers, adding contrast to the soft hues. The background includes a hint of a peach-colored object and a white surface.

7. 串联过程

输入一张图,先请求qwen2.5 vl 7b 进行图像描述,得到图像描述作为Prompt。

使用Prompt和图,去请求SDXL+ControlNet,得到结果图。

运行 python auto_recolor_with_description.py 即可得到 output_recolored.jpg

8. gradio sdwebui

python recolor_gradio_app.py

使用说明

  1. 点击上方图片区域上传图片或者拖放图片
  2. 点击开始处理按钮
  3. 等待系统处理,将显示原始调整大小的图片、L通道图片和重上色结果
  4. 处理过程包括:
  5. 将图像调整为1024x1024
  6. 提取LAB色彩空间的L通道
  7. 使用Qwen2.5-VL生成图像描述
  8. 使用SD WebUI ControlNet进行重上色

9. 批量处理测试数据集,生成待测试数据的结果图

python process_and_recolor_images.py

  • 新建/ssd/xiedong/image_color/sdwebuicolor_test
  • 读取/ssd/xiedong/image_color/ddcolor_test下的所有图
  • 图片名字中含有real_B_rgb的就是原图
  • 把原图复制到/ssd/xiedong/image_color/sdwebuicolor_test
  • 图片名字中含有real_A的图是L通道图
  • 把L通道图复制到/ssd/xiedong/image_color/sdwebuicolor_test
  • 图片名字中含有fake_B_rgb的不用管
  • 然后你需要用每张原图,都用这里的这个逻辑代码去生成一张图,并命名为fake_B_rgb的那种名字,存入/ssd/xiedong/image_color/sdwebuicolor_test
  • 最后,将/ssd/xiedong/image_color/sdwebuicolor_test里的图都resize到384*384。

10. 指标测试

bash 复制代码
docker run -it --gpus device=2 -v /ssd/xiedong/image_color:/ssd/xiedong/image_color kevinchina/deeplearning:2.5.1-cuda12.1-cudnn9-devel-ddcolor-webui-metric bash

cd /ssd/xiedong/image_color

python evaluate_colorization.py --results_dir /ssd/xiedong/image_color/sdwebuicolor_test --output_dir /ssd/xiedong/image_color/sdwebuicolor_test_metric  --use_fid

结果:

Metric Mean Std Min Max
ssim 0.722846 0.120499 0.274659 0.986491
psnr 17.418013 3.408277 8.719207 31.298785
mse 1588.597951 1364.569312 48.217181 8732.923037
mae 25.508724 11.242591 2.699956 71.070618
color_error 17.548058 8.445806 1.915768 61.184597
lpips 0.344167 0.109269 0.047365 0.669448
fid 58.473146 - - -
相关推荐
宁南山6 小时前
比迪丽LoRA模型AE做片段视频素材生成:动态背景与元素创作
stable diffusion·ai绘画·lora模型·视频素材生成
日光明媚2 天前
DMD 一步扩散核心原理:从符号定义到梯度推导
人工智能·机器学习·计算机视觉·ai作画·stable diffusion·aigc
baidu_huihui4 天前
ComfyUI 是一款专为 Stable Diffusion 打造的开源可视化操作工具
stable diffusion
李昊哲小课5 天前
Stable Diffusion 保姆级教程|HF 国内镜像配置 + 一键安装 + 本地模型加载 + 完整代码
stable diffusion·hugging face
yumgpkpm5 天前
Qwen3.6正式开源,华为昇腾910B实现高效适配
华为·ai作画·stable diffusion·开源·ai写作·llama·gpu算力
数智工坊7 天前
深度拆解AnomalyAny:异常检测新工作,利用Stable Diffusion生成真实多样异常样本!
人工智能·pytorch·python·stable diffusion
语戚11 天前
深度解析:Stable Diffusion 底层原理 + U-Net Denoise 去噪机制全拆解
人工智能·ai·stable diffusion·aigc·模型
平安的平安12 天前
用 Python 玩转 AI 绘图:Stable Diffusion 本地部署指南
人工智能·python·stable diffusion
语戚12 天前
Stable Diffusion 核心模块深度拆解:CLIP、U-Net 与 VAE 原理全解析
人工智能·ai·stable diffusion·aigc·模型
yumgpkpm14 天前
华为昇腾910B上用Kubernetes(K8s)部署LLM和用Docker部署LLM的区别
docker·chatgpt·容器·stable diffusion·kubernetes·llama·gpu算力