אז מה הוא מודל הראיה המומחשת החזק בעולם?!

מענה לביקורת לפוסט על EFFICIENTNET V2
ואולי יותר מעניין: איך יודעים איזה מודל יעבוד א-צ-ל-כ-ם הכי טוב?!ואיך בכלל בודקים את כל זה?!
-
נטען כי EfficietNetV2 אינה הרשת החזקה בעולם. נתחיל מלסקור את כל המתמודדים על הכתר: נסכם את כל המודלים הכי חזקים בעולם היום לראיה ממוחשבת, מה החידושים בהם ואיפה התחום נמצא היום.
-
נטען שהרשת נבדקה רק על ImageNet ולכן אי אפשר לסמוך על התוצאות המדווחות במאמר. אני מסכים ואכליל גישה זו: אי אפשר לסמוך כמעט על אף תוצאות באף מאמר במקום זאת פשוט נבדוק בעצמנו: נבדוק מה יצא הכי טוב בברוטפורס כל המודלים שהריצו בקאגל.
-
אם אי אפשר להסתמך על תוצאות? איך אפשר לדעת? אפשר לנחש מראש? איך אפשר לנחש איזה מודל יצא טוב בלי לבדוק אותו ולבזבז זמן? מודלים גדולים: טובים יותר? – נסקור מאפיינים ומדדים שונים ומשונים של מודלים (פרמטרים, זמן חישוב, כמות אקטיבציות..) ואת הקורלציה שלהם לכוח המודל.
קודם כל יכול להיות, אני לא מתיימר לדעת מה יהיו תוצאות המודלים על בעיות שמעולם לא ראיתי ואני מניח שמי שעבד על אותה הבעיה מכיר את הבעיה הרבה יותר טוב ממני.
-
טעות נפוצה בשימוש בEfficietNet – לא להשתמש בPreprocessing הנכון: לEfficientNet יש Preprocessing איתו היא אומנה. ואומנו כמה גרסאות שונות בכמה תשתיות קוד שונות (TF, TF-Keras, TPU, בגרסה הראשונה אם אני זוכר נכון אימנו גם בטורצ' גרסה מאפס) ויש הבדלים קטנים ומבלבלים בין הגרסאות. אם EfficientNetV2 קיבלה משמעותית תוצאות גרועות יותר מרשתות אחרות: כדאי לבדוק.
-
עוד טעות נפוצה: אימון הרשת עם משקולות קפואות: כשאמרתי שEfficientNet הרשת החזקה בעולם התכוונתי לארכיטקטורה. אם הוספתם שכבות משלכם, שחררו גם את המשקולות של הBackbone המאומן שלכם (בדרך כלל לא ממליץ: סעיף הבא).
-
הוספת שכבות מיותרות בסוף הרשת: ראיתי הרבה מקרים בהם הוסיפו שכבות אחרי הרשת ואימנו End2End. הבעיה היא שלא אימנו בייסלין בלי אותן שכבות: הטענה ש"חייבים להוסיף שכבות" היא טעות נפוצה בתחום. במקרים רבים (מאד!) הסט-אפ הבא יגיע לתוצאות הטובות ביותר בFine-tuning: רק הרשת המקורית + GlobalAvgPooling ושכבה לינארית לגודל אותו אתם צריכים. (זה עובד מצוין גם במודלים אחרים לגמרי – למשל מודלי שפה).
-
לא נעשה שימוש ברשת מספיק גדולה: אמנם EfficientNet רשת חזקה מאד אבל גם היא בסוף מוגבלת למציאות – בבדיקה שלכם, בדקו את הרשת הגדולה ביותר שנכנסת לכם בGPU מבחינת מקום.
-
עניין חשוב שיכול להשפיע על התוצאות דרמטית ולא לוקחים אותו בחשבון: גודל הבאצ' משפיע ב-ט-י-ר-ו-ף על הביצועים של המודל הסופי. (וגם הבאצ' האופטימלי משתנה מאד בין מודלים ובין גדלי מודלים. חשוב לבדוק ולאפטם).
סקירת כל המודלים "הכי חזקים בעולם"
-
נרמול הקלט לפני הכניסה לרשת ושימוש באטנשן קוסינוס המשפר את היציבות באימון.
-
הכנסת position bias בlogpspace שעוזר למודלים להכליל לרזולוציות גבוהות יותר.
-
שיטת self supervision חדשה: SimMIM.
מומלץ! אחד המודלים החזקים בעולם עד היום!
מומלץ לקרוא: המודל חזק מאד ונצפה בקאגל מספר פעמים במקומות גבוהים בתחרויות.
למה רק מה שיש בקאגל?
שימו לב לטרנד מעניין: כל המודלים הכי חזקים כרגע נראה כי אומנו מולטי-מודאלית: גם על טקסט וגם על תמונות (והתוצאות על תמונות בלבד לאחר מכאן בFine Tuning השתפרו).
אינטואיטיבית הדבר הגיוני: הטקסט מכיל מידע נוסף מעניין על התמונה שאינו נמצא בתיוגים פשוטים.
קונספט מעניין מאד לדעתי ויפה לראות כמה הרעיון הזה חזק וחוזר על עצמו שוב ושוב במודלים שונים!
איך בודקים מודלים?
אבל בדרך כלל מה שעבד טוב על סיווג תמונות (למשל) בקאגל, בסבירות גבוהה גם יעבוד טוב גם אצלכם.
סקירת ברוט-פורס כל הBACKBONES הקיימים לראיה ממוחשבת
-
עד כמה הם דומים לדאטהסט של המודל שאומן מראש
-
כמה הם גדולים.
-
אוקספורד: IIT-Pet Dataset , דומה מאוד ל-Imagenet. באימג'נט יש תמונות רבות של בעלי חיים, ובכל תמונה בעל החיים הוא האובייקט המרכזי. בIIT-Pet יש כמעט 15,000 תמונות גם הן מסוג דומה.
-
דאטהסט שני: Kaggle Planet מכיל 1000 תמונות לוויין של כדור הארץ. אין כאלה תמונות באימג'נט.
-
הlearning-rate
-
סוג הPooling: שרשור או ממוצע