14 KiB
זיהוי אובייקטים
מודלי סיווג תמונות שעסקנו בהם עד כה לקחו תמונה והפיקו תוצאה קטגורית, כמו הקטגוריה 'מספר' בבעיה של MNIST. עם זאת, במקרים רבים אנחנו לא רוצים רק לדעת שתמונה מציגה אובייקטים - אנחנו רוצים להיות מסוגלים לקבוע את המיקום המדויק שלהם. זה בדיוק הנושא של זיהוי אובייקטים.
מבחן מקדים להרצאה
תמונה מתוך אתר YOLO v2
גישה נאיבית לזיהוי אובייקטים
נניח שרצינו למצוא חתול בתמונה, גישה נאיבית מאוד לזיהוי אובייקטים תהיה כדלקמן:
- לחלק את התמונה למספר אריחים.
- להריץ סיווג תמונה על כל אריח.
- אריחים שמניבים הפעלה גבוהה מספיק יכולים להיחשב ככוללים את האובייקט המדובר.
תמונה מתוך מחברת התרגילים
עם זאת, גישה זו רחוקה מלהיות אידיאלית, מכיוון שהיא מאפשרת לאלגוריתם לאתר את תיבת הגבול של האובייקט בצורה מאוד לא מדויקת. למיקום מדויק יותר, עלינו להריץ סוג של רגרסיה כדי לחזות את הקואורדינטות של תיבות הגבול - ולשם כך, אנו זקוקים למערכי נתונים ספציפיים.
רגרסיה לזיהוי אובייקטים
פוסט הבלוג הזה מציע מבוא עדין ומעולה לזיהוי צורות.
מערכי נתונים לזיהוי אובייקטים
ייתכן שתיתקלו במערכי הנתונים הבאים למשימה זו:
- PASCAL VOC - 20 קטגוריות
- COCO - אובייקטים נפוצים בהקשר. 80 קטגוריות, תיבות גבול ומסכות סגמנטציה
מדדים לזיהוי אובייקטים
חיתוך על איחוד (Intersection over Union)
בעוד שבסיווג תמונות קל למדוד עד כמה האלגוריתם מצליח, בזיהוי אובייקטים עלינו למדוד הן את נכונות הקטגוריה, והן את דיוק מיקום תיבת הגבול שחוזה האלגוריתם. עבור האחרון, אנו משתמשים במדד שנקרא חיתוך על איחוד (IoU), שמודד עד כמה שתי תיבות (או שני אזורים שרירותיים) חופפים.
איור 2 מתוך פוסט בלוג מצוין על IoU
הרעיון פשוט - אנו מחלקים את שטח החיתוך בין שתי הצורות בשטח האיחוד שלהן. עבור שני אזורים זהים, IoU יהיה 1, בעוד שעבור אזורים שאינם חופפים כלל הוא יהיה 0. אחרת הוא ינוע בין 0 ל-1. בדרך כלל אנו מתחשבים רק בתיבות גבול עבורן IoU מעל ערך מסוים.
דיוק ממוצע (Average Precision)
נניח שאנחנו רוצים למדוד עד כמה קטגוריה מסוימת של אובייקטים C מזוהה היטב. כדי למדוד זאת, אנו משתמשים במדד דיוק ממוצע, שמחושב כך:
- עקומת דיוק-שליפה (Precision-Recall) מציגה את הדיוק בהתאם לערך סף זיהוי (מ-0 עד 1).
- בהתאם לסף, נקבל יותר או פחות אובייקטים מזוהים בתמונה, וערכים שונים של דיוק ושליפה.
- העקומה תיראה כך:
תמונה מתוך NeuroWorkshop
הדיוק הממוצע עבור קטגוריה מסוימת C הוא השטח מתחת לעקומה זו. באופן מדויק יותר, ציר השליפה מחולק בדרך כלל ל-10 חלקים, והדיוק מחושב כממוצע על כל הנקודות הללו:
AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})
AP ו-IoU
אנו נתחשב רק בזיהויים עבורם IoU מעל ערך מסוים. לדוגמה, במערך הנתונים PASCAL VOC בדרך כלל \mbox{IoU Threshold} = 0.5, בעוד שב-COCO AP נמדד עבור ערכים שונים של \mbox{IoU Threshold}.
תמונה מתוך NeuroWorkshop
דיוק ממוצע כולל - mAP
המדד המרכזי לזיהוי אובייקטים נקרא דיוק ממוצע כולל, או mAP. זהו ערך הדיוק הממוצע, מחושב כממוצע על פני כל קטגוריות האובייקטים, ולעיתים גם על פני \mbox{IoU Threshold}. תהליך חישוב mAP מתואר בפירוט
בפוסט בלוג זה), וגם כאן עם דוגמאות קוד.
גישות שונות לזיהוי אובייקטים
ישנן שתי קטגוריות עיקריות של אלגוריתמים לזיהוי אובייקטים:
- רשתות הצעת אזורים (R-CNN, Fast R-CNN, Faster R-CNN). הרעיון המרכזי הוא ליצור אזורים מעניינים (ROI) ולהריץ CNN עליהם, בחיפוש אחר הפעלה מקסימלית. זה דומה במעט לגישה הנאיבית, למעט העובדה שהאזורים נוצרים בצורה חכמה יותר. אחד החסרונות המרכזיים של שיטות אלו הוא שהן איטיות, מכיוון שצריך לבצע מספר רב של מעברים של מסווג CNN על התמונה.
- מעבר יחיד (YOLO, SSD, RetinaNet). בארכיטקטורות אלו אנו מעצבים את הרשת כך שתנבא הן קטגוריות והן אזורים במעבר אחד.
R-CNN: רשת CNN מבוססת אזורים
R-CNN משתמשת ב-חיפוש סלקטיבי כדי ליצור מבנה היררכי של אזורי ROI, אשר מועברים לאחר מכן דרך מסנני תכונות CNN ומסווגי SVM כדי לקבוע את קטגוריית האובייקט, ורגרסיה ליניארית כדי לקבוע את קואורדינטות תיבת הגבול. מאמר רשמי
תמונה מתוך van de Sande et al. ICCV’11
תמונות מתוך פוסט בלוג זה
F-RCNN - Fast R-CNN
גישה זו דומה ל-R-CNN, אך האזורים מוגדרים לאחר יישום שכבות הקונבולוציה.
תמונה מתוך המאמר הרשמי, arXiv, 2015
Faster R-CNN
הרעיון המרכזי בגישה זו הוא להשתמש ברשת עצבית כדי לנבא אזורים - מה שנקרא רשת הצעת אזורים. מאמר, 2016
תמונה מתוך המאמר הרשמי
R-FCN: רשת מבוססת אזורים עם קונבולוציה מלאה
אלגוריתם זה מהיר אף יותר מ-Faster R-CNN. הרעיון המרכזי הוא כדלקמן:
- אנו מוציאים תכונות באמצעות ResNet-101.
- התכונות מעובדות על ידי מפת ניקוד רגישה למיקום. כל אובייקט מתוך
Cקטגוריות מחולק ל-k\times kאזורים, ואנו מאמנים את הרשת לנבא חלקים של אובייקטים. - עבור כל חלק מתוך
k\times kאזורים כל הרשתות מצביעות על קטגוריות אובייקטים, וקטגוריית האובייקט עם ההצבעה המקסימלית נבחרת.
תמונה מתוך המאמר הרשמי
YOLO - You Only Look Once
YOLO הוא אלגוריתם מעבר יחיד בזמן אמת. הרעיון המרכזי הוא כדלקמן:
- התמונה מחולקת ל-
S\times Sאזורים. - עבור כל אזור, CNN מנבא
nאובייקטים אפשריים, קואורדינטות תיבת הגבול ו-ביטחון=הסתברות * IoU.
תמונה מתוך המאמר הרשמי
אלגוריתמים נוספים
- RetinaNet: מאמר רשמי
- מימוש ב-PyTorch ב-Torchvision
- מימוש ב-Keras
- זיהוי אובייקטים עם RetinaNet בדוגמאות של Keras
- SSD (Single Shot Detector): מאמר רשמי
✍️ תרגילים: זיהוי אובייקטים
המשיכו ללמוד במחברת הבאה:
סיכום
בשיעור זה עשיתם סיור מהיר בכל הדרכים השונות שבהן ניתן לבצע זיהוי אובייקטים!
🚀 אתגר
קראו את המאמרים והמחברות על YOLO ונסו אותם בעצמכם:
- פוסט בלוג טוב שמתאר את YOLO
- אתר רשמי
- YOLO: מימוש ב-Keras, מחברת שלב-אחר-שלב
- YOLO v2: מימוש ב-Keras, מחברת שלב-אחר-שלב
מבחן לאחר ההרצאה
סקירה ולימוד עצמי
- זיהוי אובייקטים מאת Nikhil Sardana
- השוואה טובה של אלגוריתמים לזיהוי אובייקטים
- סקירה של אלגוריתמים ללמידה עמוקה לזיהוי אובייקטים
- מבוא שלב-אחר-שלב לאלגוריתמים בסיסיים לזיהוי אובייקטים
- מימוש של Faster R-CNN בפייתון לזיהוי אובייקטים
מטלה: זיהוי אובייקטים
כתב ויתור:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפתו המקורית נחשב למקור הסמכותי. למידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אנושי. איננו נושאים באחריות לכל אי-הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה.









