YOLO v5+DeepSORT を使用してリアルタイムのマルチターゲット追跡モデルを作成する

オブジェクト追跡は、追跡対象の数に応じてマシンビジョンの分野で重要なトピックです。これは、単一オブジェクト追跡 (Single Object Tracking、略して SOT) と複数オブジェクト追跡 (Multi Object Tracking、略して MOT) に分けることができます。
マルチターゲット追跡では、多数の追跡 ID と頻繁なオクルージョンにより、ターゲットを見失う傾向がよくあります。トラッカー DeepSORT と検出器 YOLO v5 の助けを借りて、高性能のリアルタイム マルチターゲット追跡モデルを作成できます。
この記事では、単一ターゲット追跡と複数ターゲット追跡をそれぞれ紹介し、記事の最後で YOLO v5+DeepSORT の実装プロセスと具体的なコードについて詳しく説明します。
単一ターゲット追跡の詳細な説明
意味
単一ターゲット追跡 SOT とは、ビデオの最初のフレームでターゲットを指定し、コンテキスト情報に基づいて後続のフレームでターゲットの位置を特定し、ターゲットの運動状態を予測するための追跡モデルを確立することを指します。
アプリケーションシナリオ
SOT は、インテリジェントなビデオ監視、自動運転、ロボット ナビゲーション、人間とコンピューターの対話などの分野で広く使用されています。

研究の困難さ
3 つの主な問題は、ターゲットの背景の変化、オブジェクト自体の変化、光の強さの変化です。
主流のアルゴリズム (深層学習に基づく)
SOT の問題を解決するには、主に 2 つの方法があります。識別追跡と生成追跡、画像分類やターゲット検出などのマシンビジョン関連タスクへのディープラーニングの適用に成功したことで、深層学習は、ターゲット追跡アルゴリズムにも広く使用され始めています。
この記事では主に深層学習に基づくSOTアルゴリズムを紹介します。

主要なアルゴリズム: SiamFC
従来のオブジェクト追跡で使用されるオンライン学習方法とは異なり、SiamFC はオフライン段階での強力な埋め込みの学習に焦点を当てています。
基本的な追跡アルゴリズムと、ILSVRC15 データセットでエンドツーエンドでトレーニングされた新しい完全畳み込みシャム ネットワークを組み合わせています。ビデオ内のオブジェクト検出用。

実験では、Siamese の完全畳み込みディープ ネットワークがモデルのテストとトレーニング中に既存のデータをより効率的に利用することが証明されました。
SiamFC は、ターゲット追跡の分野にツイン ネットワーク構造を適用した最初の企業です。深層学習方式のトラッカーは追跡速度が大幅に向上し、構造がシンプルで性能も優れています。
関連する微分アルゴリズム
1. ストラクトサイアム
ターゲットの局所パターンと構造関係を考慮した局所構造学習法を提案する。この目的のために、著者は対象物の識別領域を自動的に識別する局所パターン検出モジュールを設計しました。
モデルはエンドツーエンドの方法でトレーニングできます。
2. サイアムFCトライ
著者は新しい三重項損失を提案します。追跡されたオブジェクトの表現力豊かな深い特徴を抽出するために使用されます。この方法では、入力を増やすことなく、より多くの要素をトレーニングに利用し、元のサンプルを組み合わせることでより強力な機能を実現できます。
3.DSサイアム
著者は動的ツインネットワークを提案しました。高速スイッチング学習モデルを通じて、ターゲットの外観の変化と前のフレームの背景の抑制をオンラインで効果的に学習できます。同時に、著者は、ネットワーク出力を適応的に統合するために多層の深い機能を使用する、要素の多層融合も提案しました。
DSiam では、SiamFC や VGG などの実行可能な一般機能または特別にトレーニングされた機能を使用できます。また、動的な Siamese ネットワークを統合して、ラベル付きビデオ シーケンスに直接トレーニングすることができ、移動オブジェクトの豊富な時空間情報を最大限に活用できます。
マルチターゲットトラッキングの詳しい説明
意味
マルチオブジェクトトラッキング(MOT)とは、動画の各フレーム内のオブジェクトにIDを割り当て、IDごとの行動軌跡を描くことを指します。

アプリケーションシナリオ
MOT は、インテリジェント セキュリティ、自動運転、医療シナリオなどの分野で広く使用されています。
研究の困難さ
MOT が現在直面している最大の課題はオクルージョン、つまりターゲット間のオクルージョン、または環境によるターゲットのオクルージョンです。
主流のアルゴリズム
1. 並べ替え
Simple Online and Realtime Tracking (SORT) は、シンプルで効率的なアルゴリズムに焦点を当てたマルチターゲット追跡方法です。これは非常に実用的であり、オンライン アプリケーションとリアルタイム アプリケーションの両方でターゲットを効果的に関連付けるために使用できます。

追跡方法が単純なため、トラッカーの更新速度は 260 Hz に達し、これは当時の最先端のトラッカーの 20 倍でした。
2.ディープソート
DeepSORT は SORT のアップグレード版であり、SORT のパフォーマンスを向上させるために外観情報を統合します。これにより、長期にわたるオクルージョンに遭遇した場合でもターゲットを正常に追跡できるようになり、ID 変換の数が効果的に削減されます。

著者は、計算の複雑さのほとんどをオフラインの事前トレーニング段階に投入します。この段階では、大規模な歩行者再識別データセットが深い関連性メトリックを学習するために使用されます。
オンラインアプリケーションの段階では、視覚的外観空間の最近傍クエリを使用して、測定と追跡の関連付けが確立されます。
実験の結果、DeepSORT は ID 変換の数を 45% 削減し、高フレーム レートでの全体的なパフォーマンスが優れていることを示しています。
さらに、DeepSORT は、あらゆる検出器に接続できる非常に多用途なトラッカーです。
3. リアルタイムMOTに向けて
著者はMOT制度を提案した。これにより、オブジェクトの検出と外観の埋め込みを共有モデルで学習できるようになります。つまり、外観埋め込みモデルはシングルショット検出器に組み込まれているため、モデルは検出と対応する埋め込みを同時に出力できます。
著者らはさらに、ジョイント モデルで実行できるシンプルで高速な関連付け方法を提案しています。

以前の MOT システムと比較して、両方のコンポーネントの計算コストが大幅に削減され、その後のリアルタイム MOT アルゴリズム設計の作業にクリーンで高速なベースラインが提供されます。
業界初の準リアルタイムMOTシステムです。実行速度が速く、精度も高く、コードはオープンソースなので、非常に参考になります。
YOLOv5 と DeepSORT を使用したマルチターゲット追跡
このチュートリアルは次の場所にあります オープンベイズ.com 走る。 OpenBayes は、すぐに使える機械学習コンピューティング パワー クラウド プラットフォームで、PyTorch や TensorFlow などの主流フレームワークに加え、vGPU、T4、V100 などのさまざまなタイプのコンピューティング パワー ソリューションを提供します。価格モデルは柔軟で、シンプルで、料金は使用時間に基づいて決まります。
このチュートリアルでは、vGPU を使用して PyTorch 1.8.1 環境で実行します。

このプロジェクトは 2 つの部分で構成されています。まず、YOLO v5 検出器を使用して一連のオブジェクトを検出し、次に DeepSORT を使用して追跡します。
最初のステップはコード環境を準備することです
%cd Yolov5_DeepSort_Pytorch
%pip install -qr requirements.txt # 安装依赖
import torch
from IPython.display import Image, clear_output # 显示结果
clear_output()
print(f"Setup complete. Using torch {torch.__version__} ({torch.cuda.get_device_properties(0).name if torch.cuda.is_available() else 'CPU'})")
2 番目のステップは、テストするビデオを前処理することです。
!y | ffmpeg -ss 00:00:00 -i test.avi -t 00:00:03 -c copy out.avi -y
モデル推論の第 3 ステップ
!python track.py --yolo_weights /openbayes/input/input1/crowdhuman_yolov5m.pt --source out.avi --save-vid
4番目のステップはフォーマット変換です
!ffmpeg -i /openbayes/home/Yolov5_DeepSort_Pytorch/inference/output/out.avi output.mp4 -y
ステップ 5: 結果を表示する
from IPython.display import HTML
from base64 import b64encode
mp4 = open('output.mp4','rb').read()
data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
HTML("""
<video controls>
<source src="%s" type="video/mp4">
</video>
""" % data_url)

オープンベイズについて
オープンベイズ 中国を代表する機械知能研究機関です。コンピューティングパワーコンテナ、自動モデリング、自動パラメータ調整など、AI開発に関連する多数の基本サービスを提供します。
同時に、OpenBayes は、データ セット、チュートリアル、モデルなどの多くの主流の公開リソースも立ち上げました。開発者が理想的な機械学習モデルを迅速に学習して作成できるようにします。
今すぐアクセス オープンベイズ.com そして登録してください
楽しむ準備はできています
600 分/週の vGPU
および 1 週間あたり 300 分の無料 CPU
ビデオを入力して、対応する検出および追跡結果を取得することもできます。