見出し画像

画像生成AIに自分の絵を描かせた

連休を前に少し時間ができたので、以前から興味のあったStable Diffusion web UIをローカル環境にインストールし、さらに自分が描いた絵を追加で学習させて、画像生成AIに「自分の絵」を自動的に描かせる実験をしてみました。結論から言って、あっけないほど簡単に実現してしまい、いろいろと考えるところがありましたので、顛末を書いておきます。

前提として

わたしは長年趣味でイラストや漫画を描いている、一介のアマチュア同人作家。世間のいわゆる「AI絵」の是非はさておいて、基本的に新しいもの好きであり、去年Stable Diffusionが出たときにすぐさま触ってみて、なるほどこういうものねというところまでは理解していました。それにつけても、ここ半年ほどのAI関連の動きの速さ! お絵描きAIにおいて現状何ができて、何ができないのかというのを改めて確認してみたくなりました。

AIをどう使いたいか、どう使いたくないかのビジョンは明確にある。そもそも、わたしは仕事でも何でもなく、幼いころからのひとり遊びの延長として絵を描くということを楽しんでおり、画像生成AIがあるからといってただ超美しい絵を無限に出したいとか、特定の作家の画風で何かを描かせたいとか、ましてAI絵を売って楽に儲けたいだとかはまったく思わない。そういうのは普通になんかイヤだなと思っている。
それよりも、描くうえで自分がどうしても苦手なこと、時間がかかるようなことをAIに肩代わりしてもらうことが可能にならないだろうかと思っています。それによって、絵を描くことがもっと楽しくなるかもしれないから。

なお、わたしは同人活動として主にWeb小説『ニンジャスレイヤー』の二次創作をしているので、本記事中で取り上げる作例にも、作中のキャラクターとそのモチーフが登場することを初めにおことわりしておきます。

ニンジャスレイヤーを連載するダイハードテイルズさんは、22年8月からTwitter連載のなかで、小説の挿絵としてMidjourneyの商用ライセンスを使ったAIイラストを積極的に活用しています。ファンアートに生成系AIを用いることもガイドラインで特に禁止されているものではありません。
ただし、メンバーシップ内のファンアート掲示板でシェアできる作品などは現時点でMidjourneyで出力されたものに限られていることもあり、今回Stable Diffusionを使って出力した作例は同掲示板へはアップロードしていませんし、所定のファンアートタグ(ウキヨエ)もつけていません。Twitterアカウントも、念のため作品の公開は通常の二次創作アカウントと分けるようにしました。奥ゆかしくいきたい。

必要な環境と導入の手順

Stable Diffusionのローカル環境の構築についても手短に。必要なのはWindowsマシンとNVIDIAのグラボ。わたしは少々VRを嗜むのでRTX 3060Ti(VRAM 8GB)を使っていますが、快適に利用するにはおそらくこのあたりがミニマムのラインで、コスト的にはそこそこ高いハードルではあるでしょう。でも、VRはさらにHMDが必要なわけだから、それに比べれば…。

導入の手順は有志によるWikiを参照しました。直リンクが禁止されているうえ、ググれば出てくるのでここでは省きますが、Windowsの基本的な操作に通じていれば特に詰まるところはありませんでした。任意のモデルデータを用意したうえで、手順に沿ってPython、Git、AUTOMATIC1111版web UIををインストールしたらバッチファイルから起動してブラウザでURLを叩くだけ。web UIの操作は触って覚える。

実現できたこと

まず、実際に試してみて実現できたことをざっと挙げてみます。

  • テキストの羅列(プロンプト)による指示をもとに絵を描かせる(txt2img)

  • 画像をもとに別の絵を描かせる(img2img)

  • 画像に何が描かれているかをテキスト化する(=画像をプロンプト文にする)(Interrogate)

  • 画像に描き込んだ補助的な線や塗りをもとに部分修正する(Inpaint)

  • リファレンスとして与えた自作絵を学習させてオリジナルの追加学習モデル(LoRA)を生成する

  • 自作絵LoRAとプロンプトによる指示をもとに自分が描いたっぽい絵を描かせる

  • 自分っぽいAI絵の「自分っぽさ」を数値で調整する

ここからは具体例を交えて。
いつも二次創作を描いている、ニンジャスレイヤーのユンコ・スズキというキャラクターを出力させたい。テキストによる具体的なプロンプトが分からなかったので、自分で描いたファンアートをimg2imgのInterrogateに突っ込んでみると以下のプロンプトが得られました。

1girl, bare shoulders, black shorts, black thighhighs, blue eyes, blue hair, breasts, crop top, detached sleeves, fingerless gloves, gloves, goggles, goggles on head, heterochromia, looking at viewer, midriff, navel, open mouth, short hair, shorts, simple background, solo, thighhighs, white background, yellow eyes

それをもとにtxt2imgを実行したところ、出力されたもの。

もう、これだけでそこそこキャラクターの特徴を掴んでいる。ほかに画風のようなものを何も指定していないので、この時点ではモデルデータからランダムに出力しているだけで、seed値が-1の限り無限に違う結果が得られます。ちなみに、512ピクセル四方の画像を一枚出力するのにかかる時間は、わたしの環境で2.5秒(Sampling stepsが20のとき)。これはテキストプロンプトが長くても短くても大差ありませんでした。

「描いたことのない自分の絵」

自作の絵を学習させるためにはまた別の準備が必要。こちらもWikiのLoRAのページのなかで手順が懇切丁寧に書かれていて、その通りに進めるだけでした。LoRA (Low-Rank Adaptation of Large Language Models) というのは、ざっくりいうと任意のベース学習モデルに追加で影響を与えることのできるアドオンのような形式の学習モデルらしい。

素材として、自分で描いた同一のキャラクターのイラストを10枚用意しました。10枚だけでいいの?と思うんだけど、10枚だけでいいんだって。念のため512ピクセル四方にリサイズして、背景レイヤーを消して白で統一しておいた。この処理は必要なかったかも。学習モデルの実体となる.safetensorsファイルの出力に要する時間はたったの20分。

作成したLoRAモデルを指定しても、指定前と後でどうにも出力結果に反映されない。よく見たら、webui-user.batを走らせたWindowsのコマンドプロンプトにエラーが出ていたので検索してみると、追加でweb UIの拡張としてa1111-sd-webui-loconのインストールが必要のようでした。必要なモジュールを正しく設定したうえで、Generateしてみるとあっさり出た。描いたことのない、自分の絵が…!

flat color, (thick outline:1.2), (black outline:1.1), (blue hair:1.3), multicolored_hair, hair extensions, (heterochromia:1.2), blue and yellow odd eyes, 1girl, bare shoulders, black shorts, black thighhighs, breasts, cybergoth, detached sleeves, fingerless gloves, gloves, goggles, goggles on head, midriff, navel, short hair, messy hair, curly hair, mouth opened, confidently, highly motivated, cross legged, blue neon tatoo, in the laboratory, computers on background, typing keyboard, from abovelora:lora_junko_10:1.Negative prompt: EasyNegative, twintails, side bun, bun hair, animal ears, cat ears, white hair.

学習モデルの作成に使用した10枚のなかに、確かにこれにかなり近い構図の絵も含まれていた。比べるとほぼまんまだ。これが参照されていることは間違いない。

学習用素材のうちの1枚

でも、よく見ると線も塗りもそのままではないし、プロンプトで指示した内容に近い背景とポーズになっているし、それを踏まえてハイライトや影も描画されている。これが2.5秒で出てくるのか…。初めて家にインターネットが来た日、1997年4月のあの日に等しいほどの衝撃。

気に入らなければ、ボタンを押した2.5秒後に別の絵が出る。今度はこの絵に酷似した素材は10枚のなかには含まれていなかったので、プロンプトの指示を汲んでそれっぽく仕上げてくれたのだと思います。なんたる…。

出力結果にこの自作LoRAモデルの影響をどの程度与えたいか、つまりどれだけ「自分の絵」っぽくしたいかは、プロンプト文の各項目に設定する影響度(weight)と同じで数値で指定することができます。上のものがウェイト1。<lora:モデル名:1>という構文で、1を0.9、0.8と下げていくごとに自分の絵らしさが減る一方、ベースとなる任意のStable Diffusionモデルの影響が大きくなる。端的に言って、「自分より上手くなる」!

自作絵LoRAのウェイト0.4の作例(9枚連続出力で23秒)
lora:lora_junko_10:0.4flat color, outline, 1girl, bare shoulders, black shorts, black thighhighs, blue and yellow odd eyes, (vivid blue hair), multicolored_hair, breasts, cybergoth, detached sleeves, fingerless gloves, gloves, goggles, goggles on head, (heterochromia), looking at viewer, midriff, navel, short hair, hair_between_eyes, messy hair, curly hair, angry face.Negative prompt: (worst quality:1.4), (low quality:1.4) , twintails, side bun, bun hair, white hair, cat ear, elf ear

自分としては確かにいつもの手癖の残り香や面影のようなものを感じるけど、技術的にあらゆる点でわたしよりはるかに上手い。これをこのまま自分の作品として発表する気にはなれない。線がパキッとしていて平坦な塗りが好きなので、敢えてflat colorなどの方向性を与える単語をプロンプトに含めているものの、それにしても好みの絵柄を汲みすぎている。これは驚き、わくわくするとともに、恐ろしいことですよ。

絵を描かない人に伝えるとするなら、外見も話し方も、口癖まで自分そっくりなのに、自分より圧倒的に仕事ができる新入社員が入ってきた感じです。それはもう、自分が同じ会社にいる意味を考えちゃうよ。

まだ触り始めたばかりなので感触レベルですが、扱いやすい「自分の絵」LoRAモデルの作成方法にはコツがある感じ。うまく作れないと、かなりウェイトを下げないとテキストプロンプト通りに動いてくれなかったり、破綻が出たりする。AI絵、進化したとはいえ未だに腕や足が多く生えたり、指が多いだの少ないだのというのも当たり前なので、そういった微調整をimg2imgなどで行うことを踏まえても、学習モデル生成の時点で後々なるべく自由度の高い、扱いやすいものを作りたい。

今回、テストのために自分で描いた特定キャラの絵10枚を集めたキャラ×絵柄LoRAモデルと、雑多に描いた絵25枚を集めた絵柄LoRAモデルを生成して比べてみた結果、扱いやすさは圧倒的に前者のほうが上でした。後者も、別のキャラを描かせるときのために使えないことはないけれど、テキストプロンプトに馴染ませるためのウェイトの調整が難しい。崩れやすい。つまり、描きたいキャラがいるのであれば、同じキャラをいろんな構図で少なくとも10枚描いて、それを素材にそのキャラ専用LoRAを作ってしまったほうが良さそうです。

このLoRAは0.7でも指示通りの結果が安定して出せる(ピザは多すぎる)
lora:lora_junko_10:0.7flat color, outline, 1girl, bare shoulders, waitress, (white apron:1.2), head dress, black thighhighs, blue and yellow odd eyes, (vivid blue hair), multicolored_hair, breasts, cybergoth, detached sleeves, fingerless gloves, gloves, goggles, goggles on head, (heterochromia), looking at viewer, midriff, navel, short hair, hair_between_eyes, messy hair, curly hair, at diner, (serving pizza:1.3), (at restaurant:1.1), opened mouth, fish eye view, perspective .Negative prompt: (worst quality:1.4), (low quality:1.4) , twintails, side bun, bun hair, white hair, cat ear, elf ear

お絵描きに画像生成AIを活用できるか

ここからは今後の展望というか、個人的な想像の話。

前々から考えているのは、好きなこと・得意なことはこれからも人間が楽しんでやり、苦手なこと・面倒なことだけをAIに任せられないかということ。例えば、イラストの制作プロセスを分解すると、構想、ラフ、線画、配色、影、ハイライト、仕上げのようになるわけだけど、私の場合はこう。

最初の構想のネタ出しは苦手だからAIに考えてほしい。ラフをざくざく描くのは好き。線画は一向に上達しないし、ひたすら根気が要るからもうAIに任せたい。色を置いたり影やハイライトを入れるのは一番楽しいところだから譲りたくない。色を馴染ませたり見映え良く加工するのは勝手にうまいことやってほしい…みたいな。これは人によって大きく違うはず。

今回Stable Diffusion web UIを触ってみた感じだと、まず、最初の提案はAIが無限にやってくれる。なにしろ、とっかかりになるキーワードを2,3入れるだけで、文句を言わずに何案でも考えてくれるのだから。絵を描くうえで何が気が重いって、まず白い原稿用紙に向かうことだったりしますよね。実際に手を動かし始めれば、「それならこうしたい」という方向性が何かしら見えてくるのに、その最初のたたき台すら出ないというのは往々にしてある。あるいは関連しそうな資料をたくさん出してもらうとか、そういうことにはもうAIは大いに使えそう。これはChatGPTでもいいよね。

ラフをもとにAIで強弱のある線画を抽出したり、同時にデッサンの歪みを修正することも、技術的には全然いけそうです。それも、自分の絵柄を踏まえた、自分の素の実力よりも数段上手い線を選んで、そちらに寄せて修正してくれる。修正・補正という意味では、手ぶれ補正機能に近い実装がいいのかな。あるいは文字入力の予測変換とか。人間がやらなくても人間の意図を汲んで提案してくれる、というところが肝になるはず。

最終段のポストプロダクションのフェーズにAIを利用するというのは、言ってしまえば、写真、映像、音楽あらゆるジャンルで既に実現していますよね。フィルターとかマスタリングとか、そういう仕上げはAIの得意分野。

こんな感じで、人間は美味しいところだけやっていきたい。好きで描いているのだから、全部は取り上げられたくない。なんとも虫のいい話!

でもこれで思い出すのは、15年くらい前にDJが一斉にアナログレコードからデジタルに変わったときのことです。それまで、いかに早く次の曲のピッチを合わせられるかが優れたDJの技術のひとつだったのに、オートシンクが生まれたことで「再生ボタンを押す前からピッチが合っている」みたいな、考えられない無茶苦茶なことが現実になった。持っていくレコードを厳選して何十枚、まだバリアフリーでない駅の階段を重いカートを持ち上げて移動していたのが、親指大のUSBメモリに何千曲と入るようになってしまい、DJにとって最も重要な選曲プロセスさえも激変してしまった。

その結果、今レコードを使い続けるDJの技術の価値が落ちたかというと…ご存じのとおり、まったくそんなことはないわけです。レコードはその制約や揺らぎが、より愛されるようになった。要は、全体のどこにフォーカスしてそれを楽しむかという違いでしかなくなる。お絵描きにおけるAIのエボリューションも、楽観的に捉えるならば、ある面ではきっとそういう形に落ち着くんじゃないかと思います。

「自分の絵」とはなんだろう?

ところで、今回「自分の絵LoRAモデル」を作成してみて、改めて深く考え込んでしまったのは、「自分の絵」って一体なんだろうということ。そりゃ、自分が描いたら自分の絵なのでしょう。それはそう。

じゃあ、自分は描いていないけれど、自分の線・自分の塗り・自分の描きたいモチーフを100%完全に備えた絵なら? あるいは、もしその絵を「描いた記憶だけをすっかり失った状態」で見たときに、わたしは何をもって自分の絵らしいと感じるのだろう。

以下は、前述の自分の絵10枚を学習させたLoRAモデルのウェイト(=自分の絵らしさ適用度)を、1→0.8→0.6と少しずつ減らしてtxt2imgで出力した例です。テキストプロンプトには追加で「black bunny suit, bunny ears, arms behind back, from above」などの指定を入れており、ウェイトが下がるほどプロンプトに忠実な結果が出るようになっている。
1は、描いてこそいないけれど完全にわたしの絵と断言できる。0.8から、だんだんわたしのより歪みが少なく線画の強弱も美しくなっていく。0.6のこんなにきれいな線は逆立ちしても描けない。0.7なら? 0.65なら? どの時点でわたしの絵ではなくなるのだろう。

<lora:lora_junko_10:1>
<lora:lora_junko_10:0.8>
<lora:lora_junko_10:0.6>

またある人は、自分が自分の手で描いた絵こそが自分の絵で、それ以外は断じて自分の絵ではないと言うかもしれない。だとすれば、板タブレットや液晶タブレットを使って描いたデジタル絵はどうだろう? わたしはアンドゥや手ぶれ補正もなしに思うような線を引けないし、さらに言うなら、クリスタでない水彩や油絵であんなにきれいに色を塗れない。コンピューターで計算が走ってこそ描ける絵を自分の絵と言うことができるのなら、自分の意志でしかるべき処理を経て明確な一定のベクトルを指向するAI絵もまた、あるところまでは自分の絵と言えるのでは?

自分が描くべきと考える線を描き、そうでない線を描かなかったものこそが自分の絵であるのかもしれない。実際、ラフ絵から線画を起こすときはいつもそのようにして、たくさんの可能性のなかからひとつの線を選んでいる。DJが曲を選ぶのと同じように、料理人が食材や調味料を選ぶのと同じように、「選ぶ」ということは本質的にクリエイティブな行為だとわたしは思います。だとするならば、AIが出力した無数の候補のなかから選択に選択を重ねていくプロセスが創作でないと、どうして言えるのだろう。

こんな風にして考えてみると、やはりどうしても、取り沙汰される「学習」のことも連想しますね。

わたしが脳内で、これは自分の絵!と認識している漠然としたイメージは、究極の理想とする美的価値から現時点での自らの技術力を差し引いた、「足りなさ」「描けなさ」で測っているような気がする。理想からの悩ましい乖離。そしてこの理想とは無から生えてきたものではなく、先人の作品の影響を強く受けている。とりもなおさず無軌道で貪欲な学習の結果の、なおかつ誰にも無断(!)で学習してきた結果の偏りであって、この偏りは自らの作家的アイデンティティと分かちがたく結びついている。だからこそ譲れない、センシティブな部分なのかもしれません。

よく、絵描きが冗談で神絵師の腕を食べたいみたいなことを言いますが、これも一種の思考実験としては面白いかも。仮に、ある朝目覚めたら、あなたの画力が信じられないくらい向上して、まったく別人みたいな絵がスラスラ描けるようになったとしましょう。本当にそれで満たされる? 人によって違うのかもしれないけれど、少なくともわたしは、自分の絵のまま上手くならないと何も嬉しくない。嬉しくなくない?

同じ意味で、画像生成AIに感じている可能性のひとつは、多くの絵描きが一生抱えるジレンマ…すなわち「描きたい絵、描ける絵、描くのが向いている絵の3つが一致しない」という命題において、それぞれのズレを補正し、大きく近づけてくれるのではないかという点です。AIに「自分の絵っぽい自分よりも明らかに上手い絵」を2.5秒間隔でズラズラと提示されたときに、もしかしたらこの作風に近づけるように頑張れば、あのジレンマから救われるのでは! という一縷の望みを抱いた。初めて目に見える具体的な形で指標を示されたというか。期待しすぎかなあ。

AI絵に対するわたしのスタンス

この記事のヘッダーは、任意のモデルをベースにテキストプロンプトで自分の絵柄LoRAをウェイト1で入力して、バッチ処理で連続出力した画像です。完全に自分が手癖で描く女の子の顔、そのものズバリが無限に出てくる。

lora:lora_r9test_25:1> 1girl, flat color, outline, focus face, portrait, looking at viewer,.Negative prompt: (worst quality:1.4), (low quality:1.4) , twintails, side bun, bun hair, white hair, cat ear, elf ear.

これ、自分でやっているから面白がっていられるようなものの、例えば他人の誰かがわたしの許可なくわたしの絵を学習させて、出力したものをこんなふうに見せてきたとしたら、めちゃめちゃ嫌な気分になると思います。それは無断で学習されたとか以前に、例えばクラスでもあんまり絡みのないよく知らない同級生が、急に自分のものまねをして見せてきた、しかもそれが超似ている、みたいなイヤさ。内面を見透かされたような気恥しさと空恐ろしさ。まして、その絵を大量生産してどこかで商売されるなんてもってのほか。懸念はよくわかります。

そして繰り返しつらつらと書いてきたように、わたし自身はわたしのものではない超上手い絵を無限に出すことに全然何の魅力も感じていないから、そうしてほとんどオートマチック自動的に生み出した絵を「作品」として一束いくらで売りさばくようなビジネスをする人のことも、その儲かる指南をメンバーシップ有料記事でしますみたいな人のことも、イラストレーターとは言いたくない。

それでもなお、非難されるべきは他の作家のネームバリューや作品の価値にフリーライドする形でのコピー、剽窃、そのほか本来の作家が得るべき栄誉を横取りする悪質な行為それのみであって、技術ではないんじゃないかなと思います。AI画像生成とは落としどころを見つけて、うまく付き合っていきたいし、世の中的にもそうあってほしい。インターネット以前の世界に戻れないのと同じように、もうAI画像生成が生まれる前には戻れないのだ…。

さしあたって、どこまで自分の絵でどこから自分の絵じゃなくなるのか、引き続き閾値を探る実験を続けてみようと思います。いや~、これからどうやって描いていこう。大変な時代になりましたね。

ラフからimg2imgでリファインした絵。こう描くのか…という学び


この記事が気に入ったらサポートをしてみませんか?