Skill : Exécuter DeepStream MV3DT
Quand utiliser cette skill
Activez cette skill quand l'utilisateur veut configurer, exécuter, vérifier ou déboguer l'application de référence DeepStream Multi-View 3D Tracking. Prompts typiques :
- « configurer MV3DT DeepStream »
- « exécuter l'échantillon MV3DT 4 caméras »
- « exécuter l'échantillon MV3DT 12 caméras »
- « exécuter MV3DT sur mes MP4 synchronisés »
- « j'ai des vidéos mais pas d'étalonnage ; étalonner et exécuter MV3DT »
- « afficher le visualiseur BEV ou les métadonnées Kafka »
- « arrêter MV3DT » / « nettoyer MV3DT » / « arrêter MV3DT »
N'utilisez pas cette skill pour le suivi 3D monovue, le développement générique d'applications DeepStream, ou l'intégration de flux en direct, sauf si l'utilisateur mappe explicitement ce travail au pipeline MV3DT de ce dépôt.
Exemples
- « Déployer l'échantillon DeepStream MV3DT 4 caméras et afficher les fenêtres OSD et BEV. »
- « Exécuter l'échantillon MV3DT 12 caméras sans affichage avec RTDETR et enregistrer les vidéos. »
- « Exécuter MV3DT sur des MP4 synchronisés sous /data/mv3dt-demo en utilisant PeopleNetTransformer. »
- « Mes vidéos MV3DT personnalisées n'ont pas d'étalonnage ; utiliser AutoMagicCalib, puis exécuter MV3DT. »
Aperçu
Opérez l'application de référence Multi-View 3D Tracking dans DeepStream/src/apps/reference_apps/deepstream-tracker-3d-multi-view via le chemin du conteneur DeepStream. La skill supporte la configuration, les exécutions d'échantillons livrés, les datasets MP4 synchronisés personnalisés, la délégation d'étalonnage à AutoMagicCalib, l'exécution en affichage/sans affichage, les sorties OSD/BEV, et l'inspection des métadonnées Kafka.
Conditions préalables
- Répertoire de l'application MV3DT sur disque sous
DeepStream/src/apps/reference_apps/deepstream-tracker-3d-multi-view; s'il est absent, demandez avant de cloner le dépôt DeepStream public - Docker avec support GPU NVIDIA
- Accès à l'image du conteneur DeepStream
- Datasets d'échantillons MV3DT, modèles, bibliothèques de parseurs personnalisées, Kafka, Mosquitto, et
mv3dt_venvpréparés par le script de configuration du dépôt - Affichage X11/VNC fonctionnel pour les fenêtres OSD/BEV en direct, ou le chemin sans affichage de sortie enregistrée pour le MP4 DeepStream mosaïqué plus le MP4 BEV dérivé de Kafka
Instructions
Étape 0 : Résoudre la vérification de l'application MV3DT
La skill peut être installée en dehors du dépôt DeepStream. Résolvez REPO_ROOT au répertoire de l'application MV3DT, pas nécessairement au répertoire de niveau supérieur du Git.
MV3DT_APP_SUBDIR="src/apps/reference_apps/deepstream-tracker-3d-multi-view"
is_mv3dt_app_dir() {
test -f "$1/README.md" || return 1
test -d "$1/config_templates" || return 1
test -d "$1/scripts" || return 1
grep -q "Multi-View 3D Tracking" "$1/README.md"
}
GIT_TOP="$(git rev-parse --show-toplevel 2>/dev/null || true)"
CANDIDATES=()
if [ -n "${MV3DT_REPO_ROOT:-}" ]; then CANDIDATES+=("${MV3DT_REPO_ROOT}"); fi
if [ -n "${DEEPSTREAM_REPO_ROOT:-}" ]; then CANDIDATES+=("${DEEPSTREAM_REPO_ROOT}/${MV3DT_APP_SUBDIR}"); fi
CANDIDATES+=("${PWD}")
if [ -n "${GIT_TOP}" ]; then
CANDIDATES+=("${GIT_TOP}" "${GIT_TOP}/${MV3DT_APP_SUBDIR}")
fi
CANDIDATES+=("${HOME}/DeepStream/${MV3DT_APP_SUBDIR}" "${HOME}/deepstream/${MV3DT_APP_SUBDIR}")
REPO_ROOT=""
for candidate in "${CANDIDATES[@]}"; do
if [ -n "$candidate" ] && is_mv3dt_app_dir "$candidate"; then
REPO_ROOT="$(cd "$candidate" && pwd)"
break
fi
done
if [ -z "${REPO_ROOT}" ]; then
cat <<'EOF'
ERROR: MV3DT reference app directory was not found.
Set MV3DT_REPO_ROOT to an existing deepstream-tracker-3d-multi-view app directory, or ask the user to approve cloning the public DeepStream repo and then run:
DEEPSTREAM_REPO_ROOT="${DEEPSTREAM_REPO_ROOT:-$HOME/DeepStream}"
git clone https://github.com/NVIDIA/DeepStream.git "$DEEPSTREAM_REPO_ROOT"
export MV3DT_REPO_ROOT="$DEEPSTREAM_REPO_ROOT/src/apps/reference_apps/deepstream-tracker-3d-multi-view"
Do not clone silently.
EOF
exit 1
fi
cd "${REPO_ROOT}"
export REPO_ROOT MV3DT_REPO_ROOT="${REPO_ROOT}"
Si le répertoire de l'application ne peut pas être résolu, demandez à l'utilisateur un chemin d'accès existant ou l'approbation pour cloner https://github.com/NVIDIA/DeepStream. Ne clonez pas en silence.
Étape 1 : Sélectionner le flux de travail principal
Chargez exactement une seule référence principale pour la demande actuelle de l'utilisateur :
| Intention de l'utilisateur | Référence |
|---|---|
| Installer, préparer ou vérifier les conditions préalables | references/setup.md |
| Exécuter l'échantillon 4 caméras ou 12 caméras fourni | references/sample-run.md |
| Exécuter des MP4 synchronisés personnalisés | references/custom-dataset.md |
| Étalonnage personnalisé manquant | references/amc-calibration-handoff.md, puis revenir à references/custom-dataset.md |
| Afficher OSD, BEV, captures d'écran, enregistrements ou métadonnées Kafka | references/visualization-metadata.md |
| Arrêter une exécution, nettoyer les artefacts générés ou arrêter les services de conditions préalables | references/setup.md |
Si la configuration, les datasets, les modèles, Kafka, Mosquitto, le runtime GPU Docker, ou l'environnement Python venv sont manquants, chargez references/setup.md avant de continuer vers le flux de travail original de l'utilisateur.
Quand sample-run.md ou custom-dataset.md doit régénérer les configurations DeepStream, chargez references/generate-configs.md comme la référence de génération de configuration partagée canonique plutôt que de dupliquer la logique shell.
Étape 2 : Suivre les étapes d'exécution
Pour chaque exécution, utilisez cet ordre d'étapes :
| Étape | Action |
|---|---|
| Valider | Vérifier le répertoire de l'application, les conditions préalables, la forme du dataset, le mode affichage/sans affichage, le support GPU Docker, et la possibilité d'écriture du répertoire de sortie. |
| Préparer | Indiquer l'échantillon/dataset personnalisé sélectionné, le détecteur, le mode d'exécution, le répertoire de sortie, les surfaces de sortie attendues, et la décision de sécurité Docker pour --privileged --net=host avant le lancement. |
| Exécuter | Générer les configurations, lancer d'abord la capture BEV hors ligne en mode sans affichage ou quand la sauvegarde MP4 BEV est explicitement demandée, puis exécuter DeepStream ou déléguer l'étalonnage manquant à AutoMagicCalib. |
| Vérifier | Confirmer la disponibilité fonctionnelle avec App run successful, les artefacts MP4 frais quand la sortie fichier est activée, les décalages/messages Kafka, et les comptes de messages/images BEV quand l'exécution de capture MP4 BEV s'exécute. |
| Rapport | Résumer les options sélectionnées, les fichiers générés, les chemins d'artefacts, les tailles/comptes de fichiers, et toute surface de sortie ignorée ou échouée ; après une exécution d'échantillon 4 caméras par défaut, mentionner que l'échantillon 12 caméras est également disponible comme suivi. |
Étape 3 : Appliquer les valeurs par défaut explicitement
- Chemin d'exécution : conteneur DeepStream.
- Chemin affichage : si un affichage X11/VNC fonctionnel est disponible, utilisez le chemin de démarrage rapide du dépôt avec les fenêtres OSD et BEV. La fenêtre OSD ne sauvegarde pas MP4 par défaut ; quand l'utilisateur demande explicitement de sauvegarder la sortie en mode affichage, régénérez les configurations avec à la fois
--enable-osdet--enable-file-outputplus--enable-msg-broker. - Chemin sans affichage : si aucun affichage fonctionnel n'est disponible, utilisez les sorties enregistrées par défaut. Générez les configurations avec
--enable-file-outputet--enable-msg-broker; lancez la capture BEV hors ligne avant DeepStream pour que l'exécution produise à la fois le MP4 DeepStream mosaïqué et le MP4 BEV dérivé de Kafka. - Dataset d'échantillon : supporter à la fois les datasets 4 caméras et 12 caméras fournis. Si l'utilisateur ne spécifie pas d'échantillon, exécutez d'abord l'échantillon 4 caméras, puis mentionnez dans le rapport final que l'échantillon 12 caméras est également disponible et peut être exécuté ensuite.
- Détecteur :
PeopleNetTransformersauf si l'utilisateur demandeRTDETRouPeopleNet2.6.3; reportez leDETECTOR_MODELsélectionné à travers la génération de configuration et la normalisation de modelInfo AMCcamInfo. Pour la délégation d'étalonnage personnalisée, demandez à l'utilisateur de choisir le détecteur AutoMagicCalib au lieu de configurer par défaut en silence. - Source de données personnalisée : fichiers MP4 synchronisés. La gestion de flux en direct sort de cette première version de skill.
- Délégation d'étalonnage : utilisez les skills AutoMagicCalib autonomes au lieu de dupliquer leur configuration ou flux de travail API.
Étape 4 : Préserver l'idempotence et les données utilisateur
- Les vérifications de disponibilité peuvent être réexécutées sans risque.
- La configuration peut installer des packages, tirer des conteneurs, télécharger des modèles et démarrer des services ; demandez d'abord.
- La génération de configuration et les exécutions DeepStream mettent à jour les fichiers générés sous
EXPERIMENT_DIR; enregistrezRUN_STARTED_ATet ne rapportez pas les anciens artefacts comme succès de l'exécution actuelle. - L'arrêt normal arrête uniquement les processus d'exécution actuels et laisse Kafka, Mosquitto, les modèles, les datasets et les artefacts générés en place sauf si l'utilisateur demande explicitement d'arrêter les services ou supprimer les fichiers.
- Les datasets personnalisés sont des données utilisateur. Copiez les variantes de format d'étalonnage manquantes par défaut, et demandez avant de renommer, overwrite, clarifier ou supprimer les fichiers dataset.
Critères de succès
- Les vérifications de conditions préalables passent ou la condition préalable manquante est signalée avec une étape suivante étroite.
- L'exécution DeepStream imprime finalement
App run successful. - Le mode affichage affiche par défaut la grille OSD DeepStream et le visualiseur BEV en direct.
- Le mode sans affichage produit une
${EXPERIMENT_DIR}/outVideos/tiled_display_raw.mp4fraîche et tente la capture MP4 BEV par défaut. - Le topic Kafka
mv3dtreçoit les métadonnées protobuf de l'exécution actuelle quand la sortie du courtier de messages est activée. - Le MP4 BEV est signalé comme réussi uniquement quand le processus de capture BEV séparé a produit des messages et images non nuls.
Sortie clé
- Configurations générées :
${EXPERIMENT_DIR}/config_deepstream.txt,${EXPERIMENT_DIR}/config_tracker.yml,${EXPERIMENT_DIR}/config_msgconv.txt - MP4 mosaïqué DeepStream enregistré quand la sortie fichier est activée :
${EXPERIMENT_DIR}/outVideos/tiled_display_raw.mp4 - MP4 BEV enregistré quand la capture hors ligne est utilisée :
${EXPERIMENT_DIR}/bev_outputs/trajectory_video_<timestamp>.mp4 - Topic Kafka :
mv3dt - Racines de sortie d'échantillon :
${REPO_ROOT}/experiments/deepstream/4camet${REPO_ROOT}/experiments/deepstream/12cam
Dépannage
| Problème | Première action |
|---|---|
| Conditions préalables de configuration manquantes | Chargez references/setup.md et exécutez le chemin de vérification uniquement avant la configuration. |
| Docker ne peut pas accéder au GPU | Corriger le NVIDIA Container Toolkit ou le runtime Docker avant de lancer les échantillons. |
| Fenêtre d'affichage manquante | Vérifiez DISPLAY et /tmp/.X11-unix ; utilisez le chemin de sortie enregistrée sans affichage quand aucun affichage n'est disponible. |
| MP4 DeepStream manquant | Confirmez que les configurations ont été générées avec --enable-file-output et vérifiez que l'artefact est plus récent que RUN_STARTED_AT. |
| MP4 BEV manquant ou messages nuls | Lancez la capture BEV hors ligne avec --from-end avant DeepStream, utilisez un --first-message-timeout assez long, et vérifiez que les décalages Kafka se déplacent pendant l'exécution. |
| Le client Kafka ne montre aucun message | Régénérez les configurations avec --enable-msg-broker et vérifiez que le topic mv3dt existe. |
| Le dataset personnalisé manque d'étalonnage | Chargez references/amc-calibration-handoff.md ; demandez les choix de détecteur/paramètres avant de déléguer. |
| Les fichiers générés sont propriété root | Signalez le problème de propriété et demandez avant d'appliquer un correctif d'autorisation de répertoire généré étroit. |
Remarques de sécurité
- Demandez avant les commandes utilisant
sudo, installer des packages, tirer des conteneurs, télécharger des modèles, démarrer ou arrêter des services, modifier l'accès à l'affichage de l'hôte, overwrite les fichiers dataset, ou clarifier l'état généré. - Traitez la suppression de Kafka, Mosquitto, modèles, datasets ou sorties d'expérience comme un nettoyage destructif. Affichez les cibles exactes et obtenez une confirmation explicite avant de supprimer quoi que ce soit.
- Avant d'exécuter
docker run --privileged --net=host, déclarez explicitement que le conteneur obtient un accès large à l'hôte, aux périphériques, au réseau et au dépôt monté, puis obtenez l'approbation de l'utilisateur. - Ne clonez pas silencieusement les dépôts, ne changez pas les autorisations de l'hôte en dehors du dépôt, ne renommez ni ne supprimez les datasets utilisateur, et ne signalez pas les anciens artefacts comme succès de l'exécution actuelle.
- Traitez les vidéos personnalisées, l'étalonnage, les visualisations enregistrées et les métadonnées de suivi comme des données locales potentiellement sensibles. Conservez les sorties locales sauf si l'utilisateur demande explicitement de les déplacer ou partager.
- Si les correctifs de permission sont nécessaires pour les sorties générées, proposez le correctif le plus étroit du répertoire généré uniquement et demandez d'abord ; ne recommandez jamais les modifications de permission récursive largement lisibles par tous.
Skills connexes
amc-setup-calibration-stack- Lancer la pile AutoMagicCalib autonome quand l'étalonnage est nécessaire.amc-run-video-calibration- Générer l'étalonnage à partir des MP4 locaux synchronisés avant de revenir à MV3DT.
<!-- signing marker -->