深い計算。 3Dテクノロジーは、人を数え、生活を楽にするのにどのように役立ちますか?

知り合いにしましょう


私たちのチームは、IPビデオ監視システム用のインテリジェントソフトウェアを開発しています。 9年の歴史の中で、ビデオ分析用の数十の機能とモジュールを作成し、何百もの問題に直面し、勝ちました。 Macroscopブログでは、それらの一部について説明し、開発プロセスのビジョンを共有し、一部のテクノロジを公開します。



「要点をつかむ」


数年前、私たちの機能の1つであるインタラクティブ検索機能の人気が低いと判断したのは、ユーザーが質問や会社での作業の問題で会社に連絡しなかったためです。 技術サポートの電話が静かなとき-これは開発者にとって悪い兆候です。



訪問者を数えるためのモジュールでは、逆の方法でした。 ユーザーは購入してインストールするだけでなく、実際に使用しました! したがって、彼らは定期的に技術サポートに質問をし、希望を書き、非標準的な使用方法について話し、そしてもちろん、彼らの仕事の難しさを共有しました。 計算の精度は高かった(92%以上)が、カメラを正しく設置すれば達成でき、良好な撮影条件(フレア、グレアなどなし)、および骨の折れる調整が可能だった。





映画「10人に数えた子供」のフレーム



当社の評価によると、インテリジェントモジュールを使用する場合、ユーザーは機能の制御の正確さと容易さを優先します。 2年前、単純化を通じてMacroscop製品開発コンセプトを採用したとき、この単純化のマイルストーンの1つは、人気のある訪問者カウントの処理でした。



しかし、まず最初に...



伝統的に、人々は追跡技術またはオプティカルフロー法を使用してビデオカウントされます。



追跡により、移動するオブジェクトの軌道が構築され、カウントにより、仮想的な進入/退出線の交差方向が修正されます。 軌道はいくつかの方法で構築できます。



1.動いているオブジェクトが存在するフレームのシーケンスを分析する。 一般的な場合、複数の動くオブジェクトが1つのフレームに存在する可能性があるため、プログラムは軌道を構築するだけでなく、オブジェクトとその動きを区別する必要があります。 移動するオブジェクトが一度に1つずつ出入り口を横切るとき、カウントするのに困難はありません。タスクは、線の交差の方向を決定することです。



最も単純な追跡の実装に基づく計算方法では、このタスクを分析し、2つの連続したフレームで前景オブジェクト(移動オブジェクト)を分析できます。 最初に、背景画像とは異なる動きの領域が現在および前のフレームで強調表示され、次に、オブジェクトの速度、移動方向、およびサイズを分析し、前のフレームの軌跡のある点から現在の別の点へのオブジェクトの遷移の確率を計算します。 各オブジェクトの最も可能性の高い動きは、軌跡になります。



2.一般的な場合、フレーム内の人々はさまざまな方法で移動できます。パスは交差または重なり、オブジェクトに対応するモーションゾーンは1つの領域に結合できます。 この場合、プログラムは各オブジェクトを識別し、オブジェクトのグループを分離し、仮想線をある方向または別の方向に横切る人を正しくカウントする必要があります。



これらの場合、個々のオブジェクトの正確な軌道を構築するタスクは複雑であり、2つのフレームから軌道を構築する方法は適切ではなく、高い誤差が生じます。 フレームのシーケンスの分析と結果の連続的な後処理が使用されます。プログラムはグラフを作成します-ある状態(位置)から別の状態へのオブジェクトの遷移を分析します。 移動の速度と方向、位置、色特性を分析します。 その結果、軌道を形成するオブジェクトの最も可能性の高い変位のセットが形成されます。



カウントの精度を高めるために、グループ内の人々を分離する方法も使用されます。 これは、グループの領域を評価するか、人の頭を検出して数えることで実行できます。



トラッキングカウントは、フレーム内の人々が最小限に重複する場合に最高の精度を提供します。 また、実際のシステムでは、限られた通路(狭い入り口のドア、エスカレーターなど)にカメラを設置するだけで、多くの場合これを実現できます。



オプティカルフロー分析に基づく訪問者のカウント

追跡に基づく計算がビデオストリーム内のオブジェクトを見つけてその動きを監視する場合、このメソッドは仮想入力/出力ラインを監視し、それを通るカラーピクセルの動きを分析します。 このメソッドは、ラインを通る特定の明るさおよび特定の色の領域の動きを監視し、画像の特徴(エッジ、角度、特別なポイント、テクスチャ情報など)の特性を計算します。オブジェクトの種類、このオブジェクト内で移動する人数を決定します。 線を横切る人の数を判断するために、頭を検出し、動いている物体の面積を分析する方法も使用されます。



この方法は、従来の追跡方法が不適切な場合に、人々の密集した流れに適用できます。 最も正確な結果は、人の流量密度がほぼ均一である場合に達成されます。



最初の方法と2番目の方法の両方を計算に実装しました。 計算が行われる条件に応じて、ユーザーは最適な操作モードを選択できます。 (カウントの観点から)撮影条件が理想に近い場合、セットアップには多くの労力と時間は必要ありませんが、そうでない場合、管理者は困惑する必要があります。



その結果、複雑な観測シーンの訪問者をカウントすることは比例して機能しました。ユーザーがモジュールのセットアップに費やす労力が増えるほど、彼はより正確に作業します。 一般的な概念に適合しなかったもの。



訪問者を数えるための新しいソリューションの検索に困惑しました。



新しい3D訪問者カウントモジュール



新しいモジュールは、根本的に異なる方法で実装されます。 以前の計算で2つの測定値のデータが使用されていた場合、新しい測定値では3番目の測定値-深度(ビデオカメラから人までの距離)が導入されました。 現在、カウントは単なるモジュールではなく、特殊なデバイス(深度センサー)とソフトウェアデータ処理モジュールからなるソフトウェアとハ​​ードウェアの複合体です。 センサーは、デバイスからオブジェクトまでの距離を計算し、IR信号を送信および受信し、プログラムがすでに機能している深度マトリックスを構築します。







深さは、出入口線を横切る人の身長に関する情報を提供し、人と他のオブジェクトを区別できるようにします。 ユーザーは設定で訪問者の最小成長を設定する必要があり、この成長以上のすべての人々がシステムによってカウントされます。



ユーザーにとって、訪問者の3Dカウントは非常に簡単です。高さとエントリの2つの設定のみを設定する必要があります。



その結果は、実際に計算が行われる条件に依存しません(非常に複雑なレリーフで考えない限り)。



これは非常に正確です-実際のユーザーがいる実際の状態では98.5%です(プログラマーがテストを好むことが多い「温室」実験室ではそうではありません)。 最高の精度は、モジュールが画像ではなく3次元のマップで機能するという事実によるものです。 さらに、計算におけるいくつかの重要なタスクを解決するために、いくつかのテクノロジーを実装しています。



  1. 人を分離するタスク。 人々が互いに近くにあるとき、与えられた高さでの輪郭は1つにつながることができます。 人の「損失」を避けるために、深度マップをレイヤーに「カット」し、オブジェクトの多層コンターを取得します。 添付のないアウトラインは、人物の上部に対応します。 トップを数えます。
  2. 人の動きの軌跡を決定するタスク。 このために、追跡が使用されますが、受信した深度データの特徴を考慮した完全に新しい追跡が使用されます。
  3. 深度マップを処理するタスク。 表面から反射された放射デバイスの赤外線信号を評価することにより、深度データを取得します。 しかし、光線は異なる表面から異なるように反射されるため、場合によってはマップは「穴」で取得されます。 既知のエリアの値に基づいてマップを完成させるアルゴリズムを作成しました。
  4. 角度補正タスク。 ビデオシステムのインストーラーを可能な限りアンロードするために、訪問者カウントデバイスの水平からのずれを考慮し、それに応じて深度値を調整するアルゴリズムを実装しました。
  5. 床までの距離を自動的に決定するタスク。 そのソリューションにより、高さを正確に測定し、モジュール設定で設定する必要がなくなります。 また、カウントの操作の利便性を向上させることも目的としています。


「もっとシンプルにすれば、人々はあなたに手を差し伸べます...」



新しい3D訪問者カウントは、従来のモジュールよりもはるかに簡単です。 それに実装されている技術の観点からも、ユーザーの作業の観点からも、よりシンプルです。 さらに、それは非常に正確であり、撮影条件に対して「気まぐれ」ではありません。



実際のオブジェクトの実際の新しい3Dカウントを使用してユーザーに来たとき、最も印象的なことは最高の精度(実際の状態で98.5%)でさえありませんでしたが、この非常にシンプルで設定のほとんど完全な欠如です。 これもまた、シンプルさと機能性のバランスを取りながら開発するという私たちの願望を保証し、クールな製品は洗練された複雑なものであるというステレオタイプに反論します。



All Articles