ディープラーニングを使用して、写真用の強力な画像検索エンジンを構築します

ディープラーニングを使用して、写真用の強力な画像検索エンジンを構築します

  [[412644]]

数日前、鮮明に覚えている昔の写真を見返したいと思ったのですが、どこにあるのか全く分かりませんでした...写真を撮ってから、携帯電話を2回、ノートパソコンを1回変えました。当時、メッセンジャーで誰かに送ったはずですが、誰に送ったのでしょうか?簡単な説明クエリですべての画像を検索して見つけることができたら、どんなに便利でしょう。 …

最近のコンピューター ビジョンの進歩により、画像の埋め込み (高密度ベクトル表現) の関連性が高まり、最近のクリップ モデルを使用すると、ローカル画像に対する Google のような画像検索を簡単に実装できるようになりました。

詳細には立ち入りませんが (詳細についてはブログ投稿と論文を参照してください)、Clip は自然言語の監視によって画像の特徴を学習するように設計されたニューラル ネットワークです。基本的に、インターネット上の公開画像と関連するキャプションを使用し、テキストを BERT のような言語モデルに埋め込み、画像をビジュアル トランスフォーマーに埋め込みます。使用される手法は、他の NLP および CV モデル アーキテクチャにも適用できることに注意してください。複数の画像/テキスト埋め込みペアを活用することで、情報検索の NLP 分野で実行できるものと同様に、バッチネガティブコントラストトレーニングを介して視覚およびテキスト埋め込みモデルを微調整できます。基本的に、目標は、画像の埋め込みをそれに関連付けられたテキストの埋め込みと対応させ(ドット積)、他の画像のすべてのキャプションと区別することです(1)。

Clips は「ゼロショット」分類によく使用されます。画像とキャプションのリストが与えられると、その画像に最適なキャプションを推測します。上記の例(2)では、「犬の写真」は、「飛行機の写真」、「鳥の写真」、「車の写真」と比較して最適な画像キャプションです。 …

画像検索エンジンに関する私のアイデアは(特に新しいものではありませんが)、これを逆転させて、画像に基づいてキャプションを分類するのではなく、テキスト クエリに基づいて画像を分類することです。プロセスは次のようになります。

  • 指定されたディレクトリ内のすべての画像を検索する
  • 各画像の埋め込みは、事前にトレーニングされた Clip Vision Transformer を使用して計算され、将来の参照用に画像パスとともに保存されます。 https://openai.com/blog/clip/
  • 実行時に、ユーザークエリは ClipText トランスフォーマーを使用してテキスト埋め込みに変換されます。
  • テキスト埋め込みと保存されているすべての画像埋め込みのドット積を計算し、取得したスコアに従ってすべての画像をランク付けし、上位 N 位にランク付けされた画像へのパスを返します。

このプロセスは、いくつかの追加機能とともに、私の Github リポジトリ (https://github.com/ManuelFay/ImageSearcher) に実装されています。

インデックス作成フェーズでは、コードは oslibrary を使用して、指定されたディレクトリとサブディレクトリ内のすべての画像を検索し、コンバーターと Pickle ライブラリを使用してベクトル化された表現を埋め込んで保存します。実行時に、ピクルされた埋め込みが読み込まれ、埋め込みのクエリと照合され、上位 n 位にランクされた画像が返されます。外部インターフェースを備えた検索エンジンを効率的に使用できるようにするため、Flask/Gunicorn API が提供されています。 Vue.js で構築された、Google 画像検索のようなシンプルな Web インターフェースも提供されます。

大量の画像コレクションを取得するために、Facebook から Messenger アーカイブをダウンロードし、過去数年間に送受信した約 10,000 枚の画像を入手しました。

検索エンジンでは、非常に詳細なクエリが可能です。上位ランクの画像が最初にリストされます。これらの画像はすべて、私のローカルコレクションにある約 10,000 枚の画像から提供されているため、選択肢が限られていることに注意してください。

メタクエリも可能です。ここではドローンで撮影した写真を募集します:

これは午後の短いプロジェクトでしたが、クリップ モデルの精度に感心しました。自分でテストするには、https://github.com/ManuelFay/ImageSearcher のコードを使用してください。改善や追加機能への貢献は大歓迎です。 https://github.com/ManuelFay/ImageSearcher

<<:  企業で AI ストレージを導入する際に留意すべき 7 つのポイント

>>:  ディープラーニングフレームワークFlashを使用して、わずか数行のコードで画像分類器を構築する方法

推薦する

...

2022年のデータサイエンスとAIの予測

2021 年には技術変化のペースが加速し、歴史が示すように、2022 年もそのペースは加速し続けるで...

...

...

MITは線虫Caenorhabditis elegansにヒントを得て、19個のニューロンを使って自動運転制御を実現

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

AIチップ業界は発展の初期段階にあり、将来的には大きな市場の可能性を秘めている

世界のPC業界が年々衰退し、スマートフォン市場が飽和状態に陥る中、ビッグデータ、クラウドコンピューテ...

...

...

...

...

OpenAIの創設者は、Nvidiaに対抗するチップを設計・製造するためのグローバルなチップ工場ネットワークを構築したいと考えている

OpenAIの共同創設者サム・アルトマン氏は最近、Nvidiaに対抗するために世界中にAIチップ工場...

...

ターゲット検出アルゴリズムにおける正長方形と不規則四辺形 IOU の Python 実装

交差対結合 (IoU) は、ターゲット検出で使用される概念です。ターゲット検出アルゴリズムをテストす...

私たちは本当にロボットの「カンブリア紀の進化」に近づいているのでしょうか?

ロボット工学の分野は驚異的なスピードで進歩しており、多くの専門家がこの急速な発展を生物学における「カ...