Skip to content

Commit cd55624

Browse files
GitLab CIclaude
andcommitted
add diffusers compat imports and mp4 output format
- Add try/except imports for diffusers >= 0.21 compatibility (PR guoyww#435): ModelMixin, CrossAttention->Attention, DiffusionPipeline path changes - Widen diffusers version range to >=0.16.0 (no upper bound) - Add --format flag to animate.py for mp4/gif output (PR guoyww#37) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent cac9ccd commit cd55624

7 files changed

Lines changed: 36 additions & 11 deletions

File tree

animatediff/models/attention.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,17 @@
88
from torch import nn
99

1010
from diffusers.configuration_utils import ConfigMixin, register_to_config
11-
from diffusers.modeling_utils import ModelMixin
11+
try:
12+
from diffusers.modeling_utils import ModelMixin
13+
except ImportError:
14+
from diffusers.models.modeling_utils import ModelMixin
1215
from diffusers.utils import BaseOutput
1316
from diffusers.utils.import_utils import is_xformers_available
14-
from diffusers.models.attention import CrossAttention, FeedForward, AdaLayerNorm
17+
try:
18+
from diffusers.models.attention import CrossAttention, FeedForward, AdaLayerNorm
19+
except ImportError:
20+
from diffusers.models.attention_processor import Attention as CrossAttention
21+
from diffusers.models.attention import FeedForward, AdaLayerNorm
1522

1623
from einops import rearrange, repeat
1724

animatediff/models/motion_module.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,17 @@
88
import torchvision
99

1010
from diffusers.configuration_utils import ConfigMixin, register_to_config
11-
from diffusers.modeling_utils import ModelMixin
11+
try:
12+
from diffusers.modeling_utils import ModelMixin
13+
except ImportError:
14+
from diffusers.models.modeling_utils import ModelMixin
1215
from diffusers.utils import BaseOutput
1316
from diffusers.utils.import_utils import is_xformers_available
14-
from diffusers.models.attention import CrossAttention, FeedForward
17+
try:
18+
from diffusers.models.attention import CrossAttention, FeedForward
19+
except ImportError:
20+
from diffusers.models.attention_processor import Attention as CrossAttention
21+
from diffusers.models.attention import FeedForward
1522

1623
from einops import rearrange, repeat
1724
import math

animatediff/models/sparse_controlnet.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
from diffusers.configuration_utils import ConfigMixin, register_to_config
2424
from diffusers.utils import BaseOutput, logging
2525
from diffusers.models.embeddings import TimestepEmbedding, Timesteps
26-
from diffusers.modeling_utils import ModelMixin
26+
try:
27+
from diffusers.modeling_utils import ModelMixin
28+
except ImportError:
29+
from diffusers.models.modeling_utils import ModelMixin
2730

2831

2932
from .unet_blocks import (

animatediff/models/unet.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
import torch.utils.checkpoint
1313

1414
from diffusers.configuration_utils import ConfigMixin, register_to_config
15-
from diffusers.modeling_utils import ModelMixin
15+
try:
16+
from diffusers.modeling_utils import ModelMixin
17+
except ImportError:
18+
from diffusers.models.modeling_utils import ModelMixin
1619
from diffusers.utils import BaseOutput, logging
1720
from diffusers.models.embeddings import TimestepEmbedding, Timesteps
1821
from .unet_blocks import (

animatediff/pipelines/pipeline_animation.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@
1414

1515
from diffusers.configuration_utils import FrozenDict
1616
from diffusers.models import AutoencoderKL
17-
from diffusers.pipeline_utils import DiffusionPipeline
17+
try:
18+
from diffusers.pipeline_utils import DiffusionPipeline
19+
except ImportError:
20+
from diffusers.pipelines.pipeline_utils import DiffusionPipeline
1821
from diffusers.schedulers import (
1922
DDIMScheduler,
2023
DPMSolverMultistepScheduler,

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
torch>=2.0.0
22
torchvision>=0.15.0
3-
diffusers>=0.16.0,<0.18.0
3+
diffusers>=0.16.0
44
transformers>=4.25.0
55
xformers>=0.0.20; sys_platform != 'darwin'
66
imageio>=2.27.0

scripts/animate.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def main(args):
3535

3636
time_str = datetime.datetime.now().strftime("%Y-%m-%dT%H-%M-%S")
3737
savedir = f"samples/{Path(args.config).stem}-{time_str}"
38+
extension = args.format
3839
os.makedirs(savedir)
3940

4041
config = OmegaConf.load(args.config)
@@ -170,13 +171,13 @@ def image_norm(image):
170171
samples.append(sample)
171172

172173
prompt = "-".join((prompt.replace("/", "").split(" ")[:10]))
173-
save_videos_grid(sample, f"{savedir}/sample/{sample_idx}-{prompt}.gif")
174-
print(f"save to {savedir}/sample/{prompt}.gif")
174+
save_videos_grid(sample, f"{savedir}/sample/{sample_idx}-{prompt}.{extension}")
175+
print(f"save to {savedir}/sample/{prompt}.{extension}")
175176

176177
sample_idx += 1
177178

178179
samples = torch.concat(samples)
179-
save_videos_grid(samples, f"{savedir}/sample.gif", n_rows=4)
180+
save_videos_grid(samples, f"{savedir}/sample.{extension}", n_rows=4)
180181

181182
OmegaConf.save(config, f"{savedir}/config.yaml")
182183

@@ -192,6 +193,7 @@ def image_norm(image):
192193
parser.add_argument("--H", type=int, default=512)
193194

194195
parser.add_argument("--without-xformers", action="store_true")
196+
parser.add_argument("--format", type=str, default="gif", choices=["gif", "mp4"])
195197

196198
args = parser.parse_args()
197199
main(args)

0 commit comments

Comments
 (0)