دیپاستریم(DeepStream)
دیپاستریم (DeepStream) یک کیت ابزار تجزیه و تحلیل جریانی (Streaming Analytics) برای ساخت اپلیکیشنهای مبتنی بر هوش مصنوعی است. این ابزار دادههای ویدئویی جریانی را به عنوان ورودی از منابع مختلفی مانند دوربینهای USB و…

دیپاستریم (DeepStream) یک کیت ابزار تجزیه و تحلیل جریانی (Streaming Analytics) برای ساخت اپلیکیشنهای مبتنی بر هوش مصنوعی است. این ابزار دادههای ویدئویی جریانی را به عنوان ورودی از منابع مختلفی مانند دوربینهای USB و CSI، فایلهای ویدئویی یا استریمهای تحت پروتکل RTSP دریافت کرده و با بهرهگیری از هوش مصنوعی و بینایی ماشین، اطلاعات و تحلیلهای ارزشمندی را از پیکسلها برای درک بهتر محیط استخراج میکند.
SDK دیپاستریم میتواند به عنوان لایه زیربنایی برای طیف گستردهای از راهکارهای تحلیل ویدئویی مورد استفاده قرار گیرد؛
از جمله:
- تحلیل ترافیک و تردد عابران پیاده در شهرهای هوشمند
- نظارت بر سلامت و ایمنی در بیمارستانها
- سیستمهای پرداخت خودکار (Self-checkout) و تحلیل رفتار مشتری در خردهفروشیها
- تشخیص نقص فنی قطعات در تأسیسات تولیدی و صنعتی و موارد دیگر.

توسعه و ابزارهای برنامهنویسی
دیپاستریم (DeepStream) از توسعه اپلیکیشن به زبانهای C/C++ و همچنین پایتون (از طریق Python bindings) پشتیبانی میکند.. همچنین نمونههای بیشتری از برنامههای مرجع در صفحه گیتهاب NVIDIA-AI-IOT در دسترس است.
شتابدهی سختافزاری و امنیت
هسته اصلی این SDK از چندین پلاگین شتابدهنده سختافزاری تشکیل شده است که از واحدهایی نظیر VIC، GPU، DLA، NVDEC و NVENC استفاده میکنند. دیپاستریم با اجرای تمامی عملیاتهای سنگین محاسباتی روی شتابدهندههای اختصاصی، به بالاترین سطح کارایی (Performance) در اپلیکیشنهای تحلیل ویدئویی دست مییابد. یکی از قابلیتهای کلیدی دیپاستریم، ارتباط امن و دوطرفه بین لبه (Edge) و ابر (Cloud) است. این ابزار به صورت پیشفرض از پروتکلهای امنیتی متعددی پشتیبانی میکند، از جمله:
- احراز هویت SASL/Plain با استفاده از نام کاربری و رمز عبور.
- احراز هویت دوطرفه TLS.
Technology Stack
دیپاستریم بر پایه کتابخانههای قدرتمند انویدیا در پشته CUDA-X بنا شده است؛ کتابخانههایی همچون CUDA، TensorRT، سرور استنتاج NVIDIA Triton و کتابخانههای چندرسانهای.
TensorRT : فرآیند استنتاج (Inference) هوش مصنوعی را روی پردازندههای گرافیکی انویدیا شتابدهی میکند.
انتزاع پلاگینها: دیپاستریم پیچیدگی این کتابخانهها را در قالب «پلاگین» سادهسازی کرده است تا توسعهدهندگان بتوانند بدون نیاز به یادگیری تکتک کتابخانهها، خطلولههای (Pipelines) تحلیل ویدئویی خود را بسازند.
استقرار و مدیریت
دیپاستریم برای پردازندههای گرافیکی انویدیا بهینهسازی شده است. اپلیکیشنهای ساخته شده را میتوان روی:
- دستگاههای لبه (Embedded Edge): مبتنی بر پلتفرم Jetson.
- مراکز داده: پردازندههای گرافیکی بزرگتر مانند T4.
همچنین این اپلیکیشنها قابلیت اجرا در کانتینرها (با استفاده از NVIDIA Container Runtime) را دارند که در ریجستری NGC انویدیا موجود هستند. علاوه بر این، برای مدیریت در مقیاس بزرگ، میتوان اپلیکیشنهای دیپاستریم را با استفاده از Kubernetes روی GPU مدیریت (Orchestrate) کرد. نمونههای Helm chart برای استقرار آسانتر نیز در NGC در دسترس قرار گرفته است.
معماری گراف دیپاستریم
دیپاستریم یک معماری گراف بهینهسازی شده است که بر پایه فریمورک متنباز GStreamer توسعه یافته است. نمودار زیر، یک اپلیکیشن استاندارد تحلیل ویدئویی را نشان میدهد که مراحل آن از دریافت ویدئوی ورودی آغاز شده و به استخراج اطلاعات تحلیلی (Insights) ختم میشود.
در این ساختار:
- پلاگینها: هر یک از بلوکهای مجزا در نمودار، نشاندهنده پلاگینهای مختلفی هستند که در طول مسیر پردازش استفاده میشوند.
- موتورهای سختافزاری: در لایه پایینی، موتورهای سختافزاری متنوعی قرار دارند که در تمامی مراحل اجرای اپلیکیشن نقش ایفا میکنند.
- کارایی حداکثری: مدیریت بهینه حافظه با استفاده از تکنیک Zero-memory copy (عدم کپیسازی دادهها در حافظه هنگام انتقال بین پلاگینها) و بهرهگیری از شتابدهندههای سختافزاری مختلف، تضمینکننده دستیابی به بالاترین سطح عملکرد و کارایی است.
دیپاستریم (DeepStream) مجموعهای از اجزای سازنده را در قالب پلاگینهای GStreamer فراهم میکند که میتوان از آنها برای ساخت یک خط لوله (Pipeline) کارآمد تحلیل ویدئویی استفاده کرد.
بیش از ۲۰ پلاگین مختلف در این پلتفرم وجود دارد که برای انجام وظایف گوناگون به صورت شتابیافته با سختافزار (Hardware Accelerated) بهینهسازی شدهاند.
Streaming Data
Streaming Data میتواند از سه منبع اصلی وارد سیستم شود:
- از طریق شبکه با RTSP
- از روی فایلهای محلی
- به طور مستقیم از دوربین
ابتدا این استریمها توسط CPU دریافت (Capture) میشوند. پس از قرار گرفتن فریمها در حافظه، برای Decode شدن به شتابدهندهٔ NVDEC ارسال میشوند. پلاگین مربوط به مرحلهٔ Decode، Gst-nvvideo4linux2 نام دارد.
پیشپردازش تصویر
بعد از Decode، یک مرحلهٔ اختیاری پیشپردازش تصویر وجود دارد که در آن، تصویر ورودی قبل از استنتاج (Inference) آمادهسازی میشود. این پیشپردازش میتواند شامل موارد زیر باشد:
- اصلاح اعوجاج (Dewarping) تصویر
- تبدیل فضای رنگی (Color Space Conversion)
پلاگینها:
- Gst-nvdewarper: برای Dewarp کردن تصاویر دریافتی از دوربینهای فیشآی (Fisheye) یا ۳۶۰ درجه
- Gst-nvvideoconvert: برای تبدیل فرمت رنگ فریمها
این پلاگینها از GPU یا VIC (Vision Image Compositor) استفاده میکنند.
دستهبندی فریمها
پس از Batch شدن فریمها، نوبت به استنتاج مدلهای هوش مصنوعی میرسد. این کار میتواند به دو صورت انجام شود:
- با TensorRT، موتور شتابدهندهٔ استنتاج انویدیا
- در فریمورکهای بومی مثل TensorFlow یا PyTorch از طریق NVIDIA Triton Inference Server
پلاگینها:
- Gst-nvinfer: برای استنتاج با TensorRT به صورت مستقیم
- Gst-nvinferserver: برای استنتاج از طریق Triton Inference Server
رهگیری اشیاء(Object Tracking)
بعد از استنتاج، معمولاً مرحلهٔ بعد رهگیری اشیاء است. در SDK چندین Tracker مرجع وجود دارد که طیفی از کارایی بالا تا دقت بالا را پوشش میدهند.
رهگیری اشیاء توسط پلاگین Gst-nvtracker انجام میشود.
مصورسازی
برای ساخت خروجیهای تصویری مانند:
- Bounding Box
- Maskهای سگمنتیشن
- برچسبها (Labels)
از پلاگین مصورسازی Gst-nvdsosd استفاده میشود.
خروجی گرفتن و ارسال به ابر (Cloud)
در مرحلهٔ نهایی، دیپاستریم گزینههای مختلفی برای خروجی نتایج ارائه میدهد:
- نمایش خروجی روی صفحه با Bounding Box
- ذخیرهٔ خروجی روی دیسک محلی
- استریم مجدد خروجی از طریق RTSP
- یا فقط ارسال Metadata به ابر (Cloud)
ارسال دادهها به فضای ابری
برای ارسال متادیتا (Metadata) به فضای ابری، DeepStream از دو پلاگین کلیدی زیر استفاده میکند:
- Gst-nvmsgconv: وظیفه تبدیل متادیتا به قالب دادههای استاندارد (Schema Payload) را بر عهده دارد.
- Gst-nvmsgbroker: مسئول برقراری اتصال با فضای ابری و ارسال دادههای دورسنجی (Telemetry) است.
در این بخش، چندین پروتکل کارگزار (Broker) به صورت پیشفرض پیادهسازی شدهاند، از جمله:
- Kafka
- MQTT
- AMQP
- Azure IoT
آمادهاید تا اولین اپلیکیشن خود را بسازید؟
حالا که با معماری و قطعات سازنده این پلتفرم آشنا شدید، وقت آن است که ببینید این اجزا چطور در کنار هم یک اپلیکیشن هوشمند کامل را میسازند. در بخش بعدی، برای بررسی برنامههای مرجع (Reference Apps) و مشاهده پروژههای عملی، با ما همراه باشید.
دیپاستریم یک SDK از شرکت NVIDIA برای توسعه اپلیکیشنهای تحلیل ویدئویی مبتنی بر هوش مصنوعی است که امکان پردازش بلادرنگ استریمهای ویدئویی و اجرای مدلهای بینایی ماشین را روی GPU و پلتفرم Jetson فراهم میکند.
DeepStream با استفاده از شتابدهندههای سختافزاری مانند GPU، NVDEC، NVENC و موتور TensorRT عملیات سنگین پردازش تصویر و استنتاج مدلهای یادگیری عمیق را به صورت بهینه و بلادرنگ اجرا میکند.
از DeepStream در تحلیل ترافیک شهری، سیستمهای نظارتی، فروشگاههای هوشمند، رباتیک، تشخیص اشیا در خطوط تولید صنعتی و سایر سیستمهای Video Analytics مبتنی بر هوش مصنوعی استفاده میشود.
