こんにちは~ねこです✨
最近AIで画像を生成して遊ぶのにハマっています。
中でも料理の画像。これの妙な違和感がクセになってます。
例えば、「リアルな寿司の画像をたくさん生成してほしい」というようなプロンプトを出します。
すると、このようにお寿司がずら~っと生成されます。

これ、雰囲気は伝わってくるけど、よ~く見ると細部に変な所があるんですよね。

例えばこいつとか。
左側のマグロ?の上に、ワサビのようなものが乗っていますが、ワサビはあんまりネタの上に飾らないですよね。ショウガとかネギなら乗せますけど。

あと、いくらとウニの軍艦が並んでいるものが2セットでました。
左側は割と正解ぽいんですが、右側はいくらとウニが混ざってしまっているような感じがしますよね。チョットオイシクナサソウ…
とまあこのように、「大枠の雰囲気を掴めてるんだけど、微妙に細部が異なる」料理が生成され、その違和感の味わい深さにハマってしまいました(笑)
生成AI画像の違和感についての考察
この「雰囲気だけ合っていて、細部が異なる」の違和感の正体について考察しました。(一応なんちゃってデータサイエンティストだった…)
考えられる原因として、①学習データの平均化によって出力がぼやけるから②学習データに平均的でないものが入っているため。この2つかなあと。。。
①学習データの平均化によって出力がぼやける
まず①について、
画像生成AIは、プロンプト(指示文)に含まれる言葉に対応する特徴を、学習時に覚えた膨大な画像から抽出・統合します。そして、統計的に「もっともそれっぽい」画像をゼロから合成する、という仕組みになっています。
つまり、「○○っぽい画像とはなにか?」を統計的に理解しているので、特徴の平均や抽象的なイメージの生成は得意です。
もっと簡単に言うと、例えば猫の画像を生成AIに作ってもらおうとして、「猫の画像を出してほしい」とプロンプトを出すとします。
これで生成される画像は、「猫ってどんな見た目?」を100万人に聞いて、その共通点だけを抜き出して1枚にまとめたようなものです。
今回の寿司の画像も、「みんなが寿司としてイメージしそうなもの」をたくさん出力してもらったため、ウニといくらの中間のようなものが出てきてしまったわけです。
②学習データに平均的でないものが入っているため
②については、
私はMicrosoftのCopilotで画像生成を楽しんでいるんですが、そのCopilotの主な学習元は、Web上にある画像とそのキャプションです。
そのため、学習元の画像に本来寿司ではないもの(例えばマンゴーなどの果物)に「寿司」というキャプションが付けられていた場合、AIはそれを「寿司」として認識してしまいます。そうした誤った情報がノイズのように生成結果に影響を与えて、現実とは異なる寿司の画像が生まれてしまう…という風に考えられます*1。
実際にそのようなものが世の中に存在しているかいないかは考慮されていないため、ちょっと「ん?」っていうような不思議な具が生成されることがあります。
これが俗に言われるハルシネーションってやつですね。
上手くいかない場合はプロンプトを細かくする
また、プロンプトの細かさによっても出力が異なります。これは上記と違って、ユーザ側で調整が可能です。
私は遊びで使っているので精度はあまり気にしておらず、むしろ敢えて大まかにプロンプトを出してその結果を楽しんでしまっていますが・・・
もし画像生成AIを思いのままに動かしたい場合は、プロンプトで条件をかなり細かく指定する必要があります。
例えば、寿司の画像で言えば、「生成したいネタまで正確に指定する」、などすれば、謎のネタが生成される確率は下げられます。
(画像生成AIの仕組みに詳しい方ぜひツッコミありましたら教えてください!!)
生成AI料理の違和感はなんとも癖になるので、暇つぶしにおすすめです。
クセになりすぎてLINEスタンプもつくっちゃいました↓
*1:意図的にこれをやり、間違った結果を出力させる攻撃が存在しています(Adversarial Attack)。何気に近年のIPA試験でもこの出題ありましたね。一般ユーザーが普通のAI生成を使っててこの攻撃に遭遇する確率は、現在のところかなり低そうなので、ほぼ自然発生的なノイズによるものかと考えられます