MMD動画をAIイラスト化してみた
今話題のMMD動画のAIイラスト化をやってみました。こんな感じです。
クオリティは決して高くはないと思いますが、MMDもAIイラストも軽く触った程度で数時間調べてこのくらいにはなるよという感じです。呪文やモデル選び、フレーム補間とか色々試行錯誤していけばもっとクオリティは上がると思います。
流れ
大まかな手順
- MMD動画を作成
- 動画→連番画像に変換
- StableDiffusionでイラスト化
- 連番画像→動画に変換
1.MMD動画を作成
普段ほとんどやったことないのでこの辺は初心者です。
モデル探しとインポート
ニコニコ立体やDeviantArtなどでモデルをダウンロードします。規約は要確認。
モデルが決まったらMMDを立ち上げてインポートします。
モデル操作の「読込」からpmxファイルを読み込みます
モーション探しとインポート
こちらも「mmd モーション」とかで検索すればニコニコ動画で色々出てきます。規約は要確認。
今回はこちらを使いました。
【MMDツイステ】「KING」モーションキャプチャー【MMDモーション配布】
モーションファイルがダウンロードできたら、MMDでモーションをインポートします。
左上の「ファイル > モーションデータ読込」から読み込みます。モデル操作で適用したいモデルを選択するのを忘れないようにしてください。
カメラ調整
今回は固定カメラなのでカメラモーションは使いません。
モデル操作を「カメラ・照明・アクセサリ」にします。
カメラの位置を調整します。右下のアイコンを上下にドラッグすると調整しやすいです。
(UnityやUEにはない独特な操作なので調べるまで使い方が分かりませんでした...)
カメラが決まったらカメラ操作の登録を押します。そうすると左上のタイムラインにキーフレームが登録されます。
出力する
左上の「ファイル > AVIファイルに出力」から出力します。
フレームレートや録画フレームはあまり多くするとこの後の処理にかなり時間がかかってしまうので抑えめがいいです。試行錯誤して決まった段階で多くするのはありだと思います。
今回はテストなので15fpsでフレーム数も30秒くらいになるようにしています。
2.動画→連番画像に変換
AIイラスト化するために1フレームずつの画像にします。この辺ももう少ししたら動画ファイルのまま変換してくれるAIツールが出ると思います。(もしかしたらもうあるのかも)
AviUtil という動画編集ツールを使います。
使い方は分かりやすい記事があるのでリンクを載せておきます。
AviUtlの基本はこちらを参考に
【初心者ガイド】 AviUtl の使い方 無料で動画編集【操作編】
連番で入力&出力するには専用のプラグインを入れます。こちらを参考にしました。
【すんなりわかる】AviUtlの連番画像の読み込みと出力のやり方 - Aviutl簡単使い方入門|すんなりわかる動画編集
BGMを入れる場合は、MMDの段階で入れることもAviUtl上で入れることもできると思いますが、私の場合は画像変換が終わったあとの段階で最後にAviUtlで入れました。
このように1つのフォルダに連番画像が並ぶところまでできたらOKです。
3.StableDiffusionでイラスト化
AIイラスト化するツールは何でもいいですが今回はStableDiffusionを使います。
セットアップ
既に分かりやすい記事がたくさんあるのでリンクだけ載せておきます。
インストール
「Stable Diffusion web UI」のインストール方法・日本語化・使い方まとめ(AUTOMATIC1111版)
次にモデルをダウンロードします。ここでいうモデルは機械学習のモデルのことで、こちらも入れ替えることでStableDiffusionの絵柄が変わってきます。アニメ調の二次元のイラストに強いモデルを選びます。
おすすめモデル
StableDiffusionのおすすめモデルを紹介 | アニメ調イラストのクオリティを劇的に向上させるカスタムモデル | Murasan Lab
今回はSukiyakiMixというモデルにしました。
SukiyakiMix
Vsukiyaki/SukiyakiMix-v1.0 · Hugging Face
上記のサイトで 「Files and versions」 をクリック
.ckpyファイルと.safetensorsファイルをクリックしてダウンロードします。
fp16とfp32がありますがPCスペックがそこまで強くない場合は16がいいようです。
それなりに大きいファイルなので時間がかかります。
できたら、「\stable-diffusion-webui-master\models\Stable-diffusion\」の中に2つのファイルを置きます。
※私はローカルにwebuiを落としてきて使っていますがGoogleColabなどの場合置き場所や使い方が違うかもしれません。その場合は「StableDiffusion モデル変更」などで調べてみてください。
同じ方法で、VAEファイルもダウンロードしてフォルダに置きます。
VAEはモデルによって推奨が書かれているので、それを使うのが無難だと思います。
SukiyakiMixでは 「WarriorMama777/OrangeMixs の orangemix.vae.pt」が推奨なので、こちらもダウンロードしてきて、「\stable-diffusion-webui-master\models\VAE\」の中に置きます。
画像を変換する
StableDiffusionを起動します。
モデルを取り込んだものに変更します。
img2imgにして、Promptを入力します。
とりあえずSukiyakiMixの例として載っているものを入れました。
Positiveが上でNegativeが下の欄です。Negativeの有無でも結果がかなり変わるので入れた方がいいです。その他のStepsのパラメータなども例に合わせています。
Positive:
(best quality)+,(masterpiece)++,(ultra detailed)++,cute girl,
Negative:
(low quality, worst quality)1.4, (bad anatomy)+, (inaccurate limb)1.3,bad composition, inaccurate eyes, extra digit,fewer digits,(extra arms)1.2,logo,text
Steps: 20
CFG Scale: 8
Size: 1024x1024 (High-Resolution Fix)
Seed: 1696068555
Sampler: PLMS
Sizeは512x512で、「Crop and resize」にしないと画像が伸びてしまいます。サイズは計算時間に影響するのでクオリティと計算コストのバランスで決めてください。正方形にしているのは、Twitterで正方形だと安定するよみたいなのを見た気がしたからで、本当かどうかも確かめていないのであまり気にしなくていいと思います。
また、Denoising strength はどれくらい元の画像を保つかの設定で 0 に近いほど元の画像に近くなります。MMD動画の場合はバラつきが大きいと困るので 0.2 程度にしていますが、表現したいもの次第です。
試しに1枚変換してみましょう。右上のGenerateボタンを押します。
納得がいくものになったらフォルダの画像をまとめて変換します。
(この方法を探すのにかなり時間がかかりました...)
img2imgのタブの中にBatchというものがあります。
これで input directory に入力画像のフォルダ、output directory に出力する画像を置くフォルダを指定します。
絶対パスでOKです。(例. C:\Users\〇〇\Documents\mmd_ai_test\input_images)
これで Generate ボタンを押せば全ての画像で処理が始まります。長いので待ちます。
4.連番画像→動画に変換
最後にできた画像を動画に変換します。
2でやったことの逆なので同じくこちらの記事を参考にAviUtlでやります。
【すんなりわかる】AviUtlの連番画像の読み込みと出力のやり方 - Aviutl簡単使い方入門|すんなりわかる動画編集
また、aviファイルだとTwitterに投稿できなかったりファイルサイズが大きかったりするので、AviUtlでmp4で出力できるプラグインも入れました。
完成!
まとめ
思ったよりも手軽にできるので興味がある人はぜひやってみてください。
分からない部分や質問があれば気軽に相談ください。答えられる範囲で答えますが、初心者なので期待しないでください。
それと規約周りはお気をつけください。AIイラストやMMDどちらも気にする必要があります。
VTuberによってはファンアートタグにAIイラストは禁止だったり、明記が必要だったりします。
私自身もあまり詳しくないので何か問題あれば教えて頂けると幸いです。
Discussion
こんにちは!もりあーてぃ様の動画を拝見し、とても感動しました!
私もあこがれて挑戦してみたいとおもい、MMDを連番出力するところまでいったのですが
StableDiffusionでイラスト化するところでよくわからなくなってしまいました><
bmpファイルってStableDiffusionで読み込むことできなくないですか??
恐れ入りますがどうやって読み込むか教えていただきたいです><
ぱこ様
コメントありがとうございます!
私の環境ではbmpファイルを読み込むことができますね。StableDiffusionはローカル環境にダウンロードして使っていますか?それともGoogle Colabを使っていますか?私の環境はローカル環境です。
特にファイル読み込み用のプラグイン等も入れていないと思います。
例えば1枚だけ生成するとして、StableDiffusionでimg2imgを選択して、bmpファイルをドラッグ&ドロップする時点で上手く読み込めないですかね?