こんにちは!この記事では、OpenAI が開発した機械学習モデル「CLIP」とベクトルデータベース「Pinecone」を使って、アップロードした画像に似た商品を見つけるシステムを簡単に作れないかの試みを記載していきます!
この記事で紹介するシステムは、まだ完璧なものではありませんが、徐々に改善を重ねながら精度を高めています。ぜひこの記事を参考にして、みなさんも試してみてください!
どんなことができるの?
例えば、こんなシーンで活躍します:
- ECサイトでの類似商品提案:写真をアップロードするだけで、似たデザインの商品をすぐに見つける
- 画像ベースの検索体験:テキスト検索では見つけにくいアイテムをビジュアルで簡単に検索
AIを使えば、これらが驚くほど簡単に実現できるはず!
使うツールのご紹介
CLIPとは?
CLIPはOpenAIが開発したモデルで、画像と言語を同じ空間に変換する技術です。画像を「数字の特徴量」に変換することで、他の画像との類似度を計算できるようになります。
Pineconeとは?
Pineconeは、大量のデータを高速で検索・保存できるクラウドサービスです。AIで生成された特徴量データ(ベクトル)を使った類似検索に最適です。
rembgとは?
rembgは、画像の背景を除去するPythonライブラリです。背景を取り除くことで、商品の形状や色にフォーカスした特徴量抽出が可能になり、検索精度が向上します。
システム全体の流れ
この仕組みは以下の手順で動作します:
- ユーザーが画像をアップロード
- rembgを使用して画像の背景を除去
- CLIPで画像の特徴量をベクトル形式で抽出
- Pineconeに保存されている商品データと類似度を比較
- 最も似ている商品を上位5件表示
このプロセスは現在も改良中であり、背景の処理や類似度計算の精度向上を目指しています!
実際に作ってみよう!
今回の記事では、コードの詳細を省略し、GitHubリポジトリにまとめています。以下のリンクからソースコードを確認し、ぜひ試してみてください!
➡ マスタデータ登録リポジトリ:clip-pinecone-vectorizer
➡ 検索のサンプルコード:sample_query.py
必要なライブラリや環境設定は README に記載していますので、そちらを参考にしてください。
実装状況と今後の展開
現在はまず、マスタデータの登録処理を作成し、簡単なデータをPineconeに登録できる状態を整えました。また、登録データを基に類似検索を試すための検証用スクリプトも準備済みです。
次のステップでは、アップロードされた画像から特徴量を抽出し、登録データとの類似度を比較する機能の実装を進めていきます。
随時改善を進めながら、より多くのデータセットや条件に対応できるようにしていく予定です。
検証結果
検証では、ルイヴィトンのモノグラムのトートバッグを中心に評価し、5位以内に表示された確率は76.9%(10/13)という結果になりました。
ただし、今回使用したデータは十分に多いとは言えず、あくまで現時点での暫定的な結果です。
特に、光の当たり方やバッグの置き方によって検索結果が左右されることが確認できました。この点についても、さらなる検証や調整が必要です。これらを改善することで、さらなる精度向上が期待できると思います!
まとめと所感
この記事では、CLIPとPineconeを活用して画像検索システムを構築する試みを紹介しました。現在も改良中のシステムですが、基礎的な部分は実現可能であり、応用次第では幅広い活用が期待できます。
技術的なチャレンジを重ねながら、少しずつシステムの完成度を上げていきたいと考えています。改良を重ねる中で、新たな可能性や応用の道が開けていくことを楽しみにしています🙌