当前位置: 首页 > news >正文

SD+ ControlNet (边缘图+颜色图),扩散模型+约束条件关于颜色因子的探索实验(一):双条件融合生成优化——项目学习记录

目录

实验背景梳理

实验阶段

指标解释

我的推理与分析​编辑

推理 1:因子 0.5 vs 单 ControlNet

数据:

观察:

分析:

推理 2:因子 0.5 vs 0.9

数据:

观察:

分析:

总结与展望

指标生成过程:​

最近基于 diffusers 库的 ControlNet,探索了如何通过 Canny 边缘图和颜色图控制服装图像生成。目标是利用 提取后的DeepFashion 数据集(27 张图像和对应的文本描述),生成符合描述的服装图像,比如“plaid patterns”或“pure color”设计的牛仔裤和背心。从最初的单 ControlNet 到融合颜色图的双 ControlNet,我遇到了不少挑战,比如hugging face库、指标权衡、图像全黑等,但每一步都让我更接近理想结果。以下是我的实验全记录,梳理了从边缘图控制到颜色因子优化的心路历程。

实验背景梳理

实验基于 DeepFashion 数据集,包含 27 张服装图像(每行格式为 image_name:prompt,例如:

"MEN-Denim-id_00000080-01_7_additional.jpg": "The lower clothing is of long length. The fabric is cotton and it has plaid patterns."

实验使用 StableDiffusionControlNetPipeline,结合 lllyasviel/sd-controlnet-cannylllyasviel/sd-controlnet-scribble(模拟颜色图),在 Anaconda 环境(kaiti)下运行,代码为 generate_v15_Contronet_canny_color.py

实验阶段

  1. 单 ControlNet(Canny 边缘图

    • 我最初只用 Canny 边缘图控制生成,评估了 27 张图像的平均指标:

      • PSNR: 8.44

      • SSIM: 0.6434

      • LPIPS: 0.2713

    • 结果显示边缘图能较好控制服装结构,但颜色和图案(“plaid patterns”)不够精准。

  2. 双 ControlNet(Canny + 颜色图

    • 我加入了颜色图(通过高斯模糊原始图像生成),测试了不同颜色因子controlnet_conditioning_scale=[1.0, color_scale]):

      • 因子 0.5

        • PSNR: 8.60

        • SSIM: 0.6407

        • LPIPS: 0.3004

      • 因子 0.9

        • PSNR: 7.55

        • SSIM: 0.4892

        • LPIPS: 0.4163

    • 颜色图生成逻辑:动态模糊核("pure color"(31, 31),其他 (51, 51))。

    • 提示词优化:"fashion photography of {prompt}, highly detailed clothing textures, realistic fabric materials, vivid and accurate patterns, photorealistic, studio lighting, 4k quality"

  3. 后续优化

    基于因子 0.5 和 0.9 的结果,我又进行了测试因子 为0.3、0.4、0.6、0.7的实验,寻找更优平衡点,为什么继续选择这几个因子呢?后面有我的推理分析。

指标解释

为量化生成图像的质量,我使用了三个指标(PSNR和SSIM越大越好,LPIPS越小越好):

  • PSNR(峰值信噪比):衡量像素级相似性,值越高表示生成图像与原始图像越接近

  • SSIM(结构相似性):衡量结构、亮度和对比度相似性,值越接近似 1 表示结构越相

  • LPIPS(感知相似性):衡量人类感知差异,值越低表示生成图像更贴近原始图像的视觉感受

单 ControlNet 的 PSNR 和 SSIM 较低但 LPIPS 较优,说明边缘图控制下感知质量较好,但像素级和结构相似性稍弱。加入颜色图后,指标变化反映了颜色因子的影响

我的推理与分析

通过对比单 ControlNet 和双 ControlNet 的指标,我提出了以下推理,尝试理解颜色因子的作用。

推理 1:因子 0.5 vs 单 ControlNet

  • 数据
    • 单 ControlNet:PSNR 8.44,SSIM 0.6434,LPIPS 0.2713

    • 因子 0.5:PSNR 8.60,SSIM 0.6407,LPIPS 0.3004

  • 观察
    • PSNR 提高了 0.16(8.44 → 8.60),说明颜色图使生成图像在像素级更接近原始图像。

    • SSIM 略降 0.0027(0.6434 → 0.6407),结构相似性略受影响,但幅度小。

    • LPIPS 变差 0.0291(0.2713 → 0.3004),感知相似性下降,生成图像可能在细节或纹理上偏离。

  • 结论:
    因子 0.5 提升了 PSNR,但 SSIM 和 LPIPS 变差,说明颜色图在像素级有帮助,但可能干扰了结构和感知质量。我推测需要调小因子,减轻颜色图的影响

  • 分析
    • 正确性:PSNR 提高表明颜色图补充了色彩信息,但 SSIM 和 LPIPS 变差可能因为因子 0.5 的颜色图约束过强掩盖了提示词(如“plaid patterns”)的细节

    • 原因:因子 0.5 让颜色图对生成过程有较强约束,可能使图像过于贴近模糊后的原始颜色,忽略了提示词的创造性(如图案、材质)。

    • 调小因子降低颜色因子(如 0.3 或 0.4)会减少颜色图的约束,让 Canny 边缘图和提示词主导生成,可能改善 SSIM 和 LPIPS,同时保留部分 PSNR 提升。
      因此我补充了颜色因子0.3、0.4的实验

推理 2:因子 0.5 vs 0.9

  • 数据
    • 因子 0.5:PSNR 8.60,SSIM 0.6407,LPIPS 0.3004

    • 因子 0.9:PSNR 7.55,SSIM 0.4892,LPIPS 0.4163

  • 观察
    • PSNR 下降 1.05(8.60 → 7.55),像素级相似性显著变差。

    • SSIM 下降 0.1515(0.6407 → 0.4892),结构相似性大幅降低。

    • LPIPS 变差 0.1159(0.3004 → 0.4163),感知相似性进一步恶化。

  • 我的结论
    因子从 0.5 到 0.9,三个指标全部变差,说明因子 0.9 的颜色图约束过强。我推测 0.5 到 0.9 之间可能存在更优因子,某些指标会改善。

  • 分析
  • 因子 0.9 表现普遍低于 0.5,表明颜色图的影响过强,可能让生成图像过于依赖模糊后的原始颜色,忽略了边缘图和提示词,导致图案(如“格子”)和细节的丢失。

  • 原因:因子 0.9 使颜色图的影响几乎与边缘图(因子 1.0)相等,模糊后的颜色图可能覆盖了细节和纹理,降低了生成的质量。

  • 更优因子:因子 0.5 的 SSIM 和 LPIPS 值接近单独使用 ControlNet 时的值,但 PSNR 更高。这意味着在 0.3-0.7 的因子区间中可能会找到平衡点,既能保持较高的 PSNR,又能提升 SSIM 和 LPIPS。

    • 如果结果依然不理想,可能尝试结合单 ControlNet 和颜色提示词,或引入新的条件(如深度图)。

      接下来的工作包括:
    • 测试因子 0.3、0.4、0.6、0.7,并记录各项指标。

    • 优化提示词和模糊核,以提升生成图像中的“格子图案”和“棉织物”细节。

    • 绘制指标曲线,进一步寻找最佳因子。

    • 总结与展望

      从单 ControlNet 逐步过渡到双 ControlNet,深入了解颜色因子在服装图像生成中的作用。主要收获:颜色图提升了像素级相似性(PSNR),但仍需平衡结构(SSIM)和感知质量(LPIPS)。因子 0.5 比因子 0.9 更优,但仍需调低(如 0.3、0.4)或微调(如 0.6、0.7)。提示词和模糊核对细节(如“格子图案”)的生成至关重要。

    • 模糊核调整

      blur_kernel = (21, 21)  # 保留更多颜色细节
      
      当前使用的较大动态模糊核(如 (31, 31) 或 (51, 51))可能会使颜色图过于平滑,从而影响细节的保留。我可以尝试使用更小的模糊核:进行测试后观察 SSIM 和 LPIPS 的变化,看看是否有所提升。
    • 提示词强化

      enhanced_prompt = f"fashion photography of {prompt}, ultra-detailed plaid patterns, realistic cotton texture, precise color designs, photorealistic, studio lighting, 8k quality"
      
    • 如果“格子图案”或“棉织物”效果不佳,我可以加强提示词,如:

    • 推理步骤

      num_inference_steps = 50
      
    • 当前的 num_inference_steps=30 已经平衡了速度和质量。如果 LPIPS 结果仍不理想,我可以将步数增加到 50(大约 30 秒/张),以提升细节:

    • 可视化对比

      • 在实验完成后,可以绘制曲线图,直观对比不同因子下的各项指标:

      import matplotlib.pyplot as plt
      factors = [0.0, 0.5, 0.9]  # 0.0 表示单 ControlNet
      psnr_vals = [8.44, 8.60, 7.55]
      ssim_vals = [0.6434, 0.6407, 0.4892]
      lpips_vals = [0.2713, 0.3004, 0.4163]
      plt.figure(figsize=(12, 4))
      plt.subplot(131); plt.plot(factors, psnr_vals, 'o-'); plt.title('PSNR'); plt.xlabel('Color Factor'); plt.grid()
      plt.subplot(132); plt.plot(factors, ssim_vals, 'o-'); plt.title('SSIM'); plt.xlabel('Color Factor'); plt.grid()
      plt.subplot(133); plt.plot(factors, lpips_vals, 'o-'); plt.title('LPIPS'); plt.xlabel('Color Factor'); plt.grid()
      plt.tight_layout()
      plt.show()
      
      • 添加新因子(如 0.3、0.4、0.6、0.7)后更新曲线,寻找最优因子。

      • 指标生成过程:

       篇幅较长,这是(一):推理记录,实验指标结果在(二),包含颜色因子为0.3、0.4、0.5、0.6、0.7,二是对推理的验证。以前的基础部署过程:
深度学习项目记录·Stable Diffusion从零搭建、复现笔记-CSDN博客
从全灰到清晰图像:我的 Stable Diffusion 多尺度优化学习记录-CSDN博客

 【优化记录】不更换模型,提升Stable Diffusion人体细节效果的全流程-CSDN博客Stable Diffusion+Pyqt5: 实现图像生成与管理界面(带保存 + 历史记录 + 删除功能)——我的实验记录(结尾附系统效果图)-CSDN博客Stable Diffusion + Contronet,调参实现LPIPS最优(带生成效果+指标对比)——项目学习记录-CSDN博客SD + Contronet,扩散模型V1.5+约束条件后续优化:保存Canny边缘图,便于视觉理解——stable diffusion项目学习笔记-CSDN博客

Stable Diffusion +双Contronet:从 ControlNet 边缘图到双条件融合:实现服装图像生成的技术演进——项目学习记录-CSDN博客

SD+融合ControlNet,扩散模型V1.5+约束条件边缘图+颜色图实现服装图像生成:定量对比试验结果+分析-CSDN博客

 另外,关于数据集:.csv、.json、.txt都是常用的文本文件格式
Stable Diffusion + CelebA-Dialog 数据集:不同数据集文本标签格式不一致?我的实验记录-CSDN博客

图文生成领域常用的数据集——我的学习记录(刚整理完)-CSDN博客
 


http://www.mrgr.cn/news/98441.html

相关文章:

  • Python小程序 - 文件处理3:正则表达式
  • 1 cline 提示词工程指南-架构篇
  • 华为OD机试真题——模拟消息队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 正则表达式在线校验(RegExp) - 加菲工具
  • 2.4goweb 项目1
  • Linux目录结构:核心目录功能与用途解析
  • 树莓派超全系列教程文档--(24)本地化设置、SSH及配置防火墙
  • 机器学习 | 强化学习基本原理 | MDP | TD | PG | TRPO
  • UE5 Chaos :官方文献总结 + 渲染网格体 (Render Mesh) 和模拟网格体 是如何关联的?为什么模拟网格体 可以驱动渲染网格体?
  • 单链表各种操作实现(数据结构C语言多文件编写)
  • Cesium.js(7):地图、地形的加载
  • 双链表各种操作实现(数据结构C语言多文件编写)
  • ubuntu18.04安装miniforge3
  • Base64在线编码解码 - 加菲工具
  • 【JavaEE】SpringBoot 统一功能处理
  • 【图解】系统设计学习笔记
  • +++++背到厌倦。持续更新
  • composer报错的处理方案
  • 【VUE3】练习项目——大事件后台管理
  • Android studio消息同步机制:消息本地存储,服务器交互减压