למה סיווג תמונות נשבר על נתונים אמיתיים
לרוב הבקשה נשמעת כך: «המודל על מדגם מופרד מציג דיוק כמעט מושלם, אבל בעבודה טועה במחצית מהאובייקטים». נפרק היכן בדיוק נשבר סיווג תמונות ולמה החלפה לארכיטקטורה כבדה יותר לא מתקנת דבר.
המקור הראשון לכשלים — תיוג מערך הנתונים בתנאי מעבדה. הצילומים נעשו באותו חדר, באותה תאורה ובאותה זווית, והתוויות הוצבו לפי תיקיות המקור, בלי כלל אחיד למקרים שנויים במחלוקת.
כתוצאה מכך המודל לומד את הרקע ואת ארטיפקטי הצילום, ולא את מאפיין האובייקט: מספיק להחליף שולחן או מנורה, והדיוק צונח.
השני — חוסר איזון בין מחלקות. כאשר קטגוריה נדירה תופסת שברירי אחוז, הדיוק הכללי נשאר גבוה רק מפני שהמודל מנבא בביטחה את המחלקה הנפוצה. צריך להסתכל על recall ו-precision לפי כל מחלקה ועל מטריצת שגיאות, אחרת סוג הכשל המרכזי לא נראה באף מספר מסכם.
השלישי — שינוי בתנאי הצילום: מצלמה אחרת, תאורה, עונה, מיקום האובייקט בפריים. התפלגות נתוני הקלט מתרחקת מזו של האימון, והמודל רואה לא את מה שלמד עליו — אפילו ResNet או ViT שאומנו בקפידה לא מצילים כאן.
נסביר איך זה נסגר: קודם מקבעים כללי תיוג ומתייגים מחדש קבוצות שנויות במחלוקת, אחר כך מאזנים מחלקות ברמת בחירת הדוגמאות, ולא רק המשקלות, ורק לאחר מכן מאמנים את הרשת.
מה נותן מודל סיווג תמונות מאומן
מודל סיווג תמונות מאומן הופך זרם צילומים להחלטה עם מספר. דיוק המודל נקבע לפני ההרצה על מדגם בקרה — סט פריימים שתויגו ידנית ולא השתתפו באימון. דווקא הוא, ולא התוצאה על סט האימון, הופך לפרמטר הקבלה.
בזרימה המודל מחזיר תווית ורמת ביטחון, וסף הביטחון קובע איזה חלק מההחלטות עובר לאוטומציה. כל מה שמתחת לסף נכנס למיון ידני: הבדיקה הופכת מדגמית במקום רציפה, והמפעיל מטפל רק בפריימים שנויים במחלוקת. שיעור השגיאות במדגם הבקרה ידוע מראש, לכן אפשר לתכנן את העומס למשמרת ולא לנחש בדיעבד.
נעלמת גם שגיאת מפעיל שיטתית: עייפות לקראת סוף המשמרת ופרשנות שונה למקרים שנויים במחלוקת כבר לא משפיעות על התיוג. המודל עונה באותה צורה בפריים הראשון ובפריים האחרון של הזרימה, ההשהיה — שברירי שנייה לתמונה, כך שצוואר הבקבוק הופך לערוץ התעבורה, לא לזיהוי.
מה נעשה מדיד לאחר ההרצה:
- חלק הפריימים שעוברים לאוטומציה בלי מעורבות אדם;
- צמצום הבדיקה הידנית באותו נפח זרימה;
- שיעור השגיאות במדגם הבקרה עם פילוח לפי מחלקות;
- זמן תגובה לפריים בעיבוד זרימה.
את הארכיטקטורה בוחרים לפי אופי הנתונים, לא כברירת מחדל: ResNet ומשפחות קרובות מחזיקות אחרת אובייקטים קטנים, רעש וטשטוש — את הבחירה מאשרים בהשוואה על מדגם בקרה, ולא לפי המלצה כללית.
גישות לאימון: רשת משל עצמך, כיוונון עדין או שירות מוכן
שלושת האפשרויות נבדלות לא ב«איכות», אלא בנפח התיוג שלכם ובמידת הקרבה של מחלקות היעד למה שמודלים פתוחים כבר יודעים. אימון מאפס הגיוני כאשר נאספו עשרות אלפי דוגמאות מתויגות, והמחלקות ספציפיות: פגמים בצילומים, טקסטורות נדירות, תמונות רפואיות. אם אין תיוג כזה, ניסיון לגדל רשת מאפס מוביל ל-overfitting ודיוק נמוך מזה של ארכיטקטורה מוכנה.
כיוונון עדין של מודל על ארכיטקטורה מאומנת מראש סוגר את רוב המשימות: משפחות קונבולוציוניות יציבות על סטים קטנים, משפחות טרנספורמריות מנצחות כאשר יש הרבה מחלקות ופרטים קטנים חשובים. שירות זיהוי מוכן נלקח לקטגוריות טיפוסיות — במקום שבו אין צורך בשליטה על התיוג והכיוונון העדין.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| אימון מאפס | תיוג עצמי מעשרות אלפי דוגמאות, מחלקות לא דומות לסטים ציבוריים | מחזור ארוך, נדרש מלאי נתונים ומשאבי חישוב, סיכון גבוה ל-overfitting |
| כיוונון עדין של ארכיטקטורה מאומנת מראש | ממאות דוגמאות מתויגות, מחלקות קרובות לתמונות טבעיות | איכות התיוג קריטית, הדיוק יורד בשינוי מצלמות או תאורה |
| שירות זיהוי מוכן | קטגוריות טיפוסיות, נדרש התחלה מהירה בלי תשתית משלך | סט מחלקות סגור, אין גישה למודל, תלות בספק |
אנחנו בדרך כלל מתחילים מכיוונון עדין ומודדים דיוק על מדגם מופרד: אם הוא לא מספיק, מוסיפים תיוג ממוקד, ולא מחליפים גישה לחלוטין.
איך אנחנו מאמנים ומטמיעים מודל: שלבי העבודה
סדר השלבים כפוף למגבלה אחת: מדד האיכות ואופן חישובו נקבעים לפני הרצת האימון הראשונה. אם מגדירים אותם אחר כך, כל שיפור הופך להתאמה לסט מסוים — על נתוני זרימה הדיוק צונח, וכבר אי אפשר להסביר את הסיבה.
- ביקורת נתונים. בודקים מה באמת יש: נפח לפי מחלקות, איכות התיוג, כפילויות, קבצים פגומים, חוסר איזון ודליפות בין חלקי האימון והבדיקה.
- מדד איכות. לוקחים לא «דיוק בכלל», אלא גודל לפי מחיר הטעות: שיעור החמצות של מחלקה קריטית, macro-F1 כשיש הטיה בין מחלקות, סף הפעלה.
- קו בסיס. מודל פשוט או משקלות מאומנות מראש בלי כיוונון עדין — כדי לדעת את הרף שממנו נמדד השיפור, ולא לבלבל אותו עם אפקט העיבוד המקדים.
- אימון. בוחרים ארכיטקטורה לפי המשימה — קונבולוציונית (ResNet, EfficientNet) או טרנספורמרית (ViT) — ואת המצב: קודם שכבות עליונות, אחר כך הפשרה חלקית, נרמול קלטים, איזון מחלקות, עצירה מוקדמת לפי ול�ידציה.
- מדגם מופרד. את הבדיקה הסופית עורכים על נתונים שלא השתתפו לא באימון ולא בכיוונון פרמטרים, ובמידת האפשר — על צילום מתקופה אחרת.
- ניתוח שגיאות. מפרקים את מטריצת השגיאות ואת הפספוסים הבטוחים ביותר: חלק נסגר בתיוג משלים ובסף, חלק בשינוי הגדרת המשימה.
- הטמעת המודל. שירות חיזויים, ניהול גרסאות למשקלות, סף ביטחון וסירוב לענות במקום תווית אקראית, תיעוד יומנים, בקרת הטיית נתוני קלט ונוהל כיוונון עדין.
ארטיפקטים של אימון: משקלות המודל, תיוג, נוהל אימון מחדש
אחרי הפרויקט נשאר אצל הלקוח לא «מודל מאומן כקופסה שחורה», אלא ערכה שאפשר לבדוק, לכוונן מחדש ולהעביר לצוות אחר. להלן מה בדיוק מקובע ובאיזו צורה.
- משקלות המודל — פרמטרים מאומנים עם רשימת מחלקות מקובעת וסף ביטחון שמתחתיו המודל מסרב לענות ביושר במקום לנחש.
- קוד אימון והרצה — סקריפטים קריאים להכנת נתונים, אימון וחיזוי, בלי תלויות חיצוניות נסתרות ובלי תיקונים ידניים «במקום».
- סט תמונות מתויג — חלקי אימון, ול�ידציה ובדיקה בלי חפיפה ביניהם, כדי שהמדדים לא ינופחו בגלל דליפת פריימים.
- כללי תיוג — איך מפרשים פריימים שנויים במחלוקת, חפיפות ומחלקות לא חד-משמעיות, איזה אובייקט נחשב קטן מדי לתיוג ומה עושים עם פריימים בלי אובייקט.
- דוח איכות — מטריצת שגיאות לפי מחלקות: רואים איפה המודל מבלבל קטגוריות שכנות ואיזה נתונים חסרים להן.
- נוהל אימון מחדש — טריגרים (ירידה בשיעור התשובות הנכונות בזרימה, הטיית נתונים, הופעת מחלקה חדשה), תדירות הרצות ואחראים בצד הלקוח.
- הרצה משוחזרת — סביבה מקובעת, seed אקראיות וגרסאות ספריות: האימון חוזר בפקודה אחת ונותן תוצאה דומה, ולא «בערך אותה».
- תיעוד והעברה — מפת קבצים ומאגרים, סדר פעולות בתקלה, סקירת הפתרון עם מהנדסי הלקוח.
ערכה כזו מאפשרת לפתח את המודל בכוחות עצמך או להחליף ספק בלי לאבד את העבודה שנעשתה.
מקרה בוחן: בקרת איכות מוצרים בקו ייצור
בקו הייצור בקרת האיכות נשענה על בדיקה מדגמית: המפעיל הוציא מהמסוע כל חלק עשירי והעריך אותו בעיניים. פגם בין הבדיקות המשיך בזרימה וצף בהרכבה — את המנה היה צריך למיין מחדש כולה, וסיבת התקלה עד אז הלכה לאיבוד בסטטיסטיקה. נפרק מקרה תעשייתי: איך בקרת איכות הועברה לסיווג תמונות ישירות בזרימה.
את התיוג בנו לא מצילומי סטודיו, אלא מפריימים מהקו — עם השתקפויות על מתכת, רעידות של המסוע ותאורה שונה בין משמרות. בנפרד תויגו מקרי גבול: שריטות בעומק שברירי מילימטר וסימני עיבוד מותרים שאינם פגם — בלעדיהם המסווג היה מגיב על תקין.
את המודל אימנו על משפחת EfficientNet, המחלקות אוזנו לפי תדירות, וסף ההחלטה נבחר לפי עקומת «החמצה — אזעקת שווא», ולא לפי דיוק בלבד.
לאחר ההרצה ההחמצה של פגמים הצטמצמה בערך פי שישה, ועצירות שווא של הקו ירדו לשתיים-שלוש למשמרת במקום חמש-עשרה עד עשרים. כל מוצר עובר בדיקה, לא מדגם — שיעור המוצרים הנבדקים עלה מ-10% ל-100%.
למשמרת הועבר לא רק המודל: ממשק עם פסק דין והדגשה של האזור הבעייתי, סף רגישות מתכוונן ויומן הפעלות לניתוח פריימים שנויים במחלוקת. נוהל העדכון מתאר מה לעשות בשינוי מנת חומר גלם או בתיקון תאורה: המפעיל מסמן פריימים שנויים במחלוקת, ופעם בכמה שבועות מכווננים את המסווג עליהם. כך הפחתת הפגמים מחזיקה מעמד, ולא מתגלגלת לאחור אחרי חודש.
במה שונה כיוונון עדין מאימון מודל מאפס?
כיוונון עדין הוא העברת ידע: לוקחים רשת שכבר אומנה על קורפוס גדול של תמונות ומתאימים אותה למחלקות שלך. אימון מאפס מתחיל ממשקלות אקראיות, והרשת צריכה ללמוד הכול בבת אחת: גם מאפיינים בסיסיים כמו קווים, טקסטורות וגרדיאנטים, וגם את הייחוד של המשימה שלך.
כאשר יש מעט נתונים — מאות או אלפי פריימים ראשונים לכל מחלקה — כיוונון עדין כמעט תמיד מנצח. שכבות מוקדמות מקבעים ולא נוגעים בהן, מאמנים רק את העליונות ואת שכבת הסיווג: המודל מתכנס בעשרות אפוקים, והסיכון ל-overfitting על מדגם קטן נשאר בשליטה. התנאי אחד — המחלקות צריכות להיות דומות למה שהרשת כבר ראתה: טכניקה, מוצרים, מסמכים, עצמים טבעיים.
רשת משלך נדרשת כאשר תחום היישום רחוק מתמונות רגילות: צילומי תרמוגרפיה, פגמים על מתכת, צילום ייעודי צר. העברת ידע כאן גוררת את ההטיה של הקורפוס המקורי, והדיוק נתקע בתקרה.
התנאי השני — מספיק נתונים כדי שהמודל לא ישנן את המדגם: בדרך כלל עשרות אלפי פריימים מתויגים ועוד חוסר איזון בולט בין מחלקות שצריך לאזן בנפרד.
קריטריון מעשי — נפח ואחידות הנתונים, דרישות הדיוק ועלות התיוג. במערך קטן מתחילים מכיוונון עדין, ורק אחר כך מפשירים שכבות בהדרגה אם המדדים מפסיקים לעלות.
אימון מאפס בלי קורפוס מספק נותן תוצאה גרועה מהעברת ידע מכווננת היטב, לכן את שתי האפשרויות משווים על מדגם מופרד ובוחרים זו שמחזיקה יציב יותר על נתוני הבקרה.
מפרקים ספקות טכניים: איכות, נתונים, תמיכה
לפני ההתחלה צוות הלקוח שואל אותן שאלות הנדסיות: האם יש מספיק נתונים מתויגים, מה עושים עם מחלקות נדירות, איך בודקים יציבות ומי מכוונן את המודל לאחר ההעברה. להלן תשובות קצרות איך זה נפתר בפועל.
האם הנתונים שלנו יספיקו לאימון?
מתחילים ממאות דוגמאות לכל מחלקה: לוקחים משקלות מאומנות מראש ומכווננים את המודל על הסט שלכם. ול�ידציה נאספת בחלוקה סטרטיפיקטיבית, ואת המחסור בנתונים מכסים באוגמנטציות — ועוקבים אחרי איפה מתחיל overfitting.
מה עושים כשיש חוסר איזון בין מחלקות?
משלבים משקלות מחלקות בפונקציית ההפסד, דגימה מחדש של דוגמאות נדירות ובחירת סף החלטה. איכות מחשבים לפי precision ו-recall, ובנוסף מטריצת שגיאות לכל מחלקה — אחרת פגם נדיר נמס בתוך הדיוק הכללי.
איך בודקים יציבות של המודל?
מחזיקים סט נפרד של צילומים שנעשו בתנאים אחרים: תאורה אחרת, זווית, ציוד. הפער בין מדגם האימון למדגם הבדיקה מראה overfitting לפני שהמודל יוצא לעבודה, ומצביע על מחלקות בעייתיות.
מי מכוונן את המודל אחרי ההעברה?
מעבירים משקלות, קונפיגורציית אימון, מניפסט של מערך הנתונים וסקריפט הרצה — כיוונון עדין על נתונים חדשים הצוות מבצע בכוחות עצמו. מלווים את ההרצות הראשונות כדי שהוספת מחלקה לא תשבור את האחרות.
ספרו לנו על המשימה — נחזור עם תוכנית והערכה
כדי שהערכת הפרויקט תישען על עובדות ולא על ניחושים, אנחנו צריכים מינימום של נתוני פתיחה — בדרך כלל מספיקים שיחה אחת וכמה קבצים. אותם נתונים ישמשו בסיס לאפיון הטכני, לכן נאסוף אותם פעם אחת ובלי שאלות חוזרות.
- תיאור התהליך: מאיפה מגיעה התמונה, מי ואיך מקבל החלטה לפי תוצאת המודל.
- דוגמאות צילום: כמה מאות פריימים מתנאים אמיתיים, כולל מורכבים — מטושטשים, חשופים מדי, עם אובייקט חסום חלקית.
- תיוג נוכחי: מחלקות, נפח הסט, מי תייג ולפי איזה כלל, מה עושים במקרים שנויים במחלוקת.
- דרישות איכות: איזה שיעור שגיאות מותר ומה יקר יותר — להחמיץ אובייקט או לסמן אחד מיותר.
- סביבת יעד: שרת, מצלמה באתר או מכשיר נייד, מגבלות זיכרון וזמן תגובה.
- גישות ונתונים: אפשר לעבד את הצילומים בתשתיות שלנו או שצריך להחזיק אותם בתוך המתאר שלכם.
- מה כבר נעשה: קוד נוכחי, מודלים שאומנו קודם והמדדים שלהם — כדי לא להתחיל מאפס.
תארו את המשימה — נחזור עם תוכנית עבודה והערכה: שלבים, מה בודקים בכל שלב, איזו תוצאה נחשבת לקבלה. אם חלק מהנתונים עוד לא נאסף, נדון במשימה ונציע מה קריטי ומה אפשר לחדד בהמשך.







