AnimeGen-I2V / README_ja.md
alfredplpl's picture
Update README_ja.md
6278659 verified
|
Raw History Blame Contribute Delete
13.1 kB
metadata
license: apache-2.0
language:
  - en
base_model:
  - Wan-AI/Wan2.2-I2V-A14B
library_name: diffusers
tags:
  - text-to-video
  - anime
  - video-generation
  - diffusion-transformer
  - flow-matching
  - wan
  - commercial-use
pipeline_tag: text-to-video

AnimeGen I2V

AnimeGen Logo

概要

AnimeGen I2V は、画像からアニメ調の動画を生成する Image-to-Video モデルです。

AnimeGen I2V は、株式会社AIdeaLabが開発したアニメ動画生成向けの基盤モデルです。本モデルは、経済産業省および国立研究開発法人新エネルギー・産業技術総合開発機構、NEDO が実施する、国内の生成AI開発力強化を目的としたプロジェクト GENIAC(Generative AI Accelerator Challenge) の支援のもとで開発されました。

AnimeGen I2V は、Alibaba の動画生成モデル Wan 2.2 I2V A14B をベースに、アニメ調の映像表現に特化するよう追加学習したモデルです。キャラクター、背景、色彩、構図、動きなど、アニメ制作や映像表現の試作に使いやすい出力を目指しています。

本モデルは Apache-2.0 ライセンスで公開されています。

モデル詳細

モデル説明

AnimeGen I2V は、Wan 2.2 をベースにしたアニメ動画生成モデルです。既存の Wan 2.2 向けの推論環境、ツール、Diffusers パイプラインを活用しやすいことが特徴です。

本モデルは、アニメ調の動画生成をより扱いやすくし、クリエイター、研究者、開発者が映像表現の試作や検証を行いやすくすることを目的としています。

  • 開発: 株式会社AIdeaLab
  • 支援: 経済産業省、NEDO、株式会社AIdeaLab
  • 主な入力: テキスト
  • 主な出力: アニメ調動画
  • 推奨プロンプト言語: 英語
  • ライセンス: Apache-2.0

使い方

推奨環境

AnimeGen I2V を利用するには、Python、PyTorch、Diffusers が利用できる環境を用意してください。

ローカルで推論する場合は、高性能な NVIDIA GPU の利用を推奨します。目安として、NVIDIA RTX 4090 以上の GPU を推奨します。より長い動画や高解像度の動画を生成する場合は、より大きな VRAM を持つ GPU の利用をおすすめします。

まず、必要なライブラリをインストールしてください。

pip install torch torchvision transformers diffusers accelerate peft ftfy imageio imageio-ffmpeg safetensors

I2Vのサンプルコード

sample.png

sample

import torch
from diffusers import WanImageToVideoPipeline, WanTransformer3DModel, FlowMatchEulerDiscreteScheduler, AutoencoderKLWan
from diffusers.utils import export_to_video, load_image
import numpy as np

scheduler = FlowMatchEulerDiscreteScheduler(shift=3.0)
transformer_high = WanTransformer3DModel.from_pretrained(
    "aidealab/AnimeGen-I2V",
    subfolder="transformer",
    torch_dtype=torch.bfloat16,
)

transformer_low = WanTransformer3DModel.from_pretrained(
    "aidealab/AnimeGen-I2V",
    subfolder="transformer_2",
    torch_dtype=torch.bfloat16,
)

vae = AutoencoderKLWan.from_pretrained("Wan-AI/Wan2.2-I2V-A14B-Diffusers", subfolder="vae", torch_dtype=torch.float32)
pipe = WanImageToVideoPipeline.from_pretrained("Wan-AI/Wan2.2-I2V-A14B-Diffusers", transformer=transformer_high, transformer_2=transformer_low, scheduler=scheduler, vae=vae, torch_dtype=torch.bfloat16)
pipe.load_lora_weights('lightx2v/Wan2.2-Lightning', weight_name='Wan2.2-I2V-A14B-4steps-lora-rank64-Seko-V1/high_noise_model.safetensors', adapter_name='high')
pipe.load_lora_weights('lightx2v/Wan2.2-Lightning', weight_name='Wan2.2-I2V-A14B-4steps-lora-rank64-Seko-V1/low_noise_model.safetensors', adapter_name='low', load_into_transformer_2=True)
pipe.set_adapters(["high", "low"], adapter_weights=[1.0, 1.0])

transformer_high.enable_layerwise_casting(storage_dtype=torch.float8_e4m3fn, compute_dtype=torch.bfloat16)
transformer_low.enable_layerwise_casting(storage_dtype=torch.float8_e4m3fn, compute_dtype=torch.bfloat16)

pipe.enable_model_cpu_offload()

width=832 # 1280
height=480 # 720

secs=5 # 2

image = load_image("sample.png")
max_area = height * width
aspect_ratio = image.height / image.width
mod_value = pipe.vae_scale_factor_spatial * pipe.transformer.config.patch_size[1]
height = round(np.sqrt(max_area * aspect_ratio)) // mod_value * mod_value
width = round(np.sqrt(max_area / aspect_ratio)) // mod_value * mod_value
image = image.resize((width, height))

prompt = "blink her eyes."
negative_prompt = "3d, cg, photo, stop, wait"

generator = torch.Generator("cuda").manual_seed(42)

output = pipe(
    image=image,
    prompt="Japanese anime style, "+prompt,
    negative_prompt=negative_prompt,
    height=height,
    width=width,
    num_frames=int(16*secs+1),
    guidance_scale=1.0,
    num_inference_steps=4,
    generator=generator
).frames[0]
export_to_video(output, f"output.mp4", fps=16)

フレーム補間のサンプルコード

sample_1.png

sample_1

sample_2.png

sample_2

import torch
from diffusers import WanImageToVideoPipeline, WanTransformer3DModel, FlowMatchEulerDiscreteScheduler, AutoencoderKLWan
from diffusers.utils import export_to_video, load_image
import numpy as np

scheduler = FlowMatchEulerDiscreteScheduler(shift=3.0)
transformer_high = WanTransformer3DModel.from_pretrained(
    "aidealab/AnimeGen-I2V",
    subfolder="transformer",
    torch_dtype=torch.bfloat16,
)

transformer_low = WanTransformer3DModel.from_pretrained(
    "aidealab/AnimeGen-I2V",
    subfolder="transformer_2",
    torch_dtype=torch.bfloat16,
)

vae = AutoencoderKLWan.from_pretrained("Wan-AI/Wan2.2-I2V-A14B-Diffusers", subfolder="vae", torch_dtype=torch.float32)
pipe = WanImageToVideoPipeline.from_pretrained("Wan-AI/Wan2.2-I2V-A14B-Diffusers", transformer=transformer_high, transformer_2=transformer_low, scheduler=scheduler, vae=vae, torch_dtype=torch.bfloat16)
pipe.load_lora_weights('lightx2v/Wan2.2-Lightning', weight_name='Wan2.2-I2V-A14B-4steps-lora-rank64-Seko-V1/high_noise_model.safetensors', adapter_name='high')
pipe.load_lora_weights('lightx2v/Wan2.2-Lightning', weight_name='Wan2.2-I2V-A14B-4steps-lora-rank64-Seko-V1/low_noise_model.safetensors', adapter_name='low', load_into_transformer_2=True)
pipe.set_adapters(["high", "low"], adapter_weights=[1.0, 1.0])

transformer_high.enable_layerwise_casting(storage_dtype=torch.float8_e4m3fn, compute_dtype=torch.bfloat16)
transformer_low.enable_layerwise_casting(storage_dtype=torch.float8_e4m3fn, compute_dtype=torch.bfloat16)

pipe.enable_model_cpu_offload()

width=832 # 1280
height=480 # 720

secs=5 # 2

image = load_image("sample_1.png")
max_area = height * width
aspect_ratio = image.height / image.width
mod_value = pipe.vae_scale_factor_spatial * pipe.transformer.config.patch_size[1]
height = round(np.sqrt(max_area * aspect_ratio)) // mod_value * mod_value
width = round(np.sqrt(max_area / aspect_ratio)) // mod_value * mod_value
image = image.resize((width, height))

image_2 = load_image("sample_2.png")
image_2 = image_2.resize((width, height))


prompt = "Make this character press both hands together in prayer and close their eyes."
negative_prompt = "3d, cg, photo, stop, wait"

generator = torch.Generator("cuda").manual_seed(42)

output = pipe(
    image=image,
    last_image=image_2,
    prompt="Japanese anime style, "+prompt,
    negative_prompt=negative_prompt,
    height=height,
    width=width,
    num_frames=int(16*secs+1),
    guidance_scale=1.0,
    num_inference_steps=4,
    generator=generator
).frames[0]
export_to_video(output, f"output.mp4", fps=16)

ComfyUI用の重み

high_noise

low_noise

想定用途

直接利用

AnimeGen I2V は、以下のような用途を想定しています。

  • アニメ調のテキスト動画生成
  • ムービーコンテの作成
  • 映像表現の試作
  • キャラクターの動きの検討
  • 背景、構図、雰囲気の検討
  • アニメ制作工程におけるプリビジュアライゼーション
  • 短尺のアニメ風映像コンテンツ制作
  • 動画生成研究や実験

特に、アニメ制作や映像制作の初期段階において、テキストから素早く映像イメージを試作する用途に適しています。

研究開発用途

本モデルは、以下のような研究開発にも利用できます。

  • アニメ調動画生成の研究
  • 動画生成モデルの時間的一貫性の評価
  • Text-to-Video パイプラインの検証
  • アニメ制作支援ツールの開発
  • 制御可能な動画生成システムの研究
  • 生成AIを用いた映像制作ワークフローの検討

想定しない用途

本モデルは、以下のような用途での利用を想定していません。

  • 実在人物のディープフェイク作成
  • なりすまし、身元詐称、人格の偽装
  • 政治、報道、記録映像などに見せかけた誤情報の作成
  • 誹謗中傷、嫌がらせ、名誉毀損を目的とした利用
  • 未成年または未成年に見えるキャラクターの性的表現
  • 違法、有害、虐待的なコンテンツの生成
  • 生成された動画を実写映像または実在の出来事として偽る行為

利用者は、本モデルの利用にあたり、適用される法令、プラットフォーム規約、倫理的ガイドラインを遵守してください。

バイアス、リスク、限界

AnimeGen I2V は、アニメ調の映像表現に特化したモデルです。実写風、フォトリアルな動画生成を目的としたモデルではありません。

既知の限界には、以下があります。

  • 実写風、フォトリアルな動画生成には適していない
  • 複雑なキャラクター動作では破綻する場合がある
  • 手、指、目、装飾品、細部表現が不安定になる場合がある
  • フレーム間でキャラクターの見た目が変化する場合がある
  • 時間方向のちらつきが発生する場合がある
  • 長い動画や複雑なアクションの生成は難しい場合がある
  • 物理的な相互作用や複数人物の複雑な動作には限界がある
  • アニメ調以外のプロンプトでは性能が低下する場合がある
  • NSFW 表現にはあまり適していない

生成モデルであるため、出力には予期しないアーティファクトや意図しない表現が含まれる可能性があります。公開や商用利用の前には、必ず生成結果を確認してください。

開発背景

AnimeGen I2V は、AIdeaLab による日本語 Text-to-Video、アニメ生成、動画生成モデル開発の知見をもとに開発されました。

AIdeaLab では、日本語プロンプトに対応した動画生成モデルや、アニメ制作に関わる生成AIワークフローの研究開発に取り組んできました。AnimeGen I2V は、その取り組みの一環として、強力なオープンな Text-to-Video ベースモデルを活用し、アニメ調の動画生成に特化させたモデルです。

本モデルの開発には、香川県に設置された KDDI の GPU クラスタを利用しました。

技術仕様

アーキテクチャ

  • アーキテクチャ: Diffusion Transformer
  • ベースモデル: Wan-AI/Wan2.2-I2V-A14B
  • 目的関数: Flow Matching
  • 推論パイプライン: WanPipeline / Diffusers 互換ワークフロー
  • 推奨推論 dtype: bfloat16
  • メモリ最適化: CPU offload、layerwise casting などを利用可能

計算基盤

AnimeGen I2V の開発には、KDDI の GPU クラスタを利用しました。

ハードウェア

  • NVIDIA H200 GPU × 24

ソフトウェア

開発ワークフローでは、主に以下のソフトウェアを利用しました。

ライセンス

このモデルは、the Apache License, Version 2.0.ライセンスのもとで公開されています。 詳細はLICENSEファイルをご覧ください。

Copyright 2026 AIdeaLab, Inc.

引用

研究、製品、記事、創作活動などで AnimeGen I2V を利用する場合は、以下のように引用してください。

@article{AIdeaLab2026AnimeGenI2V,
  title   = {AnimeGen I2V},
  author  = {AIdeaLab Development Team},
  year    = {2026},
  note    = {Anime-style text-to-video generation model}
}

お問い合わせ

お問い合わせは、以下のページからお願いします。

https://aidealab.com/contact