אפליקציית Vertex AI Vision למעקב אחר תעבורת נתונים

1. מטרות

סקירה כללית

ה-Codelab הזה יתמקד ביצירת אפליקציה של Vertex AI Vision מקצה לקצה כדי לעקוב אחרי קטעי וידאו של תנועה בזמן אמת. נשתמש בניתוח נתוני תפוסה לפי מודל שעבר אימון מראש. כדי להשיג את הדברים הבאים:

  • ספירת כלי הרכב והאדם שחוצים כביש בקו מסוים.
  • ספירת כלי הרכב/האדם בכל אזור קבוע בכביש.
  • זיהוי עומס תנועה בחלק כלשהו בכביש.

מה תלמדו

  • איך להגדיר VM כדי להטמיע סרטונים בסטרימינג
  • איך יוצרים אפליקציה ב-Vertex AI Vision
  • תכונות שונות הזמינות ב-תפוסה ב-Analytics והאופן שבו להשתמש בהן
  • איך לפרוס את האפליקציה
  • איך מחפשים סרטונים באחסון שלכם ב-Vertex AI Vision's Media Warehouse.
  • איך לחבר פלט ל-BigQuery, לכתוב שאילתת SQL כדי לחלץ תובנות מפלט ה-JSON של המודל ולהמחיש את התוצאה ב-Looker Studio בזמן אמת.

2. לפני שתתחיל

  1. במסוף Google Cloud, בדף בורר הפרויקטים, בוחרים או יוצרים פרויקט ב-Google Cloud. הערה: אם אתם לא מתכננים לשמור את המשאבים שאתם יוצרים בתהליך, צריך ליצור פרויקט במקום לבחור פרויקט קיים. לאחר השלמת השלבים האלה, תוכלו למחוק את הפרויקט ולהסיר את כל המשאבים שמשויכים לפרויקט. מעבר אל בורר הפרויקטים
  2. הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. איך בודקים אם החיוב מופעל בפרויקט
  3. הפעלת ממשקי ה-API של Compute Engine ו-Vision AI. הפעלת ממשקי ה-API

יוצרים חשבון שירות:

  1. במסוף Google Cloud, נכנסים לדף Create service account. מעבר לדף Create service account
  2. בוחרים את הפרויקט הרצוי.
  3. כותבים שם בשדה Service account name. השדה Service account ID ימולא במסוף Google Cloud בהתאם לשם הזה. מזינים תיאור בשדה Service account description. לדוגמה, 'חשבון שירות' במדריך למתחילים.
  4. לוחצים על יצירה והמשך.
  5. כדי לספק גישה לפרויקט, מקצים לחשבון השירות את התפקידים הבאים: Vision AI > Vision AI Editor, Compute Engine > אדמין מכונות של Compute (בטא), אחסון > צפייה באובייקט אחסון † . בוחרים תפקיד מהרשימה Select a role. כדי להוסיף תפקידים, לוחצים על Add another role ומוסיפים את כולם. הערה: השדה Role קובע לאילו משאבים בפרויקט לחשבון השירות תהיה גישה. אתם יכולים לבטל את התפקידים האלה או להוסיף עוד תפקידים מאוחר יותר. בסביבות ייצור אין להקצות את התפקידים 'בעלים', 'עריכה' או 'צפייה', אלא תפקיד מוגדר מראש או תפקיד בהתאמה אישית שתואם לצרכים שלכם.
  6. לוחצים על המשך.
  7. לוחצים על Done כדי לסיים ליצור את חשבון השירות. חשוב לא לסגור את חלון הדפדפן. תשתמשו בה בשלב הבא.

יוצרים מפתח לחשבון השירות:

  1. במסוף Google Cloud, לוחצים על כתובת האימייל של חשבון השירות שיצרתם.
  2. לוחצים על Keys.
  3. לוחצים על Add key ואז על Create new key.
  4. לוחצים על Create. למחשב שלכם תתבצע הורדה של קובץ JSON עם המפתח.
  5. לוחצים על סגירה.
  6. מתקינים ומאתחלים את ה-CLI של Google Cloud.

1 התפקיד נדרש רק אם מעתיקים קובץ וידאו לדוגמה מקטגוריה של Cloud Storage.

3. הגדרת VM כדי לשדר סרטונים

לפני שיוצרים אפליקציה ב'ניתוח תפוסה', צריך לרשום מקור נתונים שאפשר להשתמש בו מאוחר יותר באפליקציה.

במדריך הזה, יוצרים מכונה וירטואלית ב-Compute Engine שמארחת סרטון ושולחים את נתוני הווידאו בסטרימינג מהמכונה הווירטואלית.

יצירת מכונה וירטואלית של Linux

השלב הראשון בשליחת וידאו ממכונה וירטואלית של Compute Engine הוא יצירת מכונת ה-VM.

  1. נכנסים לדף VM instances במסוף. לדף VM instances
  2. בוחרים את הפרויקט ולוחצים על המשך.
  3. לוחצים על Create instance.
  4. מציינים Name (שם) ל-VM. מידע נוסף זמין במאמר מוסכמה למתן שמות למשאבים.
  5. אופציונלי: משנים את ה-Zone ל-VM הזאת. רשימת התחומים בכל אזור ב-Compute Engine נעשית אקראית כדי לעודד שימוש במספר אזורים.
  6. מאשרים את שאר אפשרויות ברירת המחדל. מידע נוסף על האפשרויות האלה זמין במאמר יצירה והפעלה של VM.
  7. כדי ליצור את המכונה הווירטואלית (VM) ולהפעיל אותה, לוחצים על האפשרות Create.

הגדרת סביבת ה-VM

אחרי שהמכונה הווירטואלית מופעלת, אפשר להשתמש במסוף כדי להיכנס ל-VM דרך SSH. לאחר מכן, תוכלו להוריד את כלי שורת הפקודה vaictl כדי להטמיע את הסרטון בשידור שלכם.

יצירת חיבור SSH ל-VM

  1. נכנסים לדף VM instances במסוף. לדף VM instances
  2. בקטע Connect בשורה של המכונה שיצרתם, לוחצים על SSH. הפעולה הזו פותחת חיבור SSH בחלון דפדפן חדש. אפשרות ה-SSH בממשק המשתמש

להורדת כלי שורת הפקודה vaictl

  1. בחלון SSH-in-browser, מורידים את כלי שורת הפקודה Vertex AI Vision (vaictl) באמצעות הפקודה הבאה:
wget https://github.com/google/visionai/releases/download/v0.0.4/visionai_0.0-4_amd64.deb
  1. מריצים את הפקודה הבאה כדי להתקין את כלי שורת הפקודה:
sudo apt install ./visionai_0.0-4_amd64.deb
  1. כדי לבדוק את ההתקנה, מריצים את הפקודה הבאה:
vaictl --help

4. הטמעת קובץ וידאו בסטרימינג

אחרי שמגדירים את סביבת ה-VM, אפשר להעתיק קובץ וידאו לדוגמה ואז להשתמש ב-vaictl כדי לשדר את נתוני הווידאו בסטרימינג לאפליקציה לניתוח נתוני תפוסה.

כדי להתחיל, מפעילים את Vision AI API במסוף Cloud

רישום שידור חדש

  1. לוחצים על הכרטיסייה 'שידורים' בחלונית השמאלית של Vertex AI Vision.
  2. לוחצים על 'הרשמה'
  3. בשם מקור הנתונים, מזינים 'traffic-stream'.
  4. באזור, צריך להזין 'us-central1'
  5. רישום קליקים

ההרשמה לשידור תימשך כמה דקות.

העתקת סרטון לדוגמה ל-VM

  1. בחלון SSH בדפדפן של ה-VM, מעתיקים סרטון לדוגמה באמצעות הפקודה הבאה של gsutil cp. מחליפים את המשתנה הבא:
  • מקור: המיקום של קובץ הסרטון שבו צריך להשתמש. תוכלו להשתמש במקור של קובץ וידאו משלכם (לדוגמה, gs://BUCKET_NAME/FILENAME.mp4), או להשתמש בסרטון לדוגמה (gs://cloud-Sample-data/vertex-ai-vision/street_vehicles_people.mp4 )(סרטון עם אנשים וכלי רכב, למקור)
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4
gsutil cp $SOURCE .

סטרימינג של סרטונים מ-VM והטמעת הנתונים בסטרימינג

  1. כדי לשלוח את קובץ הווידאו המקומי הזה לזרם הקלט של האפליקציה, משתמשים בפקודה הבאה. צריך להחליף את המשתנים הבאים בערכים:
  • PROJECT_ID: מזהה הפרויקט ב-Google Cloud.
  • LOCATION_ID: מזהה המיקום שלך. לדוגמה, us-central1. למידע נוסף, קראו את המאמר מיקומים ב-Cloud.
  • LOCAL_FILE: שם הקובץ של קובץ וידאו מקומי. לדוגמה, street_vehicles_people.mp4.
  • סימון – לולאה: אופציונלי. הפעלת נתונים של קבצים בלופ כדי לדמות סטרימינג.
export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1
export LOCAL_FILE=street_vehicles_people.mp4
  1. הפקודה הזו משדרת קובץ וידאו בסטרימינג. אם משתמשים בדגל -loop, הסרטון מועבר בלופ לשידור של הסרטון עד שמפסיקים את הפקודה. אנחנו נפעיל את הפקודה הזו כמשימת רקע כדי שהשידור ימשיך להיות פעיל גם אחרי שה-VM מתנתקת.
  • ( צריך להוסיף את הפקודה 'noh' בהתחלה ו-'&' בסוף כדי שהמשימה תפעל ברקע)
nohup vaictl -p $PROJECT_ID \
    -l $LOCATION_ID \
    -c application-cluster-0 \
    --service-endpoint visionai.googleapis.com \
send video-file to streams 'traffic-stream' --file-path $LOCAL_FILE --loop &

עשויות לחלוף כ-100 שניות בין ההתחלה של פעולת הטמעת הנתונים של לפחות רגע לבין הצגת הסרטון במרכז השליטה.

אחרי שהטמעת הנתונים של השידור תהיה זמינה, תוכלו לראות את פיד הווידאו בכרטיסייה Streams במרכז הבקרה של Vertex AI Vision, על ידי בחירה של עדכוני התנועה.

כניסה לכרטיסייה 'עדכונים'

תצוגה של וידאו בשידור חי שמועבר בסטרימינג בממשק משתמשצפייה בשידור חי של סרטון שמוטמע בסטרימינג במסוף Google Cloud. קרדיט על הסרטון: Elizabeth Mavor ב-Pixabay (נוסף פיקסלים).

5. יצירת אפליקציה

השלב הראשון הוא ליצור אפליקציה שמעבדת את הנתונים שלכם. אפשר להתייחס לאפליקציה כצינור עיבוד נתונים אוטומטי שמחבר בין:

  • הטמעת נתונים: הטמעת פיד וידאו מתבצעת בשידור.
  • ניתוח נתונים: אפשר להוסיף מודל AI(ראיית מחשב) אחרי הטמעת הנתונים.
  • אחסון נתונים: אפשר לאחסן במחסן מדיה את שתי הגרסאות של פיד הווידאו (השידור המקורי והשידור שעבר עיבוד על ידי מודל ה-AI).

במסוף Google Cloud, אפליקציה מיוצגת כתרשים.

יצירת אפליקציה ריקה

כדי שאפשר יהיה לאכלס את תרשים האפליקציה, קודם צריך ליצור אפליקציה ריקה.

יוצרים אפליקציה במסוף Google Cloud.

  1. נכנסים למסוף Google Cloud.
  2. פותחים את הכרטיסייה Applications במרכז הבקרה של Vertex AI Vision.

עוברים לכרטיסייה 'אפליקציות'.

  1. לוחצים על לחצן ההוספה יצירה.
  2. מזינים את traffic-app כשם האפליקציה ובוחרים את האזור.
  3. לוחצים על יצירה.

הוספת צמתים של רכיבי אפליקציה

אחרי שיוצרים את האפליקציה הריקה, אפשר להוסיף את שלושת הצמתים לתרשים האפליקציה:

  1. צומת של הטמעת נתונים: משאב מקור הנתונים שמטמיע נתונים שנשלחו ממכונה וירטואלית של Compute Engine שאתם יוצרים.
  2. צומת של עיבוד: מודל ניתוח התפוסה שפועל על נתונים שהוטמעו.
  3. צומת של אחסון: מחסן המדיה שבו מאוחסנים סרטונים מעובדים ומשמש כמאגר מטא-נתונים. מאגרי המטא-נתונים כוללים ניתוח נתונים על הטמעת נתוני וידאו, ומידע שהמודלים של ה-AI מסיקים.

אפשר להוסיף צמתים של רכיבים לאפליקציה במסוף.

  1. פותחים את הכרטיסייה Applications במרכז הבקרה של Vertex AI Vision. עוברים לכרטיסייה 'אפליקציות'.
  2. בשורה של האפליקציה לתנועה, בוחרים באפשרות הצגת תרשים. פעולה זו תעביר אתכם לתצוגה חזותית של צינור עיבוד הנתונים.

הוספת צומת הטמעת נתונים

  1. כדי להוסיף צומת של מקור קלט, בוחרים באפשרות סטרימינג בקטע מחברים בתפריט הצד.
  2. בקטע מקור בתפריט סטרימינג שנפתח, בוחרים באפשרות הוספת מקורות נתונים.
  3. בתפריט הוספת מקורות נתונים, בוחרים באפשרות רישום שידורים חדשים ומוסיפים 'מקור נתונים' בתור השם של מקור הנתונים.
  4. כדי להוסיף את מקור הנתונים לתרשים האפליקציה, לוחצים על הוספת מקורות נתונים.

הוספת צומת לעיבוד נתונים

  1. כדי להוסיף את הצומת של מודל מספר התפוסה, בוחרים באפשרות ניתוח תפוסה בקטע מודלים מיוחדים בתפריט הצד.
  2. משאירים את בחירות ברירת המחדל אנשים וכלי רכב.
  3. הוספת שורות במעבר קו. אפשר להשתמש בכלי 'קו מרובה נקודות' כדי לשרטט את הקווים שבהם צריך לזהות מכוניות או אנשים שיוצאים או נכנסים.
  4. משרטטים את האזורים הפעילים כדי לספור אנשים/כלי רכב שנמצאים באזור הזה.
  5. אפשר להוסיף הגדרות לזמן שהייה כדי לזהות עומס אם משורטט אזור פעיל.
  • (כרגע אין תמיכה באזור פעיל וקו שחוצה את שניהם בו-זמנית. השתמשו בתכונה אחת בלבד בכל פעם).

3acdb6f1e8474e07.png ce63449d601995e9.png

194c54d2bbcf7e8a.png

הוספת צומת של מאגר נתונים

  1. כדי להוסיף את הצומת של יעד הפלט (אחסון), בוחרים באפשרות Vertex AI Vision's Media warehouse בקטע Connectors בתפריט הצד.
  2. בתפריט Vertex AI Vision's Media warehouse, לוחצים על Connect warehouse.
  3. בתפריט קישור מחסן, בוחרים באפשרות יצירת מחסן חדש. נותנים שם למחסן התנועה של המחסן, ומשאירים את משך ה-TTL אחרי 14 ימים.
  4. לוחצים על הלחצן יצירה כדי להוסיף את המחסן.

6. חיבור פלט לטבלה ב-BigQuery

כשמוסיפים מחבר BigQuery לאפליקציית Vertex AI Vision, כל הפלט של המודלים של האפליקציות המקושרות יוטמע בטבלת היעד.

אתם יכולים ליצור טבלה משלכם ב-BigQuery ולציין אותה כשמוסיפים מחבר BigQuery לאפליקציה, או מאפשרים לפלטפורמת האפליקציה Vertex AI Vision ליצור את הטבלה באופן אוטומטי.

יצירת טבלה באופן אוטומטי

אם מאפשרים לפלטפורמת האפליקציה Vertex AI Vision ליצור את הטבלה באופן אוטומטי, אפשר להגדיר את האפשרות הזו כשמוסיפים את הצומת של מחבר BigQuery.

אם רוצים להשתמש ביצירת טבלה באופן אוטומטי, התנאים הבאים של מערך הנתונים והטבלה חלים:

  • מערך נתונים: השם של מערך הנתונים שנוצר באופן אוטומטי הוא visionai_dataset.
  • טבלה: שם הטבלה שנוצרת באופן אוטומטי הוא visionai_dataset.APPLICATION_ID.
  • טיפול בשגיאות:
  • אם קיימת טבלה עם אותו שם לאותו מערך נתונים, לא תתבצע יצירה אוטומטית.
  1. פותחים את הכרטיסייה Applications במרכז הבקרה של Vertex AI Vision. עוברים לכרטיסייה 'אפליקציות'.
  2. בוחרים באפשרות הצגת האפליקציה לצד שם האפליקציה מהרשימה.
  3. בדף של יוצר האפליקציות, בוחרים באפשרות BigQuery בקטע Connectors (מחברים).
  4. משאירים את השדה BigQuery path (נתיב BigQuery). ee0b67d4ab2263d.png
  5. במטא-נתונים של החנות מ:, בוחרים רק באפשרות 'ניתוח תפוסה'. ומבטלים את הסימון של הזרמים.

תרשים האפליקציה הסופי אמור להיראות כך:

1787242465fd6da7.png

7. פריסת האפליקציה לשימוש

אחרי שיוצרים אפליקציה מקצה לקצה שכוללת את כל הרכיבים הדרושים, השלב האחרון בשימוש באפליקציה הוא לפרוס אותה.

  1. פותחים את הכרטיסייה Applications במרכז הבקרה של Vertex AI Vision. עוברים לכרטיסייה 'אפליקציות'.
  2. בוחרים באפשרות הצגת תרשים לצד האפליקציה לניהול תנועת גולשים ברשימה.
  3. בדף של הכלי ליצירת תרשימי אפליקציות, לוחצים על הלחצן פריסה.
  4. בתיבת הדו-שיח הבאה לאישור, בוחרים באפשרות פריסה. פעולת הפריסה עשויה להימשך מספר דקות. בסיום הפריסה יופיעו סימני וי ירוקים ליד הצמתים. ee78bbf00e5db898.png

8. חיפוש תוכן סרטונים במחסן האחסון

אחרי שמטמיעים נתוני וידאו באפליקציית העיבוד, אפשר לראות את נתוני הסרטונים שנותחו ולחפש בנתונים על סמך ניתוח נתוני תפוסה.

  1. פותחים את הכרטיסייה Warehouses במרכז הבקרה של Vertex AI Vision. כניסה לכרטיסייה 'מחסנים'
  2. מחפשים את מחסן התנועה/מחסני התנועה ברשימה ולוחצים על הצגת נכסים.
  3. בקטע מספר אנשים או מספר רכבים, מגדירים את הערך המינימלי ל-1 ואת הערך המקסימלי ל-5.
  4. כדי לסנן נתוני סרטונים מעובדים שמאוחסנים ב-Media warehouse של Vertex AI Vision, לוחצים על חיפוש.

e636361b19738c8d.png

תצוגה של נתוני סרטונים מאוחסנים שתואמים לקריטריוני החיפוש במסוף Google Cloud. קרדיט על הסרטון: Elizabeth Mavor ב-Pixabay (הוחלו קריטריונים לחיפוש).

9. ניתוח פלט בטבלה ב-BigQuery

מעבר אל BigQuery

בוחרים את מערך הנתונים: visionai_dataset

בחר את הטבלה: ה-APPLICATION_ID שלך (במקרה הזה, תנועה-אפליקציה)

לוחצים על שלוש הנקודות ישירות לשם הטבלה ולוחצים על Query

תכתוב את השאילתה הבאה

שאילתה 1: שאילתה לבדיקת מספר הרכבים שבו יש מעבר בכל שורה בדקה

abc.sql

—- Get list of active marked lines for each timeframe
WITH line_array AS (
  SELECT
  t.ingestion_time AS ingestion_time,
  JSON_QUERY_ARRAY(t.annotation.stats["crossingLineCounts"]) AS lines
  FROM
  `PROJ_ID.visionai_dataset.APP_ID` AS t
),
—- Flatten active lines to get individual entities details
flattened AS (
  SELECT
  line_array.ingestion_time,
  JSON_VALUE(line.annotation.id) as line_id,
  JSON_QUERY_ARRAY(line["positiveDirectionCounts"]) AS entities
  FROM line_array, unnest(line_array.lines) as line
 )
—- Generate aggregate vehicle count per zone w.r.t time 
SELECT
  STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time, line_id,
  SUM(INT64(entity["count"])) as vehicle_count
FROM
  flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, line_id

שאילתה 2: שאילתה לבדיקת מספר הרכבים בדקה בכל אחד מהאזורים

—- Get list of active zones for each timeframe
WITH zone_array AS (
     SELECT
     t.ingestion_time AS ingestion_time,
     JSON_QUERY_ARRAY(t.annotation.stats["activeZoneCounts"]) AS zones
     FROM
     `PROJ_ID.visionai_dataset.APP_ID` AS t
),
—- Flatten active zones to get individual entities details
flattened AS (
   SELECT zone_array.ingestion_time, JSON_VALUE(zone.annotation.id) as zone_id,
         JSON_QUERY_ARRAY(zone["counts"]) AS entities
   FROM zone_array, unnest(zone_array.zones) as zone
 )
—- Generate aggregate vehicle count per zone w.r.t time 
SELECT 
STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time, 
zone_id,
SUM(INT64(entity["count"])) as vehicle_count
FROM flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, zone_id

בשאילתות שלמעלה, אפשר לשנות את האפשרות 'רכב'. ל'אדם' כדי לספור אדם.

ה-Codelab הזה יציג את הנתונים וההמחשה לדוגמה עבור Query1 בלבד. אפשר לבצע את אותו תהליך גם עבור Query2.

e6fd891f3a46246.png

לוחצים על Explore Data בתפריט השמאלי ובוחרים באפשרות 'התנסות באמצעות Looker Studio'

9e737ddb4d0d25b6.png

בקטע 'מאפיין' בחלונית מוסיפים שעה ומשנים את הגדרת השעה לתאריך ושעה. ב'מאפיין פירוט' הוספה של line_id. b5da9704ccd8db.png

בתרשים שלמעלה מוצג מספר כלי הרכב/האדם שחוצים כל קו בדקה.

העמודות כחול עמוק ותכלת מציינים את שני מזהי הקווים השונים.

10. מזל טוב

כל הכבוד, סיימת את שיעור ה-Lab

פינוי מקום

כדי להימנע מצבירת חיובים בחשבון Google Cloud על המשאבים שנעשה בהם שימוש במדריך הזה, צריך למחוק את הפרויקט שמכיל את המשאבים או לשמור את הפרויקט ולמחוק את המשאבים הספציפיים.

מחיקת הפרויקט

מחיקת משאבים בודדים

מקורות מידע

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

https://cloud.google.com/vision-ai/docs/occupancy-count-tutorial

משוב

יש ללחוץ כאן כדי לשלוח משוב

סקר

איך תשתמשו במדריך הזה?

לקריאה בלבד לקרוא אותו ולבצע את התרגילים

עד כמה ה-Codelab הזה היה שימושי?

מועיל מאוד מועיל במידה בינונית