検索について少し
検索について話すとき、テキスト文字列を入力するためのフォームと、見つかったページへのリンクの何百もの結果を備えたGoogle検索エンジンをすぐに想像します。しかし、私たちの検索の主題について考えてみましょう。
私たちは何を探していますか?
- テキスト
- ドキュメント
- HTMLページ
- 画像
- オーディオ
- ビデオ
- バイナリファイル
一部の種類のデータには、専用の検索エンジンがあります。たとえば、DLLファイルの検索に特化したサイトがあります。
ビデオを検索
ビデオ情報を見つけることを見てみましょう。どうすればこれを行うことができますか?純粋に理論的には?
- 本文によると
- 画像で
- 短いビデオクリップ
- 短いオーディオフラグメント
現状
サーチエンジン
- グーグル
- マイクロソフト
- Yandex
私は3つの最大の検索エンジンに名前を付けました。それらはすべて、テキストと画像でビデオを検索できます。
最新の検索エンジンのデメリット
残念ながら、それらはすべて次の問題に苦しんでいます。
- 見つかったビデオの正確な名前が常に利用できるとは限りません。代わりに、俳優を正しく指定して、彼の他の画像を表示することができます。
- ビデオ内の位置を正確に示すものはありません。そして、これは非常に有用な情報です。
はい、そうです。自分で試してみると、私が正しいことがわかります。検索エンジンはやや不確実になる傾向があります。上のスクリーンショットをチェックしてください。トム・ハンクスを示しています。映画の名前も、それが作られた位置もありません。
問題の定式化
問題の解決を始める前に、それを説明してみましょう。では、何が欲しいのでしょうか?
必要なリクエストの実行速度
今日では、検索クエリが完了するまで数分待つ人は誰もいません。ただし、データと計算の量は、要求の処理に時間がかかる場合があります。あなたは妥協しなければなりません。検索クエリの実行時間を条件付きで10秒(±数秒)に制限します。これにより、一方ではブラウザが接続を切断しないようになりますが、他方ではスクリプトが情報を処理するための時間が与えられます。
どのくらいのデータがありますか?
私たちの頭の中でそれを理解しましょう。
ビデオの数
IMDbシネマトグラフィーデータベースによると、テレビ番組、漫画、ショートパンツの個々のエピソードを含め、合計で約260万本の映画が撮影されています。(2018年11月13日現在の情報)。
まず、100万本の動画に限定しましょう。ビデオの音量が何倍も大きいYouTubeや他の同様のサービスに触れようとさえしていないことは明らかです。そして最も重要なことは、この雪だるまは成長するだけです。
フレーム数
TVシリーズのいくつかの映画やエピソードはかなり短いです。 15〜20分あります。一方、2時間以上の長さの映画はかなりあります。さらに面倒なことはせずに、1時間に等しい平均ビデオ時間を取りましょう。
毎秒24フレームで多数のフィルムが撮影されましたが、より高速なフィルムもあります。今日では、誰もが自分のフィルムを撮影することができ、その中のフレームレートは60、100、200FPS以上になる可能性があります。それはすべて、カムコーダー、カメラ、アクションカメラ、スマートフォン、ビデオ監視カメラなどに依存します(必要なものに下線を引きます)。すべて私たちの手に。ただし、最初の概算として、30FPSに等しい平均ビデオのフレームレートを考えてみましょう。
この場合、平均ビデオは次のようになります
。30FPS * 3600秒= 108,000フレーム
切り上げると、平均的なビデオは約100,000フレームであることがわかります。
データ量
1フレームの情報の保存容量はどれくらいですか?明らかに、この値は、データベース内のフレームを特定のサンプルと比較するためのアルゴリズムに依存します。2つのアルゴリズムを使用してデータを比較します。1つはフレームあたり約30バイト、もう1つは約10バイトを必要とします。平均して20バイトを見てみましょう。
つまり、100万本の動画に関する情報を保存するには、1,000,000本の動画* 100,000フレーム* 20バイト= 2,000,000,000,000バイトが必要です。
簡単に言えば、すべてのフレームを何らかの形で記述するために、約2TBが必要です。これは、一般的に言って、それほど悪くはありません。これは、この量の情報が最新のHDDまたはSSDディスクに収まるためです。一方、この情報は何らかの形で合理化する必要があります。そうしないと、2 TBの単純な読み取りでも時間がかかり、ユーザーは10秒以上待たないことに同意しました。
500 MB / sの速度でディスクから情報を読み取ったとしても、2000秒、つまり30分以上かかることになります。
指定した時間を検索するには、いくつのサーバーが必要ですか?
複数のサーバーに情報を均等に格納すると仮定すると、この場合、1つの検索クエリを完了するために処理される情報の量は減少します。たとえば、サーバーが10台ある場合、各サーバーは2 TBの情報ではなく、200GBのみを処理する必要があります。または、サーバーが100台ある場合、2 TBではなく、20GBの情報を処理する必要があります。原則として、指定された量は、そのような検索エンジンの機能に十分でなければなりません。
そのようなシステムは1秒あたりいくつのリクエストを消化できますか?
正確に答えるのは難しいですが、おそらく1秒あたり最大数十のリクエストです。
何が行われたか
まず、ビデオフラグメントによる検索を実装しました。ただし、画像検索はすぐに実装されました。
歴史
2019年7月1日
この日、VideoColorパッケージの最初のバージョンがリリースされました。それは3つの部分を含みました:
- マネージャー(ソースビデオのインデックス作成)
- サーバー(リクエストを受け入れ、インデックスデータベースで一致するものを探すバックエンド)
- クライアント(AVIファイルを再生してサーバーに検索要求を送信できるクライアントアプリケーション)。
2020年3月
アップロードされたビデオフラグメントによってビデオを識別する機能を備えたWebサイトが作成されました。
2020年4月14日
モニター画面の一部のコンテンツをキャプチャすることにより、再生中のビデオのビデオ識別と位置決めのためのアプリケーションの最初のバージョンをリリースしました。
2020年6月23日
ビデオに関するインデックスと説明情報をサイトデータベースに追加するためのアプリケーションの最初のバージョンがリリースされました。
ビデオフラグメントで検索
本旨
ビデオを一連の画像と考えてみましょう。各画像について、赤、緑、青の平均を求めます。時間に対して3つのグラフが得られます。インデックスを作成するビデオごとに、これらのグラフを作成して保存しましょう。
識別用のビデオフラグメントを受け取ったら、それらのグラフも作成します。得られたグラフをすでに入手可能なグラフと比較してみましょう。もちろん、各オリジナル映画の全長にわたって比較を行う必要があります。特定のポイントでのグラフ間の差が特定の値よりも小さい場合、問題は解決されたと見なされます。
これは簡略化された図であることに注意してください。ワークフローには、ここで説明されているものとは異なるいくつかのポイントがあります。しかし、一般的に、これはアイデアです。
長所
- . 1 . , 1000 , 2 , 2 .
- . , , .
- 5-10 .
- ( ).
- . . , . , , .
- . .. . , . , . , . , 2- DDR3 1600 12 0,5 . 48 2- .
- ( ) . . , , , .
- . , , . — .
- .
元の画像をテーブルセルMx Nに分割します。各領域の赤、緑、青の成分の平均値を見つけます。実際には、これらの値のセットがこの画像の特徴であり、それらすべてを互いに区別することができます。この特性を、ビデオの説明(ビデオID)へのポインターおよびビデオ内のフレームのシリアル番号とともにデータベースに入力します。残っている唯一の問題は、MとNはどのような値を取るのかということです。 5 x 5を使用しましたが、他の値を試すこともできます。これらのパラメータの値が小さいと、重複が多くなる可能性があり、値が大きいと、多くのメモリを消費します。
ただし、これだけではありません。これらすべての特性をさらに検索すると、各リクエストの処理に多くの時間がかかります。どうなる?この画像のR、G、Bコンポーネントの平均値を計算し、これらの値に基づいて、データ配列にグループ化できます。例:R = 200、G = 188、B = 212。この場合、フレームに関する情報を適切なセクションに入力するか、テーブルにフィールドを追加します。また、検索時には、これらのコンポーネントを同じ方法で定義し、これらのパラメーターを考慮して検索します。したがって、比較するデータの量を大幅に減らし、検索を高速化します。
正直なところ、これは理論上のみであり、実際にはすべてが少し異なります。しかし、これは別の記事のトピックです。
長所
- データサイズが比較的小さい。
- すべてのデータをグループに分割し、グループで検索することができます。これにより、検索が大幅に高速化されます。
- 前の方法とは異なり、RAMに大量のデータを永続的に保存する必要はありません。
- エラーの可能性が低い。
マイナス
- トランスコーディング後、ビデオが元のビデオとわずかに異なる場合があり、JPEGエンコーディング(画像で検索する場合)によって元のビデオが変更され、グループが正しく決定されない場合があります。これには、グループの範囲を拡大する(検索速度が低下する)か、追加の検索クエリ(検索が遅くなる)が必要です。
ツール
現在までに、いくつかのアプリケーションが作成されていますが、一部は古くなり、サポートされなくなりました。
ビデオ検索(クライアント側)
- サイトのウェブフォーム経由
- 「ビデオカラーキャプチャ」アプリケーション経由
ビデオ検索(バックエンド)
- Video Color Server. : Windows ( ) Linux ( , crontab).
- «Video Color Creator»
- .
- .
- ().
- () .
- - , .
不器用な名前のファイルがあるとします。最初のスプラッシュ画面が欠落しているか(作成者の意図)、切り取られています。この映画は何ですか?それを見た人の説明とコメントを読みたいと思います。
広告ユニットの検索と切断
例:独自のカスタムビデオプレーヤーがあり、ストリーミングビデオを視聴するときに、中央チャネルではなく独自の広告をユーザーに表示させたいとします。
他の映画からそれらを借りるためにビデオの一部をチェックする(plagiarism)
例:誰かが彼らのビデオであなたのビデオ(クアッドコプターから取られた)を使用している疑いがある場合。
この情報が再投稿にない場合は、公開の正確な日付とショー(プログラム)の名前の決定
例:不明なサイトでホストされているビデオショーを見ています。あなたはショーが何と呼ばれるかさえ知っているかもしれませんが、それがいつ上映されたかはわかりません。一年か二年前?
以前にインデックス付けされたビデオがブロードキャストされている場合、再生されているストリーミングビデオの多かれ少なかれ正確な位置の決定
例:これは、タイトルやその他のコンテキスト情報(マップ、リンク、ニュースなど)を表示する他の人のストリーミングビデオにアプリケーションを添付する場合に必要になることがあります。まず、ビデオキャプチャ、インデックス計算、ビデオの識別、およびサーバー上の位置があり、次にアプリケーションは、再生中のビデオと同期して、コンテキスト情報を別のウィンドウに表示します。
サービスの利用方法
サイトのWebフォームからビデオを検索する
これを行うには、フォームの対応するフィールドにビデオフラグメントまたは画像をアップロードする必要があります。
ビデオフラグメントをダウンロードする場合、サーバーは最初にアップロードされたビデオのストーリーボードとその処理を処理することに注意してください。これには追加の時間が必要になります。
結果ページには、映画のタイトル、監督の名前、原産国、リリース年、ジャンル、俳優の名前、簡単な説明、ビデオの長さ、ビデオ内の位置、追加情報へのリンク、ビデオのフレームの表形式の画像が含まれています。
アプリを使用して動画を検索する
すべての前処理はクライアント側で行われ、元のデータのごく一部のみがサーバーに送信されるため、アプリケーションを使用したビデオの検索ははるかに高速です。これにより、チャネルへの負荷が軽減され、検索クエリの速度が向上します。
100万本の動画のインデックス情報をデータベースに片手で入力できますか?
おそらくありません。これらのビデオはどこで入手できますか?それらをネットワーク経由でポンピングする方法は?それらを処理するためのコンピューティングリソースはどこで入手できますか?
ただし、ユーザー自身がベースを埋めるために使用できるようにすることができます。そして、これはすでに実装されています。データベースに100本のビデオを入力しましたので、サービスが機能することを確認できます。ビデオのインデックス作成と説明の追加を行うための無料のアプリケーションをダウンロードしてインストールし、サーバーにデータをアップロードすることもできます。このアプリケーションでは、将来、ロードされたデータを使用して、削除、説明の編集、表示、検索などの操作を実行できます。
ビデオやその他を追加する場合は、このビデオがまだデータベースにないことを確認してください。アプリケーションでは、名前、ディレクター、作成年、その他のパラメーターで検索できます。
インデックス情報の作成速度は、コンピューターの能力とビデオ自体の特性(解像度、コーデック、フレームレート)によって異なります。平均して、処理には数分かかります。このとき、ユーザーはビデオの説明テキストフィールドに入力できます。
今後の計画
- 検索の加速。
- 検索精度の向上。
- オーディオフラグメントで検索します。
短いオーディオフラグメントによるビデオの検索は、既存の2つの検索方法(ビデオフラグメントと画像による)を補完します。
結果
- この投稿では、ビデオ検索を使用して現在の最先端技術を確認しました。
- 短いビデオフラグメントと画像によるビデオ検索の方法に精通しました。
- Video ColorCaptureビデオ検索アプリケーションについて話しました。
- 言及がで作られたビデオの色クリエーターのアプリケーションに追加するためのAAPのソフトウェアは、ビデオデータベースを共有します。
リンク
ウェブサイト
http://www.videocolor.aapsoftware.ru/
このサイトでは、短いビデオフラグメントと、ビデオの画像による検索を提供しています。
アプリケーション
- Windowsx64ビデオ識別アプリケーションビデオカラーキャプチャ
- Video ColorCreatorデータベースにビデオを追加するためのWindowsx64アプリケーション
- すべてのアプリは無料です。
ビデオ
- 画像で動画を検索し、短い動画セグメントで動画を検索
- ビデオフラグメントで映画を検索する
- ビデオカラーキャプチャを使用したビデオ識別
- プログラム「VideoColorCapture」バージョン1.1での作業のビデオ
- プログラム「VideoColorCreator」バージョン2.0での作業