見出し画像

[旅するAI bot]リアル+2Dキャラクタimage2image画像合成にマルチモーダルAIを使って画像のリアルさを強化する

そもそもは、この記事を書こうと思って、でも前提として「旅botを説明していないな」と気づいて以下の旅botの紹介をしたのです。

で、先日旅botの機能追加中に「ほー」と思った表題の話しを記します。


旅botの背景合成の従来方法

これもよくよく考えたら、従来方法の方も細かく説明すべきところなのですがそれはまた後日にします。すでに新方法の方を説明の方を書いてしまったので。。。
おそらくこの付近の技術に詳しい人は以下のフローを見るだけでだいたい何をやっているかは想像がつくと思います。

旅botの画像合成(従来方法)
Google StreetView Staticの取得画像
上記処理での合成画像

実際のプロセスでは、出力はかなり崩れた絵が多く出ます。ですから、それを改善し、見た目を改良するために、実際にはフィルターや再加工処理、再生成処理がいろいろ含まれています。
このプロセスで普通にStableDiffusionのmodelを使っただけでも、非常に多くの異なるキャラクターが生成されますがある程度無難な絵が出ます。

マルチモーダルAIを使ったリアル化方法

この方法ではマルチモーダルAIを使用し、一旦背景の解析を行います。
最近噂になっているLLaVA ( https://github.com/haotian-liu/LLaVA )を使っています。
この解析は、背景の各要素を詳細に調査し、それらの要素がどのように相互作用しているかを理解することを含みます。
得られた情報を使って、画像の状況に合わせたプロンプトを生成して画像生成プロンプトに追加します。
これにより、背景の特性に合わせて調整されたキャラクタ画像が得られます。
次に、StableDiffusion i2iで画像を生成します。このときマルチモーダルAIで解析したシーンの状況をプロンプトの形に追記する形でキャラクタのプロンプトに追加しています。
この組み合わせにより、より背景に対してありそうなしぐさを指示されます。完全ではないにしろしぐさプロンプトによってリアルさの増したキャラクタ画像が出るようになります。この結果より現実にありそうな描写が行われるようになります。
元々i2iでも、背景画像の学習知識から、この背景にありそうなしぐさをしていることは多いです。
しかし一旦マルチモーダルAIで背景画像を解析し、かつ「この背景に似合うしぐさを教えてください」という形で問い合わせると(マルチモーダルAIが十分賢ければ)i2iで作られるしぐさよりもう一段シーンを熟読したしぐさになります。

旅botの画像合成(新方法)

最近mi達には、StreetView staticによる旅程の画像に加えて、付近の建物/名所の画像も出力するように追加しています。今回の新方式は2枚目の名所写真のみで1枚目の旅程の画像は従来通りのままです(さらに言えばマルチモーダルAIで画面を粗分類しており、新方法が効果的と判定した画面のみ新方式を使っています)。
処理が複雑な分、時間がかかって重いという話しもあるのですが、一番の理由は、旅程のStreetView staticは道を機械的に撮影している360度写真が多いので従来ままでほぼ問題がないのに対して、名所写真は人によって見栄え良く鋭角や接写の撮影演出が写真にあるため、使う写真を解析しておかないとまったく的外れなしぐさになってしまうためです。

出力例

ちょっとおしゃれなうどん店の写真です。

Google Map APIより

LLaVAは入力画像から酒場と判定(実際は酒類も出すうどん屋)してお酒を持った女性が集うシーンがよいと判断し以下の出力を出しました。

To create the scene with the girl and the two people at the bar, one more girl should stand at the counter of the restaurant, facing the camera. She should be holding a wine glass, which will complete the scene by matching the other two people's pose.The three individuals together will create a more complete and engaging representation of a typical social gathering at a bar or restaurant.
(DeepL翻訳: 女の子とバーにいる2人のシーンを演出するために、もう1人女の子をレストランのカウンターに立たせ、カメラに向かわせる。彼女はワイングラスを持ち、他の2人のポーズと合わせることでシーンを完成させる。3人が揃うことで、バーやレストランでの典型的な社交の場がより完全で魅力的に表現される。)

これから作られた画像は以下で、お酒をこじゃれて持った出力になっています。

次の例はお墓の写真でなんなのですが、プロンプト上ではここがお墓であることを判別し、花を持つ絵が出ています。

ふと思ったけど「AIが墓に花を手向ける世界で初の写真」かもしれない

プロンプトが複雑になるため、画像の失敗率はかなり上昇します。しかし、従来のi2i変換ではほとんど見られない新たなシーンの合成が可能になります。つまり、複雑性が増すことで、より多様な視覚的表現が可能になり、これまでにない結果が得られる可能性があります。
マルチモーダルAIが出力したプロンプトを、言語認識が得意なAI(例えばChatGPT4)で画像生成用プロンプトに再構築することで、出力の安定化と改良が可能になると考えています。また、こういう多数LLMを組み合わせたときのパイプラインの仕組みや記述の方法も共通化・一般化されればよいなと思います。

旅botの画像合成(予定)

GPT-4, GPT-4V生成例追加 (2023/11/11 追記)

上記のプロンプト整理の仕組みはGPT4で現在追加しています。また画像を評価するマルチモーダルAIも gpt-4-vision-preview を使えるようにしています。ランダムでLLaVAとgpt-4-vision-previewを切り替えて生成しています。

GPT-4Vに「背景に最適なポーズ」を問い合わせる

To create a natural and engaging scene in front of this convenience store, please follow these instructions:\n\n1. Position: Ask the girl to stand on the sidewalk near the bicycle parking area, to the left of the store entrance as we look at the photo (to the right of the entrance from her perspective). This places her in a spot that has lighting and visibility without blocking the entrance.\n\n2. Pose: Have her lean slightly against one of the bicycle parking stands (if it is permissible), with one foot flat on the ground and the other resting on its toe, giving a casual, relaxed look. Alternatively, she could stand erect with a shopping bag in one hand as if she just exited the store, providing context to her presence.\n\n3. Expression: Instruct her to have a soft, friendly smile looking slightly towards the camera, suggesting an everyday moment of happiness or contentment.\n\n4. Props: If possible, give her a small prop relevant to the convenience store setting, like a beverage or a snack. This can add to the natural feel of the scene and give her something to do with her hands.\n\n5. Clothing: To match the casual setting, she should wear everyday clothing that's comfortable and seasonally appropriate.\n\n6. Interaction (optional): If there are other people within the scene, you could instruct her to engage with them, like sharing a joke or greeting, to create a dynamic scene. However, make sure everyone is comfortable with being photographed and part of the setting.\n\n7

Deepl翻訳
このコンビニの前で、自然で魅力的なシーンを作るには、以下の指示に従ってください。位置を決める: 位置:駐輪場近くの歩道で、写真を見て店の入り口の左側(彼女から見て入り口の右側)に立ってもらう。入口を遮ることなく、照明と視界が確保できる場所に立たせる。ポーズ:駐輪スタンド(許可されている場合)に少し寄りかからせ、片足は地面に平らに、もう片方の足はつま先立ちにして、さりげなくリラックスした表情を見せる。あるいは、店から出たばかりのように、片手に買い物袋を持って直立させ、彼女の存在に文脈を与える。表情: 表情:カメラに向かって少し微笑むように指示し、日常の幸福感や満足感を暗示する。小道具:可能であれば、飲み物やお菓子など、コンビニエンスストアに関連した小道具を渡しましょう。シーンの自然な雰囲気が増し、彼女の手を動かすことができます。服装:カジュアルな設定に合うように、彼女は着心地がよく季節に合った普段着を着る。交流(任意): シーン内に他の人がいる場合は、冗談や挨拶を交わすように指示すると、ダイナミックなシーンになります。ただし、全員が撮影に慣れていることを確認してください。

GPT-4にプロンプトの整理を依頼

- Place a girl standing on the sidewalk to the left of the convenience store entrance, beside the bicycle parking, leaning slightly against a bike stand with one foot resting on its toe and the other flat on the ground.\n- Have the girl hold a shopping bag in one hand as if she has just exited the store.\n- Direct her to smile softly towards the camera for a look of everyday contentment.\n- Include a small prop such as a beverage or snack in her hand to enhance the convenience store vibe.\n- If there are others in the scene, capture an interaction like her sharing a joke or greeting someone to add dynamism.

Deepl翻訳
- コンビニエンスストアの入り口の左側、駐輪場の脇の歩道に女の子を立たせ、片足をつま先に乗せ、もう片方の足を平らにして、自転車スタンドに少し寄りかからせる。 \手に飲み物やスナックなどの小さな小道具を持たせると、コンビニの雰囲気が高まります。 ⑷シーンに他の人がいる場合は、冗談を言い合ったり、誰かに挨拶したりするやりとりを撮影すると、躍動感が出ます。

中間生成画像

旅botへの応用に関しては、LLaVAもGPT-4Vも同様に善戦しており大きな差はないように思えます。
というか、マルチモーダルAIが面白い指示を出しても画像生成の結果で人の像が大きく崩れていたり小さすぎて目立たないなどの理由で画像が却下されていることが多く、最終結果にまで反映されたものはLLaVAもGPT-4Vも似たタイプの画面になっているというのもありますが。

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

AIとやってみた

この記事が気に入ったらサポートをしてみませんか?