mirror of
https://github.com/leejet/stable-diffusion.cpp.git
synced 2026-07-29 14:20:57 -05:00
feat: AnimateDiff SD 1.5 motion modules (v2 + v3) (#1784)
This commit is contained in:
@@ -304,6 +304,12 @@ std::string convert_diffusers_unet_to_original_sd1(std::string name) {
|
||||
}
|
||||
}
|
||||
|
||||
static const std::vector<std::pair<std::string, std::string>> name_map{
|
||||
{"to_out.weight", "to_out.0.weight"},
|
||||
{"to_out.bias", "to_out.0.bias"},
|
||||
};
|
||||
replace_with_name_map(result, name_map);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -1343,13 +1349,25 @@ std::string convert_tensor_name(std::string name, SDVersion version) {
|
||||
|
||||
// diffusion model
|
||||
{
|
||||
bool matched = false;
|
||||
for (const auto& prefix : diffuison_model_prefix_vec) {
|
||||
if (starts_with(name, prefix)) {
|
||||
name = convert_diffusion_model_name(name.substr(prefix.size()), prefix, version);
|
||||
name = prefix + name;
|
||||
name = convert_diffusion_model_name(name.substr(prefix.size()), prefix, version);
|
||||
name = prefix + name;
|
||||
matched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_lora && !matched && !diffuison_model_prefix_vec.empty()) {
|
||||
if (starts_with(name, "down_blocks.") || starts_with(name, "up_blocks.") ||
|
||||
starts_with(name, "mid_block.") || starts_with(name, "conv_in.") ||
|
||||
starts_with(name, "conv_out.") || starts_with(name, "time_embedding.") ||
|
||||
starts_with(name, "conv_norm_out.")) {
|
||||
const std::string& canonical_prefix = diffuison_model_prefix_vec.front();
|
||||
name = convert_diffusion_model_name(name, canonical_prefix, version);
|
||||
name = canonical_prefix + name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// cond_stage_model
|
||||
|
||||
Reference in New Issue
Block a user