איך לאמן מערך נתונים מותאם אישית עם YOLOv5?

איך לאמן מערך נתונים מותאם אישית עם YOLOv5?

צומת המקור: 1953267

מבוא

ראינו כמה מונחים מפוארים עבור AI ולמידה עמוקה, כמו מודלים שהוכשרו מראש, למידה בהעברה וכו'. הרשו לי לחנך אתכם עם טכנולוגיה בשימוש נרחב ואחת החשובות והיעילות ביותר: העברת למידה עם YOLOv5.

You Only Look Once, או YOLO היא אחת משיטות זיהוי האובייקטים המבוססות על למידה עמוקה הנפוצה ביותר. באמצעות מערך נתונים מותאם אישית, מאמר זה יראה לך כיצד לאמן את אחת הווריאציות האחרונות שלו, YOLOv5.

מטרות למידה 

  1. מאמר זה יתמקד בעיקר באימון מודל YOLOv5 על מימוש מערך נתונים מותאם אישית.
  2. נראה מה הם מודלים שהוכשרו מראש ונראה מהי העברה ללמידה.
  3. נבין מה זה YOLOv5 ומדוע אנו משתמשים בגרסה 5 של YOLO.

אז, בלי לבזבז זמן, בואו נתחיל בתהליך

תוכן עניינים

  1. דגמים מוכשרים מראש
  2. העברת למידה
  3. מה ולמה YOLOv5?
  4. שלבים הכרוכים בלמידה בהעברה
  5. יישום
  6. כמה אתגרים שאתה יכול להתמודד איתם
  7. סיכום

דגמים מאומנים מראש

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

הנה איך TensorFlow האתר מגדיר מודלים שהוכשרו מראש: מודל מאומן מראש הוא רשת שמורה שהוכשרה בעבר על מערך נתונים גדול, בדרך כלל במשימת סיווג תמונות בקנה מידה גדול.

חלקם מותאמים מאוד ויעילים בצורה יוצאת דופן מודלים שהוכשרו מראש זמינים באינטרנט. מודלים שונים משמשים לביצוע משימות שונות. חלק מהדגמים שהוכשרו מראש הם VGG-16, VGG-19, YOLOv5, YOLOv3, ו ResNet 50.

באיזה דגם להשתמש תלוי במשימה שברצונך לבצע. לדוגמה, אם אני רוצה לבצע an איתור אובייקטים משימה, אשתמש במודל YOLOv5.

העברת למידה

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

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

לדוגמה, שימוש ב-YOLOv5 לזיהוי אובייקט, אבל האובייקט הוא משהו אחר מהנתונים הקודמים של האובייקט שבהם השתמשו.

מה ולמה YOLOv5?

YOLOv5 הוא דגם מיומן מראש אשר מסמל את מבטך רק ברגע שגרסה 5 משמשת לזיהוי אובייקטים בזמן אמת והוכח כיעיל ביותר מבחינת דיוק וזמן מסקנות. ישנן גרסאות אחרות של YOLO, אך כפי שניתן היה לחזות, YOLOv5 מתפקד טוב יותר מגרסאות אחרות. YOLOv5 מהיר וקל לשימוש. הוא מבוסס על מסגרת PyTorch, שיש לה קהילה גדולה יותר מ-Yolo v4 Darknet.

יולוב5

כעת נסתכל על הארכיטקטורה של YOLOv5.

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

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

שלבים המעורבים בלמידה בהעברה

למידה של העברה היא תהליך פשוט, ואנחנו יכולים לעשות אותו בכמה שלבים פשוטים:

  1. הכנת נתונים
  2. הפורמט הנכון להערות
  3. שנה כמה שכבות אם תרצה
  4. אמנו מחדש את המודל לכמה איטרציות
  5. אימות/בדיקה

הכנת נתונים

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

הנה איך אתה יכול להוסיף הערות לנתונים עבור דגם YOLOv5 ב-makesense.ai.

1. לְבַקֵר https://www.makesense.ai/. 

2. לחץ על התחל בפינה השמאלית התחתונה של המסך.

יולוב5

3. בחר את התמונות שברצונך לסמן על ידי לחיצה על התיבה המודגשת במרכז.

טען את התמונות שברצונך להוסיף הערות ולחץ על זיהוי אובייקטים.
יולוב5

4. לאחר טעינת התמונות, תתבקש ליצור תוויות עבור המחלקות השונות של מערך הנתונים שלך.

אני מזהה לוחיות רישוי על רכב, אז התווית היחידה שבה אשתמש היא "לוחית רישוי". אתה יכול ליצור תוויות נוספות על ידי לחיצה על Enter על ידי לחיצה על כפתור '+' בצד שמאל של תיבת הדו-שיח.

לאחר שיצרת את כל התוויות, לחץ על התחל פרויקט.

יולוב5

אם פספסת תוויות כלשהן, תוכל לערוך אותן מאוחר יותר על ידי לחיצה על פעולות ולאחר מכן לערוך תוויות.

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

תיבת הגבול

6. לאחר הערת כל התמונות עליך לשמור את הקובץ שיכיל את הקואורדינטות של תיבות תוחמות יחד עם המחלקה.

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

דגם YOLO

7. זהו צעד משמעותי, אז עקוב אחריו בזהירות.

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

כדי לתת לך מושג על התיקיה, יצרתי תיקייה בשם 'CarsData' ובתיקייה הזו יצרתי שתי תיקיות - 'תמונות' ו'תוויות'.

יולוב5

בתוך שתי התיקיות, אתה צריך ליצור שתי תיקיות נוספות בשם 'רכבת' ו'וואל'. בתיקיית התמונות תוכלו לפצל את התמונות לפי רצונכם, אך יש להיזהר בעת פיצול התווית, שכן התוויות צריכות להתאים לתמונות שפיצלת

8. כעת צור קובץ zip של התיקיה והעלה אותו לכונן כדי שנוכל להשתמש בו ב- colab.

יישום

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

אז הנה הקודים שעליך לעקוב אחריהם כדי לאמן את מודל YOLOv5 על מערך נתונים מותאם אישית

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

1. שיבוט !git https://github.com/ultralytics/yolov5
זה ייצור עותק של מאגר YOLOv5 שהוא מאגר GitHub שנוצר על ידי ultralytics.

2. תקליטור yolov5
זוהי פקודת מעטפת שורת פקודה המשמשת לשינוי ספריית העבודה הנוכחית לספריית YOLOv5.

3. !pip install -r requirements.txt
פקודה זו תתקין את כל החבילות והספריות המשמשות באימון המודל.

4. ! unzip '/content/drive/MyDrive/CarsData.zip'
פותח את התיקיה המכילה תמונות ותוויות ב-google colab

כאן מגיע הצעד החשוב ביותר…

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

הנה מה שאתה צריך לעשות.

לאחר ביצוע 4 השלבים למעלה, תהיה לך תיקיית yolov5 ב-google colab שלך. עבור לתיקיית yolov5, ולחץ על התיקיה 'נתונים'. כעת תראה תיקייה בשם 'coco128.yaml'. 

יולוב5

קדימה והורד את התיקיה הזו.

לאחר הורדת התיקיה, עליך לבצע בה מספר שינויים ולהעלות אותה בחזרה לאותה תיקייה ממנה הורדת אותה.

כעת נסתכל על תוכן הקובץ שהורדנו, והוא ייראה בערך כך.

יולוב5

אנחנו הולכים להתאים אישית את הקובץ הזה לפי מערך הנתונים וההערות שלנו.

כבר פתחנו את מערך הנתונים ב-Colab, אז אנחנו הולכים להעתיק את הנתיב של תמונות הרכבת והאימות שלנו. לאחר העתקת הנתיב של תמונות הרכבת, שתהיה בתיקיית הנתונים ויראה בערך '/content/yolov5/CarsData/images/train', הדבק אותו בקובץ coco128.yaml, שזה עתה הורדנו.

עשה את אותו הדבר עם תמונות הבדיקה והאימות.

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

יולו

שמור את הקובץ הזה בכל שם שתרצה. שמרתי את הקובץ בשם customPath.yaml ועכשיו העלתי את הקובץ הזה בחזרה ל-colab באותו מקום שבו היה coco128.yaml. 

כעת סיימנו עם חלק העריכה ומוכנים להכשיר את הדגם.

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

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

5. !python train.py –img 640 –batch 16 –epochs 10 –data /content/yolov5/customPath.yaml –weights yolov5s.pt

זכור את הנתיב שאליו אתה מעלה את התיקיה. אם הנתיב ישתנה, הפקודות לא יפעלו כלל.

לאחר שתפעיל את הפקודה הזו, הדגם שלך אמור להתחיל להתאמן ותראה משהו כזה על המסך שלך.

יולו

יולו

לאחר השלמת כל העידנים, ניתן לבדוק את הדגם שלך על כל תמונה.

אתה יכול לעשות עוד קצת התאמה אישית בקובץ detect.py על מה אתה רוצה לשמור ומה אתה לא אוהב, הזיהויים שבהם מתגלות לוחיות הרישוי וכו'.

6. !python detect.py –weight /content/yolov5/runs/train/exp/weights/best.pt –source path_of_the_image

אתה יכול להשתמש בפקודה זו כדי לבדוק את החיזוי של המודל על חלק מהתמונות.

כמה אתגרים שאתה יכול להתמודד איתם

למרות שהשלבים שהוסבר לעיל נכונים, יש כמה בעיות שאתה יכול להתמודד איתם אם לא תמלא אחריהם בדיוק. 

  1. דרך שגויה: זה יכול להיות כאב ראש או בעיה. אם נכנסת לנתיב הלא נכון איפשהו באימון התמונה, זה יכול להיות לא קל לזהות, ולא תוכל לאמן את המודל.
  2. פורמט שגוי של תוויות: זוהי בעיה נרחבת איתה מתמודדים אנשים בזמן אימון YOLOv5. הדגם מקבל רק פורמט שבו לכל תמונה יש קובץ טקסט משלה ובתוכו הפורמט הרצוי. לעתים קרובות, קובץ בפורמט XLS או קובץ CSV בודד מוזנים לרשת, וכתוצאה מכך שגיאה. אם אתה מוריד את הנתונים מאיפשהו, במקום להוסיף הערות לכל תמונה ותמונה, יכול להיות פורמט קובץ אחר שבו נשמרות התוויות. הנה מאמר להמרת פורמט XLS לפורמט YOLO. (קישור לאחר השלמת המאמר).
  3. אי מתן שמות נכון לקבצים: אי מתן שם נכון לקובץ יוביל שוב לשגיאה. שימו לב לשלבים בזמן מתן שמות לתיקיות והימנע משגיאה זו.

סיכום

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

בול זמן:

עוד מ אנליטיקה וידיה