Skip to content

Commit 1f9ee88

Browse files
authored
fix: zero Wan2.2 TI2V timesteps for fixed frames (#1604)
1 parent a7f2e03 commit 1f9ee88

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

src/stable-diffusion.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1680,12 +1680,15 @@ class StableDiffusionGGML {
16801680
const sd::Tensor<float>& init_latent,
16811681
const sd::Tensor<float>& denoise_mask) {
16821682
if (diffusion_model->get_desc() == "Wan2.2-TI2V-5B") {
1683-
auto new_timesteps = std::vector<float>(static_cast<size_t>(init_latent.shape()[2]), timesteps[0]);
1684-
1685-
if (!denoise_mask.empty()) {
1686-
float value = denoise_mask.dim() == 5 ? denoise_mask.index(0, 0, 0, 0, 0) : denoise_mask.index(0, 0, 0, 0);
1687-
if (value == 0.f) {
1688-
new_timesteps[0] = 0.f;
1683+
int64_t frame_count = init_latent.shape()[2];
1684+
auto new_timesteps = std::vector<float>(static_cast<size_t>(frame_count), timesteps[0]);
1685+
1686+
if (!denoise_mask.empty() && denoise_mask.dim() >= 4 && denoise_mask.shape()[2] == frame_count) {
1687+
for (int64_t frame = 0; frame < frame_count; ++frame) {
1688+
float value = denoise_mask.dim() == 5 ? denoise_mask.index(0, 0, frame, 0, 0) : denoise_mask.index(0, 0, frame, 0);
1689+
if (value == 0.f) {
1690+
new_timesteps[static_cast<size_t>(frame)] = 0.f;
1691+
}
16891692
}
16901693
}
16911694
return new_timesteps;

0 commit comments

Comments
 (0)