YOLO

**You Only Look Once** (בראשי תיבות: **YOLO**; בתרגום חופשי לעברית: **אתה מסתכל רק פעם אחת**) היא משפחה של אלגוריתמים לזיהוי וסיווג אובייקטים מסוג cnn שנוצרה בשנת 2015 על ידי ג'וזף רדמון ואלי פרהדי מאוניברסיטת וושינגטון.

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

## היסטוריה
במשך השנים היו כמה מודלים שנחשבו ל-"טובים ביותר" ב-2010 היה זה מודל DPMV5 בעל ממוצע דיוק חציוני (באנגלית Mean Average Precision) של 33.7% ומהירות של 0.07 פריימים לשנייה. בשנת 2014 היה זה R-CNN עם ממוצע דיוק חציוני של 66% ומהירות של 0.05 פריימים לשנייה לאחר מכן באו Fast R-CNN ו Faster R-CNN עם ממוצע דיוק חציוני של 70% ו 73.2% ומהירות של 0.5 ו 7 פריימים לשנייה בהתאמה ולבסוף YOLOv1 עם ממוצע דיוק חציוני של 63.4% ומהירות של 45 פריימים לשנייה.

## החלפת המפתחים של המודל
עד לגרסה 3 גוזף רדמון היה החוקר המוביל בפיתוח YOLO אך בשנת 2020 הצהיר בטוויטר שלו כי פרש מתחום הראייה הממוחשבת לאחר שראה כי נעשה שימוש בטכנולוגיה שהוא פיתח לצורכי מלחמה הוא טען שחוקרים צריכים לחשוב על ההשלכות של המחקר שלהם. מגרסה 4 התחלפו החוקרים לאלקסיי בוצ'קוסקי וצ'יאן יאו וואנג ולמעשה לא נשאר אף אחד מהחוקרים מהמחקר המקורי. גרסה 5 שוחררה ב-9 בינואר ממש כמה ימים אחריי YOLOV4 ששוחררה ב-23 באפריל. גם גרסה 5 שוחררה עי מפתח חדש גלן גוצ'ר שלא השתתף באף אחד מהמחקרים הקודמים והרבה מפקפקים בבחירת השם שלה כ-YOLOv5 במיוחד כאשר לא פורסם מחקר יחד עם הקוד.

## הכנת ה-data
עבור כל תמונה ישמרו התוויות בפורמט הבא {c, x, y, h, w} עבור כל עצם בתמונה כאשר C מייצגת את מחלקת הסיווג, w מייצגת את רוחב העצם, h מייצגת את גובה העצם, x מייצגת את נקודת אמצע העצם על ציר ה-x ו-y מייצגת את נקודת האמצע של העצם על ציר ה-y.

## גרסאות
לYOLO נכון ל 2022 יש 7 גרסאות כאשר לכל גרסה מספר וריאציות שונות כאשר חלק מהן מתעדפות מהירות וחלק מתעדפות דיוק.

### YOLOv1
בעל 2 וריאנטים הרגיל ו YOLOv1 Tiny המתעדף מהירות על פניי דיוק.

המודל מורכב מכ24 שכבות כינוס (קונבולוציה) 4 שכבות אגרגציה מסוג max pooling ועושה שימוש בפונקציית אקטיבציה מסוג leaky relu לבסוף מכנסים הכול לשכבה fully connected בגודל של 50176 נוירונים שמצטמצמת לגודל של 4096 נוירונים ואז לגודל של 1470 נוירונים. פונקציית ההפסד היא \lambda_{coord}\sum_{i-0}^{S^2}\sum_{j=0}^{B}1_{i,j}^{obj}[(x_i-\hat{x}_i)^2+(y_i-\hat{y}_i)^2]+
\lambda_{coord}\sum_{i-0}^{S^2}\sum_{j=0}^{B}1_{i,j}^{obj}[(\sqrt{w_i}-\sqrt\hat{w}_i)^2+(\sqrt{h_i}-\sqrt\hat{h}_i)^2]+
\sum_{i=0}^{S^2}\sum_{j=0}^{B}1_{i,j}^{obj}(C_i-\hat{C}_i)^2+
\lambda_{noobj}\sum_{i=0}^{S^2}\sum_{j=0}^{B}1_{i,j}^{noobj}(C_i-\hat{C}_i)^2+
\sum_{i=0}^{S^2}1_{i}^{obj}\sum_{c\in classes}(p_i(c)-\hat{p}_i(c))^2



כאשר s מייצגת את מספר התאים, B מייצגת את מספר הקופסאות בתוך כל תא, C מייצגת את מחלקת סיווג, p מייצגת את כמה המודל בטוח בחיזוי שלו, w מייצגת את הרוחב, h מייצגת את הגובה, x מייצגת את נקודת אמצע הקופסה על ציר ה-x ו-y מייצגת את נקודת האמצע של הקופסה על ציר ה-y.

### YOLO9000) YOLOv2)
בעל 2 וריאנטים הרגיל ו YOLOv2 Tiny המתעדף מהירות על פניי דיוק. המודל מורכב מכ21 שכבות קונבולוציה ומכיל skip connection.

### YOLOv3
בעל 2 וריאנטים הרגיל ו YOLOv3 Tiny המתעדף מהירות על פניי דיוק. המודל עבר שינוי דיי גדול לעומת שתיי הגרסאות הקודמות. המודל מכיל כ-106 שכבות קונבולוציה מתוכן 53 מdarknet המאומנות על imagenet ועוד כ-53 שכבות של המודל עצמו. השכבות מdarknet אחראיות על חילוץ מאפיינים מהתמונה עבור 53 השכבות הנוספות של YOLOv3 עצמו.

### YOLOv4
בעל וריאנט אחד.

### YOLOv5
בעל 5 וריאנטים הרגיל YOLOv5-L, YOLOv5-M, YOLOv5-S ו- YOLOv5-X כאשר s מייצג את המילה small (בעברית: קטן) m מייצג את המילה medium (בעברית: בינוני) l מייצג את המילה large (בעברית: גדול) x מייצג את המילה extra large(בעברית: גדול מאוד) כאשר הקטן ביותר מתמקד במהירות על חשבון דיוק ועולה בהדרגה עולה בדיוק על חשבון המהירות עד ל-x.

## קישורים חיצוניים
* מימוש של YOLOv1 באתר GitHub
* הסבר על YOLO באתר medium

קטגוריה:אלגוריתמים
קטגוריה:בינה מלאכותית
קטגוריה:למידת מכונה