license: creativeml-openrail-m
tags:
- stable-diffusion
- stable-diffusion-2-1
- text-to-image
pinned: true
library_name: diffusers
伪弹性基础模型卡片(1024x1024基础分辨率)

基于stable-diffusion-2-1(stabilityai/stable-diffusion-2-1)微调的多比例摄影模型(ptx0/pseudo-real-beta)。
示例图像
种子: 2695929547
步数: 25
采样器: DDIM,默认模型配置
版本: Pytorch 2.0.1, Diffusers 0.17.1
引导强度: 9.2
引导重缩放: 0.0
分辨率 |
模型 |
稳定扩散原版 |
伪弹性版 |
真实引擎版 |
753x1004 (4:3) |
v2-1 |
 |
 |
 |
1280x720 (16:9) |
v2-1 |
 |
 |
 |
1024x1024 (1:1) |
v2-1 |
 |
 |
 |
1024x1024 (1:1) |
v2-1 |
 |
 |
 |
背景
预训练检查点ptx0/pseudo-real-beta
的UNet训练了4,200步,文本编码器训练了15,600步,批次大小为15,梯度累积10次,数据集包括:
- Cushman(1939-196年间8000张柯达彩色幻灯片)
- Midjourney v5.1过滤集(约22,000张高清v5.1图像)
- 国家地理(约3,000-4,000张动物、自然风光、历史场景的大于1024x768图像)
- 少量人物吸烟/雾化电子烟的库存图库
该模型具备多样化的写实与冒险场景生成能力,提示连贯性强,但缺乏多比例支持。原训练代码未包含比例分桶功能,后借鉴@ttj的pseudo-flex-base
方案验证了理论假设。
训练代码
通过数据加载器彻底实现比例分桶:
- 丢弃所有小于1024x1024的图像
- 统一将短边缩放至1024像素,长边按比例调整(如1920x1080→约1820x1024)
- 同批次图像保持相同分辨率
初始检查点
本模型pseudo-flex-base
基于stabilityai/stable-diffusion-2-1
768模型微调,冻结文本编码器,在LAION HD的148,000张图像上训练1000步(批次等效150,实际批次15+10次累积)。高分辨率下训练缓慢,1.5-1.7比例图像在A100 80G上需约700秒/迭代,总耗时两天。
文本编码器替换
在第1000步时,实验性采用ptx0/pseudo-real-beta
的文本编码器与当前UNet组合,有效解决了图像噪点问题。随后从该检查点重启训练。
宽幅/竖幅比例初现
1300-2950步期间验证提示开始收敛,部分检查点出现倒退但通常在百步内恢复,整体持续改进。
性能退化与数据集切换
当148,000张图像在150批次下训练超3000步后(假设全数据集使用约完成3轮,实际因过滤可能达9轮/图),出现:
- 静态噪点增加
- 训练耗时剧增但改进微弱
- 提示词过拟合,泛化性下降
因此在1300步时切换至17,800张1024x1024 Midjourney v5.1新数据集(含700竖幅+700横幅样本)。
对比度问题
测试3275号检查点时发现:
- 暗部图像发白
- 亮部图像平淡
最佳参数为guidance_scale=9.2
+guidance_rescale=0.0
,但暗部仍不理想
二次数据集变更
新LAION子集仅含特定比例(16:9, 9:16, 2:3, 3:2)的17,800张图像,均匀分布。使用T5 Flan+BLIP2生成精准标注以避免过拟合。
对比度修复:偏移噪声与SNR伽马
对4250号检查点应用:
snr_gamma=5.0
noise_offset=0.2
noise_pertubation=0.1
25步后对比度恢复,纯黑方块
提示效果显著改善。75步时因SNR伽马数值不稳定停用,偏移噪声保留。
成功!质量与对比度提升
后续检查点持续改进,4475步时创建新版本发布。
状态:测试版
本模型已打包供用户全面评估,使用方法见模型入门指南。
目标解决的问题:
- 生成图像像从大图裁剪的观感
- 非方形比例生成效果异常
局限:
- 小数据集训练,改进有限
- 基于SD 2.1架构,效果不及SDXL
优化方向:
- 使用标注数据集(当前用LAION TEXT字段,COCO标注更佳)
- 大图训练文本编码器
- 定期提示词丢弃以增强无分类器引导能力
目录
模型详情
模型描述
基于stable-diffusion-2-1与ptx0/pseudo-real-beta微调的动态比例模型。
微调分辨率分布:
|
宽度 |
高度 |
比例 |
图像数 |
0 |
1024 |
1024 |
1:1 |
90561 |
1 |
1536 |
1024 |
3:2 |
8716 |
2 |
1365 |
1024 |
4:3 |
6933 |
...(其余比例略) |
|
|
|
|
- 开发者: pseudoterminal
- 模型类型: 基于扩散的文本生成图像模型
- 语言: 英语
- 许可: creativeml-openrail-m
- 父模型: https://huggingface.co/ptx0/pseudo-real-beta
- 更多资源: 需补充
用途
- 参考 https://huggingface.co/stabilityai/stable-diffusion-2-1
训练详情
训练数据
- LAION HD子集
- https://huggingface.co/datasets/laion/laion-high-resolution
实际使用少量数据,详见预处理
预处理
通过GitHub仓库bghira/SimpleTuner
脚本完成。
速度、规模与耗时
- 数据集规模: 过滤后10万图-文对
- 硬件: 1×A100 80G
- 优化器: 8bit Adam
- 批次: 等效150(实际15+10次累积)
- 学习率: 恒定4e-8(随批次调整)
- 训练步数: 进行中
- 耗时: 约4天(当前)
结果
需补充
模型卡作者
pseudoterminal
如何开始使用模型
import torch
from diffusers import StableDiffusionPipeline, DiffusionPipeline, AutoencoderKL, UNet2DConditionModel, DDPMScheduler
from transformers import CLIPTextModel
model_id = 'ptx0/pseudo-flex-base'
pipeline = DiffusionPipeline.from_pretrained(model_id)
pipeline.unet = torch.compile(pipeline.unet)
scheduler = DDPMScheduler.from_pretrained(
model_id,
subfolder="scheduler"
)
torch.set_float32_matmul_precision('high')
pipeline.to('cuda')
prompts = {
"woman": "沙滩上的女性",
"man": "公园里弹吉他的男性",
...(其余提示词略)
}
for shortname, prompt in prompts.items():
image = pipeline(prompt=prompt,
negative_prompt='畸形,恶心,过曝,褪色',
num_inference_steps=32,
generator=torch.Generator(device='cuda').manual_seed(1641421826),
width=1368, height=720, guidance_scale=7.5,
guidance_rescale=0.3, num_inference_steps=25).images[0]
image.save(f'test/{shortname}_nobetas.png', format="PNG")