掌握iroiro-lora:从模型融合到参数调优的全流程实战指南

掌握iroiro-lora:从模型融合到参数调优的全流程实战指南

【免费下载链接】iroiro-lora 【免费下载链接】iroiro-lora 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/iroiro-lora

引言:为什么选择iroiro-lora?

你是否还在为Stable Diffusion模型定制而烦恼?面对复杂的模型参数调节和融合操作,是否感到无从下手?本文将带你深入了解iroiro-lora项目,一个功能强大的LoRA(Low-Rank Adaptation)模型处理工具集。通过本文的学习,你将能够:

  • 理解iroiro-lora项目的核心功能和架构
  • 掌握模型融合的关键技术和实现方法
  • 学会使用参数调优工具优化LoRA模型
  • 了解图像尺寸随机化在模型训练中的应用
  • 解决实际应用中可能遇到的常见问题

无论你是AI绘画爱好者、模型开发者,还是从事相关研究的专业人员,本文都将为你提供实用的指导和深入的技术解析。

项目概述与核心功能

项目结构解析

iroiro-lora项目采用模块化设计,主要包含以下几个核心组件:

iroiro-lora/
├── asb/                # ASB相关模型文件
├── release/            # 发布版本的LoRA模型
├── sdxl/               # SDXL相关LoRA模型
├── test/               # 测试用模型和资源
├── test2/              # 第二组测试资源
├── test3/              # 第三组测试资源
├── test_controlnet/    # ControlNet测试资源
├── test_controlnet2/   # 第二组ControlNet测试资源
├── image_size_randomize.py      # 图像尺寸随机化工具
├── image_size_randomize_v2.py   # 图像尺寸随机化工具v2版本
├── keybased_modelmerger.py      # 基于键的模型融合工具
├── sdxl_lora_elemental_tune.py  # SDXL LoRA参数调优工具
├── lbw-presets.txt     # LBW预设文件
├── LICENSE.txt         # 许可证文件
└── README.md           # 项目说明文档

核心功能概览

iroiro-lora提供了三个主要工具,构成了LoRA模型处理的完整工作流:

  1. 图像尺寸随机化工具:为模型训练提供多样化的输入尺寸,增强模型的适应性
  2. 基于键的模型融合工具:实现不同模型之间的精细融合,支持多种融合模式
  3. SDXL LoRA参数调优工具:提供灵活的参数调节功能,优化LoRA模型性能

这三个工具相互配合,形成了从数据准备、模型融合到参数调优的完整 pipeline,极大地简化了LoRA模型的定制过程。

图像尺寸随机化:增强模型泛化能力

功能介绍与应用场景

图像尺寸随机化是训练鲁棒性LoRA模型的关键步骤之一。通过在训练过程中随机改变输入图像的尺寸,可以:

  • 增强模型对不同分辨率输入的适应能力
  • 减少过拟合,提高模型的泛化性能
  • 模拟真实应用中的各种使用场景

iroiro-lora提供了两个版本的图像尺寸随机化工具:image_size_randomize.pyimage_size_randomize_v2.py。v2版本在v1的基础上增加了更多的模式选项和灵活性。

实现原理与核心代码解析

图像尺寸随机化工具的核心实现如下:

class RandomImageSizeScript(scripts.Script):  
    def title(self):
        return "Image Size Randomize"
      
    def ui(self, is_txt2img):
        with gr.Tabs():
            with gr.TabItem("Image Sizes"):
                gr.HTML("<p>Enter image sizes in the format 'width,height', separated by new lines.</p>")
                with gr.Row():
                    text_sizes = gr.Textbox(
                        label='Image Sizes',
                        placeholder='Enter sizes, e.g.:\n1024,512\n1024,768\n1024,1024',
                        elem_id=self.elem_id("text_sizes"),
                        lines=10
                    )
                with gr.Row():
                    random_swap_text = gr.Checkbox(
                        label='Randomly swap width and height',
                        elem_id=self.elem_id("random_swap_text")
                    )
        return [text_sizes, random_swap_text]

    def run(self, p, text_sizes, random_swap_text):
        sizes = []
        if text_sizes:
            try:
                sizes = [tuple(map(int, line.strip().split(','))) for line in text_sizes.strip().split('\n') if line.strip()]
            except ValueError:
                print(f"Invalid size format in textbox: {text_sizes}")

        if sizes:
            width, height = random.choice(sizes)
            if random_swap_text:
                if random.choice([True, False]):
                    width, height = height, width
            p.width, p.height = width, height
        else:
            print(f"No valid sizes found. Please check the textbox input.")

        proc = process_images(p)
        return proc

版本对比:v1 vs v2

v2版本在v1的基础上增加了模式选择和顺序交换功能:

def run(self, p, text_sizes, random_swap_text, mode, sequential_swap):
    # 解析输入尺寸
    # ...
    
    if sizes:
        if mode == "Random":
            # 随机选择尺寸
            width, height = random.choice(sizes)
        else:  # Sequential mode
            # 顺序选择尺寸
            # ...
            
        # 应用尺寸交换
        if random_swap_text and random.choice([True, False]):
            width, height = height, width
            
        p.width, p.height = width, height
    # ...

使用指南与最佳实践

基础使用步骤
  1. 在UI界面中,切换到"Image Sizes"选项卡
  2. 输入图像尺寸,格式为"width,height",每行一个尺寸
  3. 选择是否启用随机交换宽高
  4. 选择模式(v2版本):随机模式或顺序模式
  5. 运行处理流程
推荐尺寸配置

对于SDXL模型,推荐以下尺寸配置:

1024,512
1024,640
1024,768
1024,896
1024,1024
896,1024
768,1024
640,1024
512,1024
高级技巧
  • 多样化配置:确保尺寸覆盖不同的宽高比,增强模型适应性
  • 渐进式训练:先使用较大学习率和多样化尺寸,再减小学习率并固定常用尺寸
  • 针对性优化:根据目标应用场景,增加对应尺寸的出现频率

基于键的模型融合:精准控制模型特性

融合原理与优势

基于键的模型融合(Key-based Model Merging)是一种精细的模型融合技术,它允许用户:

  • 选择性地融合模型的特定部分
  • 精确控制每个部分的融合比例
  • 支持多种融合模式,满足不同需求

相比传统的整体模型融合,基于键的融合提供了更高的灵活性和精确度,使模型定制更加可控。

核心算法实现

融合模式详解
def _merge_models(self, f_a, f_b, f_c, batched_keys, final_keys_and_alphas, batch_size, merge_mode, device):
    # 批量处理键
    for i in range(0, len(batched_keys), batch_size):
        batch = batched_keys[i:i + batch_size]
        
        # 获取张量和权重
        tensors_a = [f_a.get_tensor(key) for key, _ in batch] if f_a is not None else None
        tensors_b = [f_b.get_tensor(key) for key, _ in batch] if f_b is not None else None
        tensors_c = [f_c.get_tensor(key) for key, _ in batch] if f_c is not None else None
        alphas = [final_keys_and_alphas[key] for key, _ in batch]
        
        # 执行融合
        for j, (key, alpha) in enumerate(batch):
            tensor_a = tensors_a[j] if tensors_a is not None else None
            tensor_b = tensors_b[j] if tensors_b is not None else None
            tensor_c = tensors_c[j] if tensors_c is not None else None
            
            if merge_mode == "Normal":
                # 常规融合: A * (1-alpha) + B * alpha
                merged_tensor = torch.lerp(tensor_a, tensor_b, alpha)
            elif merge_mode == "Add difference (B-C to Current)":
                # 将(B-C)的差异添加到当前模型
                merged_tensor = shared.sd_model.state_dict()[key] + alpha * (tensor_b - tensor_c)
            elif merge_mode == "Add difference (A + (B-C) to Current)":
                # A + alpha*(B-C)
                merged_tensor = tensor_a + alpha * (tensor_b - tensor_c)
                
            # 更新模型状态
            shared.sd_model.state_dict()[key].copy_(merged_tensor.to(device))

融合模式深度解析

1. 常规融合 (Normal)
merged_tensor = A * (1-alpha) + B * alpha

这种模式下,融合后的张量是模型A和模型B对应张量的线性插值,alpha控制融合比例。

应用场景:当需要平滑过渡两个模型的特性时使用,例如将风格模型和内容模型融合。

2. 差异添加模式 (B-C to Current)
merged_tensor = Current + alpha * (B - C)

这种模式计算模型B和模型C的差异,并将其按比例添加到当前模型中。

应用场景:当需要将一个模型相对于另一个模型的特定特性提取并应用到当前模型时使用。

3. A + (B-C) 模式
merged_tensor = A + alpha * (B - C)

这种模式以模型A为基础,添加模型B相对于模型C的差异。

应用场景:当需要保留模型A的基础上,添加模型B的特定特性时使用。

界面与参数配置

def ui(self, is_txt2img):
    model_names = sorted(sd_models.checkpoints_list.keys(), key=str.casefold)
    
    with gr.Row():
        model_a = gr.Dropdown(label="Model A", choices=model_names)
        model_b = gr.Dropdown(label="Model B", choices=model_names)
        model_c = gr.Dropdown(label="Model C (用于差异模式)", choices=model_names)
        
    keys_and_alphas = gr.Textbox(
        label="融合键和比例",
        placeholder="例:\nmodel.diffusion_model.input_blocks.0,0.5\nmodel.diffusion_model.middle_block,0.3",
        lines=5
    )
    
    with gr.Row():
        merge_enabled = gr.Checkbox(label="启用融合", value=True)
        use_gpu = gr.Checkbox(label="使用GPU", value=True)
        
    batch_size = gr.Slider(minimum=1, maximum=500, value=250, label="批处理大小")
    merge_mode = gr.Dropdown(
        label="融合模式",
        choices=["Normal", "Add difference (B-C to Current)", "Add difference (A + (B-C) to Current)"],
        value="Normal"
    )
    
    return [model_a, model_b, model_c, keys_and_alphas, merge_enabled, use_gpu, batch_size, merge_mode]

实战案例:风格迁移融合

案例背景

目标:将模型A(写实风格)和模型B(动漫风格)融合,保留动漫风格的同时,增强面部细节。

融合配置
# 键和比例配置
model.diffusion_model.input_blocks,0.3
model.diffusion_model.middle_block,0.2
model.diffusion_model.output_blocks,0.4
model.diffusion_model.up_blocks,0.3
model.diffusion_model.down_blocks,0.2
model.diffusion_model.layers.9,0.7  # 面部特征层,高权重
model.diffusion_model.layers.10,0.7 # 面部特征层,高权重
步骤与结果分析
  1. 选择模型A(写实风格)和模型B(动漫风格)
  2. 配置上述融合键和比例
  3. 使用Normal模式,alpha=0.5
  4. 运行融合过程
  5. 测试生成结果,调整参数

结果分析:通过提高面部特征层的融合比例,我们成功保留了动漫风格的同时,增强了面部细节,达到了预期效果。

常见问题与解决方案

问题1:融合过程缓慢

解决方案

  • 增加批处理大小(batch_size)
  • 启用GPU加速
  • 减少需要融合的键数量
问题2:融合后模型质量下降

解决方案

  • 检查融合比例,避免极端值
  • 减少融合的键数量,只融合必要部分
  • 尝试不同的融合模式
  • 确保基础模型兼容性
问题3:显存不足

解决方案

  • 减小批处理大小
  • 关闭GPU加速(作为最后的选择)
  • 分阶段融合,先融合部分键,保存中间模型,再进行下一步融合

SDXL LoRA参数调优:精细控制模型行为

参数调优的重要性

LoRA模型的性能很大程度上取决于其参数配置。sdxl_lora_elemental_tune.py工具提供了强大的参数调优功能,允许用户:

  • 提取LoRA模型的层次结构
  • 通过TOML配置文件精细调整参数
  • 生成优化后的LoRA模型

核心功能与工作流程

sdxl_lora_elemental_tune.py的核心功能包括:

  1. 提取LoRA层次结构:解析LoRA模型,生成层次化配置文件
  2. 调整LoRA权重:基于TOML配置文件调整模型参数
  3. 生成优化模型:保存调整后的模型

工作流程如下:

mermaid

层次结构提取

层次结构提取是理解和调整LoRA模型的基础:

def extract_lora_hierarchy(lora_tensors, mode="extract"):
    lora_hierarchy = {}
    
    for key in lora_tensors:
        if key.startswith("lora_unet_"):
            # 解析UNet相关键
            model_type, block_type, block_num, layer_key = parse_key(key)
            
            # 构建层次结构
            if model_type not in lora_hierarchy:
                lora_hierarchy[model_type] = {}
            if block_type not in lora_hierarchy[model_type]:
                lora_hierarchy[model_type][block_type] = {}
            if block_num not in lora_hierarchy[model_type][block_type]:
                lora_hierarchy[model_type][block_type][block_num] = {}
            lora_hierarchy[model_type][block_type][block_num][layer_key] = 1.0
            
        elif key.startswith("lora_te"):
            # 解析文本编码器相关键
            # ...
    
    return lora_hierarchy

TOML配置文件详解

提取层次结构后,会生成如下TOML配置文件:

[unet]
    [unet.input_blocks]
        [unet.input_blocks."0"]
            "conv" = 1.0
            "norm" = 1.0
        [unet.input_blocks."1"]
            "conv" = 1.0
            "norm" = 1.0
    # ...其他块配置
    
[lora_te0]
    [lora_te0.encoder]
        "layers_0__mlp_fc1" = 1.0
        "layers_0__mlp_fc2" = 1.0
        "layers_0__self_attn_k_proj" = 1.0
    # ...其他层配置

权重调整算法

调整权重的核心代码如下:

def adjust_lora_weights(lora_path, toml_path, output_path, multiplier=1.0, remove_zero_weight_keys=True):
    # 加载LoRA模型和配置
    lora_tensors = load_file(lora_path)
    with open(toml_path, "r") as f:
        lora_config = toml.load(f)
    
    # 提取键组
    lora_key_groups = extract_lora_hierarchy(lora_tensors, mode="adjust")
    adjusted_tensors = {}
    
    # 处理UNet部分
    for block_type, block_nums in lora_config["unet"].items():
        for block_num, layer_keys in block_nums.items():
            for grouped_key, weight in layer_keys.items():
                group_key = f"..unet_{block_type}_{block_num}_{grouped_key}"
                if group_key in lora_key_groups["unet"]:
                    final_weight = weight * multiplier
                    if not remove_zero_weight_keys or final_weight != 0.0:
                        for target_key in lora_key_groups["unet"][group_key]:
                            if target_key.endswith(".alpha"):
                                adjusted_tensors[target_key] = lora_tensors[target_key] * final_weight
                            else:
                                adjusted_tensors[target_key] = lora_tensors[target_key] * math.sqrt(final_weight)
    
    # 处理文本编码器部分
    # ...
    
    # 保存调整后的模型
    save_file(adjusted_tensors, output_path, metadata)

使用教程:从提取到优化

步骤1:提取层次结构
python sdxl_lora_elemental_tune.py extract --lora_path ./sdxl/example_lora.safetensors --output_path ./configs/example_config.toml
步骤2:编辑TOML配置文件

根据需求调整配置文件中的权重值:

[unet]
    [unet.input_blocks]
        [unet.input_blocks."0"]
            "conv" = 0.8  # 降低输入块conv层权重
            "norm" = 1.0
        # ...其他配置
步骤3:应用调整并生成新模型
python sdxl_lora_elemental_tune.py adjust \
    --lora_path ./sdxl/example_lora.safetensors \
    --toml_path ./configs/example_config.toml \
    --output_path ./sdxl/optimized_lora.safetensors \
    --multiplier 0.9 \
    --remove_zero_weight_keys

高级调优策略

精细化面部特征调整
[unet]
    [unet.up_blocks]
        [unet.up_blocks."3"]  # 高分辨率块,影响细节
            "attentions_0" = 1.2  # 增加注意力权重
            "attentions_1" = 1.2
            "resnets_0" = 1.1
            "resnets_1" = 1.1
风格迁移优化
[unet]
    [unet.middle_block]  # 中间块,影响整体风格
        "attentions_0" = 0.5  # 降低注意力影响
        "resnets_0" = 0.7     # 降低残差网络影响
    
    [unet.down_blocks]  # 下采样块,影响整体结构
        [unet.down_blocks."0"]
            "resnets_0" = 0.8
            "resnets_1" = 0.8
性能与质量平衡
# 降低不重要层的权重,减小模型大小
[unet]
    [unet.input_blocks]
        [unet.input_blocks."0"]
            "conv" = 0.0  # 完全禁用
            "norm" = 0.5  # 降低权重
            
    [unet.output_blocks]
        [unet.output_blocks."0"]
            "conv" = 0.3  # 降低权重

综合实战:构建专属LoRA模型

项目规划:目标与需求分析

假设我们的目标是构建一个专注于"赛博朋克风格人物肖像"的LoRA模型。需求分析如下:

  • 风格特征:霓虹色调、高对比度、科技元素、未来都市感
  • 人物特征:清晰面部特征、特定发型、赛博朋克风格服饰
  • 技术要求:与SDXL基础模型兼容,支持不同分辨率输入,生成结果一致性高

完整工作流程

mermaid

步骤1:数据准备与预处理

  1. 数据集收集:收集200-500张赛博朋克风格人物图像
  2. 数据清洗:去除低质量、不相关图像
  3. 标注处理:为每张图像添加合适的文本描述

步骤2:图像尺寸配置

使用image_size_randomize_v2.py配置多样化尺寸:

1024,512
1024,640
1024,768
1024,896
1024,1024
896,1024
768,1024
640,1024
512,1024

启用随机模式和随机交换宽高。

步骤3:基础模型训练

使用上述配置训练基础LoRA模型,关键参数:

  • 学习率:2e-4
  • 迭代次数:10000步
  • 批次大小:4
  • 图像分辨率:可变(通过随机化工具)

步骤4:模型融合优化

使用keybased_modelmerger.py融合两个模型:

  • 模型A:我们训练的基础模型
  • 模型B:高质量肖像模型
  • 融合配置
model.diffusion_model.up_blocks,0.4
model.diffusion_model.layers.9,0.6
model.diffusion_model.layers.10,0.6
model.diffusion_model.layers.11,0.5

使用Normal模式,alpha=0.4。

步骤5:参数调优

使用sdxl_lora_elemental_tune.py进行精细调整:

  1. 提取层次结构
python sdxl_lora_elemental_tune.py extract --lora_path ./cyberpunk_base.safetensors --output_path ./configs/cyberpunk_config.toml
  1. 编辑配置文件
[unet]
    [unet.up_blocks]
        [unet.up_blocks."3"]
            "attentions_0" = 1.3
            "attentions_1" = 1.3
            "resnets_0" = 1.2
            "resnets_1" = 1.2
    
    [unet.middle_block]
        "attentions_0" = 0.8
        "resnets_0" = 0.9

[lora_te0]
    [lora_te0.encoder]
        "layers_8__self_attn_k_proj" = 1.2
        "layers_8__self_attn_v_proj" = 1.2
        "layers_9__self_attn_k_proj" = 1.3
        "layers_9__self_attn_v_proj" = 1.3
  1. 应用调整
python sdxl_lora_elemental_tune.py adjust \
    --lora_path ./cyberpunk_merged.safetensors \
    --toml_path ./configs/cyberpunk_config.toml \
    --output_path ./cyberpunk_final.safetensors \
    --multiplier 1.1

步骤6:测试与评估

测试不同提示词和参数组合,评估模型性能:

  1. 基础测试:标准提示词测试
  2. 变化测试:调整CFG Scale、Steps等参数
  3. 风格迁移测试:应用于不同基础模型
  4. 分辨率测试:测试不同分辨率下的表现

优化与迭代

根据测试结果,进一步调整:

  • 如果面部特征不清晰,增加高分辨率块的权重
  • 如果风格不一致,调整中间块的参数
  • 如果生成结果多样性不足,增加训练数据多样性

高级技巧与最佳实践

模型组合策略

串行组合

将多个LoRA模型按顺序应用:

基础模型 → LoRA模型A (权重0.5) → LoRA模型B (权重0.3) → 最终结果

适用场景:需要叠加多种效果时,例如先应用风格LoRA,再应用面部优化LoRA。

并行组合

同时应用多个LoRA模型,控制总权重:

基础模型 → [LoRA A (0.4) + LoRA B (0.3) + LoRA C (0.2)] → 最终结果

适用场景:需要平衡多种特性时,例如同时应用风格、面部和姿势LoRA。

混合组合

结合串行和并行策略:

基础模型 → [LoRA A (0.5) + LoRA B (0.3)] → LoRA C (0.4) → 最终结果

适用场景:复杂效果叠加,先组合基础效果,再应用修饰效果。

性能优化与资源管理

显存优化
  • 批处理大小调整:根据显存大小调整批处理大小
  • 分阶段处理:将大模型分解为多个小模型,分阶段处理
  • 精度调整:适当降低精度(如使用FP16)减少显存占用
计算效率提升
  • 预计算:缓存常用模型组合的中间结果
  • 增量更新:只重新计算修改过的部分
  • 并行处理:利用多GPU并行处理不同任务

常见问题诊断与解决

问题1:生成结果不稳定

诊断:模型对输入提示词过度敏感,生成结果波动大。

解决方案

  • 降低整体LoRA权重
  • 增加训练迭代次数
  • 优化训练数据,提高质量和一致性
  • 调整注意力层权重:
[unet]
    [unet.middle_block]
        "attentions_0" = 0.7  # 降低注意力权重,增加稳定性
问题2:风格侵蚀(Style Bleeding)

诊断:LoRA风格过度影响非目标区域。

解决方案

  • 降低整体权重
  • 调整特定层权重:
[unet]
    [unet.down_blocks]  # 降低下采样块权重,减少风格扩散
        [unet.down_blocks."0"]
            "resnets_0" = 0.5
            "resnets_1" = 0.5
问题3:细节丢失

诊断:生成结果缺乏细节,显得模糊。

解决方案

  • 增加高分辨率块权重:
[unet]
    [unet.up_blocks]  # 高分辨率块
        [unet.up_blocks."3"]
            "attentions_0" = 1.2
            "attentions_1" = 1.2
            "resnets_0" = 1.1
            "resnets_1" = 1.1
  • 增加训练数据中的细节丰富样本
  • 适当提高CFG Scale值

创意应用与扩展

风格迁移与融合

结合多个风格LoRA,创造独特风格:

基础模型 → [赛博朋克LoRA (0.4) + 水彩风格LoRA (0.3)] → 梵高风格LoRA (0.2) → 最终结果
特定领域优化

针对特定应用场景优化:

  • 头像生成:优化面部特征和上半身细节
  • 风景生成:增强环境细节和氛围表现
  • 动漫风格:调整线条表现和色彩处理
交互式应用开发

利用iroiro-lora工具集开发交互式应用:

  • 构建Web界面,允许用户调整LoRA参数
  • 开发实时预览功能,即时反馈参数调整效果
  • 创建参数预设系统,保存和分享最佳配置

未来发展与趋势

技术演进预测

LoRA技术发展方向
  1. 模型结构优化:更高效的参数化方法,进一步减小模型大小
  2. 自适应调整:根据输入内容自动调整LoRA权重
  3. 多模态支持:融合文本、图像、音频等多种模态信息
iroiro-lora未来功能展望
  1. 自动化调优:基于反馈自动优化LoRA参数
  2. 可视化工具:直观展示模型结构和参数影响
  3. 云端集成:提供云端训练和推理服务
  4. 社区功能:分享模型配置和优化经验

学习资源与进阶路径

推荐学习资源
  1. 官方文档:Stable Diffusion和LoRA官方文档
  2. 学术论文:LoRA及其相关改进技术的研究论文
  3. 社区论坛:Hugging Face、CivitAI等平台的社区讨论
  4. 视频教程:模型训练和优化的实操视频
进阶学习路径

mermaid

总结与展望

iroiro-lora项目为LoRA模型的处理提供了全面而强大的工具集,从图像尺寸随机化、模型融合到参数调优,覆盖了LoRA模型开发的完整生命周期。通过本文的学习,你应该已经掌握了这些工具的核心功能和使用方法,能够构建和优化符合特定需求的LoRA模型。

随着AI生成技术的不断发展,LoRA作为一种高效的模型定制方法,将在创意设计、内容生成、个性化服务等领域发挥越来越重要的作用。我们期待看到iroiro-lora项目继续发展,为社区提供更多创新功能,同时也鼓励用户积极探索和分享使用经验,共同推动技术进步。

最后,记住模型开发是一个迭代优化的过程,不断尝试、测试和调整是成功的关键。希望本文能够帮助你在LoRA模型开发的道路上取得更大的成就!

附录:常用配置参考

推荐的模型融合配置

面部优化融合
model.diffusion_model.up_blocks,0.5
model.diffusion_model.layers.8,0.6
model.diffusion_model.layers.9,0.7
model.diffusion_model.layers.10,0.7
model.diffusion_model.layers.11,0.6
风格增强融合
model.diffusion_model.middle_block,0.6
model.diffusion_model.input_blocks,0.4
model.diffusion_model.output_blocks,0.3
model.diffusion_model.down_blocks,0.4

常用TOML配置模板

面部优化模板
[unet]
    [unet.up_blocks]
        [unet.up_blocks."3"]
            "attentions_0" = 1.3
            "attentions_1" = 1.3
            "resnets_0" = 1.2
            "resnets_1" = 1.2
            
        [unet.up_blocks."2"]
            "attentions_0" = 1.2
            "attentions_1" = 1.2
            "resnets_0" = 1.1
            "resnets_1" = 1.1

[lora_te0]
    [lora_te0.encoder]
        "layers_8__self_attn_k_proj" = 1.2
        "layers_8__self_attn_v_proj" = 1.2
        "layers_9__self_attn_k_proj" = 1.3
        "layers_9__self_attn_v_proj" = 1.3
风格迁移模板
[unet]
    [unet.middle_block]
        "attentions_0" = 0.8
        "resnets_0" = 0.9
        
    [unet.down_blocks]
        [unet.down_blocks."0"]
            "resnets_0" = 0.8
            "resnets_1" = 0.8
            
        [unet.down_blocks."1"]
            "resnets_0" = 0.7
            "resnets_1" = 0.7

命令参考速查表

图像尺寸随机化
# 基础使用
python image_size_randomize_v2.py --sizes "1024,512\n1024,1024" --mode "Random" --swap True

# 顺序模式
python image_size_randomize_v2.py --sizes "1024,512\n1024,768\n1024,1024" --mode "Sequential"
模型融合
# 常规融合
python keybased_modelmerger.py --model_a "modelA.safetensors" --model_b "modelB.safetensors" --keys "model.diffusion_model.up_blocks,0.5" --mode "Normal"

# 差异融合
python keybased_modelmerger.py --model_b "modelB.safetensors" --model_c "modelC.safetensors" --keys "model.diffusion_model.middle_block,0.3" --mode "Add difference (B-C to Current)"
参数调优
# 提取层次结构
python sdxl_lora_elemental_tune.py extract --lora_path input.safetensors --output_path config.toml

# 应用调整
python sdxl_lora_elemental_tune.py adjust --lora_path input.safetensors --toml_path config.toml --output_path output.safetensors --multiplier 1.2

【免费下载链接】iroiro-lora 【免费下载链接】iroiro-lora 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/iroiro-lora

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值