mirror of
https://github.com/leejet/stable-diffusion.cpp.git
synced 2026-03-24 02:08:51 +00:00
feat: support some non-standard Anima weight names (#1305)
This commit is contained in:
parent
39d54702a6
commit
5792c66879
@ -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) {
|
if (tensor_storage.name.find("model.diffusion_model.transformer_blocks.0.img_mod.1.weight") != std::string::npos) {
|
||||||
return VERSION_QWEN_IMAGE;
|
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;
|
return VERSION_ANIMA;
|
||||||
}
|
}
|
||||||
if (tensor_storage.name.find("model.diffusion_model.double_stream_modulation_img.lin.weight") != std::string::npos) {
|
if (tensor_storage.name.find("model.diffusion_model.double_stream_modulation_img.lin.weight") != std::string::npos) {
|
||||||
|
|||||||
@ -653,6 +653,14 @@ std::string convert_diffusers_dit_to_original_lumina2(std::string name) {
|
|||||||
return 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) {
|
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)) {
|
if (sd_version_is_sd1(version) || sd_version_is_sd2(version)) {
|
||||||
name = convert_diffusers_unet_to_original_sd1(name);
|
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);
|
name = convert_diffusers_dit_to_original_flux(name);
|
||||||
} else if (sd_version_is_z_image(version)) {
|
} else if (sd_version_is_z_image(version)) {
|
||||||
name = convert_diffusers_dit_to_original_lumina2(name);
|
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;
|
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
|
// cond_stage_model
|
||||||
{
|
{
|
||||||
for (const auto& prefix : cond_stage_model_prefix_vec) {
|
for (const auto& prefix : cond_stage_model_prefix_vec) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user