こんにちは!悠です!
少し前、Redditでかなり有名になった下の動画をご存知でしょうか?
I transform real person dancing to animation using stable diffusion and multiControlNet
by u/neilwong2012 in StableDiffusion
女性が踊っている実写の動画を素材にして、アニメイラスト風の女の子が踊っている動画に変換していますよね。
これは、今回紹介する動画を素材にして別の動画を生成する拡張機能「Mov2Mov」とMulti ControlNet(下の記事で紹介)の組み合わせで実現しています。

難点もありますが非常に面白い拡張機能ですので、ぜひ皆さんも自分なりのアニメ動画を作成してみてください!
「Mov2mov」に関する注意点
拡張機能「Mov2mov」を使って生成した動画をSNSやYouTubeにアップロードしたい場合は、必ず素材動画に自分を撮影したものを使ってください。
例えばダンスをしている女の子のアニメ動画を作りたい場合は、自分自身でそのダンスを踊っている様子を撮影し、それを素材にして動画を作成してください。

プロンプトとDenoising strength次第では、女体化も可能なはずです(多分)
なぜなら、「Mov2mov」はimg2imgを応用した拡張機能だからです。
tx2imgのようにプロンプトだけを使って画像を生成するのではなく、必ず何かの素材を使用する必要があるため、既存のアニメやYouTubeの動画を使うとほぼ同じものが生成されてしまいます。
自分だけで楽しむ(インターネット上に投稿しない)なら話は別ですが、公開する場合はかならず「自分自身を使って素材動画を撮影する」という点を徹底してください。

これがあるから「Mov2mov」はあまり流行らないんでしょうね。「Txt2mov」の実装が待ち遠しいですね!
【追記】
自分で3Dモデルを1から作成してMMDみたいなダンス動画を製作し、それを元素材にしてmov2movを使うというのはありだと思います。
「Mov2Mov」の導入方法
拡張機能「Mov2Mov」を使う上で必須になる拡張機能「ControlNet」と、必須ではありませんがかなり相性がいい拡張機能「sd-dynamic-thresholding」をまずは導入しておきましょう。
下の記事でやり方を紹介しています。


また、下の記事を参考にして事前に「Multi ControlNet」を有効化しておいてください。

Google Colaboratory版の場合
下記の方法で紹介している「maintained by Akaibu」のノートブックを使って、拡張機能「Mov2mov」を導入していきます。
まだご覧になっていない方は、まず最初にこちらを準備しておいてください。


Google Driveからモデルデータを読み込むセルの下に新しくセルを作成し、下記のコードを入力します。
#Mov2movをインストール
%cd /content/stable-diffusion-webui/extensions/
!git clone https://github.com/Scholar01/sd-webui-mov2mov /content/stable-diffusion-webui/extensions/sd-webui-mov2mov
%cd /content/stable-diffusion-webui
WebUIを起動して、「Mov2mov」のタブが追加されていれば導入は成功です。
ローカル版の場合
「Extensions」→「Install from URL」の「URL for extension’s git repository」に下記のURLを入力しInstallをクリックしましょう。
https://github.com/Scholar01/sd-webui-mov2mov
「Mov2mov」の使い方
まずはSettingsタブにあるControlNetの項目を開き、Allow other script to control this extensionにチェックを入れ、Apply Settingsをクリックします。
次にMov2Movのタブを開き、素材動画をドラッグアンドドロップします。(変な拡張子だと読み込まないかもしれないです。私はmp4で試しました)
解像度に関しては特に指定はありませんが、10秒程度で終わる短めの動画がおすすめです。
Resize modeをCrop and resizeにし、Generate Movie ModeをMP4V(H.264は私の環境では生成できませんでした)、Movie Framesを10に設定します。
Movie Framesは生成される動画のフレームレートです。大きくするほど滑らかな動画を作成できますが、その分生成時間も爆増します。とりあえずは10から試すのがおすすめです。
WidthとHeightには生成したい動画のサイズを入力しましょう。サンプラーとステップ数はお好みで。
Denoising strengthの数値を下げるほど元動画に忠実になり、上げるほど書き込みが増えたり表現の自由度が上がります。
元動画から大きく改変したくない場合は0.2~0.3程度、実写の人物からアニメイラストに変換する場合などは0.4~0.5あたりがおすすめです。(上手くいかないときはここを調節してみてください。)
Max Framesはデフォルトの-1でOKです。例えばこれを1にすると、総フレーム数1の動画として出力されます。
なお下記のRedditの記事によると、拡張機能「sd-dynamic-thresholding」を有効にした後、CFG Scaleを12~15、Mimic CFG Scaleを5~7程度にすると出力結果が良くなるっぽいです。
Anime-ized using mov2mov again
by u/Baaoh in StableDiffusion
私が試してみた感じ、アニメ→アニメはCFG Scaleを7にしていても特に問題はありませんが、実写→実写や実写→アニメはCFG Scale高めの方が良い結果になる印象を受けました。
※もちろん絶対ではありませんので、試行錯誤が必要です。
ここまで設定が終わったら次にControlNetの項目を開きます。
Unit 0にsoftedge、Unit 1にopenposeを指定します。
両方ともEnableにチェックを入れ、Unit 0ではPreprocessorにsoftedge_hed、Modelにsoftedgeを、Unit 1ではPreprocessorにopenpose full、Modelにopenposeを選択します。
素材画像をドラッグアンドドロップする欄は空白のままでOKです。
処理が重くてCUDA out of memoryが出る場合はとりあえずsoftedgeの方だけ有効化しておけばOKです。
これだけでも十分形になります。

Unit 0

Unit 1
これでGenerateボタンを押せば生成が始まります。出力動画は「~\webui\outputs\mov2mov-videos」に保存されます。
「Mov2mov」の仕組み
どうやら素材動画を各フレームごとに切り出して、それにi2iを掛けてできた画像をつなぎ合わせて動画にしているみたいです。
「~\webui\outputs\mov2mov-images\2023-0x-0x」のフォルダに、出力動画の各フレームに使われた画像が保存されています。
30フレームで10秒の動画を作る場合、300枚の画像を生成しないといけないので、どれだけ時間がかかるか想像がつくというものですよね(涙)
まとめ
以上が「Stable Diffusion」で、素材動画を元に新たな動画を生成できる拡張機能「Mov2mov」の紹介でした。
自分だけのアニメ動画を作成できる面白い拡張機能なので、ぜひ皆さんも試してみてくださいね!
SNSに公開する場合は、自分を撮影した動画を素材に使うことを忘れないようにしてください。

基本的には自分のPC内でだけ楽しむようにしましょう!
では、ここまで読んでいただきありがとうございました。
コメント
Multi ControlNetの設定に再起動必要なんで、この記事の順番では駄目なような気がしますが
コメントありがとうございます!
仰る通りですね。
確かに「Multi ControlNetを有効化してください」と記載した場所がよくありませんでした…申し訳ありません。
「Multi ControlNetの有効化」は事前に行っておく必要があるので、場所を変更しておきます…!
こちらの方法で動画のものを出していたらtxt2imgで出力するときも動画の一部から作り出したようなイラストが出力されるのですがもとに戻すにはどうしたらいいでしょうか?
コメントありがとうございます!
mov2movから動画を削除したり、あるいは一度webuiを再起動するとどうでしょうか?
mov2movに限らず、何かのきっかけで前に行った操作の影響が別の生成にまで及ぶ現象たまにあるんですよね~。
一番はwebui再起動がおすすめです!
返信ありがとうございます!
よからぬところにチェックが入っていてそちらバグっていたようです
いつもありがとうございますorz
こちらの記事とは関係ないのですがAIは手の描写がいつまでも苦手でコントロールネットを使えばあとから修正できることは分かっているのですが最初からスムーズに手の描写をうまく出せる方法は現状ありますでしょうか?
プロンプトだけでってことですよね。
スムーズに手を表現出来る方法は現状無いですね~
そもそもarms behind backで手を描画させないのが1番いいかもしれません。
手も描画させたい時はwavingなどを入れれば多少打率が上がる可能性があります。
手系のembeddingsを併用すれば多少マシになっている気もしますが、それもある種おまじないのようなものですからね…
返信ありがとうございます!
やはりそうですよね~
AIちゃん手と足についてもうそろそろ極めてほしいところですw