Stable Diffusion(以下、SD) や Midjourney などの生成AIは、そのままで使うと生成できない画像があることに気付く。
例えば特定のアニメキャラクター。Twitterなどでは #AIイラスト といったハッシュタグと一緒にAIが作った人気キャラクターの画像がたくさん公開されていたりする。
そもそもこういった投稿をしていいのか等の議論はさておき、こういった画像をAIに生成させるにはどうすればいいのだろうか。

その方法の一つは、ファインチューニングといって特定の目的に合わせた学習をAIに追加学習させることだ。

ファインチューニングする方法はいくつかあるが、その中でもLoRAという手法は以下のような利点がある。

  • 土台となるモデル(SD等)の学習パラメータを変えず、追加学習する分のパラメータのみを更新できる
  • 土台となるモデルから付けたり外したりでき、ファインチューニングしたモデルの容量も数十MBと小さい
  • モデルの容量が小さいため、ストレージの節約になる
  • 土台となるモデルの学習パラメータの更新(再計算)が必要ないため、効率的に学習ができる

など、利点が多い。

今まではLoRAを使うだけだったが、今回はそのLoRAを作ってみた。

生成できるようにする画像は、私が大好きなアニメ「リゼロ」に出てくるエキドナというキャラクター。
画像はネットで拾えるものを使い、作ったモデルの配布はせず、実験目的にのみ使用する。

まずは、生成する画像を40枚ほどネットから収集してきた。
また、少しでも生成画像の性能を上げるため、正規化用の女性の画像も200枚ほど利用する。
(正規化用の画像はそれ用に配布されているものを利用)

次に画像を生成する時に使うプロンプト(文章)と画像を関連付けるために、収集してきた画像のタグを生成する。
自分で1枚ずつ画像を確認してもっともらしいタグを付けてもいいのだが、
ここではBLIPという画像からタグを作ってくれるAIを利用することにした。

タグ付けができたら、次はそれらのデータを使った学習を行う。
ここでは土台となるモデルを選ぶ必要があり、私は「AnyLoRA」というアニメ画像の生成が得意なモデルを選んだ。
そしてタグ付けした画像と土台となるモデルを使い、Pythonで書いたスクリプトを実行し、モデルを作成した。

40枚ぐらいの画像を学習させるのに、GPUのT4モデルで1時間20分ほどかかった。
また、LoRAのモデル容量は18MBとなった。

試しに作ったモデルを使ってみたところ、以下のような画像が生成できた。

LoRAを活用すれば、特定の目的にフィットしたAIを作成することができ、それはその企業独自のAIとなる。
今後はこういった企業独自のAIが増えていくんだろうなとちょっと先の未来を垣間見た体験でした。

Contact
AI に関するお問い合わせは、当サイトのContactページのフォームよりお問い合わせください。