見出し画像

AI絵日記をもうちょっとリアルにする

AI絵日記はいろいろ試行錯誤しながら楽しんでいる状況です。


テザリングの費用

朝と土日はテザリング接続で街を撮るようにしています。当初テザリングで携帯料金がえらいことになるんじゃないかと考えていたのですが、外出時には極力通信を使わないように作った結果、ギリギリ1ヶ月2G以内に収まっています。最低定額料金で済んでいるため携帯の通信料は今までと同じです。なのでこのままでよさそうです。

画像変換をもう少しリアルにする

AIが作った街画像はなかなか面白いのですが、目の前で見た画像とはちょっと乖離が大きいのです。

生成AIによる一人伝言ゲーム

絵日記に使っている変換は以下のようにシンプルなものです。

Llavaでの画像解釈(image to text)→Stable Diffusionによる画像生成(text to image)

伝言ゲームみたいな感じです。

(お店でうどんを食べている絵)
「この絵を見て次の人になにが書いてあったか伝えてください」
→「和風のお店の中です。人がお椀の中の白いものをつまんでいます。」
「この文章から絵を描いてください」
→(和食店であんみつを食べている女の人の絵)

StableDiffusionがテキストだけからシーン画像を生成するので安定した分かりやすい絵が出ます。
テキストに出た情報以上のものが最終画像に伝わらないのでプライバシーフィルタとしてはほぼ完璧なのですが、伝わらなすぎる面もあります。
例で言えば、うどんを食べている風の絵くらいにはなってほしい。

Llavaでの画像解釈(image to text)+元画像→Stable Diffusionによる画像生成(image to image, 解釈テキストをプロンプトとして入力)

にすればかなり現実に近くかつ細かい情報は丸められた絵になります。
プロンプトが画面の重要要素だけを強調してくれるので分かりやすくかつ細部は異なる絵になります。
ですが、walker端末の撮影は自動なので入力画像は通常結構傾いています。また大半は変な方向からの映えない画像です。

「自動で撮影する」という点は結構こだわっています。
本人が構えて撮影操作したら何が写っているのか自分で分かっているので、絵日記に変換しても、結果が想定出来ているので面白みがありません。自分が知らないうちに、自分の生活の一部がプライバシー的に困らないレベルで絵日記になっているので、自分が後で見て関心して楽しめるのです(面倒くさい事言ってますよね。。)
それにAIと共に過ごすのに、いつもカメラ撮影のことを考えていたら気になって本筋のことができません。
一日が終わって、AIに「今日はこんなことしてましたね。もうちょっと変わりばえのすることはしないのですか?」とまとめてドヤ顔で語って欲しいのです。

生成AIで画面の傾きを検出出来るか?

じゃ撮影した写真の傾きを補正することは出来るのか?
ネットでざっと調べると、傾き修正の話の多くは「スキャナでの読み込み原稿の傾き補正」の話です。
。。。ふと思ったのですが、確かに傾き補正の大半はOCRの精度改善のための工夫だったと自分の若い頃も本で読んでました。今の時代はどんなに傾いていても生成AIでほぼ完全に読み取れます。この頃の研究はほぼゴミ箱行きになったのです。。。結構えげつないですよね。。でも技術の進化ってそういうものだから仕方ないです。徒労だったら私も負けてはいないですし、発表出来ているだけいいのかもしれない。本気で負けたくなかったら自分達で生成AIを開発すべきだったのでしょう。話を戻します。。。

だったらLLMに「この画像は何度傾いていますか?」と聞いたらどうだろうか? GPT-4oなら答えそうな気がしますが、プライバシーの問題は未知数ですし、ここではローカルLLMにこだわります。

入力画像(先のXの橋写真の元)で傾き検出してみる

pali-gemma

記事見ていてPali-gemmaが単純な会話だけでなく、yoloみたいな解析出力が出来るので、これなら画像の傾きの問い合わせが行けるかなと試しました。

google/paligemma-3b-mix-224を使ってみました。

'' (無返答)

PaliGemmaは画像が傾いているか、は判断できませんでした。SLMとして組み込み用途を考えると下手な文章より空文で戻ってきたほうが加工しやすく、今風で便利とは言えるのかもしれない。

Llava

Llavaは何かと賢くて反応も早く、使いやすいマルチモーダルLLMだと思います。Llavaなら傾き判定してくれるかも。
oolamaのllava:7b-v1.6で確認してみる。

The picture is tilted to the right by approximately 20 degrees
The image appears to be tilted approximately 3 degrees counterclockwise from the vertical
The picture is tilted to the left
The image is tilted to the left by approximately 15 degrees

おお、行けるかも!
と、そこそこロジックを組んで試して見たのですが、同じ画像に対して「右に25度」「左に20度」「右に45度」「右に20度」・・・
合ってるケースもあるけど、全然異なる値のケースも結構出る。。
当てずっぽうではないかもしれないけど、信用出来るレベルではない。この目的では単に「自然に見える画面を得るには何度回せばよい?」目的で、これを逆方向に45度回されるとほぼ横向き画像になります。これではちょっと無理。。

参考までにGPT-4o

参考までにGPT-4oの画像入力でも試してみました。

The picture appears to be tilted to the right by approximately 20 degrees.
The picture is tilted counterclockwise. The degree of tilt appears to be approximately 15 degrees.
The picture is tilted counterclockwise by approximately 15 degrees.
The picture appears to be tilted counterclockwise. While it's difficult to determine the exact degree without proper tools, it looks to be approximately 10 to 15 degrees.

概ね安定に15度回転で検出出来ているようです。ただ右傾きなのになぜかcounterclockwiseと返してきます。反時計回りなので逆っぽくもあるのですが。

自然な画像傾き検出とかマルチモーダルSLMに丁度よい課題なのでは

「画像がどの程度傾いているか」の検出に特化したSLMとか組み込み用途で何か使えそうな気がしますがどうなんでしょうね。
画像の傾き検出とか多量に傾けた画像を食べさせればよいはずなので、小規模言語モデルの課題に丁度よいように思うのですが誰か作りませぬかね。
生体の視覚のニューロの傾き補正とかにも知見が得られそうだし。

とりあえずGPT-4oを使えばLLMを使った傾き補正は出来そうなのですが今回は傾きについては現状ままにしようと思いました。問題は装着時のカメラの傾きなので概ね20度くらい固定で回転補正することでよさそうですし。
それにクラウドに撮影画像を送るのはちょっと考えてしまいます。自分の画像だけならそう気にしないのですが、屋外撮影なので他人の画像が入っているかもしれませんし。

まぁi2iの場合の画像生成は傾きだけの問題ではなくそもそも「映えないシーンが多い」という本質的な問題のほうが大きいのです。これについては対策を検討中でそのうち適用予定です。

今回Pali-GemmaとLlavaを使って、ちょっと結果は微妙だったのですがそれぞれ期待はしているのです。
PaliGemmaのcaption,detectionやsegmentの指示だけで画像位置情報としての検出ができるとか(ただどんな語でもdetectionが出来る訳ではなくyoloサンプル語みたいな語しか反応しなかった?)。
Llavaは今、画面から今自分がどこにいるか(画像からのロケーション検出)をゴシゴシやらせてます。若干エラー閾値はいるのですが、「kitchen」とかでそこそこよい精度でどこにいるかを判定できるのですごく便利に使ってます。

text2imageもimage2imageもどちらも個々によさがある

text2imageもimage2imageもどちらもそれぞれの良さがあり、まだどちらに固定するか(またはランダム切り替えとか)はまだ決め切れていません。でも現状ではimage2imageをもう少し改良していくほうがよさそうに感じてます。

AI絵日記そのものも日常を俯瞰できるのでなかなか面白がってます。渋いことも言ってくるのですが上品すぎるAIと比べてそういうのも新鮮でよいのです。

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

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