漫画未経験のエンジニアが今のAIで漫画制作にトライしてみた記録2023年夏時点版
画像生成AIの躍進が目覚ましい。エンジニア兼SF作家の筆者としては、AIが絵を描けるようになるのなら、絵が描けない自分でも漫画制作ができるようになるのではという期待があった。実際に2022年の末頃にはstable diffusionを使った漫画制作UIのプロトタイプを作ってみたこともある。
それから半年以上の月日が経ち、世の中でもMulti ControlNetやLoRAなどの画像生成AIを制御する手法が登場してきた。そろそろ技術も熟してきたということで、漫画の実作に取り組むことにした。漫画をちゃんと描いたことはなかったため、何もわからないところからのトライとなったが、16ページの漫画をとりあえず完成まで持っていくことができた。
結論、作った漫画はこちら。
実際に作ってみたことで見えた学びをこの記事にてまとめてみたい。作り方は手探りであったが、振り返ってみると下記の5ステップに沿う形だった。
1)ネームを描く
ネームを描くのに基本的にAIは使っていないものの、AI生成を見越して考慮した点があった。
第一に題材である。アクション主体のバトル漫画などは画像の生成に苦戦することが予想されたため、会話主体の話にした。話における文字の重要性の割合が高い方がやりやすいだろうという判断である。
また、カラーにはせず、白黒の漫画とした。色をつけると色の一貫性をとるのが難しくなる。一コマごとに色合いが変わってしまうのはストレスになる。シンプルにすることによって難易度を下げようという発想である。
キャラクターは、今の生成AIがより得意とする女性キャラクターを主軸においた。学習データの偏りから、現時点ではやっぱり女性キャラクターの方が出しやすい。
上記を総合した結果、「女性のエンジニアと営業が会社でレスバする」という筋が見えてきた。
反省点として、後のステップでAIにわかってもらいやすい絵を描くべきだったというのがある。具体的には「濃く太い線で描く」「顔の十字線はノイズになるので描かない or 消した方がよい」「色を斜線でつけるのはノイズになるので塗った方がいい」「コマ枠外や吹き出しで隠れる部分も描いておいた方がいい(後からクロップする)」などである。
ネームを描くとき、いかに画像生成AIに意図が伝わるように描くか? メタデータを付与していくか? という問題はまだ解かれていないが、工夫の余地が多いにありそうだ。
あと、ネームを描くのはAI関係なく大変だった。勉強のため、自分はゲンロン社のひらめき☆マンガ教室を聴講した。(ちなみにこの講座はマンガだけでなく創作全般に学びが多くて面白いのでオススメである。著名な漫画家の先生が13時間連続で講義してたりする、アツい)
2)キャラクターをtext to imageで生成
次にキャラクターを作る。ここから画像生成AIの出番だ。エコシステムの発達具合からstable diffusionとAUTOMATIC1111の組み合わせをメインで使うことにした。midjourneyは一枚一枚の品質はとても高いと思うのだが、やはりどうしても細かいところが制御しにくい。comfyは良さそうな匂いがするものの、まだ熟してなさそうだし、invokeもautomaticに比べると拡張機能のバラエティに不安があった。
シンプルなtext to imageでプロンプトとモデルを調整し、それぞれのキャラクターのコアとなるプロンプトと、元素材となる画像を入手する。漫画っぽいキャラクターシートを作るときに有効な語彙は下記などがあった。
three view drawing, character sheet, three sided view, front and side and back, infographics, simple background, monochrome
当初は、画像を生成させてから、キャラクターごとのLoRAを作ろうと思っていたのだが、今回はシンプルなキャラクターだったからか、そこまでやらずともreference onlyなどで済ませることができてしまった。品質を更にあげようとしたり、複雑なキャラクターデザインにする場合にはLoRAを作り込む必要があると思われる。
また、筆者は未検証なのだが、LoRAとControlNetを併用するとこのようなやり方もできるらしい
また、この時点で各キャラクターの主要な表情パターンは一通りの単語を入れて先にまるっと生成させておくべきだった。プロンプトと表情の表を見ながら作業をできるとすごく楽になるからだ。X/Y plotのスクリプトを使えば、特定の単語を別の単語に置換しながら表情の一覧表を作ることができる。
全身像が映る場合には顔の細部が崩れる問題があった。これは拡張機能のADetailerを使うことで改善させることができる。YOLOv8を使って顔を検出し、その領域内だけ高解像度で顔を生成してくれる。そのときに表情のプロンプトも指定できる
3)各コマをControlnetで生成
次に一コマずつ画像を生成してゆく。ここでControlNetが大活躍する。ここでは3つのモデルを場面ごとに使い分けた。ControlNetを使うと、画像生成AIにどのような画像を生成すべきかヒントを与えられる。複数のヒントを同時に与えるMultiControlNetというやり方もあるので、下記の3つのうち2つ以上のモデルを同時に使うようなやり方もできる。
3−1)Reference onlyで生成するパターン
すごく手軽に使えるのがReference onlyモデルである。元になる画像をそのまま参考情報として入力することができる。AIで漫画を作る時に問題になるのがキャラの一貫性問題である。これは、AIで生成した画像に揺らぎがあることによって、コマが変わると別人に見えてしまう問題である。同じプロンプトでなるべく細かく指定しても、筆致や目の描き方、表情などがどうしてもブレてしまう。
Reference onlyはこの一貫性のブレを軽減することに使える。生成したい画像に似ている2)キャラクターを生成、で作った画像をReference onlyモデルに入れてあげることで、別角度や別表情の画像を生成することができる。
ただ、完全に一貫性の問題がなくなるわけではない。そのため、数を打つことも必要になる。プロンプトの指定などがだいたいいい感じになってきたら、20枚ぐらいを一気にランダム生成し、その中から良い塩梅のものを選ぶのだ。
3−2) Scribbleで生成するパターン
Scribbleモデルは落書きから清書をしてくれるモデルである。
その威力はなかなかすさまじく、上のX(Twitter)のPostのように、落書きがここまでの絵になったりする。こいつを使えば、ネームで描いた絵をそのまま突っ込んで清書することができる。
が、しかし、なかなか制御が大変なモデルでもある。上でも少しだけ触れたが、このとき「Scribbleで解釈可能なネームを描いていなかった」ことに起因する問題が色々起きてしまった。例えばこちらの顔のアップのコマである。
線が細すぎる&吹き出しの後ろ側を描いていなかったので、Scribbleモデルが全然正解を出してくれなかった。ので、雑に補足する。
しかし、ここまでしてあげても、解釈してくれない。右上の塗った画像をscribbleモデルに突っ込んで画像生成AIが出してきたのはこんな感じである。
ということで、顔は全顔を書いてあげないとあんまり認識してくれなかった。仕方がないのでコマで隠れる部分も描いてみる。
ということで現状、scribbleにネームの意図を伝えるのはひと手間かかってしまう。scribbleは輪郭線に対して敏感だったりとコツがあるので、うまくポイントを抑えてネームを作画することもできそうだ。
3−3)openposeで生成するパターン
openposeとは、元々はカーネギーメロン大学で開発された姿勢推定のディープラーニングアルゴリズムである。openposeの骨格画像を情報として入力できるControlNetのモデルが存在する。これを使えば、生成する画像の姿勢をある程度コントロールすることができる。
複雑な姿勢のコマを作るときにはopenposeを使うと良かった。
4)生成した画像を手でザックリ修正してからimage to imageに入れて微整形
生成された画像は、細部を修正したいことがよくある。表情の微妙な違いだったり、指の本数だったり、服の色だったりというような微修正であれば、雑な加筆でガイドをしてあげた上で、image to image(画像から画像を生成する機能)で細部を調整することが可能である。Inpaintで消したい箇所を消して、Denoising Strengthを低め(0.1〜0.4)に設定して量産すると良いデータを引けることがままある。
例えば指の数を修正したのがこちらである。
下記の例もimage 2 imageである
5)クリップスタジオ上で彩度、コントラスト、線の濃さなどを微修正
最後の仕上げとして、クリスタ上で「彩度・コントラスト調整」、「複数の絵を重ねる」そして「輪郭線の強調」の3つを行う。
彩度とコントラスト
画像生成で出したものは"monochrome"とか"grayscale"とかそういう単語があったとしても、どうしても色が微妙についてしまうケースがある。また、肌の色や髪の色も微妙にバラバラになってしまう。そのため、色の調整レイヤーを重ねることで補正を行う。
複数の絵を重ねる
生成された人物画像を切り抜いて、背景の上にのっけたり、複数の人物を重ならせたりする。今回はマウスでごしごし消してしまったが、remove.bgのようなツールも使えると聞く。
輪郭線の強調
AI作画は漫画にしては輪郭線が細い絵が出がちであり、これは特に小さいコマの視認性を悪くする。
漫画編集者からのフィードバック
描いた漫画を漫画編集部に持ち込みを行い、プロの方々にフィードバックを頂いた。めちゃくちゃ色々指摘してもらえて勉強になった(『バクマン』で見た光景まんまで感動)。そもそも漫画として稚拙なところは多く、いろいろ指摘をいただいたのだが、そのフィードバックの中にも、AI起因っぽい瑕疵があったので紹介したい。
オーバーアクトしがち問題
「AIの作画する表情はオーバーアクトになりがち。感情が前面に出過ぎている。少年誌やアニメだとオーバーアクトが続いてもいいかと思うが、青年誌だと少し子供っぽい印象になってしまう。もう少し控えめな演技をさせても読者にちゃんと伝わるし、キメゴマを引き立たせることができる」(青年誌の編集者さま)
確かに表情をテキストでぱきっと指定してしまうと、良くも悪くも「わかりやすく」それを反映してくれることが多い。解決策としては、X/Y スクリプトで様々な強度の表情のプロットを作り、曖昧な塩梅の空間を探索することで良くなる可能性があるかもしれない。
位置関係がふわふわしがち問題
位置関係がふわふわしている点も多く指摘された。「イマジナリーラインを超えまくってるのが気になる」、「誰がどこにいるのかよくわからない」、「アップのショットが多い、もっとロングショットを使った方が良い」というフィードバックだ。これはネーム時点からある問題で、AI作画しやすいように複雑な構図を避け、顔のアップショットを多用してしまったことが原因だろうと思う。
また、色々生成しているうちに「いい感じにはコマにはまるけれどもネームとは位置関係が若干ずれる」画像を使用することもまま発生した。そのため、より位置関係の情報が失われている側面もあるかもしれない。
キャラクターの唯一性を突き詰められていない問題
キャラクターで魅せるのが漫画である。その時、「ありがち」なキャラクターではなく「固有」のキャラクターであることが重要らしい。現状は「ここにしか居ない固有のキャラクター」であるとわかる情報が足りていないという指摘を受けた。考えてみるとこれはネーム段階の問題でもあるが、AI作画であることに起因する部分も多いにありそうだ。下手な絵でも人間が描くと「固有の絵」感が自然と出る場合があるが、今回のAI作画の場合、そういった「固有性」を感じさせることが出来ていない。
個人的には、こういった固有性が出せていないのは純粋に技術的な問題であり、AI作画による限界ではないと考えている。AI作画であっても固有性を滲ませるプロトコルはあるのではないか。潜在空間上であまり探索されていない空間を深掘りすることで、固有感は発生するのではないかという仮説がある。
まとめ
上記で紹介したのはあくまで自己流のトライアンドエラーの結果である。たぶんもっと使いこなしている人はたくさんいるので、そういう有識者の方がいたらがんがんTipsを教えて欲しい。
技術自体も爆速で進化中なので、きっと今後もどんどん新しい手法やサービスが出てくるだろうと思う。アルゴリズムだけではなく、ツール側の進歩によって相当に効率や品質を上げる余地がある。Automatic1111以外にもComfyUIのようなノードベースの生成インターフェースも出てきており、ワークフローが実装しやすくなって来ている感じがする。
技術が変わればコンテンツも人も変わるのではないかと思う。Photoshopが新海誠監督という才能を世に出したのと同様に、生成AIのおかげで今後新しいタイプのクリエイターが出てくる可能性は高いように思う。その辺はすごく楽しみである。
AI漫画をやっている人は是非いろいろ話してみたいので気軽にTwitterにDMください。