1. मकसद
खास जानकारी
इस कोडलैब में, एक एंड-टू-एंड Vertex AI Vision ऐप्लिकेशन बनाने पर फ़ोकस किया गया है. इससे मोशन फ़िल्टर करने की सुविधा के साथ वीडियो भेजने के बारे में पता चलता है. इस ट्यूटोरियल में, हम मोशन फ़िल्टर कॉन्फ़िगरेशन के अलग-अलग पैरामीटर के बारे में जानेंगे:
- हलचल का पता लगाने की संवेदनशीलता
- इवेंट की कम से कम अवधि
- लुक-बैक विंडो
- कूल-डाउन टाइम
- मोशन डिटेक्शन ज़ोन
आपको क्या सीखने को मिलेगा
- स्ट्रीमिंग के लिए वीडियो कैसे अपलोड करें
- मोशन फ़िल्टर में उपलब्ध अलग-अलग सुविधाएं और उन्हें इस्तेमाल करने का तरीका
- मोशन फ़िल्टर के आंकड़े कहां देखें
- वीडियो के हिसाब से सेटिंग में बदलाव करने का तरीका
2. शुरू करने से पहले
- Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर जाकर, Google Cloud प्रोजेक्ट बनाएं या कोई प्रोजेक्ट चुनें. ध्यान दें: अगर आपको इस प्रोसेस में बनाए गए संसाधनों को सेव नहीं करना है, तो किसी मौजूदा प्रोजेक्ट को चुनने के बजाय एक नया प्रोजेक्ट बनाएं. यह तरीका पूरा करने के बाद, प्रोजेक्ट को मिटाया जा सकता है. इससे प्रोजेक्ट से जुड़े सभी संसाधन हट जाएंगे. प्रोजेक्ट चुनने वाले टूल पर जाएं
- पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें.
- Compute Engine और Vision AI API चालू करें. एपीआई चालू करना
सेवा खाता बनाएं:
- Google Cloud Console में, सेवा खाता बनाएं पेज पर जाएं. 'सेवा खाता बनाएं' पर जाएं
- अपना प्रोजेक्ट चुनें.
- सेवा खाते का नाम फ़ील्ड में, कोई नाम डालें. Google Cloud Console, इस नाम के आधार पर सेवा खाता आईडी फ़ील्ड में जानकारी भरता है. सेवा खाते की जानकारी फ़ील्ड में, जानकारी डालें. उदाहरण के लिए, Quickstart के लिए सेवा खाता.
- बनाएं और जारी रखें पर क्लिक करें.
- अपने प्रोजेक्ट का ऐक्सेस देने के लिए, अपने सेवा खाते को ये भूमिकाएं असाइन करें: Vision AI > Vision AI Editor, Compute Engine > Compute Instance Admin (बीटा), Storage > Storage Object Viewer † . कोई भूमिका चुनें सूची में से कोई भूमिका चुनें. अन्य भूमिकाएं जोड़ने के लिए, कोई दूसरी भूमिका जोड़ें पर क्लिक करें और हर भूमिका को जोड़ें. ध्यान दें: भूमिका फ़ील्ड से यह तय होता है कि आपका सेवा खाता, आपके प्रोजेक्ट में किन संसाधनों को ऐक्सेस कर सकता है. इन भूमिकाओं को बाद में वापस लिया जा सकता है या अतिरिक्त भूमिकाएं दी जा सकती हैं. प्रोडक्शन का काम करते समय, मालिक, एडिटर या व्यूअर की भूमिकाएं न दें. इसके बजाय, अपनी ज़रूरतों के हिसाब से पहले से तय की गई भूमिका या कस्टम भूमिका असाइन करें.
- जारी रखें पर क्लिक करें.
- सेवा खाता बनाने की प्रोसेस पूरी करने के लिए, हो गया पर क्लिक करें. अपने ब्राउज़र की विंडो को बंद न करें. इसका इस्तेमाल अगले चरण में किया जाएगा.
सेवा खाते की कुंजी बनाने के लिए:
- Google Cloud Console में, बनाए गए सेवा खाते के ईमेल पते पर क्लिक करें.
- कुंजियां पर क्लिक करें.
- कुंजी जोड़ें पर क्लिक करें. इसके बाद, नई कुंजी बनाएं पर क्लिक करें.
- बनाएं पर क्लिक करें. आपके कंप्यूटर पर JSON फ़ाइल डाउनलोड हो जाएगी.
- बंद करें पर क्लिक करें.
- Google Cloud CLI को इंस्टॉल करें और इस्तेमाल करना शुरू करें.
† यह भूमिका सिर्फ़ तब ज़रूरी होती है, जब आपको Cloud Storage बकेट से किसी सैंपल वीडियो फ़ाइल को कॉपी करना हो.
3. मोशन फ़िल्टर
मोशन फ़िल्टर, मोशन और प्रॉडक्ट वीडियो सेगमेंट कैप्चर करता है. इनमें मोशन इवेंट शामिल होते हैं. मोशन सेंसिटिविटी, इवेंट की कम से कम अवधि, लुकबैक विंडो, कूल डाउन पीरियड, और मोशन डिटेक्शन ज़ोन को अडजस्ट करके, उपयोगकर्ता अपनी ज़रूरतों के हिसाब से फ़िल्टर को कॉन्फ़िगर कर सकता है.
मोशन फ़िल्टर का कॉन्फ़िगरेशन
मोशन फ़िल्टर में, पसंद के मुताबिक बनाने के लिए पांच कॉन्फ़िगरेशन उपलब्ध हैं.
- मोशन सेंसर की संवेदनशीलता: मोशन सेंसर को कितनी हलचल पर ट्रिगर होना चाहिए.
- इवेंट की कम से कम अवधि: यह मोशन इवेंट की कम से कम अवधि होती है.
- लुकबैक विंडो: मोशन इवेंट का पता चलने से पहले, वीडियो रिकॉर्डिंग कितने समय तक होनी चाहिए.
- कूल डाउन पीरियड: मोशन इवेंट खत्म होने के बाद, तय की गई अवधि का कूलडाउन पीरियड शुरू हो जाएगा. कूल डाउन पीरियड के दौरान, मोशन इवेंट ट्रिगर नहीं होंगे.
- मोशन डिटेक्शन ज़ोन: उपयोगकर्ता की ओर से कॉन्फ़िगर किया गया ज़ोन. इससे यह तय किया जाता है कि मोशन डिटेक्शन की सुविधा कहां काम करेगी. (इसके बारे में बाद के सेक्शन में विस्तार से बताया जाएगा)
हलचल के लिए संवेदनशीलता
vaictl कमांड में motion_detection_sensitivity फ़्लैग का इस्तेमाल करें.
स्ट्रिंग. डिफ़ॉल्ट मीडियम. कम, सामान्य या ज़्यादा में से कोई विकल्प चुना जा सकता है.
हलचल का पता लगाने की सुविधा की संवेदनशीलता जितनी ज़्यादा होगी, यह सुविधा उतनी ही ज़्यादा शोर और छोटी-छोटी हलचलों के लिए संवेदनशील होगी. हमारा सुझाव है कि इस सेटिंग का इस्तेमाल उन जगहों पर करें जहां छोटे-छोटे ऑब्जेक्ट हिल रहे हों (जैसे, दूर से दिख रहे लोग) और रोशनी स्थिर हो.
वहीं दूसरी ओर, कम सेंसिटिविटी वाली सेटिंग पर रोशनी का असर कम पड़ता है. यह सेटिंग तब सबसे सही होती है, जब रोशनी में ज़्यादा रुकावट हो. जैसे, बाहर के माहौल में और कम क्वालिटी वाले वीडियो के लिए, जहां ज़्यादा आवाज़ें हो सकती हैं. यह सेटिंग, फ़िल्टर करने की सबसे ज़्यादा पाबंदियों वाली सेटिंग है. इसलिए, ऐसा हो सकता है कि यह छोटे ऑब्जेक्ट की गतिविधियों को अनदेखा कर दे.
इवेंट की कम से कम अवधि
vaictl कमांड में min_event_length_in_seconds फ़्लैग का इस्तेमाल करें.
पूर्णांक. डिफ़ॉल्ट रूप से 10 सेकंड. रेंज 0 सेकंड से 3,600 सेकंड तक होती है.
मोशन इवेंट के वीडियो की कम से कम अवधि, जिसे फ़्रेम में मोशन इवेंट सेगमेंट का पता चलने के बाद पार्स किया जाएगा.
लुकबैक विंडो
vaictl कमांड में look_back_window_in_seconds फ़्लैग का इस्तेमाल करें.
पूर्णांक. डिफ़ॉल्ट रूप से तीन सेकंड. रेंज 0 सेकंड से 3,600 सेकंड तक होती है.
लुकबैक विंडो, हलचल का पता चलने से पहले कैश मेमोरी में सेव की गई अवधि होती है. यह तब काम आता है, जब हमें यह देखना हो कि मोशन इवेंट का पता चलने से कुछ सेकंड पहले फ़्रेम में क्या हो रहा था.
कूल डाउन पीरियड
vaictl कमांड में cool_down_period_in_seconds फ़्लैग का इस्तेमाल करें.
पूर्णांक. डिफ़ॉल्ट रूप से 300 सेकंड. रेंज 0 सेकंड से 3,600 सेकंड तक होती है.
कूल डाउन पीरियड वह समय होता है जब किसी गतिविधि का पता चलने के बाद, गतिविधि का पता लगाने की सुविधा कुछ समय के लिए बंद हो जाती है. कूल डाउन पीरियड के दौरान, हलचल का पता लगाने के लिए कोई भी कंप्यूटेशन नहीं किया जाएगा.
4. मोशन फ़िल्टर का बुनियादी उदाहरण
Vaictl SDK का मैन्युअल
मोशन फ़िल्टर के साथ इनपुट स्ट्रीम के लिए vaictl मैन्युअल की जांच करने के लिए, नीचे दिए गए कमांड का इस्तेमाल करें.
vaictl send video-file applying motion-filter -h
एक सैंपल वीडियो तैयार करना
- यहां दिए गए 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 का इस्तेमाल करके, आउटपुट वीडियो डेटा को क्लाउड कंसोल पर स्ट्रीम किया जा सकता है. सबसे पहले, Cloud Console में Vision AI API को चालू करें.
नई स्ट्रीम रजिस्टर करना
- Vertex AI Vision के बाएं पैनल में मौजूद, स्ट्रीम टैब पर क्लिक करें.
- रजिस्टर करें पर क्लिक करें
- स्ट्रीम के नाम में
motion-detection-streamडालें - क्षेत्र में
us-central1डालें - रजिस्टर करें पर क्लिक करें
स्ट्रीम में नतीजे भेजे जा रहे हैं
इस निर्देश से, किसी वीडियो फ़ाइल को स्ट्रीम किया जाता है. –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
vaictl ingest ऑपरेशन शुरू करने और वीडियो के डैशबोर्ड में दिखने के बीच ~100 सेकंड लग सकते हैं.
स्ट्रीम का डेटा उपलब्ध होने के बाद, 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) नेगेटिव ज़ोन, जहां एनोटेट किए गए हिस्से में होने वाली किसी भी गतिविधि को मोशन डिटेक्शन की सुविधा अनदेखा करती है.
ज़ोन की व्याख्या
ज़ोन पॉलीगॉन के लिए निर्देशांक डालने के लिए, vaictl कमांड में फ़्लैग zone_annotation का इस्तेमाल करें.
स्ट्रिंग. ज़ोन के एनोटेशन के लिए डिफ़ॉल्ट रूप से खाली होता है.
ज़ोन एनोटेशन, उपयोगकर्ता से मिला स्ट्रिंग इनपुट होगा. इससे फ़्रेम में मौजूद उन ज़ोन के बारे में पता चलेगा जिन्हें उपयोगकर्ता छिपाना या जिन पर फ़ोकस करना चाहता है. ज़ोन को एनोटेट करने के लिए, उपयोगकर्ता को ज़ोन में मौजूद हर नोड के लिए x और y ऐक्सिस के इमेज कोऑर्डिनेट तय करने होंगे. पॉलीगॉन बनाने के लिए, किसी ज़ोन में तीन या उससे ज़्यादा नोड होने चाहिए. किसी फ़्रेम में एक से ज़्यादा ज़ोन हो सकते हैं. अगर ज़ोन एक-दूसरे से ओवरलैप करते हैं, तो दोनों ज़ोन से कवर होने वाला हिस्सा अब भी कवर किया जाएगा.
ज़ोन के एनोटेशन के लिए, इनपुट सिंटैक्स का पालन करना ज़रूरी है.
- किसी एक नोड को दिखाने के लिए, इमेज कोऑर्डिनेशन के x और y ऐक्सिस को कनेक्ट करने के लिए
:का इस्तेमाल करें. उदाहरण के लिए, ऊपर बाएं कोने में मौजूद(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 देखें
एनोटेट किए गए ज़ोन को बाहर रखें
ज़ोन में या ज़ोन के बाहर हलचल का पता लगाने की सुविधा को कॉन्फ़िगर करने के लिए, vaictl कमांड में फ़्लैग exclude_annotated_zone का इस्तेमाल करें.
बूलियन. डिफ़ॉल्ट रूप से गलत पर सेट होती है.
एनोटेट किए गए ज़ोन को बाहर रखें, उपयोगकर्ता से मिला बूलियन इनपुट है. इससे पता चलता है कि उपयोगकर्ता, मोशन डिटेक्शन में एनोटेट किए गए ज़ोन को शामिल करना चाहता है या नहीं.
trueपर सेट होने पर, एनोटेट किया गया ज़ोन, नेगेटिव ज़ोन के तौर पर काम करेगा. एनोटेट किए गए ज़ोन में होने वाली गतिविधियों का पता नहीं चलेगा.
*सिर्फ़ इनपुट ज़ोन के बाहर हलचल का पता लगाएं.
- अगर इसे 'गलत है' पर सेट किया जाता है, तो ज़ोन को पॉज़िटिव ज़ोन के तौर पर माना जाएगा. इसमें मोशन डिटेक्शन की सुविधा पर फ़ोकस किया जाएगा.
*सिर्फ़ इनपुट ज़ोन में हलचल का पता लगाने की सुविधा चालू करें.
6. मोशन फ़िल्टर का उदाहरण, जिसमें मोशन डिटेक्शन ज़ोन दिखाया गया है
इस उदाहरण में, हम ऐसे वीडियो का इस्तेमाल करेंगे जिसमें पेड़ लगातार फ़ोरग्राउंड में घूम रहा है. मोशन फ़िल्टर की सामान्य सेटिंग में, वीडियो में सिर्फ़ एक मोशन इवेंट दिखेगा. इसकी अवधि ओरिजनल वीडियो की अवधि के बराबर होगी. ऐसा इसलिए, क्योंकि मोशन फ़िल्टर, हिलते हुए पेड़ को "पूरे वीडियो में लगातार हिलते हुए" के तौर पर रजिस्टर करता है. हालांकि, मोशन डिटेक्शन ज़ोन की मदद से, हम पेड़ की गतिविधि को ठीक से मास्क कर सकते हैं. साथ ही, कारों और पैदल चलने वालों की गतिविधि पर फ़ोकस कर सकते हैं.
वीडियो तैयार करना
इस सैंपल वीडियो (gs://cloud-samples-data/vertex-ai-vision/dynamic-background-fall.mp4 ) में, www.changedetection.net से लिए गए पेड़, कारें, और पैदल चलने वाले लोग शामिल हैं.
वीडियो क्रेडिट: एन. गोयेत, पी॰-एम॰ Jodoin, F. पोर्लिकी, जे॰ कॉनराड, और पी॰ ईश्वर, 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 Cloud प्रोजेक्ट के वैरिएबल.
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
*सिर्फ़ इनपुट ज़ोन के बाहर हलचल का पता लगाएं.
मोशन फ़िल्टर के साथ वीडियो स्ट्रीम भेजना
मोशन इवेंट को Cloud Console पर भेजना
vaictl का इस्तेमाल करके, आउटपुट वीडियो डेटा को क्लाउड कंसोल पर स्ट्रीम किया जा सकता है. सबसे पहले, Cloud Console में Vision AI API को चालू करें.
नई स्ट्रीम रजिस्टर करना
- Vertex AI Vision के बाएं पैनल में मौजूद, स्ट्रीम टैब पर क्लिक करें.
- रजिस्टर करें पर क्लिक करें
- स्ट्रीम के नाम में
motion-detection-streamडालें - क्षेत्र में
us-central1डालें - रजिस्टर करें पर क्लिक करें
स्ट्रीम में नतीजे भेजे जा रहे हैं
इस निर्देश से, किसी वीडियो फ़ाइल को स्ट्रीम किया जाता है. –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
vaictl ingest ऑपरेशन शुरू करने और वीडियो के डैशबोर्ड में दिखने के बीच ~100 सेकंड लग सकते हैं.
स्ट्रीम का डेटा उपलब्ध होने के बाद, 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 खाते से शुल्क न लिए जाने के लिए, कमांड-लाइन के ज़रिए vaictl SDK टूल का ऑपरेशन बंद करें. इसके लिए, 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
सुझाव, राय या शिकायत
सुझाव/राय देने या शिकायत करने के लिए यहां क्लिक करें