Представьте: 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







