מה דרוש לבניית אלגוריתמי Perception לנהיגה אוטונומית?
מהנדסים המפתחים אלגוריתמים שמטרתם להשיג תפיסה מרחבית (Perception) עבור ADAS או נהיגה אוטומטית מלאה זקוקים לכמות גדולה של נתוני קלט לעבוד איתם.
הנתונים האלה מגיעים מסוגים רבים ושונים של חיישנים – בין היתר מכ"ם, LiDAR, מצלמות וגלאי נתיבים – ופעמים רבות מורכבים להבנה, ומעלים יותר תהיות ושאלות מאשר תשובות.
שאלות כגון: כיצד ניתן להבין ולפענח את הנתונים שאנחנו רואים? איך אפשר ליישב קריאות סותרות מחיישנים שונים? ואחרי שכבר בנינו ופיתחנו את האלגוריתם, איך אנחנו יכולים להעריך את התוצאות שקיבלנו ולכמת את ביצועי האלגוריתם?
בפוסט זה אני רוצה להציג יכולות שונות של כלי MathWorks, אשר יכולות לעזור להפיג מעט את הערפל ולענות על שאלות אלו.
לשם כך, נתמקד בארבע משימות עיקריות: וויזואליזציה של נתוני החיישנים, תיוג Ground truth, היתוך נתונים מחיישנים מרובים (Sensor fusion), וסינתזה של נתוני חיישנים לביצוע בדיקות על אלגוריתמי העקיבה והיתוך הנתונים.
- וויזואליזציה של נתוני חיישן הרכב האוטונומי
להבין מה אנחנו רואים ולהכניס הגיון לנתונים הוא האתגר העיקרי בשלבים המוקדמים של פיתוח מערכת Perception. החיישנים מספקים את הפלט שלהם בפורמטים שונים ובקצבים שונים. לדוגמה, מצלמות מספקות תמונות במטריצות תלת-ממדיות, חיישני LiDAR מספקים רשימה של נקודות, ומצלמות חכמות מספקות רשימות אובייקטים הכוללות פרטים על כלי רכב, נתיבים ואובייקטים אחרים בסביבה. ועם כל כך הרבה פלטים שונים, קשה לנו לראות ולהבין את התמונה הכוללת.
לכן, כבר בשלב מוקדם זה נרצה להיות מסוגלים לדעת בדיוק כיצד החיישנים מייצגים את הסביבה סביב הרכב.
סוג הוויזואליזציה הטוב והמתאים ביותר לשימוש זה הוא מבט ממעוף הציפור (bird-eye plot), מכיוון שהוא מאפשר לנו לראות את כל הנתונים מהחיישנים השונים במקום אחד.
כדי ליצור bird-eye plots אנו יכולים להשתמש בכלי הוויזואליזציה הקיימים ב-Automated Driving Toolbox. לאחר מכן, נוכל להוסיף פרטים נוספים לגרפים עם האובייקטים הבאים:
- coverageAreaPlotter, אשר המציג את אזור הכיסוי של החיישן
- detectionPlotter, המציג רשימות של עצמים שזוהו על ידי חיישני ראייה, מכ"ם וחיישני LiDAR
- laneBoundaryPlotter, שמכסה זיהוי נתיבים על גבי תמונות
כך יש בידינו וויזואליזציות מדויקות של כיסוי החיישנים, הזיהויים וגבולות הנתיבים – כמו שאפשר לראות בתמונה הבאה:
- תיוג Ground Truth אוטומטי
תיוג Ground truth מהווה משימה הכרחית הנדרשת כדי לאמן גלאי אובייקטים באמצעות למידת מכונה (Machine Learning) או למידה עמוקה (Deep Learning).
כמו כן, היכולת להעריך את אלגוריתמי הזיהוי שלנו גם היא משימה חשובה לאין כמותה.
תהליך תיוג Ground truth והערכתו הוא לעתים קרובות תהליך סיזיפי וארוך, המחייב עבודה ידנית, ודורש שמירה על ריכוז מירבי פריים אחר פריים.
ב-MATLAB, תוכלו להשתמש באפליקציית Ground Truth Labeler אשר כוללת אלגוריתמי ראייה ממוחשבת שונים ומאפשרת להאיץ את תהליך התיוג. בין התכונות העיקריות של האפליקציה:
- Vehicle Detector – מזהה ומתייג באופן אוטומטי את כלי רכב ב-Bounding boxes באמצעות תכונות ACF.
- Temporal Interpolator – מתייג באופן אוטומטי את האובייקטים שנמצאים בפריימים שבין הפריימים בהם האובייקטים תויגו ידנית.
- Point Tracker – משתמש באלגוריתם Kanade-Lucas-Tomasi (KLT) כדי לעקוב אחר אזורי עניין (ROI) בפריימים שונים.
- Add Algorithm – ניתן להוסיף אלגוריתמים מותאמים אישית, וכך להקל על פיתוח איטרטיבי של גלאי אובייקטים.
- היתוך נתונים מחיישנים מרובים (Sensor Fusion)
כמעט כל מערכת Perception משתמשת בקלטים שהיא מקבלת ממספר חיישנים שונים.
ההתאמה של הנתונים מחיישנים אלה היא מאתגרת, מכיוון שכל אחד מהם נותן פלט מעט שונה – לדוגמה, המצלמה עשויה לדווח כי רכב מסוים נמצא במיקום כלשהו, בעוד שהמכ"ם יראה כי אותו רכב נמצא בסביבה קרובה, אבל במיקום בהחלט שונה מאשר קריאת המצלמה.
ב-MATLAB ניתן להשתמש ב-MultiObjectTracker אשר עוקב אחר זיהויים שמתקבלים מחיישנים שונים ומבצע את ההיתוך ביניהם.
יישום נפוץ למשל הוא היתוך של דאטה שהגיע מחיישני מכ"ם ומצלמות, ובעקבות כך להביא לשיפור המיקום המשוער של כלי הרכב בסביבה, כפי שאפשר לראות בתמונה מטה (האליפסה השחורה מתארת את הערכה יותר מדויקת למיקום של המכונית ממול).
- סינתזה של נתוני חיישנים ליצירת תרחישי בדיקה
קיימים תרחישי בדיקה מסוימים, כמו התנגשויות בין מכוניות למשל, שהם באופן מובהק מסוכנים מדי לביצוע בעולם האמיתי. יתכן גם שלא נוכל לבצע בדיקות מסוימות, כי הן כלל אינן ניתנות לביצוע, למשל אם נדרשים תנאי שטח מסוימים או תנאי מזג אוויר כאלה ואחרים.
אנו יכולים להתמודד עם אתגר זה על ידי יצירה של נתוני חיישנים מלאכותיים ברמת האובייקט כדי ליצור תרחישים הכוללים כבישים, כלי רכב והולכי רגל כאובייקטים וירטואליים. נוכל להשתמש באותם נתונים סינתטיים על מנת לבדוק את אלגוריתם העקיבה והיתוך הנתונים שלנו.
התמונה מטה מתארת שלושה מבטים שונים של תרחיש בו אנחנו מסמלצים ובודקים את התוצאות על נתונים סינתטיים:
למידע נוסף
- Automated driving toolbox
- וובינר: ADAS and Automated Driving Development in MATLAB and Simulink (24:33 דקות)
- וובינר: Labeling Ground Truth for Object Detection (19:33 דקות)
- וובינר: Training and Validating Object Detectors (16:58 דקות)
- וובינר: Obstacle Avoidance Using a Camera Sensor (9:12 דקות)
- סדרת סרטונים: Making Vehicles and Robots See: Getting Started with Perception
- דוגמאות קוד: Automated Driving Code Examples