Google がオープンソースで公開している生成 AI モデル Gemma で、画像ファイルに描かれた内容を解析して、キーワードをタグとして印字することをやってみました。
いつもどおり、ollama 環境で使います。配布されているモデルは、下記ページで参照が可能です。
https://ollama.com/library/gemma3/tags
今回は画像ファイルを読み込ませたいので、このページの表のうち「Input」が「Text, Image」になっているものを用います。「gemma3:4b-it-q8_0」をチョイスしました。
ollama pull gemma3:4b-it-q8_0
モデルファイルをプルしてきて、次で実行します。
$ ollama run gemma3:4b-it-q8_0
>>> こんにちは。100文字程度で自己紹介してください。
こんにちは!私は、Googleによってトレーニングされた、大規模言語モデルです。
皆さんの質問に答えたり、文章を作成したり、様々な情報を提供することができます。
どんなことでもお気軽にご相談ください!
>>> Send a message (/? for help)
ちゃんと動作するようです。
次に同一ディレクトリに10個の JPEG ファイルを用意して、次のコマンドを実行しました。
for n in *.jpg; do \
echo "./$n 画像の内容にふさわしいタグをJSON配列で印字して。" \
| ollama run gemma3:4b-it-q8_0; > tag_$n.json; \
done
与えた画像ファイルと、結果の JSON ファイルは以下のとおり。
入力した画像ファイル | 出力された JSON ファイル |
![]() | [“トマト”,”トマトの苗”,”植物”,”栽培”,”園芸”,”収穫”,”緑”,”赤”] |
![]() | [“ボート”,”船”,”水路”,”港”,”水”,”山”,”夕焼け”,”景色”] |
![]() | [“海”,”ビーチ”,”海”,”海岸”,”天気”,”青空”,”岩”,”遊歩道”,”駐車場”,”日本”,”風景”,”景観”] |
![]() | [“夜”,”花火”,”建造物”,”夜景”,”都市”,”夜空”,”雰囲気”,”都市景観”] |
![]() | [“望遠鏡”,”天体観測”,”天文台”,”科学”,”教育”,”科学教育”,”観測”,”星空”,”宇宙”] |
![]() | [“釣り”,”魚”,”釣り針”,”水”,”桟橋”,”漁具”,”水生生物”] |
![]() | [“魚”,”水槽”,”稚魚”,”水生生物”,”養殖”,”水”,”魚類”, “生態系”] |
![]() | [“石器”,”打製石器”,”ナイフ”,”石器”,”旧石器時代”,”日本史”,”考古学”,”人類学”] |
![]() | [“焼肉”, “グリル”, “炭火”, “肉”, “野菜”, “BBQ”, “キャンプ”, “アウトドア”] |
![]() | [“猫”,”長崎”,”平和プロジェクト”,”長崎市”,”観光”] |
えっ、めっちゃ良い感じじゃないか。
100%間違いないタグが生成される訳ではないにしろ、写真整理には十分実用的な精度が出ているようです。現在の Google フォトのキーワード検索並みに使えるかもしれません。(顔認識等はまた別)
一度生成したタグを JPEG ファイル内に仕込めば、可搬性が高まりそうです。(Adobe 系のソフトでは IPTC Keywords, XMP Subject に格納することが多く、より一般的には EXIF の ImageDescription または UserComment に格納するようですね。)