💡

MacでターミナルからローカルLLMで画像認識

2025/02/06に公開

使うもの

  • ローカルでLLMを動かす仕組み
  • VLM(Vision Language Model)
    • llama3.2-vision
      • llamaの現在の最新版
    • llava-phi3
      • Phi3 mini でファインチューニングしたモデル
    • llava-llama3
      • Llama3でファインチューニングしたモデル

(先に)所感

まぁ全般的にllama3.2-visionが良い気がしますが、まだまだモデルなりプロンプトの改善の余地は大きいですね...。

あと、llama3.2-vision は手元のMacだと遅いです。

やり方

モデルのpull

ollama serve

serve してから pull

ollama pull llava-phi3

and

ollama pull llava-llama3

画像認識させてみる

bldg.jpg

llama3.2-vision

$ ollama run llama3.2-vision "この画像を短い日本語で説明して: ./bldg.jpg"

Added image './bldg.jpg'
画像は、東京の北千住駅(地上8階建て)に隣接する複合商業施設である「ツタヤプラザ」の外観です。Tsutayaプラザは、書籍やCD/DVDなどの文化関連商品の販売を主体とする大型店舗で、2016年から
2020年まで東京駅ビルディングでも営業されていました。
画像には、商業施設のファサードに、タオルストア「TSUTAYA」、カフェ「STARBUCKS COFFEE」などの看板が見えます。建物の外観は、白い壁面とガラス張りの大きな窓から構成されており、これらの特徴
により、ツタヤプラザは商業施設としての機能に加えて、文化的な空間としても機能します。

画像は、北千住駅の最寄りにある「TSUTAYAプラザ」の外観です。この複合商業施設には、書籍やCD/DVDなどの文化関連商品を販売する大型店舗「ツタヤ」が入っており、また、カフェ「スターバックスコ
ーヒー」や、衣料品の売り場なども併設されています。
この複合商業施設は、2016年から2020年まで東京駅ビルディングでも営業されていました。画像には、ツタヤプラザのファサードに、書籍やCD/DVDなどの文化関連商品を販売する大型店舗「TSUTAYA」、カ
フェ「STARBUCKS COFFEE」などの看板が見えます。
この複合商業施設の外観は、白い壁面とガラス張りの大きな窓から構成されており、これらの特徴により、この建物は商業施設としての機能に加えて、文化的な空間としても機能します。

北千住笑う(うそです)

llava-phi3

$ ollama run llava-phi3 "この画像を短い日本語で説明して: ./bldg.jpg"
Added image './bldg.jpg'

大型挽具屋「FUTAYA」が主干部となっており、多色の店铺用品を展示することが特徴です。白色の屋根や板製建物、窗口、推薦柜、壁挂画、踏入口、人行道、墓地、電車線、牛鹿など多くの背景がありま
す。

llava-llama3

$  ollama run llava-llama3 "この画像を短い日本語で説明して: ./bldg.jpg"
Added image './bldg.jpg'
日常的な都市景色があります。店舗の外部は白色と金属装潢、屋頂は灰色です。店舗には多く広告が附きされており、様々な店舗が営まれています。屋上に大きな黄字で「TSUTAYA」が書かれています。

店舗の外部には金属格子状の装潢があります。屋上には「日用品」という文字が書かれており、商店の性質を示しているように見えます。店舗周囲は都市景観の中であり、市内街道上での行人や車流が確
認できます。

店舗本体は金属格子状の装潢と屋頂は灰色で、整体印象として商店が位置する街区に充実した存在感を与えることができると考えられます。

ユースケース#1:画像の中身からファイル名生成

もともと考えていたのは、画像の中身から適切なファイル名が生成できたらよいなということ。例えば以下のようなイメージ。

bldg.jpg

llama3.2-vision

 $ ollama run llama3.2-vision "この画像の内容から、ascii文字30文字以内、スペースはアンダースコアにして、すべて小文字で、拡張子付きファイル名を1件出力して: ./bldg.jpg"
Added image './bldg.jpg'
tsutaya_starbucks.jpg

これは優秀(だが、たまにおかしくなるが...)

llava-phi3

$  ollama run llava-phi3 "この画像の内容から、ascii文字30文字以内、スペースはアンダースコアにして、すべて小文字で、拡張子付きファイル名を1件出力して: ./bldg.jpg"
Added image './bldg.jpg'
\```css
sutaya-tokyo-shibuya-yokohama.jpg
\```

llava-llama3

$ ollama run llava-llama3 "この画像の内容から、ascii文字30文字以内、スペースはアンダースコアにして、すべて小文字で、拡張子付きファイル名を1件出力して: ./bldg.jpg"
Added image './bldg.jpg'
tsutaya.

ユースケース#2:OCR

fami.jpg

llama3.2-vision

$ ollama run llama3.2-vision "テキストは何と書いていますか? ./fami.jpg"
Added image './fami.jpg'
これは、ファミリーマートの店舗である「FamilyMart」の日本語表記、「ファミリーマート」という意味のロゴです。

llava-phi3

$ ollama run llava-phi3 "テキストは何と書いていますか? ./fami.jpg"
Added image './fami.jpg'

テキストの説明です。

・スタッフの男性が横断している場合、役割に違反する人を引き分けるよう努力をします。

・コンビニャージャンプ

llava-llama3

$ ollama run llava-llama3 "テキストは何と書いていますか? ./fami.jpg"
Added image './fami.jpg'
FamilyMart is located in front of the building. The photo has been taken from a street corner perspective, and a car can be seen on the right side of the image. The building itself
is constructed of brick and has a sign that reads "FamilyMart". The sky above is blue, and there are power lines visible. There are also two individuals standing in front of the
store. One of them appears to be wearing a black shirt.

余談1:VLMの結果をphi3.5などに食わせると案外良いかも

$ ollama run phi3.5 <<< "以下のようなdescriptionの画像があります、以下の説明からascii文字30文字以内、スペースはアンダースコアにして、すべて小文字で、拡張子付きファイル
  を1件出力して。\\これは、ファミリーマートの店舗である「FamilyMart」の日本語表記、「ファミリーマート」という意味のロゴです。\\ "
familymart_.jpg

参考にしたもの

Discussion