תוכן העניינים[להתחבא][הופעה]
זה מרגיע לדעת שהצלחנו להחדיר לרובוטים את היכולות המולדות שלנו ללמוד באמצעות דוגמה ולתפוס את סביבתם. האתגר הבסיסי הוא אלה שמלמדים מחשבים "לראות" כאילו בני אדם יצטרכו הרבה יותר זמן ומאמץ.
עם זאת, כאשר בוחנים את הערך המעשי שמיומנות זו מספקת כיום לארגונים ולארגונים, המאמץ משתלם. במאמר זה תלמדו על סיווג תמונות, איך זה עובד והטמעתו המעשית. בואו נתחיל.
מהו סיווג תמונה?
העבודה של הזנת תמונה לתוך א רשת עצבית והפקת צורה כלשהי של תווית לתמונה זו ידועה בשם זיהוי תמונה. תווית הפלט של הרשת תתאים למחלקה מוגדרת מראש.
ייתכן שיהיו מספר כיתות לתמונה, או פשוט אחת. כאשר יש רק מחלקה אחת, נעשה שימוש תכוף במונח "הכרה", ואילו כאשר יש מספר מחלקות, נעשה שימוש תכוף במונח "סיווג".
איתור אובייקטים היא תת-קבוצה של סיווג תמונות שבה מופעים מסוימים של אובייקטים מזוהים כשייכים למחלקה נתונה כגון חיות, כלי רכב או בני אדם.
איך עובד סיווג תמונה?
תמונה בצורת פיקסלים מנותחת על ידי מחשב. הוא משיג זאת על ידי התייחסות לתמונה כאוסף של מטריצות, שגודלן נקבע על פי רזולוציית התמונה. בפשטות, סיווג תמונות הוא מחקר של נתונים סטטיסטיים תוך שימוש באלגוריתמים מנקודת מבט של מחשב.
סיווג תמונה מתבצע בעיבוד תמונה דיגיטלי על ידי קיבוץ פיקסלים לקבוצות מוגדרות מראש, או "מחלקות". האלגוריתמים מחלקים את התמונה לרצף של מאפיינים ראויים לציון, מה שמפחית את העומס על המסווג הסופי.
תכונות אלו מודיעות למסווג לגבי משמעות התמונה והסיווג הפוטנציאלי של התמונה. מכיוון ששאר התהליכים בסיווג תמונה תלויים בה, שיטת החילוץ האופיינית היא השלב הקריטי ביותר.
אל האני נתונים שנמסרו לאלגוריתם יש חשיבות מכרעת גם בסיווג תמונות, במיוחד בסיווג בפיקוח. בהשוואה למערך נתונים נורא עם חוסר איזון בנתונים המבוסס על מעמד ואיכות תמונה והערות נמוכה, מערך סיווג מותאם היטב מתפקד בצורה יוצאת דופן.
סיווג תמונה באמצעות Tensorflow & Keras ב-python
אנו נשתמש ב- CIFAR-10 מערך נתונים (שכולל מטוסים, מטוסים, ציפורים ועוד 7 דברים).
1. דרישות התקנה
הקוד שלהלן יתקין את כל הדרישות המוקדמות.
2. יבוא תלות
צור קובץ train.py ב-Python. הקוד שלהלן ייבא תלות של Tensorflow ו-Keras.
3. אתחול פרמטרים
CIFAR-10 כולל רק 10 קטגוריות תמונות, ומכאן ששיעורי num פשוט מתייחסים למספר הקטגוריות שיש לסווג.
4. טעינת מערך הנתונים
הפונקציה משתמשת במודול Tensorflow Datasets כדי לטעון את מערך הנתונים, ואנחנו מגדירים את המידע ל-True כדי לקבל קצת מידע עליו. אתה יכול להדפיס אותו כדי לראות מהם השדות והערכים שלהם, ואנו נשתמש במידע כדי לאחזר את מספר הדוגמאות בערכות ההדרכה והבדיקות.
5. יצירת הדגם
כעת נבנה שלוש שכבות, שכל אחת מהן מורכבת משני ConvNets עם פונקציית max-pooling והפעלת ReLU, ואחריה מערכת מחוברת מלאה של 1024 יחידות. בהשוואה ל-ResNet50 או Xception, שהם דגמים חדישים, זה עשוי להיות דגם זעיר יחסית.
6. הכשרת הדגם
השתמשתי ב- Tensorboard כדי למדוד את הדיוק וההפסד בכל תקופה ולספק לנו תצוגה מקסימה לאחר ייבוא הנתונים ויצירת המודל. הפעל את הקוד הבא; בהתאם למעבד/GPU שלך, האימון ייקח מספר דקות.
כדי להשתמש ב-tensorboard, פשוט הקלד את הפקודה הבאה בטרמינל או בשורת הפקודה בספרייה הנוכחית:
תראה שאובדן האימות מצטמצם והדיוק עולה לכ-81%. זה פנטסטי!
בדיקת המודל
בסיום האימון, הדגם והמשקולות הסופיים נשמרים בתיקיית התוצאות, מה שמאפשר לנו להתאמן פעם אחת ולבצע תחזיות בכל עת שנבחר. עקוב אחר הקוד בקובץ פיתון חדש בשם test.py.
7. ייבוא כלי השירות לבדיקה
8. הכנת ספריית פיתון
צור מילון Python שמתרגם כל ערך של מספר שלם לתווית המתאימה של מערך הנתונים:
9. טעינת נתוני בדיקה ומודל
הקוד הבא יטען את נתוני הבדיקה והדגם.
10. הערכה וחיזוי
הקוד הבא יעריך ויבצע תחזיות על תמונות הצפרדע.
11. תוצאות
המודל חזה את הצפרדע עם דיוק של 80.62%.
סיכום
אוקיי, סיימנו עם השיעור הזה. בעוד ש-80.62% אינם טובים עבור CNN קטן, אני ממליץ לך בחום לשנות את הדגם או להסתכל על ResNet50, Xception או דגמים חדישים אחרים לקבלת תוצאות טובות יותר.
כעת, לאחר שבנית את רשת זיהוי התמונות הראשונה שלך ב-Keras, עליך להתנסות במודל כדי לגלות כיצד פרמטרים שונים משפיעים על הביצועים שלו.
השאירו תגובה