
『トゥームレイダー』シリーズの主人公として知られ、美しく強い女性である「ララ・クロフト」を、AIの力でローポリゴンから実写風のイラストに変換してもらう企画を以前行いました。では、もっと情報量が少ないドット絵ではどうなるのか?ということで、今回の記事ではファミコンや、のちにミニファミコンの特別版などにも収録されている『ドラゴンボールZ 強襲!サイヤ人』から、「孫悟空」のドット絵で実験してみます。
サンプルとなるのは戦闘シーン。コマンドに合わせてなめらかに格闘戦を行うキャラクター達に当時衝撃を受けたプレイヤーは多いのではないでしょうか?対象をアップにしないとまともに認識しないことを認識しているのでトリミングして切り出します。

さすが国民的キャラクターの一人。この解像度でも悟空とだと認識できる人は多いと思います。
いざ生成テスト開始
前回と同じく「Stable Diffusion web UI」上で生成、モデルは「sd-v1-4.ckpt」を使用し、ひとまずプロンプト(AIに指示として与えるワード)も全く入れずに試してみます。先に断っておきますと、記事中の画像は大量に生成した中から筆者が選定して取り上げているものであり、人間のバイアスが掛かっていることにご留意ください。
いくつか生成してみた結果がこちら。

これはひどいと言わざるを得ない結果に。ぐちゃぐちゃになってしまい、とても人の目には悟空とは認識しにくい姿になってしまいました。全体的にこのような方向性の出力ばかりで、形状こそ掴んでいるものの、人型であるとは認識していないといったところでしょうか。
面白い出力結果としては、丸鶏のような何かや、

こちらはかなり外れ値ですが、コントローラーのアイコンのようなものまで。

人間であればあのドット絵を見て、それが人であること、悟空であることを認識できる人が多いと思いますから、ある意味興味深い結果と言える気がします。
「Denoising strength」という元画像をどのくらい保持するかを決めるボリュームを調整してみるとこちら。

確かに悟空っぽくはありますが、決して“良くなった”とは言えない結果に。いかに元のドット絵が洗練されていたかを実感します。また、この結果から分かる通り、画像を入力しても、それ専用に学習させたAIでもない限りは「入力された画像が何であるか」を現状世代のAIは知りません。我々の多くが元のドット絵を一瞬で「孫悟空」だとわかるのは、そういうキャラデザインの紐付が頭の中で行われているからですね。
プロンプトで「悟空」を明示的に指定してみる
さて、このままでは話にならないので、プロンプトに一つ、「Goku」を加えてみましょう。結果としてAIは、入力されたドット絵がデータベースにある「孫悟空」ないし「悟空」と呼ばれる存在だと認識します。

かなり悟空な結果に。というより、一気に悟空になりすぎて逆に不安になります。

並べてみるとこのような感じ。顔は崩れているパターンが多いですが、それにしてもあまりに高精細になりすぎて、納得感が薄い気がします。顔だけは、ついに正式サービスの始まった『ドラゴンボール ザ ブレイカーズ』で作ったそっくりさんキャラより似てないと思いますが!
その後も回数を重ねましたが、概ね似たような結果になりました。世界的に人気で学習対象も多かったであろう、プロンプト「Goku」が強すぎるとも、むしろ言われなければAIには悟空ほどのキャラクターですらそうだと判断できないとも言えます。もちろんプロンプトの強度を下げることもできますが、ここまで一気に変わるとは驚きです。
さらに気が付いたポイントとして、元のドット絵は悟空から見て左前を向いている、身体もややそちらに向かって構えているのに対し、それを受け取ったAIはほぼ真正面向きの構図でしか出力してくれない、という問題点があります。ここもAIのやっていることの一部が理解しやすいポイントで、AIは元のドット絵を正確に認識しているというよりは、構図の参考程度にして再構築していると言うべきかもしれません。
再構築するのであれば、何でもできる。
ここで、やっていることを振り返ると…。
もしかして山吹色であれば何でも道着になってしまうのでは?と疑問が出てきたので、冷蔵庫からニンジンを取り出して撮影してみました。

さて、人間としては「これを悟空にしろ」と言われても困ってしまいますが、どうなるでしょうか?プロンプトに「Goku」を入れて試してみます。

やりました。野菜がスーパーサイヤ人へ化けました。顔はどうしても崩れがちなのですが、補正するオプションを用いても、顔アップでなければ効果的でないというのが筆者の環境での現状です。
悟空と言われれば悟空にしてくれるのであれば、元のドット絵に「Vegeta」のプロンプトを与えればもしかすると…?

やはり構図は参考程度に、ベジータを出力してくれます。
結論
全体を通して、Stable Diffusion AIの視点や特性が見えた実験結果となったのではないでしょうか?
今回はドット絵を用いたことや、実際に得たい出力もアニメ寄りのイラストであったため、また違った視点からAIの力を見ることができました。元画像が斜め向きであることを判定できていないなど興味深い点も見つかり、ドット絵が作り込まれていることを再確認できるなど、良い機会になったと思います。