ビデオ検索システムを構築する4つのステップ


その名前が示すように、イメージによってビデオを捜すことは入力画像に類似したフレームを含んでいる倉庫ビデオから検索するプロセスです.キーステップの一つは、ビデオを埋め込みにすることです.つまり、キーフレームを抽出し、その特徴をベクトルに変換します.
今、ビデオ検索システムを構築する方法に飛び込みましょう.

システム概要


次の図は、そのようなビデオ検索システムの典型的なワークフローを示しています.

ビデオをインポートするとき、我々はフレームに各ビデオをカットし、画像特徴抽出モデルVGGを使用してキーフレームのベクトルを抽出し、その後、抽出ベクトル(埋込み)をmilvusに挿入するOpenCVライブラリを使用します.我々は、オリジナルのビデオを格納するためのminioとビデオとベクトルの間の相関を格納するREDISを使用します.
ビデオを検索するとき、私たちは、特徴ベクトルに入力画像を変換し、最も類似性を持つベクトルを見つけるためにmilvusにそれを挿入するために同じVGGモデルを使用します.それから、システムはREDISの相関に従ってそのインタフェース上のminioから対応するビデオを検索する.

2 .データ作成


この記事では、ビデオを検索するためのエンドツーエンドのソリューションを構築するサンプルデータセットとして、Tumblrから約10万GIFファイルを使用します.あなた自身のビデオリポジトリを使用することができます.

展開


この記事のビデオ検索システムを構築するためのコードはGitHubにあります.
ステップ1:ビルドのイメージをビルドします.
ビデオ検索システムは、milvus v 0を必要とする.7.1のDocker、Redis Docker、Minio Docker、フロントエンドインターフェースDocker、およびバックエンドAPI Docker.Docker Hubから他の3つのDockersを直接引くことができる間、フロントエンドインターフェースDockerとバックエンドAPI Dockerを自分で構築する必要があります.
# Get the video search code
$ git clone -b 0.10.0 https://github.com/JackLCL/search-video-demo.git

# Build front-end interface docker and api docker images
$ cd search-video-demo & make all
Step 2 :環境設定.
ここではDockerの構成を使用します.YMLは上記5コンテナを管理します.Dockerの構成の次の表を参照してください.YSL

上の表のIPアドレス192.168.1.38は、この記事のビデオ検索システムを構築するためのサーバーアドレスです.あなたのサーバーのアドレスに更新する必要があります.
手動でmilvus、redis、minio用のストレージディレクトリを作成し、Dockerの構成に対応するパスを追加する必要があります.京大理この例では、次のディレクトリを作成しました.
/mnt/redis/data /mnt/minio/data /mnt/milvus/db
あなたは、Milvus、Redisを構成することができます、そして、MinioはDocker構成で.以下はYLです.

ステップ3:システムを起動します.
変更されたDockerを使用します.YMLはビデオ検索システムで使用する5つのDockerコンテナを起動します.
$ docker-compose up -d
次に、dockerの作成psを実行して、5つのDockerコンテナが適切に起動したかどうかを確認できます.次のスクリーンショットは、起動時に正常なインターフェイスを示します.

今、あなたはビデオ検索システムを構築しました、しかし、データベースにはビデオがありません.
ステップ4:インポートビデオ.
システムリポジトリの展開ディレクトリでは、importデータです.Py、ビデオをインポートするためのスクリプト.スクリプトを実行するには、ビデオファイルへのパスとインポート間隔を更新する必要があります.

DataHandパス:インポートするビデオへのパス.
時間.スリープ(0.5):システムがビデオをインポートする間隔.ビデオ検索システムを構築するために使用するサーバーは、96 CPUコアを持っています.したがって、間隔を0.5秒に設定することが推奨される.あなたのサーバーがより少ないCPUコアを持っているなら、間隔をより大きい値に設定してください.さもなければ、輸入プロセスはCPUに負担をかけて、ゾンビプロセスを作成します.
importデータを実行します.ビデオをインポートするPY.
$ cd deploy
$ python3 import_data.py
ビデオがインポートされると、すべて自分のビデオ検索システムで設定されています!

4 .インタフェースディスプレイ


ブラウザを開き、次に示すように、ビデオ検索システムのインターフェイスを参照してください.

トグルは、リポジトリ内のすべてのビデオを表示するには右上のギアスイッチ.

左上のアップロードボックスをクリックしてターゲット画像を入力します.以下に示すように、システムは最も類似したフレームを含んでいるビデオを復帰する.

次に、楽しいビデオ検索システムを構築する!