Налаштування NVIDIA DeepStream для Edge-відеоаналітики
Уявіть: 200 RTSP-потоків з камер, а CPU-сервер задихається на 10 потоках. DeepStream на Jetson Orin вирішує це — апаратне декодування та GPU-інференс дають 32 потоки на одній платі. Але налаштування пайплайну потребує розуміння GStreamer та TensorRT. Ми налаштовуємо пайплайни відеоаналітики на базі NVIDIA DeepStream для Edge-пристроїв. DeepStream SDK — GStreamer-based фреймворк з апаратним прискоренням: декодування RTSP, детекція об'єктів, трекінг, публікація метаданих у Kafka — все на Jetson або GPU. На Jetson Orin обробляємо 16+ HD-потоків у реальному часі, що в 10 разів більше, ніж аналоги на OpenCV та Intel Xeon. Досвід 30+ проєктів відеоаналітики підтверджує надійність рішення.
Архітектура DeepStream пайплайну
GStreamer плагіни DeepStream формують лінійний пайплайн:
[RTSP/File/USB] → nvv4l2decoder → nvstreammux → nvinfer → nvtracker
↓
[Kafka/MQTT/File] ← nvmsgbroker ← nvmsgconv ← nvdsosd ← nvinfer (secondary)
nvv4l2decoder: Hardware decode (H.264/H.265/AV1) через Jetson VPU. Zero-copy в GPU memory — немає CPU→GPU transfer.
nvstreammux: Мультиплексує N потоків у batch. batch-size=8 → один виклик інференсу для 8 кадрів одночасно.
nvinfer: TensorRT engine всередині. Підтримує detector (YOLO, SSD), classifier, segmentor. Конфіг через .txt файл — model engine, batch size, precision.
nvtracker: Multi-object tracking. Алгоритми: IOU, NvSORT, NvDeepSORT (з ReID), NvDCF (correlation filter). DeepSORT: Re-ID мережа для утримання ID при перекриттях.
nvmsgconv + nvmsgbroker: Конвертація метаданих bbox/trackID/class у JSON, публікація в Kafka, MQTT, Azure IoT Hub, AWS IoT.
Чому DeepStream на Edge ефективніше CPU-рішень?
Порівняння з OpenCV на CPU показує: DeepStream на Jetson Orin AGX обробляє 32 HD-потоки з YOLOv8n FP16 при 30 FPS, тоді як OpenCV на Intel Xeon справляється з 2–3 потоками. Причина — апаратне декодування, zero-copy та TensorRT на GPU. Економія на хмарних обчисленнях сягає 3–5 разів за рахунок локальної обробки.
Конфігурація під конкретні задачі
Охоронне відеоспостереження (16 RTSP-камер)
[primary-gie]
model-engine-file=yolov8n.engine
batch-size=16
interval=0 # кожен кадр
network-type=0 # detector
[tracker]
tracker-width=640
tracker-height=384
ll-lib-file=/opt/nvidia/deepstream/lib/libnvds_nvmultiobjecttracker.so
ll-config-file=nvdcf_tracking.yml
Виробничий контроль якості (1–2 камери високої роздільної здатності): batch-size=1, interval=0, primary detector → secondary classifier (дефект/норма). Висока роздільна здатність: tile-based inference через nvdspreprocess з overlapping tiles.
Підрахунок людей у зонах: nvinfer → nvtracker → nvdsanalytics. nvdsanalytics: ROI counting, line crossing detection, direction detection. Все через конфіг без написання коду.
Як інтегрувати кастомні моделі YOLO?
- Експорт моделі в ONNX:
yolo export model=yolov8n.pt format=onnx - Конвертація ONNX в TensorRT engine:
trtexec --onnx=yolov8n.onnx --saveEngine=yolov8n.engine --fp16 - Написання custom parser (C++) для розбору output-тензора в NvDsInferObjectDetectionInfo.
- Підключення engine та parser у конфіг DeepStream.
Якщо не хочете писати парсер з нуля, використовуємо готові рішення: Ultralytics GitHub для експорту безпосередньо в TensorRT або DeepStream-Yolo з готовими парсерами для різних версій YOLO.
Приклад custom parser:
extern "C" bool NvDsInferParseCustomYoloV8(
std::vector<NvDsInferLayerInfo> const& outputLayersInfo,
NvDsInferNetworkInfo const& networkInfo,
NvDsInferParseDetectionParams const& detectionParams,
std::vector<NvDsInferObjectDetectionInfo>& objectList) {
// парсинг тензора → NvDsInferObjectDetectionInfo
}
Python біндінги (pyds)
Для кастомної логіки в probe callbacks:
def osd_sink_pad_buffer_probe(pad, info, u_data):
gst_buffer = info.get_buffer()
batch_meta = pyds.gst_buffer_get_nvds_batch_meta(hash(gst_buffer))
for frame_meta in pyds.NvDsFrameMetaList(batch_meta.frame_meta_list):
for obj_meta in pyds.NvDsObjectMetaList(frame_meta.obj_meta_list):
if obj_meta.class_id == PERSON_CLASS:
# кастомна логіка: фільтрація, алерти, запис
obj_meta.rect_params.border_color.set(1.0, 0, 0, 1.0)
Probe на будь-який pad пайплайну — повний доступ до метаданих без зупинки потоку.
Деплой на Jetson
JetPack: остання версія включає всі залежності. Встановлення: apt install deepstream-7.0. Сертифіковані інженери NVIDIA налаштовують середовище.
TensorRT engine генерація:
trtexec --onnx=yolov8n.onnx \
--saveEngine=yolov8n.engine \
--fp16 \
--workspace=2048 \
--minShapes=input:1x3x640x640 \
--optShapes=input:8x3x640x640 \
--maxShapes=input:16x3x640x640
Engine генерується на конкретному пристрої — не переносимо між різними Jetson SKU.
Контейнеризація: nvcr.io/nvidia/deepstream:7.0-gc-triton-devel. Docker на Jetson з --runtime nvidia. Оркестрація через docker-compose або K3s.
Масштабування та моніторинг
Метрики: DeepStream Prometheus exporter — FPS per source, inference time, tracker update time, drop frame ratio. Grafana dashboard.
Multi-node: Kafka як транспорт метаданих між вузлами. Кожен Jetson — producer. Центральний сервер — consumer + агрегація.
Віддалене керування: DeepStream App Framework з REST API (ds-server): додавання/видалення RTSP джерел без перезапуску пайплайну.
Порівняння продуктивності
| Платформа | Потоків HD | Модель | FPS/потік |
|---|---|---|---|
| Jetson Orin AGX | 32 | YOLOv8n FP16 | 30 |
| Jetson Orin NX 16G | 16 | YOLOv8n FP16 | 30 |
| Jetson Orin Nano | 4 | YOLOv8n INT8 | 25 |
| RTX 4090 (x86) | 64+ | YOLOv8s FP16 | 30 |
| Рішення | Потоків HD | FPS/потік | Вартість інфраструктури |
|---|---|---|---|
| DeepStream на Jetson Orin | 32 | 30 | Низька |
| OpenCV на Intel Xeon | 2 | 25 | Висока |
DeepStream на Jetson забезпечує в 10 разів більше потоків при значно менших витратах. Впровадження може скоротити витрати на серверне обладнання до 80%.
Що входить в роботу
- Аудит поточної інфраструктури та вимог.
- Проектування пайплайну: вибір моделі, параметри, інтеграції.
- Кастомізація моделей (fine-tuning, quantization INT8/FP16).
- Розробка custom parsers та probe callbacks.
- Інтеграція з VMS (Milestone, Genetec) та зовнішніми системами (Kafka, MQTT).
- Документація та навчання операторів.
- Гарантія стабільної роботи 6 місяців.
Інвестиції в DeepStream окупаються за 6–12 місяців за рахунок відмови від дорогих CPU-серверів та скорочення трафіку на хмарні сервіси.
Строки: 4–8 тижнів
Базова конфігурація з готовою моделлю — 1–2 тижні. Кастомні парсери, інтеграція з VMS, складна бізнес-логіка — 6–8 тижнів.
Зв'яжіться з нами — оцінимо ваш проєкт за 2 дні. Отримайте консультацію сертифікованого інженера NVIDIA. GStreamer







