今回はStable DiffusionのControlNetの活用術に関する中級者向けの話題で
をご紹介するという内容になっています。
画像生成AIというと今まではランダム性が強くて一貫性に欠ける…という点が最大の弱点の一つであり、違う画像に同じようなキャラクターを登場させるのはかなり困難でした。しかしControlNetのアップデートで登場した新機能の一つ「reference-only」プリプロセッサによってこの問題がある程度解消されたので、マンガ・アニメ制作へのAIの活用が一段と実用的になってきました。
そこで今回はこのreference-onlyを活用して、ほぼ同じキャラクターの画像を複数枚生成することでシンプルなアニメを作ってみたのでその方法を共有しますね。
今回制作したアニメーションのサンプル
まずはじめに、今回私が実際に作ったアニメーションのサンプルを掲載しておきます。
両手を広げて運動するかわいいクマちゃんの動画です。まだそこそこ「ちらつき」がありますが、おおむねキャラクターの一貫性を保った動画になっていると思います。
このサンプルでは全部でたった4枚の画像を生成し、それをFlowframesという動画補間ソフトで滑らかにしました。補間によってかなり滑らかに動くようになっていますね。
必要な準備:ControlNetを最新版にアップデートしておこう
さてサンプルをご覧頂いたところで早速アニメの作り方をご紹介したいところなのですが、その前に今回ご紹介する方法を使うためにはControlNetを最新版にアップデートしておく必要があります。
バージョンは執筆時点(2023/05/15)の最新版である「ControlNet v1.1.170」以降が必要です。古いバージョンをお使いの方はStable Diffusion web UIの拡張機能タブからアップデートを済ませておいてください。
また下記ではControlNetの「scribble」モデルも使いますので、まだ導入が済んでいない方はモデルをダウンロードして所定のフォルダに入れておきましょう。
ControlNetを使った「一貫性のある」アニメーションの作り方
ではここから一貫性のあるアニメーションの作り方を解説していきます。主なステップは次のとおりです。
- アニメーションのラフを手描きする
- ControlNetのreference-onlyとscribbleを同時に使ってラフを清書する
- Flowframesを使ってコマの間を補完する
それぞれ詳しく見ていきましょう。
手順1:アニメーションのラフを手描きする
まずはアニメーションのラフを手描きします。ラフと言っても下記のような超単純な落書きです。複雑な描き込みは必要ないばかりか逆に邪魔になってしまうので、目や口・耳すらないのっぺらぼうなキャラクターを描きました。
手順2:ControlNetの「reference-only」と「scribble」を同時に使ってラフを清書する
お次はControlNetを使ってキャラクターの画像を生成していきます。当然ながらこの工程が非常に重要になるので詳しく書こうと思います。主なポイントは次の2つです。
- 最初に1枚だけControlNetに通してキャラクターを決める
- キャラクターが決まったら、Multi ControlNet機能を使ってreference-onlyとscribbleを同時に適用して残りの画像を生成する
ポイント1:キャラクター決め
まずはどういうキャラクターにするかを決めます。このときはControlNetのscribbleだけを使って先ほどのラフのうちの1枚を入力とし、画像を生成します。
ここでは次のような呪文と設定で画像を生成し…
何度かガチャを引いて次のようなクマちゃんにすることにしました。
ポイント2:Multi ControlNetで一貫性のあるキャラクターを生成
次に、一貫性を保つための工夫を施したうえで残りの画像を生成していきます。その工夫とは
- MultiControlNetを使って
- 一貫性を保つのに便利なreferrence onlyを
- scribbleと一緒に適用する
ことです。
まず、(もしかしたら馴染みのない方もいらっしゃるかもしれませんが)最近のControlNetは複数のControlNetを同時に適用することができます。この機能を使うためには設定が必要です。設定タブ→「ControlNet」→「Multi ControlNet:最大モデル数」と進み、値を「2」にしてweb UIを再起動してください。
これでControlNetの設定欄にタブが2つ出現するはずです。
そうしたらこの2つのタブにそれぞれ
- reference-only
- scribble
を設定します。
reference-onlyとはつい先日実装された新しいプリプロセッサで、入力画像のキャラクターと似たようなキャラを新しい画像に登場させることができるすごいやつです。使い方は簡単で、プリプロセッサ欄で「reference_only」を選択して下記のように入力画像を入れたりするだけです(※なお、このプリプロセッサにはControlNetのモデルは必要ありません)。
あとはもう一つのタブにラフを入れて先ほどと同様にScribbleの設定を行い、そのほかは同一条件・同一シードで残りの画像を順番に生成していけばOKです。結果として下記のような画像が生成されました。
それぞれ違う部分が多少あって気になりますが、reference-onlyのおかげでほぼ同じようなキャラクターが生成されました。
手順3:Flowframesを使ってコマを補完する
さてこれで素材を用意できました。しかしさすがにこのままではコマ数が少なすぎてガタガタのアニメになってしまいます。かといってこの調子でコマ数を増やしていくと日が暮れてしまいますから、コマの間を補完できる「Flowframes」という便利なソフトを活用しましょう。
このソフトはNMKD Stable Diffusion GUIと同じ作者さんが無料で提供してくださっています。導入方法や使い方までこの記事で説明すると記事がとんでもない長さになってしまいますので、その辺について詳しい外部サイト様へのリンクを貼っておきます。参考になさってください。
ここでは最終的な設定だけをご説明します。
まず先ほど生成した4枚の画像を下のように適当なフォルダに入れて、連番にリネームしておいてください。
上記では画像が8枚に増えていますが、これは動きにメリハリをつけるためのかさ増しです。同じ画像を2枚に増やしたところは2倍の長さで再生されるので動きを一瞬だけ止めたい箇所にかさ増しをおこなっています。
次にFlowframesを開き、次のような設定で補間を行いました。
重要なのが「Output FPS and Speed」の項目です。FPSは60フレーム毎秒の滑らかな値になるように調整しました。真ん中のドロップダウンの値を「x10」にすると動画が一番滑らかになるので、左の数値はそこから逆算して6としてあります。
あとは補間を実行すれば滑らかなアニメーション動画を得ることができます。補間はすぐに終わるので設定を色々試しても時間はそれほどかかりません。
これで画像生成AIを活用して一貫性のあるアニメーションを作ることができました。
おわりに
以上、ControlNetを活用して一貫性のあるアニメーションを作る方法をご紹介しました。
ControlNetは精力的なアップデートによってどんどん便利になっていますし、革新的な機能も搭載されてますます画像生成に欠かせないものとなってきました。また、それに伴って今回のアニメを含む様々な分野に活用できるようになってきたので本当に夢が広がります。ぜひ皆さんもControlNetを活用して色々なことにチャレンジしてみてください。
この記事が何かしらお役に立てば幸いです。