图解 Stable Diffusion,熬夜优化只为你掌握AI绘画
Stable Diffusion 就像是一个数字画家,可以把你的文字描述转变成精美图像。
基本功能
有需要stable diffusion整合包以及提示词插件,可以扫描下方,免费获取
1. 文本生成图像
import torch
from diffusers import StableDiffusionPipeline
# 加载模型
模型 = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
torch_dtype=torch.float16
).to("cuda")
# 生成图像
提示词 = "一只橙色的猫坐在窗台上,窗外是蓝天白云"
图像 = 模型(提示词).images[0]
图像.save("猫咪图片.png")
2. 参数控制
# 调整生成参数
图像 = 模型(
prompt="宇航员骑马在火星表面",
height=512,
width=768,
num_inference_steps=50, # 步数越多越精细
guidance_scale=7.5, # 提示词引导强度
).images[0]
# 使用负面提示词
图像 = 模型(
prompt="一只金色的龙",
negative_prompt="模糊, 低质量, 扭曲的比例",
).images[0]
实用功能
1. 图像风格转换
# 不同艺术风格的提示词
风格提示词 = {
"水彩画": "水彩画风格, 柔和的色彩, 渐变, 水墨效果",
"赛博朋克": "赛博朋克风格, 霓虹灯, 未来城市, 高科技, 暗色调",
"油画": "油画风格, 厚重的颜料, 质感, 细腻的笔触"
}
# 生成特定风格的图像
def 生成风格图像(内容描述, 风格名称):
完整提示词 = f"{内容描述}, {风格提示词[风格名称]}"
图像 = 模型(完整提示词).images[0]
图像.save(f"{风格名称}_{内容描述[:10]}.png")
return 图像
# 例如:
生成风格图像("一座山脉日出", "油画")
2. 图像合成与修改
from diffusers import StableDiffusionImg2ImgPipeline
# 加载图像到图像模型
图像处理模型 = StableDiffusionImg2ImgPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
torch_dtype=torch.float16
).to("cuda")
# 修改现有图像
def 改造图像(原始图像, 新描述, 修改强度=0.75):
# 强度控制保留原图程度 (0-完全保留, 1-完全重绘)
结果 = 图像处理模型(
prompt=新描述,
image=原始图像,
strength=修改强度,
guidance_scale=7.5
).images[0]
return 结果
# 例如把普通照片转为动漫风格
from PIL import Image
照片 = Image.open("我的照片.jpg")
动漫版 = 改造图像(照片, "动漫风格肖像, 高质量插画")
3. 提示词优化
# 构建更强大的提示词技巧
def 构建高质量提示词(主题, 风格=None, 光照=None, 相机=None, 艺术家=None):
提示词 = 主题
# 添加可选元素
if 风格:
提示词 += f", {风格}风格"
if 光照:
提示词 += f", {光照}光照"
if 相机:
提示词 += f", {相机}镜头效果"
if 艺术家:
提示词 += f", 由{艺术家}创作的风格"
# 添加通用质量增强词
提示词 += ", 高分辨率, 精细细节, 专业摄影, 8k"
return 提示词
# 例如
优化后提示词 = 构建高质量提示词(
主题="一座古堡在雪山上",
风格="哥特式",
光照="黄昏",
相机="广角",
艺术家="Thomas Kinkade"
)
常见任务示例
1. 批量生成图像
# 按主题批量生成图像
主题列表 = [
"未来城市的夜景",
"森林中的古老神庙",
"海底宫殿与游鱼",
"赛博朋克的街道场景"
]
# 批量生成不同种子的图像
def 批量生成(提示词列表, 每个提示词数量=3):
结果 = {}
for 提示词 in 提示词列表:
结果[提示词] = []
for i in range(每个提示词数量):
图像 = 模型(
提示词,
num_images_per_prompt=1,
generator=torch.Generator().manual_seed(i*100)
).images[0]
结果[提示词].append(图像)
图像.save(f"{提示词[:10]}_{i}.png")
return 结果
# 运行批量生成
所有图像 = 批量生成(主题列表)
2. 提示词实验室
import gradio as gr
def 图像生成器(提示词, 负面提示词, 步数, 引导强度, 种子):
# 设置随机种子
生成器 = None if 种子 == -1 else torch.Generator().manual_seed(种子)
# 生成图像
图像 = 模型(
prompt=提示词,
negative_prompt=负面提示词,
num_inference_steps=步数,
guidance_scale=引导强度,
generator=生成器
).images[0]
return 图像
# 创建简单界面
界面 = gr.Interface(
fn=图像生成器,
inputs=[
gr.Textbox(label="提示词", value="一只可爱的小猫"),
gr.Textbox(label="负面提示词", value="模糊, 低质量"),
gr.Slider(minimum=10, maximum=150, value=50, label="步数"),
gr.Slider(minimum=1, maximum=20, value=7.5, label="引导强度"),
gr.Number(label="种子 (-1为随机)", value=-1)
],
outputs=gr.Image(label="生成的图像")
)
# 启动界面
界面.launch()
注意事项
- 显存不够时可降低分辨率或用半精度,省着点来
- 提示词越具体生成结果越好,不要太抽象瞎写
- 种子值决定基础噪声,同种子同参数图像会一样
- 步数并非越多越好,40-60足矣,别浪费时间
- 图像生成要用GPU,CPU跑那叫折磨人啊
总结
Stable Diffusion库是AI绘画领域的强力工具,可以帮你:
- 文本转精美图像
- 自定义艺术风格
- 编辑现有图片
- 批量创建内容
掌握好提示词工程是关键,无需画笔也能创造惊艳作品!不过这模型真吃显存,调参也挺烧脑的,但折腾出好看的图,那叫一个香啊。
关于AI绘画技术储备
学好 AI绘画 不论是就业还是做副业赚钱都不错,但要学会 AI绘画 还是要有一个学习规划。最后大家分享一份全套的 AI绘画 学习资料,给那些想学习 AI绘画 的小伙伴们一点帮助!
对于0基础小白入门:
如果你是零基础小白,想快速入门AI绘画是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括:stable diffusion安装包、stable diffusion0基础入门全套PDF,视频学习教程。带你从零基础系统性的学好AI绘画!
零基础AI绘画学习资源介绍
👉stable diffusion新手0基础入门PDF👈
(全套教程文末领取哈)
👉AI绘画必备工具👈
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉AI绘画基础+速成+进阶使用教程👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末