見出し画像

画像生成AIの指に関する研究 #1 - 何故AIは指が苦手なのか

はじめに

画像生成AIでは、指の描画に大変苦慮する場面が多く見受けられます。
NegativeTIやLoRA、LyCORISなどで指に関しての改善案が日々研究されています。

では何故、そもそもAIは指の描画が苦手なのかを紐解きつつ、別のベクトルから改善できるかを模索していきましょう。

また、この記事はシリーズ化する予定です。本記事では完結しません。

何故、AIは指が苦手なのか

AIと人間の思考回路

これを紐解くのは、Stable Diffusion、またはLatent Diffusionの学習概念とノイズ画像から復号化するために使用されるU-Netの処理が絡んできます。

U-Netについては、以前階層マージの時に説明しました。

出典元:U-Net: Convolutional Networks for Biomedical Image Segmentation - Fig.1 https://arxiv.org/pdf/1505.04597.pdf

Fig. 1. U-net architecture (example for 32x32 pixels in the lowest resolution). Each blue
box corresponds to a multi-channel feature map. The number of channels is denoted
on top of the box. The x-y-size is provided at the lower left edge of the box. White
boxes represent copied feature maps. The arrows denote the different operations.

as input. First, this network can localize. Secondly, the training data in terms
of patches is much larger than the number of training images. The resulting
network won the EM segmentation challenge at ISBI 2012 by a large margin.

Obviously, the strategy in Ciresan et al. [1] has two drawbacks. First, it
is quite slow because the network must be run separately for each patch, and
there is a lot of redundancy due to overlapping patches. Secondly, there is a
trade-off between localization accuracy and the use of context. Larger patches
require more max-pooling layers that reduce the localization accuracy, while
small patches allow the network to see only little context. More recent approaches
[11,4] proposed a classifier output that takes into account the features from
multiple layers. Good localization and the use of context are possible at the
same time.

In this paper, we build upon a more elegant architecture, the so-called “fully
convolutional network” [9]. We modify and extend this architecture such that it
works with very few training images and yields more precise segmentations; see
Figure 1. The main idea in [9] is to supplement a usual contracting network by
successive layers, where pooling operators are replaced by upsampling operators.
Hence, these layers increase the resolution of the output. In order to localize, high
resolution features from the contracting path are combined with the upsampled

出典元:U-Net: Convolutional Networks for Biomedical Image Segmentation
https://arxiv.org/pdf/1505.04597.pdf

U-Netとはノイズ画像から生成画像を推論する際に、物体の境界(セグメンテーション)を推定する為のネットワークです。

ノイズ画像

Stable Diffusion、またはLatent Diffusionの学習手法は以下の通りです。

出典元:Github - Latent Diffusion
https://github.com/CompVis/latent-diffusion

このように、拡散モデルとはノイズ画像からセグメントを推論して生成しています。
データセット学習はその逆で、画像を一度ノイズ化し、それを元画像に復元するといった形で学習しています。

よく多くの方が間違えられるのですが、AIはその物体が何なのか、その概念を認識しているわけではありません。

言うなれば、人間の指は原則5本である、と我々人間の概念を学習しているわけではないということです。

ぼんやりと想像してみてください。
このノイズ画像に人間のような概念が存在するでしょうか。

AI学習と聞くと、人間のような学習をイメージするかと思いますが、近しいようで実際は違います。
それを1つずつ紐解いていきます。

人工ニューロン

人間の思考などは、脳内の神経細胞(ニューロン)によって伝達されています。

出典元:Wikipedia - 神経細胞
https://ja.wikipedia.org/wiki/%E7%A5%9E%E7%B5%8C%E7%B4%B0%E8%83%9E

シナプスと呼ばれる電気信号の送受を行って、ニューロン同士の伝達を行っています。
この仕組みをAIへ応用したのがニューラルネットワークです。
ニューラルネットワークとは、人間の脳神経の仕組みを数理モデル化したもので、人間のニューロンを疑似的に構成したネットワークです。

パーセプトロン

上図は単純パーセプトロンと呼ばれ、ステップ関数(矩形波様のグラフ)になります。
これは、ニューロンを基礎的に数理モデル化したものですが、実際のニューラルネットワークはシグモイド関数(ステップ関数を連続段階的に表現し、指数関数曲線様のグラフ)を用いているというのが、少々違っています。

いくつかニューラルネットワークに種類はあるものの、画像生成系で使われているニューラルネットワークは畳み込みニューラルネットワーク(Convolutional Neural Network:CNN)が利用されています。

畳み込みニューラルネットワークとは、セグメント毎に画像を見たときに、画像の特徴を際立たせ、特徴を抽出していきます。
これによって、画像の特徴をマップ化し、作成するのがこの畳み込みニューラルネットワークです。

ニューラルネットワークでは様々なバイアスを数値化して処理されるが故に、そのバイアスが何を指しているか、それはどういう概念なのか、どういう感情なのかは示されません。
あくまでも、意図するものがどのような特徴があるのか、を数学的処理しているにしか過ぎません。

ここに関して言うと、人間の思考ではもっと複雑に解釈していますよね。
ここが人間とAIの大きく異なる点です。

AIが指を苦手とする原因

ようやく本題です。
ここまで見てくれば、何となくふわっと想像できますよね。

指という形状は、多関節であり、かつ様々な重なりをします。
AIが指を苦手とする原因として挙げられるのは以下です。

  • そもそも手=指5本であるという概念自体、AIは持っていない

  • 手=指5本という概念が全くない状態で、手というものの特徴を小分けにした物体のセグメント単位で、その境界を数値化し、特徴を算出しているだけに過ぎない

  • 様々な重なりをする手のシチュエーションは、複雑すぎて特徴の数値化をする際、算出結果が期待値通りに処理されない

  • そもそも関節がどのように曲がるか、という可動範囲の概念もAIには存在しない

  • 爪の光沢や関節、手の皺などは高度なレンダリング技術が必要であり、現時点のGenerative AIでは再現するのに限度がある

つまり、人間的思考で言えば「パスタを見たことも食べたこともない人(パスタという概念がない人)に、パスタの特徴だけを与えて(学習させて)、パスタを作れ(生成しろ)」と言ってるのと同じなので、期待値通りの結果になりにくい、ということです。

では、どのようにアプローチするのか

完璧に対処するのは現状無理ですが、手に特化した学習モデルがあるのも事実です。
しかし、手に特化した学習モデルだと、各々が生成したいものとは乖離しすぎてたりします。

では、与えるバイアス・情報を付加させてあげればいいのではないか(=特徴の数値化に変化を付ける)というアプローチを取ろうと思います。

とてもいい例が、ぶるぺんさん(@blue_pen5805)がツイートしたwakame74法です。

wakameをトークン化すると、2トークン使用されています。

wakameトークン情報

wakが11172、ameが780として数値化されニューラルネットワークに渡されています。

今回のアプローチはこのトークン情報が鍵になります。
これは次回の研究シリーズ記事までお待ちください。

おわりに

今回は、初のシリーズ化である研究記事、画像生成AIにおける指に関する研究をお伝えしました。
Generative AIにおいて、指は最大かつ最も困難な課題です。

完璧に再現することはできないかもしれませんが、少しでも妥協できる部分を個人的に研究していきたいと思っています。

次回の研究記事をお楽しみに!

次の記事


この記事が参加している募集

AIとやってみた

よろしければサポートお願いします!✨ 頂いたサポート費用は活動費(電気代や設備費用)に使わさせて頂きます!✨