画像をテキストで検索 / 2022年9月18日
某所の Transformers 勉強会ネタとして、ゼロショットで実現できるテキストからの画像検索を書いてみる。テキストと画像を組み合わせた検索は CLIP 使えば簡単に実現できそうで、日本語翻訳で学習させたJapanese-CLIPもあるので簡単に作れそうと思ってはいたけど、やっぱり簡単だった。良い日本語モデルを公開してくれているrinna社に感謝だ。
このブログの記事画像6000枚の特徴ベクトル化にRTX3090で適当にやって20秒ぐらい。日本独自ドメインの単語はうまく検索できない事が多いが、大抵は良い感じに検索できる。6000枚程度の512次元ベクトルのコサイン類似度を計算するだけなので全探索オンメモリ + CPU で十分な速度。
ただこのブログは静的なビルドで作られていて、画像を特徴ベクトル化するのはビルド時にやればよいが、検索クエリ文字列を特徴ベクトル化するのは動的な実行が必要となってしまうので、静的サイトに基本的には組み込めない。
エッジ(ブラウザ)環境で動かすために、praeclarum/transformers-js: Browser-compatible JS library for running language modelsなどでは、ONNX で JS で動くように変換してやっていたりするが、単純に量子化しても数十MBの重みになりそうで(demoではt5-small量子化した重みをダウンロードしているが、合計110MB強)、検索するときに重みをわざわざブラウザにダウンロードさせるのも重すぎるのだよな。
芦野温泉に浸かり、その後道の駅に行くいつもの休日パターン。道の駅周辺では彼岸花がシーズンを迎え綺麗。彼岸花、複雑な形で好きなのだよなぁ。
昼食は道の駅のあんず館。このへんの道の駅の食堂は大抵どこもどれも美味しい。950円のヒレカツ定食、とんかつ専門店よりだいぶお安い値段だけど大満足。