Stable Diffusionで自分の絵柄を反映させたい!「自分絵LoRA」の制作記録【画像生成AI】

はじめに

名も無き絵描きである私が画像生成AIを始めた際、目標にしていた一つが「自分の絵柄で生成してもらう」ということでした。
Stable Diffusionでは、20~40代の青年~壮年メンズを出すのは意外と手こずります。いっそ自分の絵柄で出せたらキャラデザの方向性やカラーバリエーションを検討しやすいはず。

それを実現するのが「自分絵LoRA」!
「自分絵LoRA」とは、自分の絵柄を覚えさせて画像生成AIで利用するものです。

以下、前置きがやや長いので、さくっと本題を見たい方は『「自分絵LoRA」の作り方』へ!

あくまでも「自分が描いた」イラストです。昨今、他のクリエイターさんの絵柄を無断でLoRA化して配布し、非難を集めてるケースが多いです。絶対やめましょう。

くらつひわ
大事なことなので、この注意喚起は合間合間に挟んでいきます

Stable Diffusionとは?

Stable Diffusionは、テキストから画像を生成するAIモデルです。オンライン版とローカル版の両方で利用できます。オンライン版は、ブラウザからアクセスして使用できるWebサービスです。ローカル版は、自分でダウンロードしてインストールする必要がありますが、より多くの機能を備えており、より高品質の画像を生成するのに適しています。

ここではローカル版の「Stable Diffusion web UI(AUTOMATIC1111)」(以下、webUI)を利用して解説を進めていきます。
くらつひわ
ということで、ここから「ある程度、わかってる人」向けの解説になりますのでよろしくお願いします!

「自分絵LoRA」を作りたい理由

自分で絵を描く私としては、画像生成AIに求めたい協力は
  • ラフの下絵・アタリ用にしたい(ポーズ案、レイアウト案を含む)
  • キャラデザインのアイディア出しに使いたい
  • カラーバリエーションやデザイン要素のヒントにしたい
  • 自作の線画を元に着彩サンプルを作りたい(陰影のヒントなど)
このあたりとなります。
上記を満たす際、やはり「他人の絵柄」より「自分の絵柄」で出せた方がピンと来ます。

自分の絵柄を反映させるにはいくつか手段がありますが、現時点で最も手軽かつ精度を期待できる手段が「LoRA」ということで選びました。

ControlNetがあれば十分?

拡張機能「ControlNet」の「lineart_anime」は、cannyの時ほど線画をいじられずに着彩してくれるようになりましたが、顔の造形については、ある程度のアップ(または解像度)でなければ結局、使用モデルの造形に引っ張られることになります。
くらつひわ
用意した線画がそもそもAI生成画像だったり、あるいは使用モデルと近しい絵柄であれば親和性が高いので楽なんですが…
たいていの紹介記事や動画で使われる線画は「AI生成画像を線画化」したものがほとんどなので当然、成功例が多いです

プリプロセッサー「none」で、自前で白黒反転した線画を用意すれば大丈夫!
…と思ってたけど解像度不足なら着彩時にいじられがち。

この界隈の多くのモデルは「キャラクターは美少女に特化」して作られているため、少年まではいけるんですが、青年~壮年の男性描写に特化したモデル(イラスト系)は少ないです。そのためか、使用モデルに寄っていくと幼めの顔になったり、逆にリアル系になったりします。
もちろん、出来なくはないんです。使用モデルと頭身調整系LoRAなどを駆使すれば出せなくはないんですが、ぶっちゃけ「乙女ゲーム系のイケメン~壮年」を安定して出すのは難しい…

なので自分の絵柄が使用モデルに近いなら楽なんですが、そうではない時は苦労します。
これは「tile」や「reference_only」でも同じ事が言えます。

そこで「自分絵LoRA」!

ここで言う「自分絵LoRA」とは、自分の絵柄を反映させたサポート用ファイル。
LoRAは「追加学習」と呼ばれるもので、自分のイラストやデザインを基に学習させることで、その絵柄に特化した画像を生成することが可能となります。

つまり「自分絵LoRA」は、漫画家やイラストレーターが自身の絵柄を保ちながら画像を作り出すための便利な補助ツールです。

あくまでも「自分が描いた」イラストです。昨今、他のクリエイターさんの絵柄を無断でLoRA化して配布し、非難を集めてるケースが多いです。絶対やめましょう。

「自分絵LoRA」の作り方

LoRAでは「特定の1キャラ」を再現するために使われることも多いですが、今回はあくまでも学習させたいのは「絵柄」です。その前提で進めていきます。
くらつひわ
あくまでも自分がやってみて効果を実感した事柄の記録となります。
絵柄や学習素材の数・種類によって最適解は変わりそうです。

参考サイトの紹介

これ以上ないほど、大変お世話になりました。ありがとうございます!

必要なもの

  • Stable Diffusion web UI(インストール済みの想定)
  • 自分が描いたイラスト(10~100枚)
  • LoRA作成ツール(Kohya’s GUI など)
くらつひわ
ひとつずつ、解説していきます!

Stable Diffusion web UI

冒頭でも述べましたが、既にインストールしてある程度、使い慣れてることを前提に話を進めていますので、ここでは説明を割愛します。

自分が描いたイラスト

10~20枚から学習可能なようです。ただし、精度を上げるなら50~100枚が目安とのこと。
私は1024×1024pxで50枚用意しました。全てカラー。

あくまでも「自分が描いた」イラストです。昨今、他のクリエイターさんの絵柄を無断でLoRA化して配布し、非難を集めてるケースが多いです。絶対やめましょう。

どんなイラストを用意した?
今回は「絵柄」学習なので、なるべく色々なタイプのキャラを用意しました。男性メインで作成したかったので8割以上が男キャラ。髪色や髪型も複数、外見年齢は20~60代ぐらいで構成。また、顔アップから全身図まで用意。顔が最も絵柄を反映しやすいこと、あとは普段よく描く等身バランスを覚えてほしかったため。
背景は削除した方がいい?
最終的に、ほぼ全て「白背景」で統一しました。背景ありも混ぜた方がいい、という話もあるようです。なお「背景透過」は避けた方が良さそう(黒背景になる)
用意できる枚数が足りない…
反転したイラストで嵩増し可能だそうです。私も50枚のうち、半分近くが反転絵です。

あくまでも「自分が描いた」イラストです。昨今、他のクリエイターさんの絵柄を無断でLoRA化して配布し、非難を集めてるケースが多いです。絶対やめましょう。

LoRA作成ツール

  1. Kohya’s GUI
  2. LoRA Easy Training Scripts
  3. sd-webui-train-tools
などがあるようです。私は3→1の順で試した結果、1の「Kohya’s GUI」で作成したLoRAの精度が良かったので採用しました。

LoRAの作成方法

Kohya’s GUI」の詳細につきましては上記サイトがとても丁寧でわかりやすく、感謝しながら参考にさせていただきました。皆さんもぜひどうぞ!
ここからはインストール~設定までの記録を掲載しますので一例としてご参考ください。

「Kohya’s GUI」インストール

環境によって出る選択肢や必要・不要な作業が異なるので、まずは私の環境から。
ローカル環境
  • グラフィックボード:RTX 3060(12GB)
  • python:3.10.9
  • torch:torch: 2.0.0+cu118
  • xformers:0.0.19
先に拡張機能「sd-webui-train-tools」でLoRAを試した際、torchとxformersのアップデートが必要だったので済ませた状態ですが、参照先のサイトではtorchとxformersのアップデート方法もちゃんと紹介されてますのでご安心ください。

以下、setup.batを使ってインストール開始した後に出た質問とその回答。
あくまでも「うちの環境の場合」での選択なので、よくわからない時は先ほどご紹介した参照先サイトやChatGPTへログを貼り付けて解説してもらいましょう(私はそうしました)
Do you want to uninstall previous versions of torch and associated files before installing? Usefull if you are upgrading from torch 1.12.1 to torch 2.0.0 or if you are downgrading from torch 2.0.0 to torch 1.12.1.
[1] - Yes
[2] - No (recommanded for most) 選択
Please choose the version of torch you want to install:
[1] - v1 (torch 1.12.1) (Recommended)
[2] - v2 (torch 2.0.0) (Experimental) 選択
Enter your choice (1 or 2): 2
WARNING: Skipping bitsandbytes as it is not installed.
Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cu118
Collecting torch==2.0.0+cu118
教えてChatGPT先生!
上記の文は、Torchのバージョン2.0.0+cu118をインストールするための手順を示しています。まず、選択肢として[2]が選ばれました。それに応じて、Torchのバージョン2.0.0をインストールするための処理が開始されました。

ただし、先に「bitsandbytes」がインストールされていないため、警告が表示されています。このパッケージは現在インストールされていないため、スキップされます。

その後、インデックスを参照してtorch==2.0.0+cu118のパッケージを収集するための準備が行われています。インデックスは”https://pypi.org/simple”と”https://download.pytorch.org/whl/cu118″の2つです。

この段階で、Torchのバージョン2.0.0+cu118のパッケージを収集するための準備が整いました。その後の手順に進んで、インストールが行われるでしょう。
くらつひわ
実際、そのままインストールを進められました!
In which compute environment are you running?
Please select a choice using the arrow or number keys, and selecting with enter
 * This machine 選択
   AWS (Amazon SageMaker)
Which type of machine are you using?
Please select a choice using the arrow or number keys, and selecting with enter
 * No distributed training 選択
   multi-CPU
   multi-GPU
   TPU
くらつひわ
TPUって何?
→ChatGPT先生曰く、Google Cloudを使用している環境でなければ、TPUを使用していないということになるようです。
Do you wish to use FP16 or BF16 (mixed precision)?
Please select a choice using the arrow or number keys, and selecting with enter
  no
  fp166
* bf16 選択
  fp8
くらつひわ
「RTX30XX以上ならBF16でも」という説明を見て、調べてみました。実際、BF16を選んだ人がちらほらいらしたので真似しました✨
In which compute environment are you running?
This machine
-------------
Which type of machine are you using?
No distributed training
Do you want to run your training on CPU only (even if a GPU / Apple Silicon device is available)? [yes/NO]:no Do you wish to optimize your script with torch dynamo?[yes/NO]:no
Do you want to use DeepSpeed? [yes/NO]: no
What GPU(s) (by id) should be used for training on this machine as a comma-seperated list? [all]:all
-------------
Do you wish to use FP16 or BF16 (mixed precision)?
bf 16
最終的にはこんな感じでインストールとなりました。

タグの編集

Dataset Tag Editor」の出番。
ここで悩んだのが、タグ編集。何せ「絵柄」を覚えて欲しいので、キャラの特徴などは全て不要となります。抽出タグに「man」とか「male」が出れば残したんですが、出るのは「1boy」ぐらいだったので…(複数人を出したい時もあるので「1boy」も削除対象)
くらつひわ
結果として「全タグを削除
これで試してダメなら再検討しようと思いましたが、結果的には良かったようです。

「Kohya’s GUI」設定

試作してはテストを繰り返し、トータル5回ほどLoRAファイルを生成しました。
用意した素材の内容や枚数、絵柄によって適切な数値は変わってくると思いますので、これはあくまでも私の絵柄での(ちょうどいいと感じた)数値です。

繰り返し数:2(画像のフォルダ名に付けた数字が繰り返し数)
学習モデル:ACertainModel
Train batch size:1(RTX 3060だけど安定を重視)
Epoch:25
Save every N epochs:5
Mixed precision:bf16
Save precision:bf16
Clip skip:2

(繰り返し数 2)×(素材画像の数 50)×(エポック数 25)=総ステップ数 2500

なお、他の設定は前述の参照先サイトに記載された青い太字orデフォルトのままです。
※GTX1660Tiの場合は別途、必要な設定があるようなので参照先サイトを確認!

なお、学習にかかった時間は…
RTX 3060(12GB)×総ステップ数 2500で「10分」でした。早い。

画像生成テスト

どうせなので記録として模索していた段階も含めて掲載しておきます。
ちなみにしばらく「sd-webui-train-tools」で繰り返し作ってました。
バージョン管理が楽&webUIの拡張機能なので手軽、というのは最大の魅力!
ちょっとLoRAを試してみようかな?というデビュー戦に最適な気がします。

やや成功?

作成ツール:sd-webui-train-tools
(繰り返し数 1)×(素材画像の数 50)×(エポック数 20)=総ステップ数 1000
くらつひわ
目や顔パーツ、輪郭に自分のクセが出ている!
でも、もっと自分の絵柄にしっかり寄せたいな…
繰り返し数「1」にしてたので増やせばええんか?

あ~~失敗!

作成ツール:sd-webui-train-tools
(繰り返し数 15)×(素材画像の数 50)×(エポック数 10)=総ステップ数 7500
くらつひわ
クセは出てるけど顔以外の崩壊がすごい
え、こわ……繰り返し数「15」はダメだったんか?

うーん、近いんだけど…

作成ツール:sd-webui-train-tools
(繰り返し数 2)×(素材画像の数 50)×(エポック数 20)=総ステップ数 2000
くらつひわ
手癖は反映されてるんだけど惜しい…
繰り返し数は最初に試した「1」が割と良かったので「2」に設定
この後、現時点ではもっとも精度が高いと噂の「Kohya’s GUI」インストール。
前述した設定にてリトライしました。結果、一発で満足な出来に!

大成功!!!

作成ツール:Kohya’s GUI
(繰り返し数 2)×(素材画像の数 50)×(エポック数 25)=総ステップ数 2500

以下、全てトリガーワード+自分絵LoRA(1.0で適用)して仕上げにhires&tileしたもの。
レタッチ後のものですが、ほとんどポン出しに近いです。
くらつひわ
おっしゃああああああああ!
めちゃくちゃ楽しくて毎日、自分絵LoRAで出してます。へへ……

あくまでも「自分が描いた」イラストです。昨今、他のクリエイターさんの絵柄を無断でLoRA化して配布し、非難を集めてるケースが多いです。絶対やめましょう。

「自分絵LoRA」の活用術

とはいえ、仕事ではもちろんのこと、有償イラストでもさすがにAI生成イラストをそのまま出すようなことは全く出来ません(個人的な考え)

手指の他、衣装その他の破綻が多かったりするんですよね…
あとレイヤー分けはされてないので(レイヤー分けしてくれるツールはあるが、通常の着彩で使うようなレイヤー構造には全くならない)簡単なレタッチは出来ても、本格的な修正をしようと思ったらかなりの地獄。まさに「1から描いた方が早い」状態に。

なので、基本的には「参考資料」として使うことになります。
ポーズ人形を使うよりはだいぶ参考にしやすいです。

その1:ラフの構図やアタリ用にする

私の場合は「立ち絵」が圧倒的に多いので、ポーズ案に使いたいところ。
意外と立ちポーズのアイディアが枯渇しがち…
苦労することなく「自分が普段、描くような等身」で出してくれるのでとても楽。

その2:カラー案やデザイン案を出す

服のデザイン案も検討できます。アイディアのインプット元として、ファッション誌を参考にする人も多いと思いますが、上記のような画像もイメージの助けになりますね。
そして!カラーバリエーション案を出してもらう!楽しい。
下記の例は別に自分絵LoRAがなくても出来ますが、ひとまず一つの事例として…

その3:陰影やリムライトのサンプル

たまに陰影がおかしいことになってるものも出るんですが、自分で描いてる時も自信ないことありますからね…特に衣装などの陰影は参考にしたいことがあります。
くらつひわ
むしろ塗り方を教わりたい()
このレベルまで自分が追いつきたいな…練習しよ

おわりに

個人的には、AI生成された自分の絵柄に触発されながら研鑽を積んでいきたいところ。
「自分の絵でそこまで到達できる可能性」というのを自分絵LoRAが見せてくれるので、かなり刺激を受けてます。上手くなりたいなぁ~~~~~!!!

大御所のAdobeがPhotoshopにFirefly(画像生成AI)を搭載するなど、AI界隈もさらに動いてくるのかなと思ってます。もしAdobeがMimicみたいなサービスを始めたらどうなるんだろうと想像しながら、今日も進化が激しいAI界隈を泳いでいきます。

あくまでも「自分が描いた」イラストです。昨今、他のクリエイターさんの絵柄を無断でLoRA化して配布し、非難を集めてるケースが多いです。絶対やめましょう。