Vertex AI की मदद से, विज़न की सूची का पता लगाने वाला ऐप्लिकेशन

1. मकसद

खास जानकारी

इस कोडलैब में, Vertex AI Vision ऐप्लिकेशन को एंड-टू-एंड बनाने पर फ़ोकस किया जाएगा. इससे खुदरा स्टोर के वीडियो फ़ुटेज का इस्तेमाल करके, लाइन में लगे लोगों की संख्या को मॉनिटर किया जा सकेगा. हम पहले से ट्रेन किए गए खास मॉडल ऑक्यूपेंसी ऐनलिटिक्स की इनबिल्ट सुविधाओं का इस्तेमाल करके, ये चीज़ें कैप्चर करेंगे:

  • कतार में खड़े लोगों की संख्या गिनो.
  • काउंटर पर सेवा पाने वाले लोगों की संख्या गिनें.

आपको क्या सीखने को मिलेगा

  • Vertex AI Vision में ऐप्लिकेशन बनाने और उसे डिप्लॉय करने का तरीका
  • वीडियो फ़ाइल का इस्तेमाल करके, आरटीएसपी स्ट्रीम को सेट अप करने का तरीका. साथ ही, Jupyter Notebook से vaictl का इस्तेमाल करके, स्ट्रीम को Vertex AI Vision में शामिल करने का तरीका.
  • ऑक्यूपेंसी ऐनलिटिक्स मॉडल और इसकी अलग-अलग सुविधाओं का इस्तेमाल कैसे करें.
  • Vertex AI Vision के मीडिया वेयरहाउस में, वीडियो कैसे खोजें.
  • आउटपुट को BigQuery से कैसे कनेक्ट करें, मॉडल के JSON आउटपुट से अहम जानकारी निकालने के लिए एसक्यूएल क्वेरी कैसे लिखें, और ओरिजनल वीडियो को लेबल और एनोटेट करने के लिए आउटपुट का इस्तेमाल कैसे करें.

लागत:

Google Cloud पर इस लैब को चलाने की कुल लागत करीब 200 रुपये है.

2. शुरू करने से पहले

प्रोजेक्ट बनाएं और एपीआई चालू करें:

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर जाकर, Google Cloud प्रोजेक्ट बनाएं या कोई प्रोजेक्ट चुनें. ध्यान दें: अगर आपको इस प्रोसेस में बनाए गए संसाधनों को सेव नहीं करना है, तो किसी मौजूदा प्रोजेक्ट को चुनने के बजाय एक नया प्रोजेक्ट बनाएं. यह तरीका पूरा करने के बाद, प्रोजेक्ट को मिटाया जा सकता है. इससे प्रोजेक्ट से जुड़े सभी संसाधन हट जाएंगे. प्रोजेक्ट चुनने वाले टूल पर जाएं
  2. पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें.
  3. Compute Engine, Vertex API, Notebook API, और Vision AI API चालू करें. एपीआई चालू करना

सेवा खाता बनाएं:

  1. Google Cloud Console में, सेवा खाता बनाएं पेज पर जाएं. 'सेवा खाता बनाएं' पर जाएं
  2. अपना प्रोजेक्ट चुनें.
  3. सेवा खाते का नाम फ़ील्ड में, कोई नाम डालें. Google Cloud Console, इस नाम के आधार पर सेवा खाता आईडी फ़ील्ड में जानकारी भरता है. सेवा खाते की जानकारी फ़ील्ड में, जानकारी डालें. उदाहरण के लिए, Quickstart के लिए सेवा खाता.
  4. बनाएं और जारी रखें पर क्लिक करें.
  5. अपने प्रोजेक्ट का ऐक्सेस देने के लिए, अपने सेवा खाते को ये भूमिकाएं असाइन करें:
  • Vision AI > Vision AI Editor
  • Compute Engine > Compute Instance Admin (beta)
  • BigQuery > BigQuery एडमिन .

कोई भूमिका चुनें सूची में से कोई भूमिका चुनें. अन्य भूमिकाएं जोड़ने के लिए, कोई दूसरी भूमिका जोड़ें पर क्लिक करें और हर भूमिका को जोड़ें.

  1. जारी रखें पर क्लिक करें.
  2. सेवा खाता बनाने की प्रोसेस पूरी करने के लिए, हो गया पर क्लिक करें. अपने ब्राउज़र की विंडो को बंद न करें. इसका इस्तेमाल अगले चरण में किया जाएगा.

3. Jupyter Notebook सेट अप करना

ऑक्यूपेंसी Analytics में ऐप्लिकेशन बनाने से पहले, आपको एक स्ट्रीम रजिस्टर करनी होगी. इसका इस्तेमाल बाद में ऐप्लिकेशन कर सकता है.

इस ट्यूटोरियल में, आपको वीडियो होस्ट करने वाला Jupyter Notebook इंस्टेंस बनाने का तरीका बताया गया है. साथ ही, इसमें नोटबुक से स्ट्रीमिंग वीडियो का डेटा भेजने का तरीका भी बताया गया है. हम Jupyter Notebook का इस्तेमाल कर रहे हैं. इससे हमें एक ही जगह पर शेल कमांड चलाने के साथ-साथ, कस्टम प्री/पोस्ट प्रोसेसिंग कोड चलाने की सुविधा मिलती है. यह तेज़ी से एक्सपेरिमेंट करने के लिए बहुत अच्छा है. हम इस नोटबुक का इस्तेमाल इन कामों के लिए करेंगे:

  1. बैकग्राउंड प्रोसेस के तौर पर rtsp सर्वर चलाएं
  2. बैकग्राउंड प्रोसेस के तौर पर vaictl कमांड चलाना
  3. ऑक्यूपेंसी के आंकड़ों के विश्लेषण के आउटपुट का विश्लेषण करने के लिए, क्वेरी और प्रोसेसिंग कोड चलाएं

Jupyter Notebook बनाना

Jupyter Notebook इंस्टेंस से वीडियो भेजने के लिए, सबसे पहले आपको उस सेवा खाते से नोटबुक बनानी होगी जिसे आपने पिछले चरण में बनाया था.

  1. कंसोल में, Vertex AI पेज पर जाएं. Vertex AI Workbench पर जाएं
  2. उपयोगकर्ता के मैनेज किए गए नोटबुक पर क्लिक करें

65b7112822858dce.png

  1. नई नोटबुक > Tensorflow Enterprise 2.6 (एलटीएस के साथ) > बिना जीपीयू के पर क्लिक करें

dc156f20b14651d7.png

  1. Jupyter Notebook के लिए कोई नाम डालें. ज़्यादा जानकारी के लिए, संसाधन का नाम रखने के नियम देखें.

b4dbc5fddc37e8d9.png

  1. ऐडवांस विकल्प पर क्लिक करें
  2. नीचे की ओर स्क्रोल करके, अनुमतियों वाले सेक्शन पर जाएं
  3. Compute Engine के डिफ़ॉल्ट सेवा खाते का इस्तेमाल करें विकल्प से सही का निशान हटाएं
  4. पिछले चरण में बनाया गया सेवा खाते का ईमेल पता जोड़ें. इसके बाद, बनाएं पर क्लिक करें.

ec0b9ef00f0ef470.png

  1. इंस्टेंस बन जाने के बाद, JupyterLab खोलें पर क्लिक करें.

4. वीडियो स्ट्रीम करने के लिए नोटबुक सेट अप करना

ऑक्यूपेंसी Analytics में ऐप्लिकेशन बनाने से पहले, आपको एक स्ट्रीम रजिस्टर करनी होगी. इसका इस्तेमाल बाद में ऐप्लिकेशन कर सकता है.

इस ट्यूटोरियल में, हम वीडियो होस्ट करने के लिए अपने Jupyter Notebook इंस्टेंस का इस्तेमाल करेंगे. साथ ही, Notebook टर्मिनल से स्ट्रीमिंग वीडियो का डेटा भेजेंगे.

vaictl कमांड-लाइन टूल डाउनलोड करना

  1. खुले हुए Jupyterlab इंस्टेंस में, लॉन्चर से नोटबुक खोलें.

a6d182923ae4ada3.png

  1. नोटबुक सेल में यह कमांड इस्तेमाल करके, Vertex AI Vision (vaictl) कमांड लाइन टूल, RTSP सर्वर कमांड लाइन टूल, और Open-CV टूल डाउनलोड करें:
!wget -q https://github.com/aler9/rtsp-simple-server/releases/download/v0.20.4/rtsp-simple-server_v0.20.4_linux_amd64.tar.gz
!wget -q https://github.com/google/visionai/releases/download/v0.0.4/visionai_0.0-4_amd64.deb
!tar -xf rtsp-simple-server_v0.20.4_linux_amd64.tar.gz
!pip install opencv-python --quiet
!sudo apt-get -qq remove -y visionai
!sudo apt-get -qq install -y ./visionai_0.0-4_amd64.deb
!sudo apt-get -qq install -y ffmpeg

5. स्ट्रीम करने के लिए वीडियो फ़ाइल को शामिल करना

ज़रूरी कमांड लाइन टूल के साथ नोटबुक एनवायरमेंट सेट अप करने के बाद, आपके पास वीडियो फ़ाइल के सैंपल को कॉपी करने का विकल्प होता है. इसके बाद, vaictl का इस्तेमाल करके, वीडियो डेटा को ऑक्यूपेंसी ऐनलिटिक्स ऐप्लिकेशन पर स्ट्रीम किया जा सकता है.

नई स्ट्रीम रजिस्टर करना

  1. Vertex AI Vision के बाएं पैनल में मौजूद, स्ट्रीम टैब पर क्लिक करें.
  2. सबसे ऊपर मौजूद, रजिस्टर करें बटन पर क्लिक करें eba418e723916514.png
  3. स्ट्रीम के नाम में ‘queue-stream' डालें
  4. रीजन में, वही रीजन चुनें जिसे आपने पिछले चरण में नोटबुक बनाते समय चुना था.
  5. रजिस्टर करें पर क्लिक करें

अपने वीएम में कोई सैंपल वीडियो कॉपी करना

  1. अपनी नोटबुक में, इस wget कमांड का इस्तेमाल करके वीडियो का सैंपल कॉपी करें.
!wget -q https://github.com/vagrantism/interesting-datasets/raw/main/video/collective_activity/seq25_h264.mp4

वीएम से वीडियो स्ट्रीम करना और स्ट्रीम में डेटा डालना

  1. इस लोकल वीडियो फ़ाइल को ऐप्लिकेशन की इनपुट स्ट्रीम में भेजने के लिए, अपनी नोटबुक सेल में यह कमांड इस्तेमाल करें. आपको वैरिएबल के ये सब्सिट्यूशन करने होंगे:
  • PROJECT_ID: यह आपके Google Cloud प्रोजेक्ट का आईडी होता है.
  • LOCATION: यह आपकी जगह का आईडी है. उदाहरण के लिए, us-central1. ज़्यादा जानकारी के लिए, क्लाउड लोकेशन देखें.
  • LOCAL_FILE: यह लोकल वीडियो फ़ाइल का नाम होता है. उदाहरण के लिए, seq25_h264.mp4.
PROJECT_ID='<Your Google Cloud project ID>'
LOCATION='<Your stream location>'
LOCAL_FILE='seq25_h264.mp4'
STREAM_NAME='queue-stream'
  1. rtsp-simple-server शुरू करें, जहां हम rtsp प्रोटोकॉल की मदद से वीडियो फ़ाइल स्ट्रीम करते हैं
import os
import time
import subprocess

subprocess.Popen(["nohup", "./rtsp-simple-server"], stdout=open('rtsp_out.log', 'a'), stderr=open('rtsp_err.log', 'a'), preexec_fn=os.setpgrp)
time.sleep(5)
  1. आरटीएसपी स्ट्रीम में वीडियो को लूप करने के लिए, ffmpeg कमांड लाइन टूल का इस्तेमाल करना
subprocess.Popen(["nohup", "ffmpeg", "-re", "-stream_loop", "-1", "-i", LOCAL_FILE, "-c", "copy", "-f", "rtsp", f"rtsp://localhost:8554/{LOCAL_FILE.split('.')[0]}"], stdout=open('ffmpeg_out.log', 'a'), stderr=open('ffmpeg_err.log', 'a'), preexec_fn=os.setpgrp)
time.sleep(5)
  1. vaictl कमांड लाइन टूल का इस्तेमाल करके, rtsp सर्वर यूआरआई से वीडियो को Vertex AI Vision की स्ट्रीम ‘queue-stream' पर स्ट्रीम करें. यह स्ट्रीम पिछले चरण में बनाई गई थी.
subprocess.Popen(["nohup", "vaictl", "-p", PROJECT_ID, "-l", LOCATION, "-c", "application-cluster-0", "--service-endpoint", "visionai.googleapis.com", "send", "rtsp", "to", "streams", "queue-stream", "--rtsp-uri", f"rtsp://localhost:8554/{LOCAL_FILE.split('.')[0]}"], stdout=open('vaictl_out.log', 'a'), stderr=open('vaictl_err.log', 'a'), preexec_fn=os.setpgrp)

vaictl ingest ऑपरेशन शुरू करने और वीडियो के डैशबोर्ड में दिखने के बीच ~100 सेकंड लग सकते हैं.

स्ट्रीम का डेटा उपलब्ध होने के बाद, Vertex AI Vision के डैशबोर्ड के स्ट्रीम टैब में जाकर, वीडियो फ़ीड देखा जा सकता है. इसके लिए, queue-stream स्ट्रीम को चुनें.

स्ट्रीम टैब पर जाएं

1b7aac7d36552f29.png

6. ऐप्लिकेशन बनाना

सबसे पहले, ऐसा ऐप्लिकेशन बनाएं जो आपके डेटा को प्रोसेस करे. किसी ऐप्लिकेशन को एक ऑटोमेटेड पाइपलाइन के तौर पर देखा जा सकता है. यह पाइपलाइन इन चीज़ों को कनेक्ट करती है:

  • डेटा इकट्ठा करना: वीडियो फ़ीड को स्ट्रीम में शामिल किया जाता है.
  • डेटा विश्लेषण: डेटा को इकट्ठा करने के बाद, एआई(कंप्यूटर विज़न) मॉडल जोड़ा जा सकता है.
  • डेटा स्टोरेज: वीडियो फ़ीड के दोनों वर्शन (ओरिजनल स्ट्रीम और एआई मॉडल से प्रोसेस की गई स्ट्रीम) को मीडिया वेयरहाउस में सेव किया जा सकता है.

Google Cloud Console में, किसी ऐप्लिकेशन को ग्राफ़ के तौर पर दिखाया गया है.

खाली ऐप्लिकेशन बनाना

ऐप्लिकेशन ग्राफ़ में डेटा भरने से पहले, आपको एक खाली ऐप्लिकेशन बनाना होगा.

Google Cloud Console में एक ऐप्लिकेशन बनाएं.

  1. Google Cloud Console पर जाएं.
  2. Vertex AI Vision डैशबोर्ड का ऐप्लिकेशन टैब खोलें.