אפליקציית Analytics לתפוסה ב-Vertex AI Vision לניהול אירועים

1. מטרות

סקירה כללית

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

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

מה תלמדו

  • איך מטמיעים סרטונים בסטרימינג
  • איך יוצרים אפליקציה ב-Vertex AI Vision
  • תכונות שונות הזמינות ב-תפוסה ב-Analytics והאופן שבו להשתמש בהן
  • איך לפרוס את האפליקציה
  • איך מחפשים סרטונים באחסון שלכם ב-Vertex AI Vision's Media Warehouse.
  • איך יוצרים פונקציה של Cloud Functions שמעבדת את נתוני המודל של ניתוח תפוסה.
  • איך יוצרים נושא Pub/Sub במינוי.
  • איך להגדיר ניהול אירועים לשליחת אירועים דרך נושא Pub/Sub.

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. הטמעת קובץ וידאו בסטרימינג

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

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

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

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

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

הכנת סרטון לדוגמה

  1. אפשר להעתיק סרטון לדוגמה באמצעות הפקודה 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 .

הטמעת נתונים במקור הנתונים

  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, הסרטון מועבר בלופ לשידור של הסרטון עד שמפסיקים את הפקודה. אנו נריץ את הפקודה הזו כמשימת רקע כדי שהסטרימינג ימשיך.
  • ( צריך להוסיף את הפקודה '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 (נוסף פיקסלים).

4. יצירת פונקציה של Cloud Functions

אנחנו זקוקים לפונקציה של Cloud Functions כדי לעכל את נתוני המודל יצירת אירועים שיישלחו מאוחר יותר דרך ערוץ האירוע.

מידע נוסף על הפונקציה של Cloud Functions

יצירת פונקציה של Cloud Functions שמאזינים למודל

  1. נכנסים לדף היצירה של ממשק המשתמש של הפונקציה של Cloud Functions.
  2. מגדירים את שם הפונקציה. בהמשך, המערכת תשתמש בפונקציה של Cloud Functions בהגדרות של ניהול אירועים.
  3. צריך לוודא שהאזור תואם לאפליקציה.
  4. משנים ושומרים את הגדרות הטריגר.
  5. לוחצים על הלחצן 'הבא' כדי לעבור לקטע "קוד". חלק. דוגמה ליצירה של פונקציה של Cloud Functions נכשלה
  6. עורכים את הפונקציה ב-Cloud Functions. הנה דוגמה עם סביבת זמן הריצה של Node.js.
/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.hello_http = (req, res) => {
 // Logging statement can be read with cmd `gcloud functions logs read {$functionName}`.
 // For more about logging, please see https://cloud.google.com/functions/docs/monitoring

 // The processor output will be stored in req.body.
 const messageString = constructMessage(req.body);

 // Send your message to operator output with res HTTP response context.
 res.status(200).send(messageString);
};

function constructMessage(data) {
 /**
  * Typically, your processor output should contains appPlatformMetadata & it's designed output.
  * For example here, if your output is of tyoe OccupancyCountingPredictionResult, you will need
  * to construct the return annotation as such. 
  */

 // access appPlatformMetat.
 const appPlatformMetadata = data.appPlatformMetadata;

 // access annotations.
 const annotations = data.annotations.map(annotation => {
  // This is a mock OccupancyCountingPredictionResult annotation.
  return {"annotation" : {"track_info": {"track_id": "12345"}}};
 });

 const events = [];
 for(const annotation of annotations) {
   events.push({
       "event_message": "Detection event",
       "payload" : {
         "description" : "object detected"
       },
       "event_id" : "track_id_12345"
     });
 }

  /**
   * Typically, your cloud function should return a string represent a JSON which has two fields:
   * "annotations" must follow the specification of the target model.
   * "events" should be of type "AppPlatformEventBody".
   */
 const messageJson = {
   "annotations": annotations,
   "events": events,
 };
 return JSON.stringify(messageJson);
}
  1. לוחצים על 'פריסה' לפריסת הפונקציה.

5. יצירת נושא Pub/Sub ו- מינוי

צריך לספק נושא Pub/Sub לאפליקציה שאליה האפליקציה תוכל לשלוח את האירוע. כדי לקבל את האירועים, צריך מינוי ל-Pub/Sub להירשם לאופטיקה מוגדרת.

מידע נוסף על נושא Pub/Sub זמין כאן ועל מינויים כאן.

יצירת נושא Pub/Sub

כדי ליצור נושא Pub/Sub, אפשר להשתמש ב-CLI של gcloud: (צריך להחליף את SUBSCRIPTION_ID בערך האמיתי שהגדרתם)

gcloud pubsub topics create TOPIC_ID

לחלופין, אפשר להשתמש בממשק המשתמש של Pub/Sub

יצירת מינוי ל-Pub/Sub

כדי ליצור מינוי ל-Pub/Sub, אפשר להשתמש ב-CLI של gcloud: (צריך להחליף את SUBSCRIPTION_ID ואת TOPIC_ID בערך אמיתי שהוגדר)

gcloud pubsub subscriptions create SUBSCRIPTION_ID \
    --topic=TOPIC_ID \

לחלופין, אפשר להשתמש בממשק המשתמש של Pub/Sub

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

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

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

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

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

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

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

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

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

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

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

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

  1. צומת של הטמעת נתונים: משאב מקור הנתונים שמטמיע נתונים.
  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. לוחצים על הלחצן יצירה כדי להוסיף את המחסן.

7. הגדרת ניהול אירועים

משך 02:00

אנחנו נחבר את המודל לפונקציה של Cloud Functions שיצרתם בעבר לצורך עיבוד לאחר עיבוד, כדי שהפונקציה של Cloud Functions תוכל לקלוט באופן חופשי את הפלט של המודל וליצור אירועים שמתאימים לכם. לאחר מכן נגדיר את ערוץ האירועים על ידי הגדרת נושא Pub/Sub שנוצר קודם לכן כיעד. אפשר גם להגדיר מרווח זמן מינימלי. כך תוכלו למנוע מצב שבו ערוץ האירועים שלכם יהיה מוצף בעקבות אותו אירוע בפרק זמן קצר.

בחירת פונקציה של Cloud Functions לאחר עיבוד נתונים

  1. לוחצים על הצומת של עיבוד הנתונים(ניתוח תפוסה) בתרשים האפליקציה כדי לפתוח את תפריט הצד.
  2. בוחרים את הפונקציה של Cloud Functions (שמזוהה לפי שם הפונקציה שלה) בתפריט הנפתח Post-processing.
  3. תרשים האפליקציה ישמור את השינויים שלכם באופן אוטומטי.

הטעינה של דוגמה להגדרה לאחר העיבוד נכשלה

הגדרת ערוץ אירוע

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

דוגמה לתיבת הדו-שיח של התראה על אירוע נכשלה

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

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

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

9. אימות אירועים או הודעות במינוי Pub/Sub

אחרי שמטמיעים נתוני וידאו באפליקציית העיבוד, הפונקציה של Cloud Functions אמורה ליצור אירועים ברגע שמתקבל הערה של מודל ניתוח התפוסה. לאחר מכן צריך לפרסם את האירועים האלה כהודעות דרך נושא Pub/Sub וגם שהתקבלו במסגרת המינוי.

בהנחה שיש לכם מינוי משיכה, השלבים הבאים הם:

  1. פותחים את רשימת המינויים ל-Pub/Sub בפרויקט ו למצוא את המינוי המתאים. לדף רשימת המינויים ב-Pub/Sub
  2. מעבר אל 'הודעה' .
  3. ללחוץ על 'משיכה' לחצן.
  4. הצגת ההודעה בטבלה. שגיאה בטעינת התמונה של הודעת מינוי Pub/Sub

לחלופין, תוכלו לקרוא איך לקבל הודעות ללא ממשק משתמש. לדף המינוי

10. מזל טוב

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

פינוי מקום

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

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

מחיקת משאבים ספציפיים

מקורות מידע

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

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

משוב

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

סקר

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

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

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

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