NVIDIA DeepStream 9.1 でマルチカメラ 3D 追跡アプリを構築
NVIDIA は DeepStream 9.1 の新機能として、手動キャリブレーション不要の AutoMagicCalib とマルチビュー 3D 追跡機能を導入し、大規模空間における物体追跡の精度と開発効率を大幅に向上させた。
キーポイント
自動キャリブレーション技術の導入
AutoMagicCalib (AMC) により、複数カメラ間の手動キャリブレーションが自動化され、誤差を最小化して迅速なセットアップが可能となった。
マルチビュー 3D 追跡の実現
MV3DT スキルにより、異なるカメラ映像から得られた検出結果を統合し、一貫した ID を付与するエンドツーエンドの 3D 追跡が実現された。
エッジプラットフォームの強化
NVIDIA JetPack 7.2 のサポートにより、Orin や Thor などのエッジデバイス上で Vision AI パイプラインのパフォーマンスが加速されている。
開発プロセスの簡素化
13 のアジェンティックスキルと統一された GitHub リポジトリにより、自然言語プロンプトからデプロイまでを迅速かつ正確に行えるようになった。
統合された3D追跡とID管理
MV3DT は複数のキャリブレーション済みカメラからの検出を共有の3D座標系に投影し、同一オブジェクトへの観測を関連付けて環境全体で一意かつ安定したグローバルIDを割り当てます。
分散型アーキテクチャとデータフロー
このシステムはDeepStreamトラッカーを拡張しており、各カメラが独立してオブジェクトを検出・追跡した後、入力データを融合して一貫性のある3D位置情報を生成します。
多様な検出モデルのサポート
Pedestrian 向けPeopleNetTransformerやPeopleNet v2.6.3、産業環境向けのマルチクラス検出器RT-DETR 2Dなど、用途に応じて3つの検出モデルを標準でサポートしています。
重要な引用
Single-camera 2D tracking lacks reliable depth information and typically loses track of the object when it leaves the frame
Current 3D tracking methods require manual camera calibration and complicated calculations.
AMC and MV3DT fuses detections from multiple auto-calibrated cameras into a shared 3D coordinate system
It then associates observations of the same object across camera views and assigns one globally consistent object ID.
Each camera independently projects objects into 3D, and the system fuses these inputs to ensure globally consistent tracking.
The tracker uses Message Queuing Telemetry Transport (MQTT), a lightweight pub/sub messaging protocol that shares tracklets across cameras.
影響分析・編集コメントを表示
影響分析
この発表は、大規模空間におけるビジョン AI アプリケーションの開発障壁を下げ、実用化のスピードを加速させる重要な転換点となります。特に、複雑な幾何学計算や手動調整に依存していた従来の手法を自動化することで、現場での導入コストと維持管理負荷を大幅に削減し、スマートシティや物流分野での 3D 追跡技術の普及を後押しします。
編集コメント
DeepStream の新バージョンにおける「AutoMagicCalib」の機能は、実環境でのカメラ配置調整という最大のボトルネックを解消する画期的な進展です。これにより、複雑な幾何学的計算を専門知識に頼らずとも行えるようになり、Vision AI の現場適用範囲がさらに拡大すると期待されます。
広域空間におけるビデオ解析アプリケーションを開発する際、開発者が直面する最大の課題の一つは、カメラの切り替わりをまたいで同じ物体を追跡し続けることです。単一カメラによる 2D 追跡では信頼性の高い深度情報が得られず、対象がフレーム外に出ると容易に追跡を失ってしまいます。このため、倉庫の安全性管理や小売りの分析、スマートビルディングの監視といった用途には限界がありました。
従来の 3D 追跡手法は、手動でのカメラキャリブレーションと複雑な計算処理を必要としていました。
NVIDIA DeepStream 9.1 は、この課題に対して AutoMagicCalib (AMC) と Multi-View 3D Tracking (MV3DT) を組み合わせて解決策を提示します。AMC と MV3DT は、複数のカメラから取得した検出情報を自動的にキャリブレーションされた共通の 3D 座標系に統合し、異なる視点間でも一貫したオブジェクト ID を維持します。
本記事では、MV3DT と AMC の詳細解説に加え、ビジョン AI パイプライン開発を簡素化・加速させる画期的なアップデートである DeepStream 9.1 の使い始めについてご紹介します。
モジュール性、自動化、エッジパフォーマンスに重点を置いた DeepStream 9.1 では、開発者が概念から実装までをより迅速かつ高精度に進められるよう、強力な「アジェンティック・スキル」のセットが導入されました。
DeepStream 9.1 の新機能:
- ビジョン AI 開発を加速させるための 13 種類のアジェンティック・スキルへのアクセスが可能になりました。
- 複数のカメラストリームにわたる正確なエンドツーエンドの物体追跡を実現する、マルチカメラ 3D 追跡(MV3DT)スキルの追加。
「AutoMagicCalib (AMC)」スキルにより、カメラキャリブレーションの自動化が可能になり、手作業による負荷を大幅に減らし、誤差も最小限に抑えられます。
NVIDIA JetPack 7.2 をサポートすることで、Orin や Thor などの Jetson エッジプラットフォーム上で、ビジョン AI のパフォーマンスが加速されます。
GitHub リポジトリでオープンソース化されており、一元管理されたリポジトリを通じて、導入からカスタマイズ、メンテナンスまでをよりシンプルに実現します。
*動画 1: DeepStream スキルを活用したエンドツーエンドの MV3DT デプロイ。自然言語によるプロンプト入力から、マルチカメラ 3D 追跡パイプラインの実行までを示しています*
NVIDIA DeepStream GitHub リポジトリ で現在利用可能です。DeepStream 9.1 には、包括的なソースコードと参考アプリケーションが含まれています。
MV3DT はどのようにして複数カメラ間で物体を追跡するのか
MV3DT は、キャリブレーション済みの複数のカメラから検出された情報を、共通の 3D 座標系に投影します。そして、異なるカメラ視点で捉えられた同一オブジェクトの観測データを関連付け、環境全体で一貫性のある単一のオブジェクト ID を割り当てます。
各カメラは独立して物体を 3D 空間へ投影しますが、システムはこの入力を融合させることで、グローバルに整合性の取れた追跡を実現します。
これにより、すべての物体が環境全体を通じて一意で安定した ID を維持し、位置情報は統一されたワールド座標系上で計算されます。
基盤となるマルチビュー関連付けアルゴリズムや 3D 融合技術の詳細は、研究論文「Fully Distributed Multi-View 3D Tracking in Real-Time」で解説されています。
MV3DT のアーキテクチャを理解する
MV3DT は、NVIDIA DeepStream のトラッカーを拡張し、キャリブレーション済みのカメラ群にまたがる分散型のマルチビュー 3D 追跡をサポートします。
システム内でのデータフローは以下の通りです。
検出機能: DeepStream パイプラインはすべてのカメラストリームを処理し、MV3DT トラッカーが各ビューで独立してオブジェクトの検出と追跡を行います。標準で 3 つの検出モデルをサポートしています。
- PeopleNetTransformer: Transformer ベースの人物検出器で、歩行者シーンでのデフォルト設定です。
- PeopleNet v2.6.3: DetectNet_v2 アーキテクチャに基づく高効率な検出器です。
- RT-DETR 2D: マルチクラス対応の検出器で、産業環境に最適化されています。歩行者や搬送車、フォークリフトなどを検出可能です。
単眼 3D 知覚: 各カメラは、YAML ファイルに保存された 3×4 の射影行列を用いて、地面を基準とする仮定に基づき、2D バウンディングボックスの検出結果を 3D ワールド座標空間へ後方投影します。
マルチビュー関連付け: トラッカーは軽量な Pub/Sub メッセージングプロトコルである Message Queuing Telemetry Transport (MQTT) を使用し、カメラ間でトラックレット(追跡断片)を共有します。2 つのカメラが同じ人物を捉えた場合、3D ワールド空間における近接度に基づいて関連付けアルゴリズムが各カメラのトラックレットをマッチングさせ、一貫性のあるグローバルなオブジェクト ID を割り当てます。
出力: 追跡結果は以下の 3 つの形式でストリーム出力されます。
オンスクリーンディスプレイ (OSD) では、カメラ映像のライブグリッドを表示し、2D/3D のバウンディングボックスと共有 ID を重ねて表示します。
- ビードアイビュー (BEV): レイアウト画像上に、世界座標系における物体の軌道を示すリアルタイムの 2D 上空マップを描画して提供します。
- Kafka メッセージング: センサー ID、オブジェクト ID、3D バウンディングボックスなど、フレームごとの構造化されたプロトobuf メタデータを下流アプリケーションへ配信します。
AutoMagicCalib を用いたカメラネットワークのキャリブレーション方法
MV3DT では、画像ピクセルを 3×4 の射影行列を通じて世界座標に正確に変換できるキャリブレーション済みのカメラが必要です。従来の手法は手作業が多く時間がかかるため、チェックボードなどのキャリブレーションパターンをカメラの前に配置する必要があり、その結果、業務の中断や特殊な機器の設置が必要になるケースが多々あります。
image*図 2. キャリブレーション完了後のビードアイビュー (BEV) 画像上に表示された軌道を示す AutoMagicCalib の UI 結果ページ*
AMC は、DeepStream を活用して既存のビデオファイルやストリーム上で移動する追跡対象オブジェクトを分析することで、カメラネットワークのキャリブレーションプロセスを簡素化し、自動化します。
AMC は、MV3DT などのアプリケーション用キャリブレーションファイルを生成するため、各カメラの内部パラメータ(焦点距離、主点、レンズ歪み)と外部パラメータ(回転、並進、ワールド座標)を自動的に推定します。また、物体の動きが限定的な場合などには、学習済みモデルを活用して精度とロバスト性を高めるモデルベースのアプローチである Visual Geometry Grounded Transformer (VGGT) をオプションで利用することも可能です。
内部キャリブレーションパイプラインは、以下の段階を経て実行されます。
- 各カメラごとの軌道抽出:DeepStream が各ビデオ内で物体を検出・追跡し、AMC がその結果として得られた軌道データを収集します。
- 単一視点でのキャリブレーションと整列:AMC は各カメラを独立して扱い、軌道データから焦点距離や投影行列、レンズ歪みなどの内部パラメータを推定し、補正された画像ビューを作成します。
- 複数視点間のトラックレットマッチング:AMC は手動で指定した整合ポイントを用いて、異なるカメラ間での物体のトラックレット(短時間追跡結果)を照合します。この整合ポイントは、カメラ間の対応関係やレイアウトマップとの初期アンカーとして機能します。
- バンドル調整:すべてのカメラパラメータを各ビュー全体で統合的に最適化し、再投影誤差をグローバルに最小化します。
- オプションの VGGT によるキャリブレーション:物体の動きが限定的な場合や、学習された幾何情報の方がより堅牢なキャリブレーション結果をもたらす場合に備え、ユーザーは VGGT を実行するモデルベースの別ワークフローをオプションで選択できます。
ユーザーは、レイアウト画像を提供し、カメラビューとマップ上で対応するランドマークを選択して数点の整列点を定義するだけで済みます。AMC は、REST API と Web インターフェースを備えたマイクロサービスとして提供されています。
NVIDIA DeepStream エージェントスキルでアプリケーションを構築・デプロイする
DeepStream 9.1 では、Claude Code や Codex、あるいは MV3DT や AMC など、お好みのコーディングエージェントが利用できるようモジュール化されたスキルが導入されました。手動でスクリプトを実行したり設定ファイルを編集したりする必要はありません。自然言語の指示(プロンプト)で「何をしたいか」を記述するだけで、エージェントがセットアップ、設定、実行を一貫して処理します。
DeepStream スキルとコーディングエージェントの詳細については、「NVIDIA DeepStream スキルとコーディングエージェントを活用したビジョン AI パイプラインの構築方法」 のブログ記事をご覧ください。
ここでは、以下のスキルを使用してマルチカメラアプリケーションをデプロイします。
- MV3DT スキル:この包括的なスキルは、MV3DT のデプロイライフサイクル全体を管理します。具体的には以下を行います。
- 前提条件(OS、GPU ドライバ、Docker ランタイム)の検証
- 必要な DeepStream コンテナの取得またはビルド
- Kafka と Mosquitto ブローカーサービスのインストール
- 検出モデルの重みファイル(PeopleNetTransformer、RT-DETR)のダウンロード
- データセットに基づいた DeepStream パイプライン設定の自動生成
- 校正ファイルが見つからない場合、自動的に AMC スキルの実行をトリガー
マルチカメラ 3D 追跡アプリケーションの構築:NVIDIA DeepStream 9.1 スキル活用(続き 7/12)
フルスケールのマルチカメラ追跡パイプラインの起動
AMC スキルの役割
これらのスキルは、AMC(Active Multi-camera)のライフサイクルを管理します。
- amc-setup-calibration-stack:AMC マイクロサービスのコンテナを取得し、サービススタック(Web UI と REST API)を開始します。
- amc-run-sample-calibration:同梱されたサンプルデータセットに対してエンドツーエンドのキャリブレーションを実行します。独自のデータを扱う前に、新規インストールが正常に動作しているか確認する際に役立ちます。
- amc-run-video-calibration:新しい動画ファイルのデータセットとレイアウト画像、アライメントポイントを用いてキャリブレーションを行うためのスキルです。これにより、MV3DT などの下流アプリケーションで直接使用できるキャリブレーション YAML ファイルを生成できます。
- amc-run-rtsp-calibration:RTSP ストリームから直接新しいデータセットのキャリブレーションを行うためのスキルです。
最新のスキル一覧は、DeepStream GitHub リポジトリでご確認ください。
以下のワークフローでは、開発者がリポジトリの設定から MV3DT アプリケーションの実行までをどのように進めるかを示しています。具体的なプロンプトは、使用するコーディングエージェントやデータセットに応じて調整可能です。
前提条件
- Ubuntu 24.04 (x86_64)
- NVIDIA ドライバーバージョン 580 以上
- NVIDIA Container Toolkit を備えた Docker
- Claude Code または Codex のインストールと認証済み状態
- NGC API キー(
nvcr.ioから DeepStream および AMC コンテナをプルするために必要) - Hugging Face キー(AMC 微調整ステップで VGGT モデルをプルするために必要)
- ディスプレイ用:X11 または VNC リモートデスクトップ(オプション。ヘッドレスモードでは出力動画が保存されます)
それでは、始めましょう!
ステップ 1: リポジトリのクローンとスキルのインストール
スキルファイルを、コーディングエージェントのスキルディレクトリにコピーしてください。パスは使用するエージェントによって異なります。
Claude Code の場合:~/.claude/skills/
Codex の場合:~.codex/skills/
Cursor の場合:~/.cursor/skills/
Codex を使用する場合の例(他のエージェントでも同様にパスを調整してください):
mkdir -p ~/.codex/skills
cp -r skills/* ~/.codex/skills/
スキルは、ワークスペースレベル(特定のプロジェクトに限定された設定)でインストールすることも可能です。詳細なインストール手順やワークスペースレベルでの設定については、DeepStream スキルの README をご覧ください。
ステップ 2: コーディングエージェントを起動する
DeepStream リポジトリのルートディレクトリから、コーディングエージェントを起動します。
claude
または
codex
これでセットアップは完了です。ここからは、自然言語のプロンプトを使って対話を行うことができます。
シナリオ A: 12 カメラのサンプルデータセットで MV3DT を実行する
MV3DT スキルには、キャリブレーション情報が含まれた 4 カメラおよび 12 カメラ用のサンプルデータセットが用意されており、AMC(自動マルチカメラ補正)の手順は不要です。今回の例では、12 カメラのデータセットを使用します。以下のプロンプトをエージェントに貼り付けてください。
サンプルプロンプト:deploy mv3dt on the 12-camera sample dataset
エージェントが以下の手順を案内します:
- システムの表示アクセス(X11/VNC)を確認し、ディスプレイが見つからない場合はヘッドレスモードを検出します。
- 特権を持つ Docker コマンド(
sudo xhost +および--privileged)を実行する前に、ユーザーの承認を求めます。 - モデルのダウンロード、Kafka と Mosquitto サービスの起動、パイプラインの準備を行うセットアップスクリプトを実行します。
DeepStream コンテナを起動してトラッキングを開始します。初回実行時はモデルエンジンの構築と読み込みに数分かかる場合があります。
ディスプレイが接続されている場合、2 つのウィンドウが開きます。
- DeepStreamTest5App: 12 カメラの映像をタイル状に並べたグリッド表示で、2D および 3D のバウンディングボックスが含まれています
- Bird's-Eye View of Multi-View 3D Tracking: 世界座標系におけるリアルタイムの軌跡マップです
image*図 3. ディスプレイモードで動作する MV3DT。世界座標系上の物体軌跡を示す Bird's-Eye View ウィンドウと、2D および 3D バウンディングボックスを含むマルチカメラグリッドを表示する DeepStreamTest5App ウィンドウ*
いずれかのウィンドウで q キーを押すと終了します。エージェントからもその旨の案内があります。ヘッドレスモードでは、実験ディレクトリ内に出力動画(tiled_display_raw.mp4 と BEV 軌跡用動画)が生成されます。サンプル出力については、MV3DT リポジトリ の 12 カメラ対応 BEV 軌跡 GIF をご確認ください。
experiments/deepstream/12cam/
├── config_deepstream.txt # 生成されたパイプライン設定ファイル
├── config_tracker.yml # MV3DT トラッカーの設定
├── outVideos/
│ └── tiled_display_raw.mp4 # 2D および 3D オーバーレイ付きのマルチカメラグリッド動画
└── bev_outputs/
└── trajectory_video_<timestamp>.mp4 # BEV 軌跡動画
シナリオ B: 独自のカメラで MV3DT を実行する(AMC キャリブレーション併用)
事前キャリブレーションを行わずに、カスタム同期ビデオストリームを使用するには、ディレクトリパスを指定してください。
サンプルプロンプト:
deploy mv3dt on these videos ~/my-camera-dataset/videos
このフォルダには、カメラごとに番号順に名前が付けられた時間同期された動画ファイル(例:cam_00.mp4, cam_01.mp4)が含まれている必要があります。また、レイアウト画像(layout.png)も用意しておいてください。
するとエージェントは以下の手順を実行します。
- ビデオソースフォルダを検証する。
camInfo/*.ymlのキャリブレーションファイルが存在しないことを検知し、キャリブレーションが必要であると判断する。- 自動的に AMC スキルを順次呼び出します。まず
amc-setup-calibration-stackを実行して AMC マイクロサービスを開始し、次にamc-run-video-calibrationを実行してキャリブレーションを開始します。
キャリブレーション開始前に、エージェントはいくつかの構成設定について質問します。ここでは、プロンプトに応じて検出器の種類やキャリブレーション設定を指定する必要があります。
エージェント:キャリブレーションに使用する検出器タイプは何ですか?(resnet または transformer)
ユーザー:Resnet
エージェント:キャリブレーション設定ファイルをアップロードしますか?
ユーザー:いいえ、UI で更新します。
image*図 4. AutoMagicCalib UI での手動アライメント手順*
AMC マイクロサービスが起動し、エージェントから Web UI のアドレスが表示されます。ブラウザでこの URL を開き、カメラ間のビューとレイアウトマップの対応点(アライメントポイント)を手動で合わせます。設定を保存したら、エージェントに完了を通知してください。
ユーザー:alignment is done
AMC は、軌跡抽出、単一視点の補正、複数視点間のトラックレットマッチング、そしてバンドル調整を含む完全なキャリブレーションパイプラインを実行します。エージェントは完了をポーリングし、処理が終了すると MV3DT 互換のキャリブレーションエクスポートデータをダウンロードして、YAML ファイルを ~/my-camera-dataset/camInfo/ ディレクトリに配置します。
その後、生成されたキャリブレーションデータを利用して MV3DT が自動的に実行されます。
MV3DT のデプロイが成功すると、以下の出力が得られます:
- ライブ OSD ウィンドウ: 2D および 3D バウンディングボックスと、一貫したオブジェクト ID を表示するタイル状のグリッドで全カメラ映像を並列表示します。任意のカメラをクリックして拡大表示し、右クリックするとグリッドビューに戻ります。
- ライブ BEV ウィンドウ: 上からの視点(BEV)による軌跡マップを表示し、スクリーンショットや記録機能も用意されています。
- Kafka メタデータストリーム:
mv3dtトピックにフレームごとの protobuf メッセージが流れます。オブジェクト ID、3D バウンディングボックス座標、信頼度スコア、センサー ID などが含まれており、これらは下流の分析システムやダッシュボード、アラートシステムでそのまま利用可能です。
- 保存された動画: ファイル出力を有効にすると、タイル状の OSD ビデオと BEV 軌跡ビデオが保存されます。
はじめに
MV3DT および AMC のソースコード、スキル、参考アプリケーション、サンプルデータセットはすべて、DeepStream 9.1 リリースの一部として NVIDIA DeepStream GitHub リポジトリ に公開されています:
- MV3DT 参考アプリ:
src/apps/reference_apps/deepstream-tracker-3d-multi-view
- MV3DT スキル:
skills/deepstream-run-mv3dt
AMC スキルには、skills/amc-setup-calibration-stack、skills/amc-run-video-calibration、skills/amc-run-sample-calibration、skills/amc-run-rtsp-calibration があります。
事前構築された MV3DT マイクロサービスは、NVIDIA VSS ブループリントおよびエージェントスキル と併用することで、パイプラインを追加のマイクロサービスやデータベース、エージェントと統合することも可能です。
ご質問やコミュニティでの議論については、NVIDIA DeepStream 開発者フォーラム をご覧ください。
原文を表示
Developers building video analytics applications across large spaces must track the same object as it moves between camera views. Single-camera 2D tracking lacks reliable depth information and typically loses track of the object when it leaves the frame, limiting applications such as warehouse safety, retail analytics, and smart-building monitoring. Current 3D tracking methods require manual camera calibration and complicated calculations.
NVIDIA DeepStream 9.1 addresses this challenge with AutoMagicCalib (AMC) and Multi-View 3D Tracking (MV3DT). AMC and MV3DT fuses detections from multiple auto-calibrated cameras into a shared 3D coordinate system and maintains a consistent object ID across views.
This post will cover the details of MV3DT and AMC, and how to get started with DeepStream 9.1, a major leap forward in simplifying and accelerating vision AI pipeline development.
With a strong focus on modularity, automation, and edge performance, DeepStream 9.1 introduces a set of powerful agentic skills that help developers move from concept to deployment faster and with greater accuracy.
What’s new with DeepStream 9.1:
- Access to 13 agentic skills designed to fast-track vision AI development.
- Multi-camera 3D tracking (MV3DT) skill for accurate, end-to-end object tracking across multiple camera streams.
- AutoMagicCalib (AMC) skill that automates camera calibration, reducing manual effort and minimizing errors.
- NVIDIA JetPack 7.2 support, enabling accelerated vision AI performance on Jetson edge platforms such as Orin and Thor.
- Open-source availability through a unified GitHub repository, making adoption, customization, and maintenance simpler.
Available now via the NVIDIA DeepStream GitHub repository, DeepStream 9.1 includes comprehensive source code and reference applications.
How MV3DT tracks objects across cameras
MV3DT projects detections from multiple calibrated cameras into a shared 3D coordinate system. It then associates observations of the same object across camera views and assigns one globally consistent object ID. Each camera independently projects objects into 3D, and the system fuses these inputs to ensure globally consistent tracking.
This ensures that every object maintains a unique, stable ID across the entire environment, with positions calculated in a unified world-coordinate system.
The underlying multi-view association algorithms and 3D fusion techniques are detailed in the research paper, Fully Distributed Multi-View 3D Tracking in Real-Time.
Understanding the MV3DT architecture
MV3DT extends DeepStream tracker with support for distributed multi-view 3D tracking across a network of calibrated cameras.
Here is how data flows through the system:
- Detection Capabilities: DeepStream pipeline processes all camera streams, with the MV3DT tracker independently detecting and tracking objects in each view. It supports three detector models out of the box:
PeopleNetTransformer: Transformer-based people detector, default for pedestrian scenes.
- PeopleNet v2.6.3: A high-efficiency detector based on the DetectNet_v2 architecture.
- RT-DETR 2D: Multi-class detector, ideal for industrial environments, detecting pedestrians, transporters, and forklifts.
- Monocular 3D Perception: Each camera uses a 3×4 projection matrix (stored in a YAML calibration file) to back-project 2D bounding-box detections into 3D world-space coordinates using a ground-plane assumption.
- Multi-View Association: The tracker uses Message Queuing Telemetry Transport (MQTT), a lightweight pub/sub messaging protocol that shares tracklets across cameras. When two cameras observe the same person, the multi-view association algorithm matches their tracklets using proximity in 3D world space and assigns a single globally consistent object ID.
- Output: Tracking results stream out in three forms:
On-Screen Display (OSD): Provides a live grid of camera feeds with overlaid 2D/3D bounding boxes and shared IDs.
- Bird’s-Eye View (BEV): Offers a real-time 2D top-down map showing object trajectories in world coordinates, rendered over a layout image.
- Kafka Messaging: Delivers structured protobuf metadata per frame such as sensor ID, object ID, and 3D bounding box for downstream applications.
How to calibrate a camera network with AutoMagicCalib
MV3DT requires calibrated cameras that accurately map image pixels to world coordinates on a 3×4 projection matrix. Traditional approaches are manual and time-consuming, often requiring the placement of calibration patterns (like checkerboards) in front of the cameras, which means interrupting operations and placing special equipment in the space.

AMC simplifies and automates the camera network calibration process by using DeepStream to analyze tracked objects moving across existing video files or streams.
AMC automatically estimates each camera’s intrinsic (focal length, principal point, lens distortion) and extrinsic (rotation, translation, world position) parameters for each camera to produce calibration files for applications such as MV3DT. AMC can optionally use Visual Geometry Grounded Transformer (VGGT), a model-based approach that leverages learned models for higher accuracy and robustness when object movement is limited.
The internal calibration pipeline runs through these stages:
- Per-camera trajectory extraction: DeepStream detects and tracks objects in each video. AMC collects the resulting trajectory data.
- Single-view calibration and rectification: For each camera independently, AMC estimates intrinsic parameters (focal length, projection matrix, lens distortion) from the trajectories and produces a rectified view.
- Multi-view tracklet matching: AMC matches object tracklets across cameras, using the manually provided alignment points as an initial anchor between camera views and the layout map.
- Bundle adjustment: All camera parameters are jointly refined across every view to minimize reprojection error globally.
- Optional VGGT calibration: Users can optionally run VGGT, a separate model-based calibration workflow that can be useful when object movement is limited or when learned geometry provides more robust calibration results.
Users need only to provide a layout image and define a few alignment points by selecting corresponding landmarks in the camera views and on the map. AMC is available as a microservice featuring both REST APIs and a web interface.
Build and deploy applications with NVIDIA DeepStream agent skills
DeepStream 9.1 introduces modular skills that are designed for use by coding agents such as Claude Code, Codex or any other agent of your choice, including MV3DT and AMC. Instead of manually running scripts and editing configuration files, you describe what you want in plain natural language prompts and the agent handles setup, configuration, and execution.
You can learn more about DeepStream skills and coding agents in the “How to Build Vision AI Pipelines Using NVIDIA DeepStream Skills and Coding Agents” blog post.
We will deploy multi-camera applications using the following skills:
- MV3DT Skill: This comprehensive skill manages the MV3DT deployment lifecycle, including:
Validating prerequisites (OS, GPU driver, Docker runtime)
- Pulling or building the required DeepStream container
- Installing Kafka and Mosquitto broker services
- Downloading detection model weights (PeopleNetTransformer, RT-DETR)
- Generating DeepStream pipeline configuration from your dataset
- Automatically triggering the AMC skills if calibration files are not found
- Launching the full multi-camera tracking pipeline
- AMC Skills: These skills handle the AMC lifecycle:
amc-setup-calibration-stack: Pulls the AMC microservice container and starts the service stack (web UI + REST API).
- amc-run-sample-calibration: Runs end-to-end calibration on the bundled sample dataset; useful for verifying a fresh AMC install before using your own data.
- amc-run-video-calibration: To help calibrate a new dataset of video files, along with a layout image, and alignment points to produce calibration YAML files ready for downstream applications like MV3DT.
- amc-run-rtsp-calibration: To help calibrate a new dataset directly from RTSP streams.
The complete set of latest skills can be found here in the DeepStream GitHub repository.
The following workflow shows how a developer can move from repository setup to a running MV3DT application. The exact prompt can be adjusted for the coding agent and dataset being used.
Prerequisites
- Ubuntu 24.04 (x86_64)
- NVIDIA driver version 580 or higher
- Docker with NVIDIA Container Toolkit
- Claude Code or Codex installed and authenticated
- An NGC API key (to pull DeepStream and AMC containers from
nvcr.io)
- Hugging Face key to pull VGGT model for AMC refinement step
- For display: X11 or VNC remote desktop (optional – headless mode saves output videos instead)
Let’s get started!
Step 1: Clone the repository and install skills
Copy the skills into your coding agent’s skill directory. The path depends on which agent you use:
# Claude Code: ~/.claude/skills/
# Codex: ~/.codex/skills/
# Cursor: ~/.cursor/skills/
# Example for Codex (adjust path for your agent):
mkdir -p ~/.codex/skills
cp -r skills/* ~/.codex/skills/
Skills can also be installed at the workspace level (scoped to a single project). See the DeepStream skills README for full installation details and workspace-level instructions.
Step 2: Launch the coding agent
From the DeepStream repo root, start your coding agent:
claude
# or
codex
That’s all the setup needed. From here, you interact using natural language prompts.
Scenario A: Run MV3DT on the 12-camera sample dataset
The MV3DT skill includes 4-camera and 12-camera sample datasets with calibration already included, no AMC step required. For this example, we will be using the 12-camera dataset. Paste this sample prompt into the agent:
Sample prompt: deploy mv3dt on the 12-camera sample dataset
The agent will guide you through the following steps:
- Check your system for display access (X11/VNC) and detect headless mode if no display is found.
- Ask for your approval before running privileged Docker commands (
sudo xhost +and--privileged).
- Run the setup script to download models, start Kafka and Mosquitto services, and prepare the pipeline.
- Launch the DeepStream container and start tracking. The first run may take a few minutes as it builds and loads the model engine.
If a display is available, two windows open:
- DeepStreamTest5App: A tiled grid of all 12 camera feeds with 2D and 3D bounding boxes
- Bird’s-Eye View of Multi-View 3D Tracking: A real-time trajectory map in world coordinates

Press `q in either window to exit. The agent will remind you of this. In headless mode, the agent generates output videos (tiled_display_raw.mp4` and a BEV trajectory video) in the experiment directory. For sample outputs, see the 12-camera BEV trajectory GIFs in the MV3DT repository.
experiments/deepstream/12cam/
├── config_deepstream.txt # Generated pipeline config
├── config_tracker.yml # MV3DT tracker config
├── outVideos/
│ └── tiled_display_raw.mp4 # Multi-camera grid with 2D and 3D overlays
└── bev_outputs/
└── trajectory_video_<timestamp>.mp4 # BEV trajectory video
Scenario B: Run MV3DT on your own cameras (along with AMC calibration)
To use custom synchronized video streams without prior calibration, provide the directory path:
Sample prompt: deploy mv3dt on these videos ~/my-camera-dataset/videos
Ensure the folder contains time synchronized video files named sequentially by camera (e.g. cam_00.mp4, cam_01.mp4), and you should also have a layout BEV image (layout.png). The agent then performs these steps:
- Validates the video source folder.
- Detect that
camInfo/*.ymlcalibration files are missing, and calibration is required.
- Automatically invoke the AMC skills in order, first amc-setup-calibration-stack to bring up the AMC microservice, then amc-run-video-calibration to start calibration.
Before starting calibration, the agent will ask a few configuration questions. Here you may have to specify the detector type and calibration settings when prompted.
> Agent: What detector type would you like to use for calibration? (resnet or transformer)
> User: Resnet
> Agent: Do you have a calibration settings file to upload?
> User: No, I will update on the UI

The AMC microservice starts and the agent provides the web UI address. Open it in your browser to complete the manual alignment step—alignment points between camera views and your layout map. Once saved, notify the agent:
> User: alignment is done
AMC runs the full calibration pipeline: trajectory extraction, single-view rectification, multi-view tracklet matching, and bundle adjustment. The agent polls for completion and, when done, downloads the MV3DT-compatible calibration export and places the YAML files into `~/my-camera-dataset/camInfo/`.
MV3DT then runs automatically on your dataset, using the generated calibration data.
A successful MV3DT deployment produces the following outputs:
- Live OSD window: All camera feeds in a tiled grid with 2D and 3D bounding boxes and consistent object IDs. Click any camera to zoom in; right-click to return to the grid.
- Live BEV window: Top-down trajectory mapping with screenshot and recording options.
- Kafka metadata stream: Per-frame protobuf messages on the
mv3dttopic, containing object IDs, 3D bounding box coordinates, confidence scores, and sensor IDs. These are ready for downstream analytics, dashboards, or alert systems.
- Saved videos: With file output enabled, the system saves a tiled OSD video and a BEV trajectory video.
Getting started
All source code, skills, reference applications, and sample datasets for MV3DT and AMC are available in the NVIDIA DeepStream GitHub repository as part of the DeepStream 9.1 release:
- MV3DT reference app:
src/apps/reference_apps/deepstream-tracker-3d-multi-view
- MV3DT skill:
skills/deepstream-run-mv3dt
- AMC skills:
skills/amc-setup-calibration-stack,skills/amc-run-video-calibration,skills/amc-run-sample-calibration,skills/amc-run-rtsp-calibration.
The prebuilt MV3DT microservice can also be used with NVIDIA VSS blueprint and agent skills to integrate the pipeline with additional microservices, databases and agents.
For questions and community discussions, visit the NVIDIA DeepStream Developer Forum.
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み