Skip to content

Latest commit

 

History

History
167 lines (93 loc) · 11.4 KB

File metadata and controls

167 lines (93 loc) · 11.4 KB

זיהוי אובייקטים

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

זיהוי אובייקטים

תמונה מתוך אתר YOLO v2

גישה נאיבית לזיהוי אובייקטים

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

  1. לחלק את התמונה למספר אריחים.
  2. להריץ סיווג תמונה על כל אריח.
  3. אריחים שמפיקים הפעלה גבוהה מספיק יכולים להיחשב ככאלה שמכילים את האובייקט המדובר.

זיהוי נאיבי של אובייקטים

תמונה מתוך מחברת התרגילים

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

רגרסיה לזיהוי אובייקטים

פוסט הבלוג הזה מציע מבוא עדין ומעולה לזיהוי צורות.

מערכי נתונים לזיהוי אובייקטים

ייתכן שתיתקלו במערכי הנתונים הבאים למשימה זו:

  • PASCAL VOC - 20 קטגוריות
  • COCO - אובייקטים נפוצים בהקשר. 80 קטגוריות, תיבות גבול ומסכות סגמנטציה

COCO

מדדים לזיהוי אובייקטים

חיתוך על איחוד (Intersection over Union)

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

IoU

איור 2 מתוך פוסט בלוג מצוין על IoU

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

דיוק ממוצע (Average Precision)

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

  1. עקומת דיוק-שליפה (Precision-Recall) מציגה את הדיוק בהתאם לערך סף זיהוי (מ-0 עד 1).
  2. בהתאם לסף, נקבל יותר או פחות אובייקטים מזוהים בתמונה, וערכים שונים של דיוק ושליפה.
  3. העקומה תיראה כך:

תמונה מתוך 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 עליהם, בחיפוש אחר הפעלה מקסימלית. זה קצת דומה לגישה הנאיבית, למעט העובדה שה-ROI נוצרים בצורה חכמה יותר. אחד החסרונות המרכזיים של שיטות אלו הוא שהן איטיות, מכיוון שצריך לבצע מספר רב של מעברים של מסווג CNN על התמונה.
  • מעבר אחד (YOLO, SSD, RetinaNet). בארכיטקטורות אלו אנו מעצבים את הרשת כך שתנבא גם קטגוריות וגם ROI במעבר אחד.

R-CNN: רשת CNN מבוססת אזורים

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

RCNN

תמונה מתוך van de Sande et al. ICCV’11

RCNN-1

תמונות מתוך הבלוג הזה

F-RCNN - Fast R-CNN

גישה זו דומה ל-R-CNN, אך האזורים מוגדרים לאחר יישום שכבות הקונבולוציה.

FRCNN

תמונה מתוך המאמר הרשמי, arXiv, 2015

Faster R-CNN

הרעיון המרכזי בגישה זו הוא להשתמש ברשת עצבית כדי לנבא ROI - מה שנקרא רשת הצעת אזורים. מאמר, 2016

FasterRCNN

תמונה מתוך המאמר הרשמי

R-FCN: רשת מבוססת אזורים עם קונבולוציה מלאה

אלגוריתם זה מהיר יותר מ-Faster R-CNN. הרעיון המרכזי הוא כדלקמן:

  1. אנו מחלצים תכונות באמצעות ResNet-101.
  2. התכונות מעובדות על ידי מפת ניקוד רגישה למיקום. כל אובייקט מתוך $C$ קטגוריות מחולק ל-$k\times k$ אזורים, ואנו מאמנים לחזות חלקים של אובייקטים.
  3. עבור כל חלק מתוך $k\times k$ אזורים כל הרשתות מצביעות על קטגוריות אובייקטים, וקטגוריית האובייקט עם ההצבעה המקסימלית נבחרת.

r-fcn image

תמונה מתוך המאמר הרשמי

YOLO - You Only Look Once

YOLO הוא אלגוריתם בזמן אמת במעבר אחד. הרעיון המרכזי הוא כדלקמן:

  • התמונה מחולקת ל-$S\times S$ אזורים.
  • עבור כל אזור, CNN מנבא $n$ אובייקטים אפשריים, קואורדינטות תיבת הגבול ו-ביטחון=הסתברות * IoU.

YOLO

תמונה מתוך המאמר הרשמי

אלגוריתמים נוספים

✍️ תרגילים: זיהוי אובייקטים

המשיכו את הלמידה במחברת הבאה:

ObjectDetection.ipynb

סיכום

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

🚀 אתגר

קראו את המאמרים והמחברות על YOLO ונסו אותם בעצמכם: