فلتر حركة Vertex AI Vision

1. الأهداف

نظرة عامة

يركّز هذا الدرس التطبيقي حول الترميز على إنشاء تطبيق متكامل باستخدام Vertex AI Vision لتوضيح كيفية إرسال فيديوهات باستخدام ميزة فلترة الحركة. في هذا البرنامج التعليمي، سنتعرّف على المَعلمات المختلفة في إعدادات فلتر الحركة:

  • حساسية ميزة "كشف الحركة"
  • الحدّ الأدنى لمدة الحدث
  • فترة معاينة الإعلان
  • وقت التهدئة
  • منطقة كشف الحركة

ما ستتعلمه

  • كيفية استيعاب الفيديوهات لبثها
  • الميزات المختلفة المتوفّرة في "فلتر الحركة" وكيفية استخدامها
  • أماكن الاطّلاع على إحصاءات "فلتر الحركة"
  • كيفية تعديل الإعداد استنادًا إلى الفيديو

2. قبل البدء

  1. في وحدة تحكّم Google Cloud، في صفحة اختيار المشروع، اختَر مشروع Google Cloud أو أنشِئ مشروعًا. ملاحظة: إذا كنت لا تخطّط للاحتفاظ بالموارد التي تنشئها في هذا الإجراء، أنشئ مشروعًا بدلاً من اختيار مشروع حالي. بعد الانتهاء من هذه الخطوات، يمكنك حذف المشروع وإزالة جميع الموارد المرتبطة به. الانتقال إلى أداة اختيار المشاريع
  2. تأكَّد من تفعيل الفوترة لمشروعك على Cloud. تعرَّف على كيفية التحقّق مما إذا كانت الفوترة مفعَّلة في مشروع.
  3. فعِّل واجهتَي برمجة التطبيقات Compute Engine API وVision AI API. تفعيل واجهات برمجة التطبيقات

إنشاء حساب خدمة:

  1. في Google Cloud Console، انتقِل إلى صفحة إنشاء حساب خدمة. الانتقال إلى "إنشاء حساب خدمة"
  2. اختَر مشروعك.
  3. في حقل اسم حساب الخدمة، أدخِل اسمًا. تعبئ وحدة تحكّم Google Cloud الحقل معرّف حساب الخدمة استنادًا إلى هذا الاسم. في حقل وصف حساب الخدمة، أدخِل وصفًا. على سبيل المثال، حساب خدمة للبدء السريع.
  4. انقر على إنشاء ومتابعة.
  5. لمنح إذن الوصول إلى مشروعك، امنح حساب الخدمة الأدوار التالية: Vision AI > Vision AI Editor وCompute Engine > Compute Instance Admin (إصدار تجريبي) وStorage > Storage Object Viewer † . في قائمة اختيار دور، اختَر دورًا. لإضافة أدوار أخرى، انقر على إضافة دور آخر وأضِف كل دور إضافي. ملاحظة: يؤثّر حقل الدور في الموارد التي يمكن لحساب الخدمة الوصول إليها في مشروعك. يمكنك إبطال هذه الأدوار أو منح أدوار إضافية في وقت لاحق. في بيئات الإنتاج، لا تمنح أدوار "المالك" أو "المحرّر" أو "المشاهد". بدلاً من ذلك، يمكنك منح دور محدّد مسبقًا أو دور مخصّص يلبي احتياجاتك.
  6. انقر على متابعة.
  7. انقر على تم للانتهاء من إنشاء حساب الخدمة. لا تغلق نافذة المتصفح. ستستخدمه في الخطوة التالية.

إنشاء مفتاح حساب خدمة:

  1. في Google Cloud Console، انقر على عنوان البريد الإلكتروني لحساب الخدمة الذي أنشأته.
  2. انقر على المفاتيح.
  3. انقر على إضافة مفتاح، ثمّ انقر على إنشاء مفتاح جديد.
  4. انقر على إنشاء. يتم تنزيل ملف مفتاح JSON على جهاز الكمبيوتر.
  5. انقر على إغلاق (Close).
  6. ثبِّت وفعِّل واجهة سطر الأوامر (CLI) في Google Cloud.

† يجب توفّر الدور فقط إذا كنت ستنسخ ملف فيديو نموذجيًا من حزمة Cloud Storage.

3. فلتر الحركة

تلتقط ميزة "فلتر الحركة" مقاطع فيديو للحركة والمنتجات تتضمّن أحداثًا متعلّقة بالحركة. من خلال تعديل حساسية الحركة والحد الأدنى لطول الحدث وفترة البحث السابقة وفترة التهدئة ومنطقة كشف الحركة، يمكن للمستخدم ضبط الفلتر استنادًا إلى احتياجاته.

إعدادات فلتر الحركة

تتوفّر 5 إعدادات في فلتر الحركة للتخصيص.

  1. الحساسية للحركة: تحديد مستوى الحساسية المطلوب لتفعيل ميزة استشعار الحركة
  2. الحدّ الأدنى لمدة الحدث: الحدّ الأدنى للمدة التي سيتم خلالها تسجيل حدث رصد الحركة
  3. فترة المعاينة: المدة الزمنية التي يجب أن يبدأ فيها الفيديو التسجيل قبل رصد مسجّل الحركات.
  4. فترة التهدئة: بعد انتهاء حدث رصد الحركة، ستحدث فترة تهدئة بالمدة المحدّدة. خلال فترة التهدئة، لن يتم تشغيل أحداث الحركة.
  5. منطقة كشف الحركة: منطقة يضبطها المستخدم لتحديد المكان الذي يجب أن يتم فيه كشف الحركة. (سيتم توضيح ذلك في قسم لاحق)

الحساسية للحركة

استخدِم العلامة motion_detection_sensitivity في أمر vaictl.
سلسلة الوسيط التلقائي يمكنك الاختيار من بين "منخفضة" أو "متوسطة" أو "عالية".

كلما زادت حساسية ميزة "كشف الحركة"، زادت حساسيتها للتشويش والحركات الصغيرة. ننصح باستخدام هذا الإعداد في الأماكن التي تتضمّن أجسامًا متحركة أصغر حجمًا (مثل الأشخاص من بعيد) وإضاءة ثابتة.

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

الحدّ الأدنى لمدة الحدث

استخدِم العلامة min_event_length_in_seconds في أمر vaictl.
عدد صحيح المدة التلقائية هي 10 ثوانٍ. يتراوح النطاق من 0 ثانية إلى 3600 ثانية.

الحد الأدنى لمدة فيديوهات مسجّل الحركات التي سيتم تحليلها بعد رصد شريحة أحداث من مسجّل الحركات في الإطار

فترة المراجعة

استخدِم العلامة look_back_window_in_seconds في أمر vaictl.
عدد صحيح المدة التلقائية هي 3 ثوانٍ. يتراوح النطاق من 0 ثانية إلى 3600 ثانية.

فترة معاينة الإعلان هي المدة التي يتم خلالها تخزين البيانات مؤقتًا قبل رصد مسجّل الحركات. تكون هذه الميزة مفيدة عندما نريد معرفة ما يحدث في الإطار قبل بضع ثوانٍ من رصد أحداث الحركة.

فترة الانتظار

استخدِم العلامة cool_down_period_in_seconds في أمر vaictl.
عدد صحيح القيمة التلقائية هي 300 ثانية. يتراوح النطاق من 0 ثانية إلى 3600 ثانية.

فترة التهدئة هي المدة التي سيتم خلالها إيقاف ميزة رصد الحركة مؤقتًا بعد تسجيل حدث حركة. خلال فترة الانتظار، لن يتم إجراء أي عملية حسابية لرصد الحركة.

4. مثال على فلتر الحركة الأساسي

دليل حزمة تطوير البرامج (SDK) من Vaictl

للتحقّق من vaictl الدليل الخاص بدفق الإدخال مع فلتر الحركة، استخدِم الأمر أدناه.

vaictl send video-file applying motion-filter -h

إعداد فيديو نموذجي

  1. يمكنك نسخ فيديو نموذجي باستخدام الأمر gsutil cp التالي. استبدِل المتغيّر التالي:
  • المصدر: موقع ملف فيديو سيتم استخدامه. يمكنك استخدام مصدر ملف الفيديو الخاص بك (على سبيل المثال، gs://BUCKET_NAME/FILENAME.mp4)، أو استخدام الفيديو النموذجي (gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4)(فيديو يتضمّن أشخاصًا ومركبات، المصدر).
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4
gsutil cp $SOURCE .

إعداد متغيّرات البيئة

اضبط متغيرات البيئة أدناه لاستخدام نموذج الأمر المقدَّم.

متغيّرات vaictl

  • PROJECT_ID: رقم تعريف مشروعك على Google Cloud
  • LOCATION_ID: معرّف الموقع الجغرافي على سبيل المثال، us-central1. لمزيد من المعلومات، يُرجى الاطّلاع على المواقع الجغرافية على السحابة الإلكترونية.
  • LOCAL_FILE: اسم ملف فيديو محفوظ على الجهاز على سبيل المثال، street_vehicles_people.mp4.
  • العلامة ‎–loop: اختيارية. تكرِّر بيانات الملفات لمحاكاة الوصول المباشر.
export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1

متغيّرات فلتر الحركة

  • MOTION_SENSITIVITY: تحدّد هذه السمة مدى حساسية ميزة "كشف الحركة".
  • MIN_EVENT_LENGTH: الحد الأدنى لطول أحداث الحركة
  • LOOK_BACK_WINDOW: المدة التي يتم تسجيلها قبل رصد أول حركة في حدث رصد الحركة
  • COOL_DOWN_PERIOD: الفترة التي سيتوقف فيها كشف الحركة مؤقتًا بعد تسجيل مسجّل الحركات.
export MOTION_SENSITIVITY=<low or medium or high>
export MIN_EVENT_LENGTH=<0-3600>
export LOOK_BACK_WINDOW=<0-3600>
export COOL_DOWN_PERIOD=<0-3600>

إعداد أمر فلتر الحركة

هناك خياران لاستخدام فلتر الحركة مع بث الإدخال. الخيار الأول هو إرسال أحداث الحركة إلى بث في Cloud Console. الخيار الثاني هو إرسال أحداث الحركة إلى مساحة التخزين المحلية.

إرسال النتائج إلى Cloud Console

يمكنك استخدام vaictl لبث بيانات الفيديو الناتجة إلى وحدة تحكّم السحابة الإلكترونية. ابدأ بتفعيل Vision AI API في Cloud Console.

تسجيل بث جديد

  1. انقر على علامة التبويب "بث" في اللوحة اليمنى من Vertex AI Vision.
  2. انقر على "تسجيل".
  3. في حقل "اسم مجموعة البث"، أدخِل motion-detection-stream
  4. في منطقة الإدخال، أدخِل us-central1
  5. انقر على "تسجيل".

إرسال النتائج إلى البث

يبثّ هذا الأمر ملف فيديو إلى بث. إذا استخدمت العلامة ‎–loop، سيتم تكرار الفيديو في البث إلى أن توقف الأمر. سننفّذ هذا الأمر كعملية في الخلفية لكي يستمر البث.

أضِف nohup في البداية و& في النهاية لجعلها مهمة تعمل في الخلفية.

INPUT_VIDEO=street_vehicles_people.mp4

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
  to streams motion-detection-stream --loop

قد يستغرق الأمر حوالي 100 ثانية بين بدء عملية الاستيعاب vaictl وظهور الفيديو في لوحة البيانات.

بعد أن يصبح استيعاب البث متاحًا، يمكنك الاطّلاع على خلاصة الفيديو في علامة التبويب عمليات البث في لوحة بيانات Vertex AI Vision من خلال اختيار بث حركة المرور.

الانتقال إلى علامة التبويب "البث المباشر"

إرسال النتائج إلى مساحة التخزين المحلية

يبثّ هذا الأمر ملف فيديو إلى بث.

أضِف nohup في البداية و& في النهاية لجعلها مهمة تعمل في الخلفية.

INPUT_VIDEO=street_vehicles_people.mp4
OUTPUT_PATH=<path_to_store_motion_events_on_local_disk>

nohup vaictl -p $PROJECT \
             -l $LOCATION_ID \
             -c application-cluster-0 \
             --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
  to mp4file --mp4-file-path=$OUTPUT_PATH --loop

5. منطقة كشف الحركة

في هذا القسم، سنتعمّق في استخدام منطقة كشف الحركة وكيفية ضبطها. تهدف المنطقة إلى تحسين ميزة "كشف الحركة" من خلال حجب الحركة الواردة من المناطق التي لا تهمّك.

تتضمّن منطقة كشف الحركة نوعَين، (1) مناطق إيجابية حيث يتم تشغيل ميزة كشف الحركة في المنطقة التي تمّت إضافة التعليقات التوضيحية إليها فقط، (2) مناطق سلبية حيث تتجاهل ميزة كشف الحركة أي حركة في المنطقة التي تمّت إضافة التعليقات التوضيحية إليها.

التعليق التوضيحي للمنطقة

استخدِم العلامة zone_annotation في أمر vaictl لإدخال إحداثيات لمضلّعات المناطق.
سلسلة القيمة التلقائية فارغة للتعليق التوضيحي الخاص بالمنطقة.

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

يجب اتّباع صيغة إدخال محدّدة لتعليق منطقة معيّنة.

  • للإشارة إلى عقدة واحدة، استخدِم : لربط المحورَين السيني والصادي لإحداثيات الصورة. على سبيل المثال، سيتم تمييز عقدة (0,0) في أعلى الجانب الأيمن بالرمز 0:0.
  • للإشارة إلى جميع العُقد في منطقة واحدة، استخدِم ; لربط العُقد. على سبيل المثال، بالنسبة إلى منطقة تحتوي على عُقد (0,0) و(100,0) و(100,100) و(0, 100)، سيتم الإشارة إلى المنطقة على أنّها 0:0;100:0;100:100;0:100. يجب دائمًا إدخال العُقد كعُقد متصلة بجانب بعضها البعض، ويمكن أن يكون الترتيب في اتجاه عقارب الساعة أو عكس اتجاه عقارب الساعة.

منطقة كشف الحركة - مربّع*منطقة مربّعة الشكل تحتوي على أربع عُقد

منطقة كشف الحركة - مثلث*منطقة مثلّثة الشكل تحتوي على ثلاث عُقد.

  • للإشارة إلى مناطق متعدّدة في إطار واحد، استخدِم - لربط المناطق المختلفة. على سبيل المثال، إذا أردنا إدخال كل من (0,0) و(100,0) و(100,100) و(0,100) و(120,120) و(110,150) و(200,160)، ستكون تعليقات توضيحية لمنطقة الإدخال هي 0:0;100:0;100:100;0:100-120:120;110:150;200:160.

منطقة كشف الحركة - إطار يتضمّن منطقتَين*منطقتان داخل إطار

للحصول على إحداثيات من صورة، تتوفّر بعض الأدوات على الإنترنت للمساعدة في الحصول على الإحداثيات. على سبيل المثال، يمكنك الاطّلاع على Wolfram - Get Coordinates from Image

استبعاد المنطقة التي تمّت إضافة التعليقات التوضيحية إليها

استخدِم العلامة exclude_annotated_zone في أمر vaictl لضبط رصد الحركة في منطقة أو خارجها.
منطقي القيمة التلقائية هي "خطأ".

"استبعاد المنطقة التي تمّت إضافة تعليق توضيحي إليها" هو إدخال منطقي من المستخدم، يشير إلى ما إذا كان المستخدم يريد استبعاد المنطقة التي تمّت إضافة تعليق توضيحي إليها في ميزة "كشف الحركة" أم لا.

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

منطقة كشف الحركة - خيار الاستبعاد *لا يتم تشغيل ميزة "كشف الحركة" إلا خارج مناطق الإدخال.

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

منطقة كشف الحركة - خيار التضمين *لا يتم تشغيل ميزة "كشف الحركة" إلا في مناطق الإدخال.

6. مثال على فلتر الحركة مع منطقة كشف الحركة

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

تحضير الفيديو

يحتوي الفيديو النموذجي (gs://cloud-samples-data/vertex-ai-vision/dynamic-background-fall.mp4 ) على أشجار وسيارات ومشاة من www.changedetection.net.

ملكية الفيديو: N. Goyette, P.-M. Jodoin, F. Porikli, J. "كونراد" و"بي" Ishwar, changedetection.net: A new change detection benchmark dataset, in Proc. IEEE Workshop on Change Detection (CDW-2012) at CVPR-2012, Providence, RI, 16-21 Jun., 2012

إعداد متغيّر البيئة

متغيّرات مشروع على السحابة الإلكترونية من Google

export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1
export LOCAL_FILE=street_vehicles_people.mp4

ضبط فلتر الحركة الأساسي

export MOTION_SENSITIVITY=<low or medium or high>
export MIN_EVENT_LENGTH=<0-3600>
export LOOK_BACK_WINDOW=<0-3600>
export COOL_DOWN_PERIOD=<0-3600>

ضبط إعدادات منطقة كشف الحركة

اختَر أحد الخيارات أدناه للاطّلاع على أنواع مختلفة من استخدام منطقة كشف الحركة.

استبعاد الشجرة من عملية كشف الحركة

export ZONE_ANNOTATION="0:0;680:0;660:70;380:320;100:150"
export EXCLUDE_ANNOTATED_ZONE=true

منطقة كشف الحركة - استبعاد كشف الحركة من المنطقة التي تمّت إضافة تعليق توضيحي إليها في الفيديو النموذجي *لا يتم تشغيل ميزة "كشف الحركة" إلا خارج مناطق الإدخال.

ركِّز على كشف الحركة في الشارع.

export ZONE_ANNOTATION="0:300;780:300;780:480;0:480"
export EXCLUDE_ANNOTATED_ZONE=false

منطقة كشف الحركة - تشغيل ميزة كشف الحركة من المنطقة التي تمّت إضافة تعليق توضيحي إليها في الفيديو النموذجي *لا يتم تشغيل ميزة "كشف الحركة" إلا خارج مناطق الإدخال.

إرسال فيديو مضمّن باستخدام فلتر الحركة

إرسال أحداث الحركة إلى وحدة التحكّم السحابية

يمكنك استخدام vaictl لبث بيانات الفيديو الناتجة إلى وحدة تحكّم السحابة الإلكترونية. ابدأ بتفعيل Vision AI API في Cloud Console.

تسجيل بث جديد

  1. انقر على علامة التبويب "بث" في اللوحة اليمنى من Vertex AI Vision.
  2. انقر على "تسجيل".
  3. في حقل "اسم مجموعة البث"، أدخِل motion-detection-stream
  4. في منطقة الإدخال، أدخِل us-central1
  5. انقر على "تسجيل".

إرسال النتائج إلى البث

يبثّ هذا الأمر ملف فيديو إلى بث. إذا استخدمت العلامة ‎–loop، سيتم تكرار الفيديو في البث إلى أن توقف الأمر. سننفّذ هذا الأمر كعملية في الخلفية لكي يستمر البث.

أضِف nohup في البداية و& في النهاية لجعلها مهمة تعمل في الخلفية.

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
         --zone_annotation=ZONE_ANNOTATION \
         --exclude_annotated_zone=$EXCLUDE_ANNOTATED_ZONE \
  to streams motion-detection-stream --loop

قد يستغرق الأمر حوالي 100 ثانية بين بدء عملية الاستيعاب vaictl وظهور الفيديو في لوحة البيانات.

بعد أن يصبح استيعاب البث متاحًا، يمكنك الاطّلاع على خلاصة الفيديو في علامة التبويب عمليات البث في لوحة بيانات Vertex AI Vision من خلال اختيار بث حركة المرور.

الانتقال إلى علامة التبويب "البث المباشر"

إرسال النتائج إلى مساحة التخزين المحلية

يبثّ هذا الأمر ملف فيديو إلى بث. إذا استخدمت العلامة ‎–loop، سيتم تكرار الفيديو في البث إلى أن توقف الأمر. سننفّذ هذا الأمر كعملية في الخلفية لكي يستمر البث.

أضِف nohup في البداية و& في النهاية لجعلها مهمة تعمل في الخلفية.

OUTPUT_PATH=<path_to_store_motion_events>

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
         --zone_annotation=$ZONE_ANNOTATION \
         --exclude_annotated_zone=$EXCLUDE_ANNOTATED_ZONE \
  to mp4file --mp4-file-path=$OUTPUT_PATH --loop

7. تهانينا

تهانينا، لقد أكملت الدرس التطبيقي.

تنظيف

لتجنُّب تحمّل رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا البرنامج التعليمي، أنهِ عملية حزمة تطوير البرامج (SDK) الخاصة بـ vaictl من خلال سطر الأوامر باستخدام ctrl + z.

المراجع

https://cloud.google.com/vision-ai/docs/overview

https://cloud.google.com/vision-ai/docs/motion-filtering-model

https://cloud.google.com/vision-ai/docs/create-manage-streams

الملاحظات

انقر هنا لتقديم ملاحظات

استطلاع الرأي

كيف ستستخدم هذا البرنامج التعليمي؟

قراءة المحتوى فقط قراءة المحتوى وإكمال التمارين

ما مدى استفادتك من هذا الدرس العملي؟

مفيدة جدًا مفيدة إلى حدٍّ ما