From 5792c668798083f9f6d57dac66fbc62ddfdac405 Mon Sep 17 00:00:00 2001 From: leejet Date: Sun, 1 Mar 2026 22:01:29 +0800 Subject: [PATCH] feat: support some non-standard Anima weight names (#1305) --- src/model.cpp | 2 +- src/name_conversion.cpp | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/model.cpp b/src/model.cpp index 24e3c56..77b032c 100644 --- a/src/model.cpp +++ b/src/model.cpp @@ -1057,7 +1057,7 @@ SDVersion ModelLoader::get_sd_version() { if (tensor_storage.name.find("model.diffusion_model.transformer_blocks.0.img_mod.1.weight") != std::string::npos) { return VERSION_QWEN_IMAGE; } - if (tensor_storage.name.find("model.diffusion_model.net.llm_adapter.blocks.0.cross_attn.q_proj.weight") != std::string::npos) { + if (tensor_storage.name.find("llm_adapter.blocks.0.cross_attn.q_proj.weight") != std::string::npos) { return VERSION_ANIMA; } if (tensor_storage.name.find("model.diffusion_model.double_stream_modulation_img.lin.weight") != std::string::npos) { diff --git a/src/name_conversion.cpp b/src/name_conversion.cpp index a7839ab..3b3abfb 100644 --- a/src/name_conversion.cpp +++ b/src/name_conversion.cpp @@ -653,6 +653,14 @@ std::string convert_diffusers_dit_to_original_lumina2(std::string name) { return name; } +std::string convert_other_dit_to_original_anima(std::string name) { + static const std::string anima_net_prefix = "net."; + if (!starts_with(name, anima_net_prefix)) { + name = anima_net_prefix + name; + } + return name; +} + std::string convert_diffusion_model_name(std::string name, std::string prefix, SDVersion version) { if (sd_version_is_sd1(version) || sd_version_is_sd2(version)) { name = convert_diffusers_unet_to_original_sd1(name); @@ -664,6 +672,8 @@ std::string convert_diffusion_model_name(std::string name, std::string prefix, S name = convert_diffusers_dit_to_original_flux(name); } else if (sd_version_is_z_image(version)) { name = convert_diffusers_dit_to_original_lumina2(name); + } else if (sd_version_is_anima(version)) { + name = convert_other_dit_to_original_anima(name); } return name; } @@ -1094,14 +1104,6 @@ std::string convert_tensor_name(std::string name, SDVersion version) { } } - if (is_lora && sd_version_is_anima(version)) { - static const std::string anima_diffusion_prefix = "model.diffusion_model."; - static const std::string anima_net_prefix = "model.diffusion_model.net."; - if (starts_with(name, anima_diffusion_prefix) && !starts_with(name, anima_net_prefix)) { - name = anima_net_prefix + name.substr(anima_diffusion_prefix.size()); - } - } - // cond_stage_model { for (const auto& prefix : cond_stage_model_prefix_vec) {