mAP (ממוצע-דיוק)

יסודות בינה מלאכותית

הגדרה

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

מה זה mAP, ולמה זיהוי-עצמים צריך מדד משלו

מודלים לזיהוי-עצמים לא רק מסווגים תמונה שלמה — הם צריכים גם למקם כל עצם במדויק, ולעיתים קרובות מחזירים כמה עשרות תיבות-מועמדות לכל תמונה ברמות-ביטחון שונות. Precision ו-Recall הרגילים, שנבנו לתשובה בינארית 'חיובי או שלילי' בנקודת-סף אחת, לא מספיקים לבד למצב כזה. mAP נבנה מ-Average Precision (AP) — ציון יחיד לכל מחלקת-עצמים, שמסכם את היחס בין Precision ל-Recall על-פני כל ספי-הביטחון האפשריים של המודל בבת-אחת — ולאחר-מכן ממוצע פשוט של ה-AP הזה על-פני כל מחלקות-העצמים במאגר-הנתונים.

איך בונים Average Precision למחלקה אחת

כדי לחשב AP למחלקה מסוימת, ממיינים את כל תחזיות המודל לאותה מחלקה לפי רמת-הביטחון שלהן, ובכל נקודה לאורך הרשימה הממוינת מחשבים Precision ו-Recall מצטברים — מה שיוצר עקומת Precision-Recall. AP הוא, למעשה, השטח שמתחת לעקומה הזו: ממוצע ערכי ה-Precision על-פני כל רמות ה-Recall האפשריות, כפי שמגדירה ויקיפדיה כאינטגרל של Precision כפונקציה של Recall. בפועל מחשבים קירוב דיסקרטי — למשל, שיטת האינטרפולציה שבה השתמש PASCAL VOC, שממצעת Precision בנקודות-Recall קבועות ומרווחות.

מ-AP ל-mAP: הממוצע הכפול

mAP הוא הממוצע הפשוט של ציוני ה-AP על-פני כל מחלקות-העצמים שבבנצ'מרק. מאגר-הנתונים COCO, שפרסמה מיקרוסופט ומכיל לפי המאמר המקורי כ-328,000 תמונות ו-2.5 מיליון מופעים מתויגים על-פני 91 סוגי-עצמים, מחשב mAP כממוצע של עד 91 ציוני-AP נפרדים, אחד לכל סוג. אצל בנצ'מרקים כמו COCO יש שכבת-ממוצוע נוספת: ה-AP של כל מחלקה מחושב לא רק בסף-IoU יחיד, אלא ב-10 ספי-IoU שונים (מ-0.5 עד 0.95, בקפיצות של 0.05) וממוצע גם על-פניהם — כך שה-mAP הסופי בבנצ'מרק כזה הוא בפועל ממוצע על-פני ממוצע נוסף.

PASCAL VOC מול COCO: כמה שונה ה'קושי'

שני הבנצ'מרקים המרכזיים בתחום מגדירים mAP קצת אחרת. PASCAL VOC מסתמך על סף-IoU בודד של 0.5 — התחזית נחשבת נכונה אם היא חופפת לפחות ב-50 אחוז לתיבה האמיתית. COCO, שפרסמה מיקרוסופט ב-2014, מחמיר משמעותית: לפי בלוג-Roboflow, הוא ממצע את ה-AP על-פני 10 ספי-IoU שונים בין 0.5 ל-0.95, כך שמודל צריך למקם תיבות בדיוק גבוה בהרבה כדי לקבל ציון גבוה — לא מספיק 'לפגוע באזור הנכון'. המאמר המקורי של COCO אף כלל ניתוח-בסיס (baseline) לביצועי זיהוי-עצמים וסגמנטציה באמצעות Deformable Parts Model (DPM) — שיטה מלפני עידן הלמידה-העמוקה בתחום — כמד-ייחוס להשוואה מול השיטות שיבואו אחריה.

התלות ב-IoU

כל חישוב-AP שממנו נבנה mAP תלוי בהחלטה בינארית אחת בבסיסו: האם תחזית מסוימת 'פוגעת' בעצם האמיתי או לא — והחלטה זו נקבעת על-ידי ערך-IoU, מדד-החפיפה הגיאומטרי בין תיבת-התחזית לתיבה האמיתית. סף-IoU גבוה יותר (כמו ב-COCO) מחמיר את ההגדרה של 'פגיעה', ומוריד את ה-mAP הסופי גם אם איכות-הזיהוי בפועל לא השתנתה — מה שהופך את שני המדדים לבלתי-נפרדים זה מזה. בלי הגדרה גיאומטרית ברורה כמו IoU, אי-אפשר בכלל להתחיל למיין תחזיות ל'נכונות' ו'שגויות' לצורך בניית עקומת Precision-Recall, ולכן כל שינוי בהגדרת-הסף משפיע ישירות על הציון הסופי, לא רק על נתון-ביניים שולי.

שימוש בפועל

mAP הוא המדד המקובל להשוואת ארכיטקטורות זיהוי-עצמים — מ-R-CNN הראשוני, דרך YOLO, ועד מודלים עדכניים יותר — על-פני לוחות-תוצאות סטנדרטיים כמו PASCAL VOC ו-COCO. ספריות כמו pycocotools (הכלי הרשמי של COCO) ו-torchvision מממשות את החישוב באופן אוטומטי מתוך תוצאות-מודל גולמיות, כך שכמעט כל מאמר-מחקר או מוצר-בתעשייה בתחום זיהוי-עצמים מדווח mAP כמדד-ההשוואה המרכזי שלו — בדיוק כמו ש-Accuracy משמש מדד-ברירת-מחדל לבעיות-סיווג רגילות, רק מותאם למשימה שדורשת גם מיקום וגם סיווג בו-זמנית.

שאלות נפוצות ❓

מה ההבדל בין AP ל-mAP?

AP (Average Precision) הוא ציון לכל מחלקת-עצמים בנפרד. mAP (Mean Average Precision) הוא הממוצע של כל ציוני ה-AP האלה על-פני כל המחלקות במאגר-הנתונים, ולעיתים גם על-פני כמה ספי-IoU.

למה COCO מחשב mAP על 10 ספי-IoU שונים?

כדי למדוד לא רק אם המודל 'פגע באזור' אלא כמה מדויק המיקום שלו — ממוצע על ספים מ-0.5 עד 0.95 מתגמל מודלים שממקמים תיבות בדיוק גבוה, ולא רק מודלים ש'קולעים באזור הכללי'.

האם mAP גבוה יותר תמיד אומר מודל טוב יותר?

רק בתוך אותו בנצ'מרק ואותה הגדרת-סף. mAP של 0.7 ב-PASCAL VOC (סף-IoU 0.5) ו-mAP של 0.7 ב-COCO (ממוצע על 10 ספים מחמירים בהרבה) לא ניתנים להשוואה ישירה זה מול זה.

מה ההבדל בין mAP ל-Precision הרגיל?

Precision הרגיל נמדד בנקודת-סף-החלטה אחת ובלי רכיב-מיקום כלל. mAP מסכם את כל עקומת Precision-Recall למספר יחיד, ומוסיף רכיב-מיקום דרך IoU — נדרש כי זיהוי-עצמים צריך גם לסווג וגם למקם.