最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

[sd

运维笔记admin38浏览0评论

[sd

[sd

.md.md1.图像生成

ckpt = "/home/image_team/image_team_docker_home/lgd/e_commerce_sd/stable-diffusion-webui/models/Stable-diffusion/DreamShaper_8_pruned.safetensors"
output = "/home/image_team/image_team_docker_home/lgd/e_commerce_sd/outputs/sd_scripts_output/"
python gen_img_diffusers.py --ckpt {ckpt} --outdir {output}  --fp16 --interactive

指定版本: 

--ckpt:在选项中指定模型(sd checkpoint或sd文件夹)。

--v2:使用sd 2.0,1.x版本无需指定。

--v_parameterization:如果使用的模型使用 v 参数化(768-v-ema.ckpt),和v2一起使用。

--vae:指定要使的VAE。

图像生成和输出:

--interactive:以交互模式运行。

--prompt:指定提示符。

--from_file:指定包含prompt的文件,每行写一个提示。

--W:指定图像的宽度,默认512。

--H:指定图像的高度,默认512。

--step:指定采样步数,默认50。

--scale:指定classifier free guidance scale,默认7.5。

--sampler:指定采样器,默认ddim,可以指定Diffusers提供的ddim、pndm、dpmsolver、dpmsolver+++、lms、euler、euler_a(后三个也可以用k_lms、k_euler、k_euler_a指定)。

--outdir:图像输出地址。

--images_per_prompt:指定每次提示生成的图片数,默认是1。

--clip_skip:指定要使用clip末尾的哪一层,省略则使用最后一层。

--max_embeddings_multiples:指定clip输入长度与默认值75的倍数,未指定,则默认75。若是3,则是225.

--negative_scale:指定位编码比例。

调整内存和加速:

--batch_size:批量大小,默认是1,大批量会消耗更多内存,但会生成更快的结果。

--vae_batch_size:指定VAE批量大小,默认和bs一样,VAE会消耗更多内存,去噪后步长到100%时,会耗尽内存。

--xformers:可以选择指定 xformers 的使用(如果不使用 xformers,则将其省略)。
--fp16:可选择以 fp16(单精度)执行推理。RTX 30 系列 GPU。
--bf16:可以选择执行 bf16 (bfloat16) 推理。

使用附加网络:

--network_module:指定要使用的网络,对于lora,---network_module networks.lora,多个lora,--network_module networks.lora networks.lora

--network_weights:指定要使用的网络权重文件,单个lora,--network_weights model.safetensors,对于多个lora,--network_weights model1.safetensors model2.safetensors model3.safetensors

--network_mul:指定要附加的网络权重的比例,默认是1。单个lora,---network_mul 0.8,多个lora,--network_mul 0.4 0.5 0.7

--network_merge:将附加权重和原始权重进行预先合并。

2.文生图 

使用textual inversion和lora: 

python gen_img_diffusers.py --ckpt model.safetensors --scale 8 --steps 48 --outdir txt2img --xformers --W 512 --H 768 --fp16 --sampler k_euler_a --textual_inversion_embeddings goodembed.safetensors negprompt.pt --network_module networks.lora networks.lora --network_weights model1.safetensors model2.safetensors --network_mul 0.4 0.8 --clip_skip 2 --max_embeddings_multiples 1 --batch_size 8 --images_per_prompt 1 --interactive

相同指示一次生成64张,批量大小为4的图片:

python gen_img_diffusers.py --ckpt model.ckpt --outdir outputs --xformers --fp16 --W 512 --H 704 --scale 12.5 --sampler k_euler_a --steps 32 --batch_size 4 --images_per_prompt 64 --prompt "beautiful flowers --n monochrome"

3.图生图

python gen_img_diffusers.py --ckpt trinart_characters_it4_v1_vae_merged.ckpt --outdir outputs --xformers --fp16 --scale 12.5 --sampler k_euler --steps 32 --image_path template.png --strength 0.8 --prompt "1girl, cowboy shot, brown hair, pony tail, brown eyes, sailor school uniform, outdoors --n lowres, bad anatomy, bad hands, error, missing fingers, cropped, worst quality, low quality, normal quality, jpeg artifacts, (blurry), hair ornament, glasses" --batch_size 8 --images_per_prompt 32

--image_path:指定img2img图片,若指定文件夹,则以此使用该文件夹中图像

--strength:指定img2img强度,默认0.8.

3.inpaint

--mask_image:指定mask图像。

gen_img_diffusers.py

text_encoder, vae, unet = model_util.load_models_from_stable_diffusion_checkpoint(args.v2, args.ckpt)
- sd_scripts/library/model_util.py->load_models_from_stable_diffusion_checkpoint
- _, state_dict = load_checkpoint_with_text_encoder_conversion(ckpt_path, device)- # Convert the UNet2DConditionModel model.
- unet_config = create_unet_diffusers_config(v2, unet_use_linear_projection_in_v2)
{'sample_size': 64, 'in_channels': 4, 'out_channels': 4, 'down_block_types': ('CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'DownBlock2D'), 'up_block_types': ('UpBlock2D', 'CrossAttnUpBlock2D', 'CrossAttnUpBlock2D', 'CrossAttnUpBlock2D'), 'block_out_channels': (320, 640, 1280, 1280), 'layers_per_block': 2, 'cross_attention_dim': 768, 'attention_head_dim': 8}
- converted_unet_checkpoint = convert_ldm_unet_checkpoint(v2, state_dict, unet_config)
- unet = UNet2DConditionModel(**unet_config).to(device)
- info = unet.load_state_dict(converted_unet_checkpoint)- # Convert the VAE model.
- vae_config = create_vae_diffusers_config()
{'sample_size': 256, 'in_channels': 3, 'out_channels': 3, 'down_block_types': ('DownEncoderBlock2D', 'DownEncoderBlock2D', 'DownEncoderBlock2D', 'DownEncoderBlock2D'), 'up_block_types': ('UpDecoderBlock2D', 'UpDecoderBlock2D', 'UpDecoderBlock2D', 'UpDecoderBlock2D'), 'block_out_channels': (128, 256, 512, 512), 'latent_channels': 4, 'layers_per_block': 2}
- converted_vae_checkpoint = convert_ldm_vae_checkpoint(state_dict, vae_config)
- vae = AutoencoderKL(**vae_config).to(device)
- info = vae.load_state_dict(converted_vae_checkpoint)- text_model = CLIPTextModel._from_config(cfg)
- info = text_model.load_state_dict(converted_text_encoder_checkpoint)replace_unet_modules(unet, mem_eff, args.xformers, args.sdpa)
replace_vae_modules(vae, mem_eff, args.xformers, args.sdpa)tokenizer = train_util.load_tokenizer(args)
- tokenizer = CLIPTokenizer.from_pretrained(original_path)scheduler_module = diffusers.schedulers.scheduling_ddpmscheduler = scheduler_cls(num_train_timesteps=SCHEDULER_TIMESTEPS,beta_start=SCHEDULER_LINEAR_START,beta_end=SCHEDULER_LINEAR_END,beta_schedule=SCHEDLER_SCHEDULE,**sched_init_args,)

发布评论

评论列表(0)

  1. 暂无评论