Stable Diffusion 四重调参优化——项目学习记录

发布于:2025-04-12 ⋅ 阅读:(62) ⋅ 点赞:(0)

学习记录还原:在本次实验中,我基于 Stable Diffusion v1.5模型,通过一系列优化方法提升生成图像的质量,最终实现了图像质量的显着提升。实验从基础的 Img2Img 技术入手,逐步推进到参数微调、DreamShaper 模型和 ControlNet 的应用,最终优化了图像细节和结构一致性。以下是实验的详细过程。
两效果图:



1. 实验环境

为了确保实验可复现,以下是实验所用的环境配置:

  • 操作系统:Windows 10

  • GPU:NVIDIA GeForce RTX 4070(8GB 显存)

  • Python 版本:3.11

  • 深度学习框架:PyTorch 1.12.1

  • 核心库

    • diffusers==0.29.2

    • transformers==4.44.2

    • opencv-python==4.10.0.84

  • 模型

    • 基础模型:runwayml/stable-diffusion-v1-5

    • 优化模型:Lykon/dreamshaper-8

    • ControlNet:lllyasviel/sd-controlnet-canny


2. 优化一:Img2Img 技术

优化动机与原因

基础的 Stable Diffusion 模型在生成图像时,细节和结构一致性较弱,尤其是在服装生成任务中,难以保留原始结构。通过引入 Img2Img 技术,可以在生成过程中保留更多原始图像的结构信息,提升一致性。

优化思路

以原始服装图像作为输入,结合文本提示,生成与原图结构相似但具有新细节的图像。通过调整 strength 参数,平衡原图结构保留与生成创意之间的关系。

优化过程

  • 代码实现

    from diffusers import StableDiffusionImg2ImgPipeline
    pipe = StableDiffusionImg2ImgPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16)
    init_image = Image.open(image_path).convert("RGB")
    image = pipe(prompt, image=init_image, strength=0.75, num_inference_steps=50).images[0]
    
  • 参数调整:设置 strength=0.75,使生成图像在保留原图结构的基础上,融入提示词描述的细节。

结果

Img2Img 技术有效提升了图像的结构一致性,但细节表现仍然不足,整体质量有待提高。


3. 优化二:微调 Stable Diffusion 参数

优化动机与原因

尽管 Img2Img 改善了结构一致性,但生成的图像细节和感知质量仍不理想。微调 Stable Diffusion 的生成参数可以进一步优化细节表现,提升图像的清晰度和真实感。

优化思路

通过增强提示词的描述性和调整生成参数(如 num_inference_stepsguidance_scale),提高图像的细节质量和与提示词的匹配度。

优化过程

  • 提示词增强

    enhanced_prompt = f"{prompt}, highly detailed, realistic textures, sharp edges"
    
  • 参数调整

    image = pipe(enhanced_prompt, negative_prompt="blurry, low resolution", num_inference_steps=75, guidance_scale=10.0).images[0]
    
    • 增加 num_inference_steps 至 75,提升生成过程的精细度。

    • 设置 guidance_scale=10.0,增强提示词对生成结果的引导作用。

结果

参数微调后,图像细节和清晰度有所提升,但结构一致性仍然有限,整体效果仍未达到最佳。


4. 优化三:DreamShaper 模型

优化动机与原因

基础模型在细节和美感上的表现存在局限,尤其在服装生成中难以生成高质量的纹理和人物细节。DreamShaper 模型(Lykon/dreamshaper-8)在细节生成上的表现优异,是进一步优化的选择。

优化思路

替换基础模型为 DreamShaper,结合优化后的提示词和参数设置,提升图像的细节表现和视觉美感。

优化过程

  • 模型加载

    from diffusers import StableDiffusionPipeline
    model_id = "Lykon/dreamshaper-8"
    pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
    
  • 图像生成

    image = pipe(enhanced_prompt, negative_prompt="blurry, low resolution", num_inference_steps=50, guidance_scale=7.5).images[0]
    

结果

DreamShaper 模型显着提升了图像的细节表现和感知质量,生成的服装纹理更加真实,但结构精确性仍需改进。


5. 优化四:SD v1.5 + ControlNet

优化动机与原因

尽管 DreamShaper 在细节上表现出色,但服装的轮廓和结构一致性仍不完美。ControlNet 通过引入边缘图约束,能够有效提升生成图像的结构精确性,特别适用于服装生成任务。

优化思路

使用 Canny 边缘检测生成控制图像,结合 Stable Diffusion v1.5 和 ControlNet,约束生成过程以保留服装的轮廓和结构。

优化过程

  • ControlNet 集成

    from diffusers import StableDiffusionControlNetPipeline, ControlNetModel
    controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny", torch_dtype=torch.float16)
    pipe = StableDiffusionControlNetPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", controlnet=controlnet, torch_dtype=torch.float16)
    
  • 边缘图生成与图像生成

    canny_image = cv2.Canny(cv2.imread(image_path, cv2.IMREAD_GRAYSCALE), 100, 200)
    image = pipe(prompt, image=canny_image, controlnet_conditioning_scale=1.0).images[0]
    

结果

ControlNet 的引入显着提升了图像的结构一致性和细节质量,服装轮廓更加精确,整体效果最佳。

 

DreamShaper

 


6. 总结

通过四次优化,我逐步提升了 Stable Diffusion 生成图像的质量:

  • Img2Img:奠定了结构一致性的基础,但细节不足。

  • 参数微调:增强了细节和清晰度,但结构仍需优化。

  • DreamShaper:显着提升了细节和美感,表现优于基础模型。

  • SD v1.5 + ControlNet:通过边缘约束,实现了结构与细节的全面提升。

最终,ControlNet 在服装生成任务中展现了最优效果,兼顾结构精确性和感知质量。
基础模型:
深度学习项目记录·Stable Diffusion从零搭建、复现笔记-CSDN博客

深度仔细记录:
基于 Stable Diffusion 的图像生成优化与评估:从 SDXL 到 ControlNet 的探索——项目学习记录-CSDN博客强相关:
Stable Diffusion+Pyqt5: 实现图像生成与管理界面(带保存 + 历史记录 + 删除功能)——我的实验记录(结尾附系统效果图)-CSDN博客


网站公告

今日签到

点亮在社区的每一天
去签到