$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
מערך הנתונים ששימש במאמר זה התקבל משדה AS/RS של מחלקת הלוגיסטיקה של תעשיית הטבק לונגיאן בע"מ. מחקר זה לא כלל משתתפים אנושיים או בעלי חיים. לא נדרשה אישור אתי.
רכישת והגדרת מערכי נתונים
תצורת חומרה: התקנת מצלמה תעשייתית (למשל, MV-CA013-A0GM) המצוידת בעדשת אורך מוקד של 8 מ"מ (למשל, MVL-HF0828M-6MPE) על פלטפורמת המטען של מנוף הערבת. חבר את המצלמה למחשב בקרה דרך כבל GigE והתקן נקודת גישה אלחוטי (למשל, BH-ANT5158S-14V, BH-MS-AC1600HWH). מקמו נורת LED רצועה (למשל, MV-LLDS-1002-38-W) סביב המצלמה כדי להבטיח תאורה אחידה.
הגדרת פרמטר מצלמה: הגדר את המצלמה באמצעות תוכנת היצרן (למשל, MVS). הגדר את רזולוציית הרכישה ל-1280 על 1024 פיקסלים. הגדר את מצב ההדק ל-Hardware Trigger וסנכרן אותו עם מערכת המיקום של מנוף הערבים. הגדר את זמן החשיפה ל-100 מילישניות ואת הגיין ל-5 דציבל כדי למזער טשטוש תנועה ורעש. מרחק העבודה בין המצלמה לקופסאות הסיגריות הוא כ-550 מ"מ.
אוסף תמונות: מצלמה תעשייתית עם טריגר לוכדת תמונה אוטומטית בכל פעם שמגש ממוקם במהלך אחסון והשלפת קופסאות סיגריות. לאסוף בסך הכל 4,835 תמונות גולמיות; תמונות טיפוסיות מוצגות באיור 1.
הערות תמונה: השתמשו בכלי הקוד הפתוח LabelImg. לכל תמונה, צייר קופסאות מוגבלות סביב כל תכונה נראית לעין של מותג סיגריות. הקצה את שם המותג הנכון (למשל, הונגג'ואנג, גוטיאן) כתווית המחלקה לכל תיבת גבול. שמור את ההערות בפורמט זיהוי חד-שלבי סטנדרטי, עם קובץ טקסט אחד לכל תמונה.
בקרת איכות: מעריך שני בודק 20% שנבחרו באקראי מהתמונות המוערות. כל אי-התאמה נדונה ונפתרת, כדי להבטיח עקביות בתווית.
אסטרטגיית הגדלת נתונים
סעיף זה מפרט הן את טכניקות ההרחבה המסורתיות והן המתקדמות המיושמות על מערכי הנתונים. הנתונים הראשוניים והנתונים המורחבים משולבים למערך נתונים חדש, שמחולק לאחר מכן לסט אימון, סט אימות וסט מבחן כדי להבטיח הוגנות בהערכה.
הרחבת נתונים מסורתית32: טרנספורמציות אלו מיושמות בזמן אמת על ידי צינור האימון (למשל, באמצעות ספריות Albumentations או PyTorch Transforms) עם הסתברות מוגדרת לכל אצווה.
טרנספורמציות גאומטריות: סיבוב: סיבוב אקראי של תמונות בזווית שבין -45° ל-+45°. קנה מידה: קנה מידה אקראי של תמונות לפי גורם שבין 0.8 ל-1.2. היפוך אופקי: הפוך תמונות באופן אקראי בהסתברות של 100%. חיתוך אקראי: חתוך אקראי קטע בין 80% ל-100% משטח התמונה המקורי.
טרנספורמציות פוטומטריות: בהירות וניגודיות: כוונן בהירות וניגודיות לפי גורם שנבחר באקראי מתוך [0.6, 1.4]. רעש גאוסיאני: מוסיפים רעש גאוסי עם סטיית תקן שנבחרה באקראי מ-[0, 0.01 * 255] ל-10% מהתמונות. טשטוש גאוסיאני: מרח טשטוש גאוסי עם גודל גרעין של 3x3 עד 10% מהתמונות.
סימולציית סתימה: מניחים באקראי 1 עד 3 טלאי חסימה מלבניים (המכסים עד 5% משטח התמונה כל אחד) על התמונות. הפאצ'ים מלאים ברעש אקראי או ערכי פיקסל ממוצעים בתמונה.
הרחבת נתונים מתקדמת: העתק-הדבק ספציפי לאזור
מוטיבציה והשפעה: המוטיבציה העיקרית להרחבה ממוקדת זו הייתה להתמודד עם בעיית נתונים קריטית: כמה מותגי סיגריות הציגו מעט מאוד מקרים (עד תמונה אחת). חלוקת בדיקת אימות רכבת אקראית סטנדרטית יכולה להקצות את כל המופעים של מותג נדיר לקבוצה אחת (למשל, כולם לקבוצת הבדיקה), מה שגורם לכך שלמודל לא תהיה הזדמנות ללמוד או לאמת את המותג הזה. שיטה זו הגדילה באופן מלאכותי את גודל המדגם עבור מותגים שאינם מיוצגים מספיק, והבטיחה שלכל מותג יהיה מספיק מופעים המפוזרים בין ערכות ההדרכה, האימות והבדיקות. שלב יסודי זה מונע כישלון קטסטרופלי בקטגוריות נדירות ומהווה תנאי מוקדם לכל ביצועי מודל משמעותיים והכללה על כל מערך המותגים.
שלב זה דורש מודל בסיס סגמנטלי מאומן מראש על מערך הנתונים הראשוני ועל מודל Segment Anything (SAM)33.
אובייקטים למקור סגמנט: לתמונות קופסאות סיגריות ממותגים שאינם מיוצגים מספיק, השתמשו במודל SAM ליצירת מסכות סגמנטציה מדויקות. השתמשו במצב הנקודה, לחצו על תכונת המותג בקופסת הסיגריות כדי להתחיל סגמנטציה. אימות ושיפור ידני של מסכות שנוצרו כדי להבטיח דיוק. שמור את תמונות קופסת הסיגריות המחולקות עם רקע שקוף כקבצי PNG. זה יוצר ספרייה של מופעי אובייקטים מבודדים.
יצירת מסכות רקע: השתמש במודל הבסיס הסגמנטלי המאומן מראש לביצוע סגמנטציה של מופעים על קבוצת תמונות רקע (תמונות עם שטח פנוי רב או רקעים פשוטים). המודל יפיק מסכות בינאריות המצביעות על האזורים שכבר מאוכלסים על ידי אובייקטים.
מסכות עיבוד ואובייקטים להדביק: לכל מסכת רקע, השתמשו בספריית OpenCV (פונקציית 'cv2.approxPolyDP' עם מקדם אפסילון של 0.02 * פרימטר קונטור) כדי לבצע התאמת עקומות וליניאריזציה של קצוות המסכה, ולקבל ייצוג פוליגוני פשוט של המרחב הפנוי. זהה את שטח הפוליגונים הרציף הגדול ביותר בתוך מסכת הרקע כאזור המשחה המטרה. בחר באקראי אובייקט מקור מחולק לסגמנט מהספרייה. לשנות את גודלו (לשמור על יחס הגובה-רוחב) וליישם טרנספורמציה אפינית (סיבוב קל בין -5° ל-+5°, וגזירה קלה) כדי להתאים באופן טבעי לאזור המטרה, כדי לוודא שהיא לא חופפת לגבולות האובייקטים הקיימים. השתמש במיזוג אלפא כדי להדביק בצורה חלקה את האובייקט שעבר טרנספורמציה על תמונת הרקע במיקום המחושב. המסגרת הכוללת של טכנולוגיית הגדלת הנתונים המבוססת על טכניקת העתקה-הדבקה באזורים מסוימים מוצגת באיור 2. יוצר באופן תכנותי קובץ הערות txt חדש מתאים עבור האובייקט שהודבק, ומעדכן את קואורדינטות תיבת הגבול ותווית המחלקה (class).
מערך נתונים מוגבר סופי: תהליך לא מקוון זה מייצר 600 תמונות סינתטיות חדשות. שלבו אותן עם 4,835 התמונות המקוריות ועוד 1,167 תמונות שנוצרו על ידי יישום טכניקות ההגדלה המסורתיות כפי שתוארו לעיל, כדי ליצור את מערך הנתונים הסופי של 6,602 תמונות. חלק את מערך הנתונים הסופי לקבוצות אימון (70%, 4,621 תמונות), אימות (20%, 1,320 תמונות) ובדיקות (10%, 661 תמונות), כדי להבטיח שתמונות מאותו רצף מקורי נשמרות באותו חלוקה כדי למנוע דליפת נתונים.
שינוי מודל לבניית הגלאי המשופר המוצע
אלגוריתמים אופטימליים לזיהוי עצמים34 השיגו התקדמות משמעותית בבדיקות תעשייתיות בשנים האחרונות. סעיף זה מספק הליך מפורט שלב אחר שלב לשינוי ארכיטקטורת המודל הבסיסי ליצירת המודל המוצע. השינויים מיושמים על ידי עריכת קובץ הקונפיגורציה של המודל (למשל, config.yaml) והבטחת כלולות הגדרות מודולים מותאמות אישית בקוד הבסיס. ההיגיון לכל שינוי מוצג כדי להבהיר את תפקידו בהתמודדות עם אתגרי זיהוי ספציפיים. מבנה המודל המוצע מוצג באיור 3.
החלפת מודולי דגימה קטנה במודול ADown: מודול Convolution-BatchNorm-SiLU (CBS) הסטנדרטי המשמש לדגימה נמוכה משתמש בקונבולוציה חד-צרידית, שיכולה לשמש צוואר בקבוקמידע 35, ופוטנציאלית לוותרת תכונות עדינות החיוניות לזיהוי קופסאות סיגריות קטנות ולוגואים מפורטים של מותגים. מודול ADown נועד להקל על כך על ידי יישום מבנה דו-ענפי שלומד ושומר מערך עשיר יותר של תכונות במהלך הפחתת רזולוציה מרחבית. ענף אחד שם דגש על שימור פרטים מקומיים בתדר גבוה, בעוד שהשני תופס סקירה רחבה ועשירה בהקשר. המיזוג של תכונות משלימות אלו מוביל לייצוג חזק ומעשיר יותר לשכבות הבאות.
שלבי פעולה ויישום
הגדרת מודול: ודא שמודול PyTorch מותאם אישית בשם ADown מוגדר בתוך קבצי הגדרת המודל של הפרויקט. מודול זה חייב להכיל שני ענפים מקבילים. הענף הראשון צריך להיות מורכב משכבת קונבולוציה דו-ממדית עם גרעין 3x3 וצעד של 2. הענף השני צריך להיות ברצף משכבת מקסימום פולינג 2x2 (עם צעד 2) ואחריה שכבת קונבולוציה 1x1. הפלטים של שני הענפים הללו אמורים להיות מחוברים לאורך ממד הערוץ, ומפת התכונות המתקבלת עוברת דרך שכבת קונבולוציה סופית 1x1 כדי לשלב את הערוצים ולהפיק את הפלט. מבנה מודול ADown מוצג באיור 4.
עריכת קובץ קונפיגורציה: פתח את קובץ הקונפיגורציה של המודל הבסיסי (config.yaml). זיהוי שיטתי של כל מופע במודול CBS שמוגדר לדגימה קטנה (כלומר, כאשר פרמטר הצעד מוגדר ל-2). החלף כל אחד מהמודולים הללו במודול ADown החדש.
מוטיבציה עיצובית: עיצוב ADown מונע מהצורך לצמצם אובדן מידע בקונבולוציות סטרייד סטנדרטיות, מה שעלול להזיק לאובייקטים קטנים. המבנה הדו-ענפי שלו מושפע מרעיון העיבוד המקבילי ללכידת פרטים מרחביים בתדר גבוה (באמצעות קונבולוציה) ומידע הקשר בתדר נמוך (באמצעות איגוף), ובכך מספק ייצוג תכונות עשיר ורב-קנה מידה לשכבות הבאות.
אינטגרציה של מודול iEMA
היגיון ועקרון עיצוב: כדי לשפר את יכולת המודל לזהות מטרות קטנות ואלו שמוסתרות חלקית, חיוני לשלב מנגנון שיכול למודל ביעילות הקשר מרחבי רב-קנה מידה. מודול iEMA משיג זאת על ידי הטמעת רכיב Efficient Multi-scale Attention (EMA)36 בתוך מבנה בלוק שאריתי הפוך (iRMB)37 . ה-iRMB מספק בסיס חישובי יעיל באמצעות קונבולוציות מופרדות בעומק, בעוד רכיב ה-EMA לוכד במפורש אינטראקציות מרחביות בסולם רחב באמצעות עיצוב מקביל רב-ענפי. אינטגרציה זו מאפשרת למודל לכייל מחדש דינמית את משקלי התכונות, תוך התמקדות באזורים המרחביים המבחינים ביותר בקני מידה שונים, ובכך לשפר את הזיהוי תחת חסימה ועבור עצמים קטנים.
שלבי פעולה-יישום
הגדרת מודול: ודא שמוגדר מודול PyTorch מותאם אישית בשם iEMA. מודול זה אמור תחילה ליישם בלוק שאריתי הפוך. בלוק זה בדרך כלל מתחיל בקונבולוציה נקודתית להרחבת ערוץ, אחריה קונבולוציה עומקית (למשל, 3x3) להפקת תכונות מרחביות, ולבסוף קונבולוציה נקודתית להקרנת ערוץ. מיד לאחר חסימה זו, יש ליישם את מנגנון תשומת הלב של EMA. מנגנון ה-EMA בדרך כלל עושה שימוש בקונבולוציות מקובצות ואינטראקציות בין-ממדיות כדי ליצור ביעילות מפת תשומת לב מרחבית רב-קנית ללא עומס חישובי מופרז. מבנה מודול iEMA מוצג באיור 5.
עריכת קובץ קונפיגורציה: בקובץ config.yaml, אתר את החלקים שמגדירים את רשת הצוואר, במיוחד השכבות שמגיעות מיד אחרי מודולי C2f. במיקומים אסטרטגיים אלו, הכנס שכבה חדשה שקוראת למודול iEMA.
מוטיבציה עיצובית: מודול iEMA מבוסס על עקרון שיפור יכולת ההבחנה בין תכונות על ידי שילוב חילוץ תכונות מקומי (באמצעות קונבולוציה עומקית) עם מנגנון מידול הקשר גלובלי קל אך יעיל (EMA). גישה היברידית זו מאפשרת למודל להתמקד באופן אדפטיבי באזורים אינפורמטיביים בקני מידה שונים, דבר קריטי לזיהוי לוגואים וטקסטים של מותגים גלויים חלקית.
החלפת ראש הגילוי במודול DynamicHead
היגיון ועקרון עיצוב: ראש הגילוי המקורי עשוי שלא להתמודד בצורה מיטבית עם השונות המשמעותית בקנה המידה של קופסאות הסיגריות והאינטראקציה המורכבת בין משימות לוקליזציה וסיווג. מודול DynamicHead מטפל בכך על ידי איחוד שלוש צורות של תשומת לב למבנה קוהרנטי: מודע לסקאלה, מודע למרחב, ומודע למשימה. הרכיב המודע לקנה מידה ממזג באופן דינמי תכונות מרמות שונות של פירמידת התכונות, ומבטיח שאובייקטים בכל הגדלים מיוצגים ביעילות. הרכיב המודע למרחב משתמש באסטרטגיית דגימה דלילה כדי למקד משאבים חישוביים באזורים המידעיים ביותר במפות התכונות. הרכיב המודע למשימות מתאים את ייצוג התכונות במיוחד למטרות הייחודיות של רגרסיית תיבת הגבולות וסיווג קטגוריות. גישה מאוחדת זו מובילה לתחזיות מדויקות וחזקות יותר.
שלבי פעולה-יישום
הגדרת מודול: זהו מודול מורכב הכולל את שלושת מנגנוני הקשב המתוארים במשוואות (1) עד (4). המבנה הפנימי שלו יכלול שכבות לחישוב משקלים לפי קנה מידה, ביצוע תשומת לב מרחבית מעוותת ויישום טרנספורמציות תכונות ספציפיות למשימה.
(1)
(2)
(3)
(4)
כאשר WL(F) מציין את מיפוי התכונות הסופי המעודכן על ידי תשומת הלב, המתקבלת על ידי יישום סדרי של מנגנוני קשב πL(F), π S(F) מודעת למרחב, ו-C(F) π-מודע למשימה על תכונת הקלט F. בפרט, במשוואה (2), π L(F) מחשב משקל תשומת לב לפי סקאלה על ידי ממוצע ראשוני בין ממדים מרחביים (S) וערוץ (C), מעביר אותו דרך פונקציה ליניארית f(⋅) והפעלה קשה-סיגמואיד σ(⋅). במשוואה (3), π S(F) מבצעת תשומת לב מרחבית דלילה על ידי צבירת תכונות מנקודות מפתח מדוגמות pk, כל אחת עם הסטה ללמידה Δpk להתמקדות באזורים מבחינים וסקלר חשיבותΔmk. במשוואה (4), πC(F) מיישם תשומת לב מודעת למשימה על ידי יישום טרנספורמציה ליניארית (הנשלטת על ידי פרמטרים שנלמדו (α1, β1,α 2,β 2)) על כל ערוץ ובחירת התגובה המרבית, מה שמאפשר לראש להתמחות במשימות סיווג ורגרסיה. מבנה מודול DynamicHead מוצג באיור 6.
עריכת קובץ קונפיגורציה: בקובץ config.yaml, מצא את החלק שמגדיר את ראש המודל, שמכיל במקור את מודול ה-Detect (Detect Module). החליפו אותו בכניסה חדשה שקוראת למודול DynamicHead.
מוטיבציה עיצובית: מודול DynamicHead מבוסס על התצפית שראשי זיהוי עצמים צריכים להיות אדפטיביים לקנה מידה, מיקום מרחבי ומשימה. מסגרת תשומת הלב המאוחדת שלה, שפורמלית ב-Eqs. (1-4), מאפשר למודל לכייל מחדש דינמית את תגובות התכונות בהתבסס על שלושת הממדים הללו, מה שמוביל לחיזויים עמידים יותר מול שונות בקנה מידה ועבוש רקע.
אימון מודלים
ודא ש-PyTorch 2.1.0, CUDA 12.1 וכל התלויות מותקנים.
פיקוד אימונים
לפני אימון מחדש, יש להכין את נתוני התמונה המחולקת ואת נתוני ההערות בפורמט זיהוי חד-שלבי סטנדרטי. צור קובץ .yaml המכיל את נתיב התמונה וקטגוריית הנתונים. לפי שיפור המודל, קובץ ה-.yaml המקורי של הגלאי מוחלף בקובץ .yaml המוצע של המודל. כתוב את קובץ train.py, ייבא את חבילת הגלאי החד-שלבית, טעין את מודל האימון ונתיב הנתונים, והגדר כמה פרמטרי אימון, כולל imgze=640, epochs=100, אצ'ה=4, workers=0, device='0', אופטימיזr='SGD', close_mosaic=10, וכו'.
היפרפרמטרים: הפרמטרים המרכזיים הם: גודל תמונה קלט (640 x 640), גודל אצווה (4), קצב למידה התחלתי (0.01) עם מתזמן אנילינג קוסינוס, אופטימיזר SGD עם תנע (0.937), ודעיכת משקל (0.0005). הגברת פסיפס מופעלת כברירת מחדל.
ניטור ההכשרה: תהליך ההכשרה יפיק מדדים לכל תקופה. עקוב אחרי העקומות לאובדן אימון/אימות ו-mAP ב-0.5 כדי להבטיח התכנסות ולמנוע התאמת יתר. אימון ל-100 אפוקים בדרך כלל מספיק.
הערכת ופריסת מודלים
הערכה: אחרי האימון, המודל הטוב ביותר נשמר כריצות/אימון/ניסיון ניסיון/משקולות/הטוב ביותר.נקודה. העריך את זה על ערכת הערך באמצעות: bash python val.py --data cigarette_dataset.yaml --weights runs/train/exp/weights/best.pt. הסקריפט יפיק דיוק, Recall, mAP ב-0.5 וכו'. וודא שה-mAP עומד בסף הנדרש (למשל, 97.9%).
הסקה לאימות: הרץ הסקה על תמונות דגימות כדי לאמת ויזואלית תוצאות גילוי: bash python detect.py --weights runs/train/exp/weights/best.pt --source path/to/test/images --conf 0.5. על ידי אימות ההיגיון, ניתן להשיג את תוצאות הגילוי של כל תמונה ואת מהירות הגילוי של המודל.
פריסה: לפריסה בזמן אמת במערכת מנוף הערם, המרו את מודל PyTorch (best.pt, ~4.7 MB) לפורמט כמו TensorRT או ONNX למהירות הסקה אופטימלית. התוצאה הסופית היא תיבות הגבלה עם תוויות מחלקות (שמות מותגים) וציוני ביטחון.