التشغيل السريع: تحليل موجز فيديو مباشر من كاميرا IP (محاكاة) باستخدام نموذج HTTP الخاص بك

edge icon
بدلًا من ذلك، تحقق من المواضيع ضمن إنشاء تطبيقات الفيديو على الحافة.


ملاحظة

نحن نوقف خدمة معاينة Azure Video Analyzer، وينصحك بنقل تطبيقاتك من Video Analyzer بحلول 01 ديسمبر 2022.

لا يتأثر محلل فيديو Azure للوسائط بهذا الإيقاف. يتم الآن تغيير العلامة التجارية إلى Azure Video Indexer. انقر هنا لقراءة المزيد.

الإجراء مطلوب: لتقليل تعطيل أحمال العمل الخاصة بك، قم بنقل التطبيق الخاص بك من Video Analyzer لكل اقتراحات موصوفة في هذا الدليل قبل 01 ديسمبر 2022. بعد 1 ديسمبر 2022، لن يعمل حساب Azure Video Analyzer. اعتبارا من 2 مايو 2022، لن تتمكن من إنشاء حسابات محلل فيديو جديدة.

يوضح التشغيل السريع لك كيفية استخدام Azure Video Analyzer لتحليل بث فيديو مباشر من كاميرا IP (محاكاة). سترى كيفية تطبيق نماذج رؤية الكمبيوتر للكشف عن أي كائنات. تُرسل مجموعة فرعية من الإطارات في موجز الفيديو المباشر إلى خدمة الاستدلال. تُرسل النتائج إلى IoT Edge Hub.

يستخدم التشغيل السريع الجهاز الافتراضي لأزور Azure VM كجهاز طرفي لإنترنت الأشياء IoT Edge، كما يستخدم بث فيديو مباشر للمحاكاة. تُنشأ على التشغيل السريع ⁧⁩ للكشف عن الحركة وإرسال الأحداث⁧⁩.

المتطلبات الأساسية

إعداد موارد Azure

Deploy to Azure

تستغرق عملية النشر حوالي ⁧⁩20 دقيقة⁧⁩. عند الانتهاء، سيكون لديك بعض موارد Azure المنشورة في اشتراك Azure، بما في ذلك:

  1. ⁩حساب محلل الفيديو⁧⁩ - يتم استخدام هذه ⁧⁩الخدمة السحابية⁧⁩ لتسجيل وحدة حافة محلل الفيديو، ولإعادة تشغيل تحليلات الفيديو والفيديو المسجلة.
  2. Storage account - لتخزين الفيديو وتحليلاته المسجلة.
  3. Managed Identity - يشير ذلك إلى هوية المستخدم المدارة المعينة التي تدير الوصول إلى حساب التخزين أعلاه.
  4. Virtual machine - يشير إلى الجهاز الظاهري الذي سيكون بمثابة جهازك الطرفي.
  5. ⁩IoT Hub⁧⁩ - يعمل هذا كمركز رسائل مركزي للاتصال ثنائي الاتجاه بين تطبيق IoT الخاص بك، ووحدات IoT Edge والأجهزة التي يديرها.

بالإضافة إلى الموارد المذكورة أعلاه، يتم أيضاً إنشاء العناصر التالية في مشاركة الملف "deployment-output" في حسابك للتخزين، لاستخدامها في قوالب التشغيل السريع والبرامج التعليمية:

  • appsettings.json - يحتوي هذا الملف على سلسلة اتصال الجهاز وخصائص أخرى مطلوبة لتشغيل نموذج التطبيق في Visual Studio Code.
  • env.txt - يحتوي هذا الملف على متغيرات البيئة التي ستحتاجها لإنشاء بيانات النشر باستخدام Visual Studio Code.
  • deployment.json - هذا هو بيان النشر المستخدم بواسطة القالب لنشر وحدات الحافة إلى جهاز الحافة الذي تمت محاكاته.

تلميح

إذا واجهت مشكلات في إنشاء جميع موارد Azure المطلوبة، يُرجى استخدام الخطوات اليدوية في التشغيل السريع.

نظرة عامة

في التشغيل السريع هذا، ستستخدم محلل الفيديو للكشف عن أشياء مثل المركبات والأشخاص. يتم نشر أحداث الاستدلال ذات الصلة لـ IoT Edge Hub.

Publish associated inference events to IoT Edge Hub

يوضح المخطط أعلاه كيف تتدفق الإشارات في التشغيل السريع. تحاكي وحدة الحافة كاميرا IP التي تستضيف خادم بروتوكول البث المباشر في الوقت الحقيقي (RTSP). تُسحب عقدة مصدر "بروتوكول البث المباشر" بث الفيديو من هذا الخادم وترسل إطارات الفيديو إلى عقدة معالج امتداد "بروتوكول نقل النص التشعبي".

عقدة امتداد "بروتوكول نقل النص التشعبي" تلعب دور الوكيل. يبسط إطارات الفيديو الواردة التي تم تعيينها بواسطة حقل samplingOptions وتحويل إطارات الفيديو إلى نوع الصورة المحدد. ثم يُرحل الصور عبر REST إلى وحدة حافة أخرى خاصة بتشغيل نموذج الذكاء الاصطناعي خلف نقطة نهاية "بروتوكول نقل النص التشعبي". في هذا المثال، يتم إنشاء وحدة الحافة هذه باستخدام وحدة YOLOv3، حيث يمكنها اكتشاف أنواع كثيرة من العناصر. تعمل عُقدة معالج امتداد "بروتوكول نقل النص التشعبي" على تجميع نتائج الكشف ثم نشر الأحداث إلى عقدة ملتقي رسائل مركز إنترنت الأشياء. ثم ترسل العقدة تلك الأحداث إلى مركز IoT Edge.

يوفر التشغيل السريع التالي:

  • إنشاء ونشر مسار البث المباشر.
  • تفسير النتائج.
  • تنظيف الموارد

إعداد بيئة التطوير

الحصول على التعليمات البرمجية للعينة

  1. استنسخ ⁧⁩مستودع عينات AVA C#⁧⁩.

  2. ابدأ تشغيل Visual Studio Code، وفتح المجلد الذي تم تنزيل المستودع فيه.

  3. في Visual Studio Code، استعرض للوصول إلى مجلد src/cloud-to-device-console-app، ثم أنشئ ملفًا باسم ⁧⁩appsettings.js⁧⁩. يحتوي هذا الملف على الإعدادات اللازمة لتشغيل البرنامج.

  4. استعرض للوصول إلى مشاركة الملف في حساب التخزين المُنشأ في خطوة الإعداد الموضحة أعلاه، وحدد ملف ⁧⁩ appsettings.json⁧⁩ ضمن مشاركة الملف "النشر-الإخراج". انقر فوق الملف، ثم اضغط على الزر "تنزيل". يُفترض أن تُفتح المحتويات في علامة تبويب جديدة بالمستعرض، على أن تكون بهذا الشكل:

    {
        "IoThubConnectionString" : "HostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX",
        "deviceId" : "avasample-iot-edge-device",
        "moduleId" : "avaedge"
    }
    

    تتيح لك سلسلة اتصال IoT Hub استخدام Visual Studio Code لإرسال الأوامر إلى الوحدات النمطية للحافة عبر Azure IoT Hub. انسخ نص JSON الموجود أعلاه في ملف ⁧⁩src/cloud-to-device-console-app/appsettings.json⁧⁩.

  5. ثم انتقل إلى المجلد src/edge، وأنشئ ملفًا باسم ⁧⁩.env⁧⁩. يحتوي هذا الملف على خصائص يستخدمها Visual Studio Code لنشر الوحدات النمطية إلى جهاز حافة.

  6. استعرض للوصول إلى مشاركة الملف في حساب التخزين المُنشأ في خطوة الإعداد الموضحة أعلاه، وحدد الملف ⁧⁩ env.txt⁧⁩ ضمن مشاركة ملف "النشر-الإخراج". انقر فوق الملف، ثم اضغط على الزر "تنزيل". يُفترض أن تُفتح المحتويات في علامة تبويب جديدة بالمستعرض، على أن تكون بهذا الشكل:

         SUBSCRIPTION_ID="<Subscription ID>"
         RESOURCE_GROUP="<Resource Group>"
         AVA_PROVISIONING_TOKEN="<Provisioning token>"
         VIDEO_INPUT_FOLDER_ON_DEVICE="/home/localedgeuser/samples/input"
         VIDEO_OUTPUT_FOLDER_ON_DEVICE="/var/media"
         APPDATA_FOLDER_ON_DEVICE="/var/lib/videoanalyzer"
         CONTAINER_REGISTRY_USERNAME_myacr="<your container registry username>"
         CONTAINER_REGISTRY_PASSWORD_myacr="<your container registry password>"
    

    انسخ نص JSON من الملف ⁧⁩env.txt⁧⁩ في ملف ⁧⁩src/edge/.env⁧⁩.

الاتصال بـ IoT Hub

  1. في Visual Studio Code، عيّن سلسلة اتصال IoT Hub من خلال تحديد أيقونة ⁧⁩المزيد من الإجراءات⁧⁩ الموجودة إلى جانب لوحة ⁧⁩AZURE IOT HUB⁧⁩ في الزاوية السفلية اليمنى. انسخ السلسلة من الملف src/cloud-to-device-console-app/appsettings.json.

    ملاحظة

    قد يُطلب منك تقديم معلومات نقطة نهاية مضمنة لـ IoT Hub. للحصول على هذه المعلومات، في مدخل Azure، يمكن الانتقال إلى مركز إنترنت الأشياء والبحث عن خيار نقاط النهاية المضمنة في جزء التنقل الأيمن. النقر هناك والبحث عن نقطة النهاية المتوافقة مع Event Hub أسفل قسم نقطة النهاية المتوافقة مع Event Hub . انسخ النص في المربع واستخدمه. ستبدو نقطة النهاية كما يلي: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

  2. في غضون 30 ثانية تقريبًا، حدّث Azure IoT Hub في القسم السفلي الأيمن. يُفترض أن يظهر لك الجهاز الحافة ⁧avasample-iot-edge-device⁩، الذي يجب أن يحتوي على الوحدات النمطية التالية منشورةً:

    • مركز الحافة (اسم الوحدة النمطية ⁧⁩edgeHub⁧⁩)
    • وكيل الحافة (اسم الوحدة النمطية ⁧⁩edgeAgent⁧⁩)
    • محلل الفيديو (اسم الوحدة النمطية ⁧⁩avaedge⁧⁩)
    • محاكي RTSP (اسم الوحدة النمطية ⁧⁩rtspsim⁧⁩)

الاستعداد لمراقبة الوحدات النمطية

عند استخدام تشغيل هذا التشغيل السريع أو البرنامج التعليمي، يتم إرسال الأحداث إلى IoT Hub. لمشاهدة هذه الأحداث، اتبع الخطوات التالية:

  1. افتح جزء المستكشف في Visual Studio Code، وابحث عن Azure IoT Hub في الزاوية اليسرى السفلية.

  2. توسيع عقدة ⁧⁩الأجهزة⁧⁩.

  3. انقر بزر الماوس الأيمن فوق ⁧avasample-iot-edge-device⁩، وحدد ⁧⁩بدء مراقبة نقطة نهاية الحدث المضمنة⁧⁩.

    ملاحظة

    قد يُطلب منك تقديم معلومات نقطة نهاية مضمنة لـ IoT Hub. للحصول على هذه المعلومات، في مدخل Azure، يمكن الانتقال إلى مركز إنترنت الأشياء والبحث عن خيار نقاط النهاية المضمنة في جزء التنقل الأيمن. النقر هناك والبحث عن نقطة النهاية المتوافقة مع Event Hub أسفل قسم نقطة النهاية المتوافقة مع Event Hub . انسخ النص في المربع واستخدمه. ستبدو نقطة النهاية كما يلي: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

إعداد موارد Azure

Deploy to Azure

تستغرق عملية النشر حوالي ⁧⁩20 دقيقة⁧⁩. عند الانتهاء، سيكون لديك بعض موارد Azure المنشورة في اشتراك Azure، بما في ذلك:

  1. ⁩حساب محلل الفيديو⁧⁩ - يتم استخدام هذه ⁧⁩الخدمة السحابية⁧⁩ لتسجيل وحدة حافة محلل الفيديو، ولإعادة تشغيل تحليلات الفيديو والفيديو المسجلة.
  2. Storage account - لتخزين الفيديو وتحليلاته المسجلة.
  3. Managed Identity - يشير ذلك إلى هوية المستخدم المدارة المعينة التي تدير الوصول إلى حساب التخزين أعلاه.
  4. Virtual machine - يشير إلى الجهاز الظاهري الذي سيكون بمثابة جهازك الطرفي.
  5. ⁩IoT Hub⁧⁩ - يعمل هذا كمركز رسائل مركزي للاتصال ثنائي الاتجاه بين تطبيق IoT الخاص بك، ووحدات IoT Edge والأجهزة التي يديرها.

بالإضافة إلى الموارد المذكورة أعلاه، يتم أيضاً إنشاء العناصر التالية في مشاركة الملف "deployment-output" في حسابك للتخزين، لاستخدامها في قوالب التشغيل السريع والبرامج التعليمية:

  • appsettings.json - يحتوي هذا الملف على سلسلة اتصال الجهاز وخصائص أخرى مطلوبة لتشغيل نموذج التطبيق في Visual Studio Code.
  • env.txt - يحتوي هذا الملف على متغيرات البيئة التي ستحتاجها لإنشاء بيانات النشر باستخدام Visual Studio Code.
  • deployment.json - هذا هو بيان النشر المستخدم بواسطة القالب لنشر وحدات الحافة إلى جهاز الحافة الذي تمت محاكاته.

تلميح

إذا واجهت مشكلات في إنشاء جميع موارد Azure المطلوبة، يُرجى استخدام الخطوات اليدوية في التشغيل السريع.

نظرة عامة

في التشغيل السريع هذا، ستستخدم محلل الفيديو للكشف عن أشياء مثل المركبات والأشخاص. يتم نشر أحداث الاستدلال ذات الصلة لـ IoT Edge Hub.

Publish associated inference events to IoT Edge Hub

يوضح المخطط أعلاه كيف تتدفق الإشارات في التشغيل السريع. تحاكي وحدة الحافة كاميرا IP التي تستضيف خادم بروتوكول البث المباشر في الوقت الحقيقي (RTSP). تُسحب عقدة مصدر "بروتوكول البث المباشر" بث الفيديو من هذا الخادم وترسل إطارات الفيديو إلى عقدة معالج امتداد "بروتوكول نقل النص التشعبي".

عقدة امتداد "بروتوكول نقل النص التشعبي" تلعب دور الوكيل. يبسط إطارات الفيديو الواردة التي تم تعيينها بواسطة حقل samplingOptions وتحويل إطارات الفيديو إلى نوع الصورة المحدد. ثم يُرحل الصور عبر REST إلى وحدة حافة أخرى خاصة بتشغيل نموذج الذكاء الاصطناعي خلف نقطة نهاية "بروتوكول نقل النص التشعبي". في هذا المثال، يتم إنشاء وحدة الحافة هذه باستخدام وحدة YOLOv3، حيث يمكنها اكتشاف أنواع كثيرة من العناصر. تعمل عُقدة معالج امتداد "بروتوكول نقل النص التشعبي" على تجميع نتائج الكشف ثم نشر الأحداث إلى عقدة ملتقي رسائل مركز إنترنت الأشياء. ثم ترسل العقدة تلك الأحداث إلى مركز IoT Edge.

يوفر التشغيل السريع التالي:

  • إنشاء ونشر مسار البث المباشر.
  • تفسير النتائج.
  • تنظيف الموارد

إعداد بيئة التطوير

الحصول على التعليمات البرمجية للعينة

  1. استنساخ مستودع عينات AVA Python.

  2. ابدأ تشغيل Visual Studio Code، وفتح المجلد الذي تم تنزيل المستودع فيه.

  3. في Visual Studio Code، استعرض للوصول إلى مجلد src/cloud-to-device-console-app، ثم أنشئ ملفًا باسم ⁧⁩appsettings.js⁧⁩. يحتوي هذا الملف على الإعدادات اللازمة لتشغيل البرنامج.

  4. استعرض للوصول إلى مشاركة الملف في حساب التخزين المُنشأ في خطوة الإعداد الموضحة أعلاه، وحدد ملف ⁧⁩ appsettings.json⁧⁩ ضمن مشاركة الملف "النشر-الإخراج". انقر فوق الملف، ثم اضغط على الزر "تنزيل". يُفترض أن تُفتح المحتويات في علامة تبويب جديدة بالمستعرض، على أن تكون بهذا الشكل:

    {
      "IoThubConnectionString": "HostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX",
      "deviceId": "avasample-iot-edge-device",
      "moduleId": "avaedge"
    }
    

    تتيح لك سلسلة اتصال IoT Hub استخدام Visual Studio Code لإرسال الأوامر إلى الوحدات النمطية للحافة عبر Azure IoT Hub. انسخ نص JSON الموجود أعلاه في ملف ⁧⁩src/cloud-to-device-console-app/appsettings.json⁧⁩.

  5. ثم انتقل إلى المجلد src/edge، وأنشئ ملفًا باسم ⁧⁩.env⁧⁩. يحتوي هذا الملف على خصائص يستخدمها Visual Studio Code لنشر الوحدات النمطية إلى جهاز حافة.

  6. استعرض للوصول إلى مشاركة الملف في حساب التخزين المُنشأ في خطوة الإعداد الموضحة أعلاه، وحدد الملف ⁧⁩ env.txt⁧⁩ ضمن مشاركة ملف "النشر-الإخراج". انقر فوق الملف، ثم اضغط على الزر "تنزيل". يُفترض أن تُفتح المحتويات في علامة تبويب جديدة بالمستعرض، على أن تكون بهذا الشكل:

         SUBSCRIPTION_ID="<Subscription ID>"
         RESOURCE_GROUP="<Resource Group>"
         AVA_PROVISIONING_TOKEN="<Provisioning token>"
         VIDEO_INPUT_FOLDER_ON_DEVICE="/home/localedgeuser/samples/input"
         VIDEO_OUTPUT_FOLDER_ON_DEVICE="/var/media"
         APPDATA_FOLDER_ON_DEVICE="/var/lib/videoanalyzer"
         CONTAINER_REGISTRY_USERNAME_myacr="<your container registry username>"
         CONTAINER_REGISTRY_PASSWORD_myacr="<your container registry password>"
    

    انسخ نص JSON من الملف ⁧⁩env.txt⁧⁩ في ملف ⁧⁩src/edge/.env⁧⁩.

الاتصال بـ IoT Hub

  1. في Visual Studio Code، عيّن سلسلة اتصال IoT Hub من خلال تحديد أيقونة ⁧⁩المزيد من الإجراءات⁧⁩ الموجودة إلى جانب لوحة ⁧⁩AZURE IOT HUB⁧⁩ في الزاوية السفلية اليمنى. انسخ السلسلة من الملف src/cloud-to-device-console-app/appsettings.json.

    ملاحظة

    قد يُطلب منك تقديم معلومات نقطة نهاية مضمنة لـ IoT Hub. للحصول على هذه المعلومات، في مدخل Azure، يمكن الانتقال إلى مركز إنترنت الأشياء والبحث عن خيار نقاط النهاية المضمنة في جزء التنقل الأيمن. النقر هناك والبحث عن نقطة النهاية المتوافقة مع Event Hub أسفل قسم نقطة النهاية المتوافقة مع Event Hub . انسخ النص في المربع واستخدمه. ستبدو نقطة النهاية كما يلي: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

  2. في غضون 30 ثانية تقريبًا، حدّث Azure IoT Hub في القسم السفلي الأيمن. يُفترض أن يظهر لك الجهاز الحافة ⁧avasample-iot-edge-device⁩، الذي يجب أن يحتوي على الوحدات النمطية التالية منشورةً:

    • مركز الحافة (اسم الوحدة النمطية ⁧⁩edgeHub⁧⁩)
    • وكيل الحافة (اسم الوحدة النمطية ⁧⁩edgeAgent⁧⁩)
    • محلل الفيديو (اسم الوحدة النمطية ⁧⁩avaedge⁧⁩)
    • محاكي RTSP (اسم الوحدة النمطية ⁧⁩rtspsim⁧⁩)

الاستعداد لمراقبة الوحدات النمطية

عند استخدام تشغيل هذا التشغيل السريع أو البرنامج التعليمي، يتم إرسال الأحداث إلى IoT Hub. لمشاهدة هذه الأحداث، اتبع الخطوات التالية:

  1. افتح جزء المستكشف في Visual Studio Code، وابحث عن Azure IoT Hub في الزاوية اليسرى السفلية.

  2. توسيع عقدة ⁧⁩الأجهزة⁧⁩.

  3. انقر بزر الماوس الأيمن فوق ⁧avasample-iot-edge-device⁩، وحدد ⁧⁩بدء مراقبة نقطة نهاية الحدث المضمنة⁧⁩.

    ملاحظة

    قد يُطلب منك تقديم معلومات نقطة نهاية مضمنة لـ IoT Hub. للحصول على هذه المعلومات، في مدخل Azure، يمكن الانتقال إلى مركز إنترنت الأشياء والبحث عن خيار نقاط النهاية المضمنة في جزء التنقل الأيمن. النقر هناك والبحث عن نقطة النهاية المتوافقة مع Event Hub أسفل قسم نقطة النهاية المتوافقة مع Event Hub . انسخ النص في المربع واستخدمه. ستبدو نقطة النهاية كما يلي: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>

مراجعة نموذج الفيديو

عند إعداد موارد Azure، يتم نسخ مقطع فيديو قصير لحركة المرور في الطرق السريعة إلى الجهاز الظاهري Linux في Azure الذي تستخدمه كجهاز IoT Edge. يَستخدم هذا التشغيل السريع ملف الفيديو لمحاكاة البث المباشر.

يُرجى فتح تطبيق مثل ⁧⁩مشغل الوسائط VLC⁧⁩. اختر Ctrl+N ثم ألصق رابطًا إلى نموذج فيديو لتقاطع الطريق السريع لبدء إعادة التشغيل. يمكنك رؤية لقطات لعدة مركبات تتحرك في حركة المرور على الطرق السريعة.

إنشاء ونشر مسار البث المباشر

فحص وتحرير ملفات العينة

كجزء من المتطلبات الأساسية، قمت بتنزيل نموذج التعليمات البرمجية إلى مجلد. اتبع هذه الخطوات لفحص ملفات العينة وتحريرها.

  1. في Visual Studio Code، انتقل إلى src/edge. تشاهد ملف .env الخاص بك وعددًا قليلاً من ملفات قالب النشر. يشير قالب النشر إلى بيان النشر لجهاز الحافة. يتضمن بعض قيم العناصر النائبة. يتضمن ملف .env قيم هذه المتغيرات.

  2. انتقل إلى مجلد src/cloud-to-device-console-app. الاطلاع على ملف ⁧⁩ appsettings.json ⁧⁩ وبعض الملفات الأخرى:

    • c2d-وحدة التحكم-app.csproj -الملف الخاص بـ Visual Studio Code.

    • Operations.json - قائمة بالعمليات المراد أن يقوم البرنامج بتشغيلها.

    • Program.cs - نموذج الشفرة المصدرية. هذه الشفرة المصدرية:

      • يحمل إعدادات التطبيق.
      • الاستناد إلى الأساليب المباشرة التي يكشفها نموذج وحدة "Azure Video Analyzer". يُمكنك استخدام الوحدة لتحليل بث الفيديو المباشر عن طريق الاستناد إلى أساليبها المباشرة.
      • إيقاف مؤقت حتى تتمكن من فحص مخرجات البرنامج في نافذة ⁧⁩TERMINAL⁧⁩، والتدقيق في الأحداث التي تم تكوينها من خلال الوحدة النمطية في نافذة ⁧⁩OUTPUT⁧⁩.
      • الاستناد إلى الأساليب المباشرة لتنظيف الموارد.
  3. تحرير ملف operations.js:

    • تغيير ارتباط pipelineTopology
      "pipelineTopologyUrl" : "https://raw.githubusercontent.com/Azure/video-analyzer/main/pipelines/live/topologies/motion-with-httpExtension/topology.json"
    • في إطار livePipelineSet تحرير اسم pipelineTopology لمطابقة القيمة في الارتباط السابق:
      "pipelineTopologyName" : "EVROnMotionPlusHttpExtension"
    • في إطار PipelineTopologyDelete، حرر الاسم:
      "name": "EVROnMotionPlusHttpExtension"

كجزء من المتطلبات الأساسية، قمت بتنزيل نموذج التعليمات البرمجية إلى مجلد. اتباع هذه الخطوات لفحص ملفات العينة وتحريرها.

  1. من Visual Studio Code، انقل إلى src/edge. يُمكنك الاطلاع على ملف .env والقليل من ملفات نماذج النشر. يشير نموذج النشر إلى بيان النشر لجهاز طرفي ما. يتضمن بعض قيم العناصر النائبة. يتضمن ملف .env قيم هذه المتغيرات.

  2. انتقل إلى مجلد src/cloud-to-device-console-app. يُمكنك هنا رؤية ملف appsettings.json وبعض الملفات الأخرى:

    • c2d-وحدة التحكم-app.csproj -الملف الخاص بـ Visual Studio Code.

    • Operations.json - قائمة بالعمليات المراد أن يقوم البرنامج بتشغيلها.

    • main.py - نموذج رمز البرنامج. هذه الشفرة المصدرية:

      • يحمل إعدادات التطبيق.
      • الاستناد إلى الأساليب المباشرة التي يكشفها نموذج وحدة "Azure Video Analyzer".
      • للإيقاف المؤقت حتى يُمكنك فحص نتائج البرنامج في النافذة "TERMINAL" وفحص الأحداث التي أُنشئت بواسطة نموذج الوحدة في نافذة "OUTPUT".
      • الاستناد إلى الأساليب المباشرة لتنظيف الموارد.
  3. تحرير ملف Operations.json:

    • تغيير ارتباط pipelineTopology
      "pipelineTopologyUrl" : "https://raw.githubusercontent.com/Azure/video-analyzer/main/pipelines/live/topologies/motion-with-httpExtension/topology.json"
    • في إطار livePipelineSet تحرير اسم pipelineTopology لمطابقة القيمة في الارتباط السابق:
      "pipelineTopologyName" : "EVROnMotionPlusHttpExtension"
    • في إطار PipelineTopologyDelete، حرر الاسم:
      "name": "EVROnMotionPlusHttpExtension"

قم بإنشاء ونشر بيان IoT Edge

  1. انقر بزر الماوس الأيمن على ملف ⁧⁩src/edge/ deployment.yolov3.template.json⁧⁩، ثم حدِّد ⁧⁩Generate IoT Edge Deployment Manifest⁧⁩.

    Screenshot of Generate IoT Edge Deployment Manifest

  2. إنشاء ملف بيان ⁧⁩deployment.yolov3.amd64.json⁧⁩في المجلد ⁧⁩src/edge/config⁧⁩.

  3. انقر بزر الماوس الأيمن على ⁧⁩src/edge/config/deployment.yolov3.amd64.json⁧⁩، وحدِّد ⁧⁩Create Deployment for Single Device⁧⁩.

    Screenshot of Create Deployment for Single Device

  4. عند طلب تحديد جهاز IoT Hub، حدد ⁧⁩ava-sample-iot-edge-device⁧⁩.

  5. بعد مرور حوالي 30 ثانية، في الزاوية السفلية اليسرى من النافذة، حدث Azure IoT Hub. وفي الوقت الحالي، يعرض جهاز edge الوحدات الموزعة على النحو التالي:

    • وحدة Video Analyzer، واسمه avaedge.

    • وحدة ⁧⁩RTSpsim،⁧⁩ التي تحاكي خادم RTSP، وتعمل كمصدر لتغذية الفيديو المباشر.

    • وحدة ⁧⁩avaextension⁧⁩، وهو نموذج للكشف عن العنصر YoloV3 الذي يطبق رؤية الكمبيوتر على الصور، ويُعيد فئات متعددة من أنواع مختلفة من العناصر

      Screenshot of YoloV3 object detection model

قم بتشغيل البرنامج النموذجي

  1. لبدء جلسة تصحيح الأخطاء، حدد المفتاح F5. ترى الرسائل المطبوعة في نافذة TERMINAL.

    • الانتقال إلى نافذة TERMINAL في VS Code
    • استخدم الأمر cd للانتقال إلى دليل /video-analyzer-iot-edge-python-main/src/cloud-to-device-console-app
    • قم بتشغيل "python main.py" ثم سترى الرسائل مطبوعة في النافذة TERMINAL
  2. تبدأ تعليمات Operations.json البرمجية مع المكالمات للأساليب المباشرة ⁧pipelineTopologyList⁩ و⁧livePipelineList⁩. عند تنظيف الموارد بعد الانتهاء من عمليات التشغيل السريع السابقة، تستعيد هذه العملية قوائم فارغة، ثم تتوقف بشكل مؤقت. للمتابعة، حدد مفتاح "Enter key".

    --------------------------------------------------------------------------
    Executing operation pipelineTopologyList
    -----------------------  Request: pipelineTopologyList  --------------------------------------------------
    {
    "@apiVersion": "1.1"
    }
    ---------------  Response: pipelineTopologyList - Status: 200  ---------------
    {
    "value": []
    }
    --------------------------------------------------------------------------
    Executing operation WaitForInput
    
    Press Enter to continue
    
  3. تعرض النافذة ⁧⁩TERMINAL⁧⁩ المجموعة التالية من استدعاءات الأساليب المباشرة:

    • استدعاء لـ ⁧pipelineTopologySet⁩ الذي يستخدم مخطط TopologyUrl.

    • استدعاء لـ ⁧livePipelineSet⁩ الذي يستخدم النص التالي:

      {
        "@apiVersion": "1.1",
        "name": "Sample-Pipeline-1",
        "properties": {
          "topologyName": "InferencingWithHttpExtension",
          "description": "Sample pipeline description",
          "parameters": [
            {
              "name": "rtspUrl",
              "value": "rtsp://rtspsim:554/media/camera-300s.mkv"
            },
            {
              "name": "rtspUserName",
              "value": "testuser"
            },
            {
              "name": "rtspPassword",
              "value": "testpassword"
            }
          ]
        }
      }
      
    • استدعاء livePipelineActivate لبدء التدفق المباشر وتدفق الفيديو.

    • استدعاء ثانٍ لـ ⁧livePipelineList⁩ الذي يوضح أن خط البث المباشر في حالة التشغيل.

  4. يتوقف الناتج المذكور في النافذة ⁧⁩TERMINAL⁧⁩ بشكل مؤقت عند ⁧⁩Press Enter to continue⁧⁩. لا تحدد مفتاح الإدخال الآن. قم بالتمرير لأعلى لرؤية حمولات استجابة JSON للأساليب المباشرة التي قمت باستدعائها.

  5. قم بالتبديل إلى نافذة OUTPUT في Visual Studio Code. تستطيع رؤية الرسائل التي يتم إرسال وحدة تحليل الفيديو من Azure إلى مركز IoT. يناقش القسم التالي من هذا التشغيل السريع هذه الرسائل.

  6. تستمر التدفقات في تشغيل النتائج وطباعتها. يحافظ محاكي RTSP على تكرار حلقات الفيديو المصدر. لإيقاف التدفقات، ارجع إلى إطار ⁧⁩TERMINAL⁧⁩، وحدد «إدخال».

    سلسلة الاستدعاءات التالية لتنظيف الموارد:

    • الاستدعاء⁧livePipelineDeactivate⁩لإلغاء تنشيط تدفق البث المباشر.
    • الاستدعاءlivePipelineDeleteلحذف تنشيط تدفق البث المباشر.
    • يؤدي استدعاء pipelineTopologyDelete إلى حذف المخطط.
    • يُظهر الاستدعاء الأخير pipelineTopologyList القائمة الفارغة.

تفسير النتائج

عند تشغيلك لتدفقات البث المباشر، تمر النتائج من عقدة معالج امتداد HTTP عبر عقدة رسالة IoT Hub إلى مركز IoT. تحتوي الرسائل التي تراها في إطار ⁧⁩OUTPUT⁧⁩ على مقطع نص مقطع applicationProperties. لمزيد من المعلومات، راجع ⁧⁩إنشاء رسائل IoT Hub، والاطلاع عليها⁧⁩.

في الرسائل التالية، تحدد وحدة Video Analyzer خصائص التطبيق، ومحتوى النص الأساسي.

⁩حدث MediaSessionEstablished⁧

عند إنشاء مخطط، تُحاول عُقدة مصدر RTSP الاتصال بخادم RTSP المُراد تفعيله على الحاوية rtspsim-live555. إذا تمت عملية الاتصال بنجاح، تتم طباعة الحدث التالي. نوع الحدث هو ⁧⁩Microsoft.VideoAnalyzer.Diagnostics.MediaSessionEstablished⁧⁩.

[IoTHubMonitor] [9:42:18 AM] Message received from [avasampleiot-edge-device/avaedge]:
{
  "body": {
    "sdp": "SDP:\nv=0\r\no=- 1586450538111534 1 IN IP4 XXX.XX.XX.XX\r\ns=Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server\r\ni=media/camera-300s.mkv\r\nt=0 0\r\na=tool:LIVE555 Streaming Media v2020.03.06\r\na=type:broadcast\r\na=control:*\r\na=range:npt=0-300.000\r\na=x-qt-text-nam:Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server\r\na=x-qt-text-inf:media/camera-300s.mkv\r\nm=video 0 RTP/AVP 96\r\nc=IN IP4 0.0.0.0\r\nb=AS:500\r\na=rtpmap:96 H264/90000\r\na=fmtp:96 packetization-mode=1;profile-level-id=4D0029;sprop-parameter-sets=XXXXXXXXXXXXXXXXXXXXXX\r\na=control:track1\r\n"
  },
  "applicationProperties": {
    "dataVersion": "1.0",
    "topic": "/subscriptions/{subscriptionID}/resourceGroups/{name}/providers/microsoft.media/videoanalyzers/{ava-account-name}",
    "subject": "/edgeModules/avaedge/livePipelines/Sample-Pipeline-1/sources/rtspSource",
    "eventType": "Microsoft.VideoAnalyzers.Diagnostics.MediaSessionEstablished",
    "eventTime": "2021-04-09T09:42:18.1280000Z"
  }
}

وفقًا لهذه الرسالة، يُرجى ملاحظة التفاصيل التالية:

  • الرسالة عبارة عن حدث تشخيص. تشير MediaSessionEstablished إلى أن عقدة مصدر RTSP (الموضوع) متصلة بجهاز محاكاة RTSP وبدأت في تلقي التغذية (محاكاة).
  • في applicationProperties، يشير الموضوع إلى أنه تم إنشاء الرسالة من عقدة مصدر RTSP في خط الأنابيب.
  • في applicationProperties، يشير eventType إلى أن هذا الحدث هو حدث تشخيص.
  • كما يُشير eventTime إلى وقت وقوع الحدث.
  • يحتوي النص الأساسي على بيانات حول تشخيص الحدث. في هذه الحالة، تتضمن البيانات تفاصيل بروتوكول وصف جلسة العمل (SDP).

الاستدلال القائم على الحدث

تتلقى عقدة معالج ملحق HTTP نتائج الاستدلال من الوحدة النمطية yolov3. ثم يرسل النتائج من خلال عقدة مصدر رسائل IoT Hub كأحداث استدلال.

في هذه الأحداث، يتم تعيين النوع إلى كيان للإشارة إلى أنه كيان، مثل سيارة أو شاحنة. قيمة eventTime هي وقت UTC عندما تم اكتشاف الكائن.

في المثال التالي، تم الكشف عن سيارتين في نفس إطار الفيديو، مع مستويات متفاوتة من الثقة.

[IoTHubMonitor] [1:48:04 PM] Message received from [avasample-iot-edge-device/avaedge]:
{
  "timestamp": 145589011404622,
  "inferences": [
    {
      "type": "entity",
      "entity": {
        "tag": {
          "value": "car",
          "confidence": 0.97052866
        },
        "box": {
          "l": 0.40896654,
          "t": 0.60390747,
          "w": 0.045092657,
          "h": 0.029998193
        }
      }
    },
    {
      "type": "entity",
      "entity": {
        "tag": {
          "value": "car",
          "confidence": 0.9547283
        },
        "box": {
          "l": 0.20050547,
          "t": 0.6094412,
          "w": 0.043425046,
          "h": 0.037724357
        }
      }
    },
    {
      "type": "entity",
      "entity": {
        "tag": {
          "value": "car",
          "confidence": 0.94567955
        },
        "box": {
          "l": 0.55363107,
          "t": 0.5320657,
          "w": 0.037418623,
          "h": 0.027014252
        }
      }
    },
    {
      "type": "entity",
      "entity": {
        "tag": {
          "value": "car",
          "confidence": 0.8916893
        },
        "box": {
          "l": 0.6642384,
          "t": 0.581689,
          "w": 0.034349587,
          "h": 0.027812533
        }
      }
    },
    {
      "type": "entity",
      "entity": {
        "tag": {
          "value": "car",
          "confidence": 0.8547814
        },
        "box": {
          "l": 0.584758,
          "t": 0.60079926,
          "w": 0.07082855,
          "h": 0.034121
        }
      }
    }
  ]
}

في الرسائل، لاحظ التفاصيل التالية:

  • يحتوي قسم النص الأساسي على بيانات حول أحداث التحليلات. في هذه الحالة، يُعتبر الحدث هو حدث الاستدلال، لذلك يحتوي الجسم على بيانات الاستدلالات.
  • يشير قسم الاستدلالات إلى أن النوع هو الكيان. يتضمن هذا القسم بيانات إضافية حول الكيان.
  • تشير قيمة الطابع الزمني إلى الوقت الذي تم فيه تلقي الحدث.

تنظيف الموارد

إذا كنت ترغب في تجربة قوالب التشغيل السريع أو البرامج التعليمية الأخرى، فاحتفظ بالموارد التي أنشأتها. وإذا كنت لا ترغب في ذلك، فاذهب إلى مدخل Azure، ومن ثم مجموعات الموارد الخاصة بك، وحدد مجموعة الموارد حيث قمت بتشغيل قوالب التشغيل السريع هذه، واحذف كافة الموارد.

الخطوات التالية

مراجعة التحديات الإضافية للمستخدمين المتقدمين: