diffusers v0.15.0 には上記で使用した Text-to-Video 以外に Text-to-Video Zero というものが紹介されていました。
Text-to-Video Zero とは
diffusers v0.15.0 で diffusers に統合された Text-to-Video です。
ゼロショットで動画を生成してくれるようです。
リリースノートからは Demo ページに飛ばされ、Demo ページから GitHub に到達し、GitHub から Hugging Face のドキュメントに到達しました。
Hugging Face のドキュメントに diffusers 経由での使い方が載っていました。Text-to-Video Zero では以下のような方法を用いて動画を生成できるようです。
・ポーズやエッジを使って動画を生成
・Instruct-Pix2Pix
ゼロショットとは
ゼロショット学習(Zero-shot learning)は、機械学習の一種であり、モデルが新しいクラスやタスクに対して事前のトレーニングなしに学習や推論を行う能力を指します。通常、機械学習モデルはトレーニングデータに基づいて学習され、そのデータセットに含まれていたクラスやタスクに対してのみ良い性能を発揮します。しかし、ゼロショット学習では、新しいクラスやタスクに対しても適応できるように設計されています。
例えば、画像認識のタスクにおいて、モデルが犬や猫などの通常のクラスに対してトレーニングされた後、新しいクラスである「シマウマ」や「キリン」に対しても正確な予測ができるようになる、といったシナリオが考えられます。
ChatGPT さんによると、上記のことだそうです。
やってみる
import torch from diffusers import TextToVideoZeroPipeline # パイプラインの準備 pipe = TextToVideoZeroPipeline.from_pretrained( "runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16 ).to("cuda") # パイプラインを実行 prompt = "A panda is playing guitar on times square" result = pipe(prompt=prompt).images result = [(r * 255).astype("uint8") for r in result] # 出力 imageio.mimsave("video.mp4", result, fps=4)
パイプラインには TextToVideoZeroPipeline を使用し、
モデルは "runwayml/stable-diffusion-v1-5" を使用するようです。
Google Colab 上のインストールされているのかを確認しましたが、そのまま import して問題なさそうです。
!pip list | grep imageio --- imageio 2.31.6 imageio-ffmpeg 0.4.9
以下の記述を追加します。
import imageio
出力結果
別のモデルを使用してみる
使用するモデルは Meina/MeinaMix_V11 を使わせていただきます。
import imageio import torch from diffusers import TextToVideoZeroPipeline # パイプラインの準備 pipe = TextToVideoZeroPipeline.from_pretrained( "Meina/MeinaMix_V11", torch_dtype=torch.float16 ).to("cuda") # パイプラインを実行 prompt = "A girl is playing guitar on times square" result = pipe(prompt=prompt).images result = [(r * 255).astype("uint8") for r in result] # 出力 imageio.mimsave("video.mp4", result, fps=4)
Meina/MeinaMix_V11
に変更・プロンプトの
panda
をgirl
に変更出力結果
まとめ
応用が効いてメッチャ面白い!