אפליקציות רבות מתבססות על אלגוריתמים שמזהים עצמים בתמונות. נתאר בקצרה כיצד פועל אחד מהאלגוריתמים אלו פועלים באמצעות המשחק הפופולרי "איפה אפי?" [1]
במשחק ״איפה אפי״, המוכר לנו מילדותנו, ישנם דפי תמונות עמוסי פרטים ואנשים צבעוניים. אנחנו נדרשים לחפש את אפי, בחור חביב בחולצת פסים אדומים-לבנים, בעל מקל הליכה חום וכובע אדום לבן עם פונפון. המשחק מאלץ אותנו להבחין בפרטים מאוד מדויקים, כמו צבעים או תבניות מסוימים. ייתכן ואפי יוסתר חלקית על ידי אדם או חפץ, ואף ייתכן ואפי יהיה קטן במיוחד משאר הפרטים בתמונה. האלגוריתם אותו אנחנו מריצים בראשנו בעת פתרון המשחק הוא מורכב ביותר, ועל כן הניסיון לבצע תהליך זיהוי עצמים בתמונה בעזרת מחשב נתקל בלא מעט קשיים גם כן.
אלגוריתמי זיהוי עצמים [2] (object detection) משלבים שתי יכולות: מציאת העצם וסיווגו. תמונה תתקבל כקלט והאלגוריתם יסמן על גבי התמונה מלבנים המתארים היכן נמצא העצם ולאיזו קטגוריה הוא משוייך, במקרה שלנו: זיהוי דמות מסוימת בתוך סביבה הומת אדם. ישנן דוגמאות רבות של תמונות, חלקן של הדמות וחלקן של דמויות אחרות. מטרת המחשב היא ללמוד לזהות את הדמות הספציפית ולסמנה על גבי התמונה, למשל בעזרת שימוש ב"למידה עמוקה" [3]. למידה עמוקה הינה שיטה חישובית המאפשרת לתוכנית המחשב ללמוד בעזרת מעבר על הרבה דוגמאות עם פתרונות לתשובות שמצופה ממנו לענות, ושבעזרתם המחשב מסיק מה עליו לעשות. לאחר מכן המחשב מסוגל לפתור משימות דומות. בשיטות זיהוי אובייקטים מבוססות מערכת לומדת יש דגש רב על תהליך הלמידה של מרחב האפשרויות הקיימות. כלומר, אם מחפשים את אפי בתמונה, צריך לקחת הרבה תמונות של אפי בסיטואציות שונות ככל הניתן (בדומה למטלה שנרצה לבצע). לדוגמא, ייתכן ואפי החליף הבוקר בגדים, וכעת הוא לובש חולצה כחולה ולא אדומה, ואת הכובע החם זנח לטובת כובע מצחיה כחול. אם מצב דומה לא יופיע בקבוצת הדוגמאות בזמן אימון המערכת (ראו פוסט על למידה עמוקה), היא לא תוכל לפעול בצורה אופטימלית בזמן אמת. ניתן להקביל זאת למעקב בלשי אחר אפי. במקרה כזה, הבלש יחפש בחשוד מאפיינים חיצוניים כמו קלסטרון פנים והתנהגות, ולאו דווקא סגנון לבוש אשר יכול להשתנות. ההסתברות במקרה כזה למצוא את אפי באמצעות זיהוי מאפיינים הניתנים לשינוי כמו תסרוקת נמוכה משמעותית.
בעבר, שיטות רבות לזיהוי עצמים פעלו בשני שלבים: בשלב הראשון חילקו את התמונה למספר אזורי עניין, ולאחר מכן ביצעו את פעולת הזיהוי על ידי הפעלת שיטת חישוב זהה עבור כל אזור עניין. במקרה שלנו, בלשי החיפוש ימפו קודם כל את אזורי הבילוי בתמונה ויחפשו את כל האטרקציות המעניינות אשר עלול להימצא בהם חברינו אפי, ורק לאחר שיסתיים המיפוי יחלו במלאכת החיפוש. שיטות אילו זיהו בצורה טובה יחסית, אך היו איטיים ולעיתים פעלו במסגרת זמנים של שניה לתמונה ואף יותר. טווח זמנים ארוך אינו אפקטיבי עבור זיהוי בוידאו בזמן אמת (למשל כאשר רכב אוטונומי יצטרך לבלום בפתאומיות לאחר זיהוי מכשול). אחת השיטות פורצות הדרך בזיהוי עצמים בתמונות נקראת YOLO-You Only Look Once [6]. YOLO היא מערכת למידה עמוקה המבצעת את פעולת החישוב פעם אחת בלבד (מכאן שמה). YOLO מזהה עצמים בצורה פשוטה וישירה ללא חלוקת התמונה לאזורי עניין. השיטה מחלקת תחילה את התמונה לריבועים קטנים בגודל זהה (וכך אינה מחפשת בעצמה אזורי עניין ו"מבזבזת" זמן חישוב) ולאחר החלוקה בכל תא בטבלה היא מחפשת מספר קבוע מראש של אובייקטים בגדלים ובכיוונים שונים. עצם קטן יוכל להימצא בריבוע קטן, בעוד עצם גדול ימצא בשילוב של מספר ריבועים שכנים אשר זיהו חלקים שונים מאותו העצם. ניתן להקביל את חיפוש העצמים לצוות חוקרים אשר מתכנן בקפידה היכן לחפש את אפי ומבזבז זמן רב מדי בחלוקת משימות, במקום לצאת ולחפש בצורה יעילה ומהירה. לצורך השוואה, גרסתה האחרונה של YOLO מסוגלת לבצע זיהוי אובייקטים בקצב של 20-50 תמונות לשניה, זאת בהתאם לאיכות הזיהוי ולמספר העצמים שאנו מחפשים בתמונה. שיטות זיהוי הפועלות בקצבים מהירים יכולות לשמש במערכות כגון: זיהוי מרחקים מעצמים למניעת התנגשויות, זיהוי מהיר של לוחיות רישוי בכניסה לחניון, זיהוי פנים בפתיחת מכשיר סלולרי, זיהוי מכשולים בנהיגה אוטונומית, זיהוי אנומליות בסריקות רפואיות ועוד.
מקורות וקריאה נוספת:
[1] ערך הויקיפדיה של Where's Wally?
[2] הבנת אלגוריתמי object detection
[3] למידה עמוקה במדע גדול בקטנה
[4] תמונת חתול
[5] אתר המאפשר זיהוי עצמים בתמונה בצורה מקוונת
[6] אחת מהשיטות הנפוצות ביותר לביצוע זיהוי עצמים בזמן אמת - YOLOV3