← Blog AI / 検証実験 / デイリーAI

焦点距離シミュレーターで​生成AIを​比較​(Nano Banana Pro,ChatGPT Images 2.5)

生成AIにおける焦点距離の比較では、プロンプトのみだと焦点距離の指定はある程度しか効果がないことがわかった。焦点距離シミュレーターがあれば正確な構図での生成が可能だと考え前回の記事で制作した。今回はそのシミュレーターを用い、本当に正確な比較が作れるのかを検証した。

結論から書くと、Nano Banana Proは人物の大きさをかなり正確に生成できたが、ボケ感は再現できなかった。なので追加でChatGPTのImages 2.5でも同様に生成して比較検証した。

検証の方法

条件は前回と同様。

  • 森の中に笑顔の女性が立つ写真(前回のベース画像)を参照に使う
  • 焦点距離は18・28・35・50・80・150・300・600mmの8段階(35mm判換算)、f/2.8
  • パターン1:カメラを人物から20mの位置に固定し、焦点距離だけを変える
  • パターン2:顔が同じ大きさに写るように、カメラを0.54m〜18mで前後させる(距離は焦点距離×0.03m)

シミュレーターで書き出した構図画像と深度マップを一緒にリファレンス画像として添付した。

シミュレーターの構図画像(パターン1)
シミュレーターの構図画像(パターン1)
シミュレーターの構図画像(パターン2)
シミュレーターの構図画像(パターン2)

シミュレーターの「森」のひな形をそのまま使用し、人物の服と髪だけベース画像に合わせた。16枚の構図画像の書き出しとプロンプト作りはClaudeにまかせている。

18mmのプロンプト
画像1の質感と、画像2・3の構図を組み合わせた新しい写真を生成してください。
画像1(質感の参照):写真の質感だけを使う。実写の松林と木肌、ゴールデンアワーの暖かい光、木漏れ日、フィルム調の色味。女性の外見(肩までのウェーブした濃い茶髪、白い無地のオーバーサイズTシャツ)は維持する。
画像2・3(構図の参照):レイアウト、カメラ位置、奥行きだけを使う。低い目線から撮った引きのワイドショット。画面下半分近くを芝生の広場が占める。女性は画面中央の奥、森の手前に小さく立つ。背景は背の高い松の木が横一面に並び、森の縁に低い茂みがある。木々の上と隙間に明るい空が見える。
画像2・3のローポリの三角形の木、CGのベタ塗りの色、平坦なライティングは再現しない。画像1のバストアップの画角も維持しない。木は画像1のようなリアルな松の木、芝生も同じ暖かい低い日差しで照らされた本物の草にする。

残りの15枚は、焦点距離ごとの数値を変更してClaude Codeに記述してもらった。人物の身長が画像の高さの何%に位置しているのか、足が上から何%の位置にくるかなどをカメラの画角から計算している。

数値を入れたプロンプトの例(パターン1・80mm)
画像1の質感と、画像2・3の構図を組み合わせた新しい写真を生成してください。
画像1(質感の参照):写真の質感だけを使う。実写の松林と木肌、ゴールデンアワーの暖かい光、木漏れ日、フィルム調の色味。女性の外見(肩までのウェーブした濃い茶髪、白い無地のオーバーサイズTシャツ)は維持する。
画像2・3(構図の参照):レイアウト、カメラ位置、奥行きだけを使う。80mmのレンズ(35mm判換算)で、女性から20.00m離れた位置、高さ1.42mから水平に、正面から撮る。f/2.8で、ピントは目。16:9。女性は画面の左右中央、森の手前に立つ。頭から足まで全身が写り、身長は画像の高さの約33%。足は画像の上から約78%の位置で芝生についている。カメラは女性の首の高さで水平なので、地平線は画面の上下中央にくる。画面の下3割ほどを芝生が占める。女性の約10m後ろが森の縁。その距離で画面の横幅は約13.5mぶんなので、太さ40cmの松の幹は画像の横幅の約3.0%に写る。空は見えない。数本の松の幹と、森の縁の茂みが背景になる。背景はわずかにやわらかい。
画像2・3のローポリの三角形の木、CGのベタ塗りの色、平坦なライティング、マネキンのような人物は再現しない。画像1のバストアップの画角も維持しない。女性はライトブルーのデニムを履き、腕を自然に下ろしてまっすぐ立つ。木は画像1のようなリアルな松の木、芝生も同じ暖かい低い日差しで照らされた本物の草にする。

Nano Banana Proの結果

Nano Banana Proの16枚(上2段がパターン1、下2段がパターン2)
Nano Banana Proの16枚(上2段がパターン1、下2段がパターン2)

パターン1はかなりいい感じに見える。18mmでは豆粒サイズほど小さく、600mmでは顔がアップになっている。人物の大きさを計測すると、8枚すべてが計算の±2割以内に収まった。前回はAIの600mmが計算上の150mmくらいの写り方だったので、構図画像を渡すだけでかなり正確になった。

パターン1:計算上の人物の輪郭(ピンク)と生成された人物
パターン1:計算上の人物の輪郭(ピンク)と生成された人物

ピンクの線がシミュレーターで計算した人物の輪郭でNano Banana Proは輪郭とほぼぴったり重なっている。

しかしパターン2は苦戦して28mmから600mmまで、背景がほとんど同じ絵になってしまった。焦点距離が長くなれば背景はボケて大きく写るはずなのにボケも圧縮も変わらない結果になった。

調べると、28〜600mmの背景はベース画像とほぼ同じだった。パターン2の構図(胸から上で中央)がたまたまベース画像とそっくりだったので、ベース画像をほぼそのまま返してきた感じだ。

パターン2:シミュレーターとNano Banana Pro、ChatGPT
パターン2:シミュレーターとNano Banana Pro、ChatGPT

ChatGPT Images 2.5でも生成してみた

Claude Codeは画像を生成できないので、Nano Banana Proの生成は自分でhiggsfieldから生成していた。ボケ感が再現できなかったので、画像生成ができるCodexに同じプロンプトを渡して、ChatGPT Images 2.5の画像生成で16枚生成した。

ChatGPTの16枚(上2段がパターン1、下2段がパターン2)
ChatGPTの16枚(上2段がパターン1、下2段がパターン2)

並べて比較

左からシミュレーター、Nano Banana Pro、ChatGPT。人物の大きさをmacOSの人物・顔検出で測り、計算の何倍かを出した(1.00がぴったり)。

焦点距離Nano Banana ProChatGPT
18mm1.192.15
28mm1.172.30
35mm1.082.64
50mm1.092.34
80mm1.001.63
150mm1.061.40
300mm1.101.10
600mm0.930.70

パターン1の人物の大きさ(18〜80mmは身長で比較。足が切れる150mm以降は、80mmの値から肩幅の伸び方で計算)

パターン1:8枚すべてに計算上の輪郭を重ねた
パターン1:8枚すべてに計算上の輪郭を重ねた

パターン1はNano Banana Proの圧勝。ChatGPTは広角で人物を2倍以上大きく生成し、600mmでは逆に3割ほど小さく生成される。焦点距離の差を縮める方向にずれていて、前回のプロンプトだけの検証と同じ傾向だった。数値をプロンプトに書いても18mmは2倍のまま。

逆にパターン2はChatGPTのほうが強い。背景は毎回ちゃんと描き直していて、ボケ感は焦点距離が長くなるほど強くなり望遠らしい圧縮も出ている。

パターン2:背景のボケの再現度
パターン2:背景のボケの再現度

左の円が計算上のボケの大きさになる。18mmでは画面の横幅の0.6%しかないが、600mmでは7.3%まで大きくなる。右下の数字は再現度になる。それぞれのモデルの18mmの写真に計算どおりのボケをかけたものを正解として、背景の輪郭がどれだけ弱まったかを割合にしている。ChatGPTは35mm以降ずっと7〜8割でボケをかなり再現できている。Nano Banana Proは4〜6割で焦点距離を伸ばしても上がらない。

2つのモデルの個性

  • Nano Banana Pro:参照画像をなるべく残し構図画像の位置や大きさにはとても忠実だが、ベース画像と構図が近いとベース画像をほぼそのまま返してしまう傾向が見られた。
  • ChatGPT:毎回ゼロから生成し直す。「強くボケる」「圧縮効果」のような言葉にはよく従うが、人物の大きさのような数値は守らず、写真としてありがちな絵に寄せる印象。

まとめ

シミュレーターで構図画像を渡すと、少なくともNano Banana Proでは人物の大きさがかなり正確になった。プロンプトで「85mmで撮って」と頼むより、構図そのものを画像で渡すほうが確実か?という前回の予想は半分的中してるが、個人的にはもっとうまくいくと思っていた..今回の2つのモデルでは、大きさとボケの両方を正確に出せたものない。大きさを合わせたいならNano Banana Pro、ボケの変化を見せたいならChatGPT、という使い分けになりそう。参照画像と構図が似すぎるとNano Banana Proは焦点距離を無視するので、ベース画像は顔と服の参照用に切り抜いたものを渡すとより良い結果になるかもしれない。