[sd_scripts]之gen_img

https://github.com/kohya-ss/sd-scripts/blob/main/docs/gen_img_README-ja.mdicon-default.png?t=N7T8https://github.com/kohya-ss/sd-scripts/blob/main/docs/gen_img_README-ja.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_ddpm

scheduler = scheduler_cls(
        num_train_timesteps=SCHEDULER_TIMESTEPS,
        beta_start=SCHEDULER_LINEAR_START,
        beta_end=SCHEDULER_LINEAR_END,
        beta_schedule=SCHEDLER_SCHEDULE,
        **sched_init_args,
    )


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/138011.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

轻量封装WebGPU渲染系统示例<23>- 可渲染对象添加到多个渲染Pass节点(源码)

渲染和计算混合系统, 可以看做基于算力驱动设计理念的一种实现。 此系统中,可渲染(rendering)/计算(computing)实体可以任意添加到一个渲染器pass节点。若干个这样的节点相关联,就能构成对应的pass node graph,也就实现了整个3D渲…

LDC1000配Pico - 通过不同金属导电性自制金属分类(其实线圈很重要)

话不多说,上接线和代码,用的arduino IDE。 LDC1000 - PicoW5V ------- VSYS GND ------ GND ECK默认不接,板载8M有源晶振时基时钟,如需使用其他外部时钟,请去掉R3; INTB默认不接; SCK ------ GP2 CSB ----…

选择护眼台灯的标准?儿童护眼台灯挑选指南

自从护眼台灯成为学生书桌上最常见的照明灯具后,就经常能看到关于护眼台灯伤眼的信息。从根源上说,是各种不专业产品混杂在市场中,这种产品技术较差,而且为减少成本选择品质差的材料,但由于低廉的价格仍然吸引了众多消…

YOLO V1中关于bounding boxs的部分要点

YOLO的核心原理预览 YOLO将输入的图片resize成448 x 448,并且为 S x S(S 7)个grid,如果物体的中心落入该grid中,那么该grid就需要负责检测该物体。一次性输出所检测到的目标信息,包括类别和位置。 对于每一…

【4】Gradle-快速入门使用【Gradle多模块项目详解】

目录 【4】Gradle-快速入门使用【Gradle多模块项目详解】创建多项目构建添加子项目命名建议 项目依赖项项目路径不同模块的build.gradle配置 子项目之间共享构建逻辑公约插件跨项目配置buildSrc开发公约插件 调整多模块项目配置修改项目树的元素 了解Gralde配置时间和执行时间并…

SparkSQL之Catelog体系

按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念。在关系数据库中,Catalog是一个宽泛的概念,通常可以理解为一个容器或数据库对象命名空间中的一个层次,主要用来解决命名冲突等问题。 在Spark SQL系统中,…

从管易云到金蝶云星空通过接口配置打通数据

从管易云到金蝶云星空通过接口配置打通数据 接通系统:管易云 管易云是金蝶旗下专注提供电商企业管理软件服务的子品牌,先后开发了C-ERP、EC-OMS、EC-WMS、E店管家、BBC、B2B、B2C商城网站建设等产品和服务,涵盖电商业务全流程。 接通系统&…

创建maven的 java web项目

创建maven的 java web项目 创建出来的项目样子 再添加java和resources文件夹 一定要如图有文件夹下有图标才代表被IDEA识别,不让是不行的 没有的话在File——ProjectStructure中进行设置

SM8081是一个高效率的1.5MHz同步步进降压DC/DC调节器,可提供高达1A的电压输出电流。

SM8081 高效率,1.5MHZ,1A 同步降压调节器 概述: SM8081是一个高效率的1.5MHz同步步进降压DC/DC调节器,可提供高达1A的电压输出电流。它可以在宽输入电压下工作范围从2.5V到5.5V,集成主开关以及具有非常低Rps&#x…

GPT Store上线 OpenAI 的「iPhone时刻」这回真来了

OpenAI首届全球开发者大会上,Sam Altman再次给AI行业扔了一系列重磅炸弹。GPT-4 Turbo、GPT Store和定制化的GPT在大会上发布,OpenAI的生态体系初具雏形。 GPT模型刚升级了不到24小时,高能网友就开始用它的定制化功能创造了各种有趣的应用。…

kafka实践-热点数据展示

1 实时流式计算 1.1 概念 流式计算一般对实时性要求较高,同时一般是先定义目标计算,然后数据到来之后将计算逻辑应用于数据。同时为了提高计算效率,往往尽可能采用增量计算代替全量计算。也就是将数据先聚集在集中全量处理。 2.2 应用场景…

【网络】TCP协议理论

TCP协议理论 一、TCP协议简介1、浅谈可靠性2、UDP协议存在的意义 二、TCP的协议格式TCP的解包和分用 三、确认应答机制一种应答方式——捎带应答 四、超时重传机制超时等待时间 五、流量控制1、TCP的缓冲区2、TCP的窗口大小3、TCP的PSH标志位 六、TCP的六个标志位URG字段的详细…

操作系统概念

一、是什么 操作系统(Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序,同时也是计算机系统的内核与基石 简单来讲&#xff0…

C语言之认识柔性数组(flexible array)

在学习之前,我们首先要了解柔性数组是放在结构体当中的,知道这一点,我们就开始今天的学习吧! 1.柔性数组的声明 在C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员 这里的结构是结构…

Producer

Producer开发样例 版本说明 新客 户端, 从Kafka 0.9.x 开始, client基于Java语言实现。同时提供C/C, Python等其他客户端实现。 开发步骤 配置客户端参数以及创建客户端实例;构建待发送消息;发送消息;关闭生产者实例; 代码示例 public class KafkaProducer {public stati…

C++标准模板(STL)- 类型支持 (受支持操作,检查类型是否有拥有移动赋值运算符)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…

视频剪辑:掌握视频封面提取与剪辑技巧,提升视频传播效果

在数字媒体时代&#xff0c;视频已成为人们获取信息、娱乐和交流的重要方式。而一个吸引人的视频封面往往能吸引更多的观众点击观看&#xff0c;因此&#xff0c;掌握视频封面提取与剪辑技巧对于提升视频传播效果至关重要。视频封面是视频的“门面”&#xff0c;它不仅展示视频…

Vue.js中的路由(router)和Vue Router的作用?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

牛客刷题记录11.12

继承和组合 二进制数统计 1的个数 和 0 的个数

操作系统 | 虚拟机及linux的安装

​ &#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 目录结构 1.操作系统实验之虚拟机及linux的安装 1.1 实验目的 1.2 实验内容 1.3 实验步骤 …