מדריך לסינון תנועה

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

פרמטרים של מודל

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

פרמטר תיאור סימון ערך ברירת המחדל ערכים זמינים
משך אירוע מינימלי האורך המינימלי של אירוע תנועה שיתועד אחרי שאירוע תנועה הסתיים, בשניות. --min-event-length INT ‫10 (שניות) ‫1 - 3600
רגישות לזיהוי תנועה רמת הרגישות של סינון אירועי התנועה במודל. רגישות גבוהה מגיבה יותר לתנועה ומספקת סינון אגרסיבי יותר של תנועה, כך שיזוהו יותר תנועות. --motion-sensitivity STRING "medium" "high", "medium" או "low"
חלון מבט לאחור כמות התוכן של הסרטון (בשניות) שהשירות מצלם לפני אירוע של תנועה שזוהתה. --lookback-length INT ‫3 (שניות) 0 - 300
תקופת צינון אחרי שאירוע תנועה מסתיים, מתחילה תקופת צינון באורך שצוין. במהלך תקופת הצינון, המודל לא מתעד אירועי תנועה. --cooldown-length INT ‫300 (שניות) 0 - 3600

רגישות לתנועה

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

ככל שמידת הרגישות לזיהוי תנועה גבוהה יותר, כך המודל רגיש יותר לרעשים ולתנועות קטנות. הגדרת הרגישות הגבוהה הזו מומלצת להגדרות שכוללות תאורה יציבה ומציגות אובייקטים קטנים יותר בתנועה (כמו צילומי אנשים מרחוק).

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

משך אירוע מינימלי

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

תרשים של משך אירוע מינימלי

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

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

חלון מבט לאחור

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

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

תקופת צינון

תקופת צינון היא משך זמן שמתרחש אחרי שמתועד אירוע תנועה ואורך אירוע מינימלי. במהלך תקופת הצינון, התנועה שזוהתה לא מפעילה את מסנן התנועה. הטווח של התקופה הזו הוא בין אפס שניות ל-3,600 שניות. ברירת המחדל היא 300 שניות.

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

שימוש במודל

אפשר להשתמש במודל של מסנן התנועה באמצעות Vertex AI Vision SDK.

משתמשים בכלי vaictl של שורת הפקודה כדי להפעיל את המודל על ידי ציון applying encoded-motion-filter והעברת ערכים להגדרת פרמטרים של בקרה.

Vertex AI Vision SDK

כדי לשלוח בקשה באמצעות מודל סינון התנועה, צריך להתקין את Vertex AI Vision SDK.

מחליפים את המשתנים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • LOCATION_ID: מזהה המיקום. לדוגמה, us-central1. אזורים נתמכים מידע נוסף
  • LOCAL_FILE.EXT: שם הקובץ של קובץ וידאו מקומי. לדוגמה, my-video.mp4.
  • STREAM_ID: מזהה הזרם שיצרתם באשכול. לדוגמה, input-stream.
  • --motion-sensitivity: הרגישות של סינון אירועי התנועה. האפשרויות הן high, ‏ medium, ‏ low.
  • --min-event-length: משך הזמן המינימלי של אירוע תנועה בשניות. ערך ברירת המחדל הוא 10 שניות. הערכים הזמינים: 1-3600.
  • --lookback-length: משך חלון מבט לאחור לפני תחילת אירוע התנועה בשניות. ערך ברירת המחדל הוא 3 שניות. הערכים הזמינים: 0-300.
  • --cooldown-length: תקופת ההמתנה אחרי שמתרחש אירוע תנועה, בשניות. ערך ברירת המחדל הוא 300 שניות (5 דקות). הערכים הזמינים: 0-3600.
  • --continuous-mode: האם לשלוח במצב רציף. ערך ברירת המחדל הוא true.
  • OUTPUT_DIRECTORY: הספרייה שבה רוצים לשמור את קובצי הפלט של פלחי הווידאו בפורמט MP4.

צפייה בפרטי הפקודה

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

vaictl send video-file applying motion-filter -h

סינון תוכן בקובץ מקומי באמצעות מודל סינון התנועה

הפקודה הזו שולחת רק קטעים של סרטונים שבהם המודל מזהה תנועה.

vaictl -p PROJECT_ID \
      -l LOCATION_ID \
      -c application-cluster-0 \
      --service-endpoint visionai.googleapis.com \
send video-file  --file-path LOCAL_FILE.EXT \
applying motion-filter --motion-sensitivity=medium \
      --min-event-length=10 --lookback-length=3 --cooldown-length=0 \
to streams STREAM_ID --loop

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

בפקודה הזו נעשה שימוש בדגל --continuous_mode כדי ליצור קובצי וידאו נפרדים לכל פלח תנועה.

vaictl -p PROJECT_ID \
      -l LOCATION_ID \
      -c application-cluster-0 \
      --service-endpoint visionai.googleapis.com \
send video-file --file-path LOCAL_FILE.EXT --continuous-mode=false \
applying motion-filter --motion-sensitivity=medium \
      --min-event-length=10 --lookback-length=3 --cooldown-length=0 \
to mp4file --mp4-file-path=OUTPUT_DIRECTORY

שיטות מומלצות

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

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

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

שיטות מומלצות לשימוש בתוך מבנים

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

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

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

שיטות מומלצות לשימוש בחוץ

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

Situation 1:

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

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

תרחיש 2:

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

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

מגבלות

מסנן התנועה תלוי במידה רבה בווקטור התנועה בכל פריים, ולכן יש כמה מגבלות שחשוב לזכור.

  1. זווית המצלמה: כדאי להשתמש במצלמה נייחת, כי במצלמה בתנועה יש תנועה מתמדת בפריים.
  2. גודל האובייקט: כדאי לנסות למסגר את הנושאים כך שהאובייקטים העיקריים יופיעו במסגרת בגודל מספיק כדי להשיג את הביצועים הכי טובים באמצעות מסנן התנועה.
  3. תאורה: שינויים בתאורה – כמו שינוי פתאומי בבהירות בפריים או תנועות צללים חזקות – עלולים לפגוע בביצועי המודל. טווח דינמי נמוך שגורם לכך שגוון הבהירות של הסרטון כולו דומה, מה שמשפיע על האופן שבו המודל מפרש את התנועה ופוגע בביצועי המודל.
  4. מיקום המצלמה: המודל מיועד לזיהוי תנועה בפריים. זה כולל תנועה ברקע, כמו רוח שמזיזה עץ או חפצים מחוץ למסגרת שיוצרים צללים. אם חלק גדול מהפריים מצביע על אובייקטים ברקע שיוצרים את התנועות האלה, יכול להיות שהדבר ישפיע על ביצועי המודל.