🚀

日本酒選びをサポート:画像認識とLLMを活用した機能開発の試み

2024/07/05に公開
2
  • 食に関連するタスクを主にLLMを用いて色々とこなしてみることにします。
  • その一環として、本記事では、日本酒について試してみることにします。

はじめに

私は日本酒が好きで、甘くて、じっとりした後味の日本酒が好きです。
新しいお酒を楽しみつつも、辛口や後味があっさりしたものは避けたいと思っています。
そういった、ニーズを支援するために、世の中にどういうアプリや仕組みがあればいいでしょうか?
色々とあると思いますが、酒屋で酒を買ったり、セルフでお酒を選ぶようなお店において、
日本酒の瓶の画像で酒の味を調べられるアプリがあると便利だと思いました。
そこで、そのような機能を実装してみました。

LLMx日本酒の評価

まずは、日本酒に関するLLMの能力を調べてみました。

LLMは日本酒の知識をどの程度持っているか?

まず、LLMが現状持っている能力のみで、お酒をおすすめできるかを知るために、
LLMの日本語の知識を評価してみました。

日本酒の知識に関しては、そこそこ持っているが、マイナーなお酒については知識がなかったり、
ハルシネーションが疑われるような回答があるけど、有名であれば、そこそこ新しいお酒にも対応しており、結構知識を持っているように思えます。


そのため、そのままでもそこそこ使えるものになっていると思います。

ただ、ただマイナーなお酒に関しても、Googleで検索するとデータがでてくるので、なぜ、回答できないのかがよくわからないです。予想ですが、企業によって、使うデータをある程度絞っていて、マイナーな情報は入っていないことが予想されます。確かに、知識をすべて入れ込むのはコストもかかるので、今後も、その状態が続くのではないでしょうか。もしくは、LLMの限界で知識が入り切らないか…?

VLMは日本酒のラベルをどの程度理解できるか?

次に、VLMに日本酒のラベルを与えた場合に、日本酒の銘柄を理解できるかを試してみました。結果的に、全然だめで、文字が入っているものに限って、ギリギリ酒の名前を当てられるという感じでした。こちらも、不思議な感じはしていて、銘柄の名前と写真が同じページにあることが多いので、そういった情報の紐付けはできそうな感じはしていますが、まだ、そこまで能力がないのかもしれません。

LLMは酒のデータベースを元に、おすすめのお酒を薦めることができるか?

日本酒の味や風味の情報が外部的に与えられたり、LLMの中にあるとして、風味や味の概念を理解して、おすすめのお酒を薦めることができるのか検証しました。下記を見てみると、味の解釈について明記させることで、味の解釈を正しくしつつ、おすすめのお酒を選択することができました。

弱点を埋めるべきか?

上記の簡易評価により、既存のLLMには弱点が2つあり、マイナーなお酒の知識がないということと、ラベルの情報がないことの2つということがわかりました。この2つの弱点を解決するユースケース上の理由と、技術上の理由はあるでしょうか?まず、ユースケース上の理由に関しまして、このアプリを使ってもらい、日本酒導入の敷居を下げ、日本酒を置く店を増やすことを目標にするのであれば、実はマイナーなお酒をサポートする必要はないのかもしれません。

どちらかというと、VLMを補うほうが重要なような気がしていて、なぜかというと、日本酒の瓶があるときに、それが何かを判別するのは少し難しいことも多いからです。同じ銘柄でも異なるラベルが複数あります。それをAIが理解してくれて教えてくれることで、店の人にとっては、手間の削減になったり、日本酒導入の敷居を下げてくれたり、一般ユーザにとっても、酒を購入する敷居が低くなったりします。

また技術上も、おそらく、酒の知識は早い段階で補われていくが、VLMに関しては、割と時間がかかるのではないかと思っています。それは、画像を学習することは負荷が大きく、データセットを絞る傾向が今後続く可能性があると思われるのと、そもそも、テキストと画像を紐付けないというデータセット自動構築上の課題の2つがあるからです。

そのため、VLMの弱点を埋めることは、今回のユースケース上も技術優位性の上でも価値があることだと思います。

機能の実装

そこで、VLMを改善したシステムを作ってみました。作った機能は、下記のスクリーンショットのように、自分の好みと、瓶の写真をアップロードすると、好みにあったお酒かどうかを判定してくれるシステムです。

システムの構成としては、まずは、酒の写真と、その酒に関する情報のペアをデータベースとして用意します。そして、アップロードした画像から、類似した画像を検索し、それに紐付いた日本酒情報を元にユーザの質問に回答します。今回のアプリケーションだと、好みと合致しているかどうかを判定するようにしました。RAGを画像検索で行っているようなイメージです。イメージは下記の図です。

このような画像を元に関連情報をとってくるようなシステムは、一般的なものに関する質問システムに利用することができます。例えば、商品の写真を撮影すると、レビューや使い方などを回答してくれるシステムなんかは、小売業で役立つかもしれません。日本酒ではなく、食べ物に関しても同様のことができるかもしれません。例えば、パン屋さんで、パンにカメラをかざすと味の説明がでてくるシステムを作ることができます。

システムの各コンポーネントの説明に移りますが、類似した画像の検索には、siglipを使いました。siglipは、画像とテキストを同じ特徴空間の特徴量に変換してくれる特徴量抽出器なのですが、大量のデータで学習されており、類似画像の検索も割とうまくやってくれるので今回採用しました。特徴ベクトルの近傍探索にはannoyを使いました。

本システムでいくつかうまくいった結果を載せます。


うまく行かなかったケースもあるのですが、これは、内部的に見ると、画像の類似度を見るときにお酒のラベルの類似度ではなく、写真の構図の類似度などが重視されてしまった結果で、ラベル領域をラベル画像として切り出して、その領域のみで画像検索することで改善すると思っています。

追記:
酒ラベルを検出するコードを書いて、酒ラベルのみで、検索するようにしてみましたが、
それでもうまく行かないケースが6割ほどありました。
画像特徴量を抽出するモデルを色々と変えてみましたが、
どれも、4割くらいの酒ラベルでしか類似画像を検索できませんでした。
色がついているなど、特徴的なラベルについては、十分に類似したラベルを検索できるのですが、
白黒の日本酒っぽい日本酒のラベルの場合は、うまく行かないことが多かったです。
これは、おそらく、こういう日本っぽいデザインのものは、十分に学習データがないからだと思われます。例えば、下記のようなラベル画像ではうまくいき、

下記のような画像ではうまく行きませんでした。

使った特徴量抽出機はsiglipの他に、

を試しました。

結論

  • LLMは、そこそこ日本酒の知識を持っている。新しいお酒でも人気のお酒、例えば、「風の森」なんかは知識として入っていた。
  • VLMは日本酒のラベルの知識までは学習していない。他の分野でもマイナーな知識は入っていないのではないかと想像する。
  • データセット観点と、学習負荷の観点から、VLMの成長のほうが遅そう。つまり、VLMの能力を補うサービスを作ったほうが、寿命が長そう。LLMの知識的な弱点を補っても早い段階で負ける気がしている。
  • 類似画像検索とLLMでLLMの機能を拡張できる。

さいごに

弊社Hen&Ai株式会社は、一緒に生成AIやAIを用いた事業に取り組む人を募集しています。副業でもかまいませんので、お手伝いいただける方は、ご連絡ください。

Discussion

りんだりんだ

僕も日本酒が好きで取り組み興味持ちました〜
Githubのリポジトリ等はありますか?

ゆうすけゆうすけ

コメントありがとうございます!
現状、Githubリポジトリはないのですが、
近日中にコードアップしますね!