גילוי כשלים בייצור בשלבים מוקדמים בעזרת Visual Inspection

במאמר זה נצלול לעולם ה-Visual Inspection האוטומטי בתעשיות הייצור, ומראים כיצד ניתן לגלות תקלות בצורה חכמה, מדויקת ומהירה – עוד לפני שהן הופכות לבעיה אמיתית. נראה איך משלבים בין ראייה ממוחשבת, בינה מלאכותית ויכולות MATLAB כדי לפתח מערכות בדיקה מתקדמות, החל מהכנת הדאטה, דרך בניית מודלים מבוססי AI ועד לפריסה שלהם על חומרה ייעודית.
כל זה בליווי כלים פרקטיים, דוגמאות מהתעשייה, וטיפים שיקצרו לכם את זמן הפיתוח משמעותית. אם אתם עוסקים בייצור, בקרת איכות או פיתוח אלגוריתמים – זה פוסט שאתם לא רוצים לפספס.
תעשיות רבות מתמודדות עם אתגרים מורכבים בפיתוח וייצור של מוצרים. אתגרים אלו יכולים להיות:
- גילוי של כשלים בייצור רכיבים רק לאחר שנעשה ייצור גדול והושקע הרבה כסף.
- פגיעה במוניטין החברה עקב החזרות מוצרים בגלל שמחלקת הייצור לא שמה לב לכשלים בייצור הרכיבים.
- אי עמידה בתקני איכות ובטיחות מחמירים הנדרשים על ידי רגולטורים ולקוחות עקב כשלי ייצור.
- קושי לביצוע בדיקה ידנית עקב גודל קטן מאוד של רכיבים.
- ועוד
אתגרים אלו דורשים מתודה שתאפשר ניטור של תוצרי פס הייצור ומתן פידבק בזמן הרלוונטי. Visual inspection (VI) או בדיקה חזותית בעברית, היא משימה שנועדה למצוא כשלים או פגמים על פני שטח של רכיבים. משימה זו מיושמת בדרך כלל בעולמות כמו ייצור, שבבים, בנייה, תעופה וחלל. משימה זו מתבססת על דאטה של תמונות של רכיבים שאותם המצלמה סורקת לאיתור כשלים באיכות הרכיב על ידי שימוש בטכניקות של ראייה ממוחשבת קלאסית או בינה מלאכותית. חברות רבות משתמשות בMATLAB ככלי לפיתוח אלגוריתמים בעולם זה כבר היום, כאשר המטרה הסופית לרוב היא לבצע בדיקה חזותית אוטומטית שיודעת להתריע למהנדסים והמפתחים על רכיב תקול והאזור הבעייתי בו שיצר את התקלה.
איך נוכל לבצע Visual Inspection בMATLAB ומה הכלים השונים שאפשר להשתמש בהם כדי להפוך את הפיתוח שלנו לטוב והמהיר ביותר?
בתעשיית הייצור, מערכות בדיקה ויזואלית אוטומטיות עם מצלמות ברזולוציה גבוהה מזהות ביעילות פגמים בקנה מידה מיקרו או אפילו ננומטרי שקשה לעין אנושית לקלוט. עם זאת, זיהוי שווא קורה לפעמים כאשר קיימים ליקויים לא ידועים או מגוון של פגמים, מה שמהווה לאתגר גדול. לכן נרצה כלים חזקים ומתקדמים שיוכלו לעזור לנו ברמת הדיוק הגבוהה ביותר לזהות פגמים אלו במהירות הגבוהה ביותר ובדיוק רב. בMATLAB יש לנו את Automated Visual Inspection Library תחת ה Computer Vision Toolbox שמאפשר לנו להשתמש ברשתות נוירונים מתקדמות וכלים קלאסיים כדי לבצע אוטומציה בזהוי הכשלים ברכיבים, ופיתוח מערכות שלמות של בדיקה חזותית.
MATLAB תומך בWorkflow השלם, מרכישת תמונה ועד פיתוח אלגוריתמים ולאחר מכן ביצוע Deployment של המודלים והאלגוריתמים אל רכיבי חומרה כדי שכל התהליך יבוצע אוטומטית באופן מבוזר ולא רק על המחשב במידה ונרצה.
השלבים בתהליך זיהוי הליקויים (Defect Detection Process): הכנת נתונים, שלב המידול עם בינה מלאכותית ופריסת המודל (Deployment)
ניתן לחלק את תהליך זיהוי הליקויים לשלושה שלבים עיקריים: הכנת נתונים, מודלים של AI ופריסה.

הכנת נתונים Data Preparation
הנתונים מגיעים ממספר מקורות ובדרך כלל אינם מובנים ורועשים, מה שהופך את הכנת וניהול הנתונים לקשים וגוזלים זמן. עיבוד מוקדם של תמונות במערך הנתונים יביא לדיוק גבוה יותר בזיהוי חריגות.
עיבוד מקדים של תמונה עם MATLAB
ל-MATLAB יש מספר אפליקציות לתמיכה בטכניקות עיבוד תמונה מקדים שונות.
Registration Estimator App:
אפליקציה זו ב-MATLAB מאפשרת לך לחקור אלגוריתמים שונים לביצוע רישום תמונות (registration) לא מיושרות ]כלומר תמונות מוזזות, מסובבות או מותאמות באופן שגוי זו לזו[ מה שמקל על models AI לזהות פגמים.

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

שלב המידול – שימוש במודלים של AI ואלגוריתמים שונים לביצוע Visual Inspection:
רשתות שאומנו מראש (pretrained) בשימוש בלמידה מונחית לביצוע בדיקה חזותית:
כאשר משתמשים במודלים של למידה עמוקה (Deep learning) אז אפשר להשתמש במודל מהעולם של למידה מונחית (supervised learning). בגישה זו מאמנים מודל על הדאטה שלנו, ואז כאשר המודל מקבל דאטה חדש הוא יודע לבד להסיק מסקנות לגביו. אם נבחר במודל מעולם זה, קיימות שתי גישות לעבודה עם המודל:
- גישה אחת היא לבנות ולאמן רשת מאפס. כלומר לבנות את השכבות השונות לפי ארכיטקטורה ידועה ולאמן את הרשת שיצרנו.
- הגישה השניה היא לקחת רשת שאומנה מראש על ידי אדם אחר, ובעצם לתת לה כיוון קל על ידי אימון עם הדאטה שלנו והקלאסים שאנחנו רוצים שהמודל ידע לסווג עבורם את הדאטה. גישה זו נקראית transfer learning.
כיום קל ליישם את שתי הגישות ב- MATLAB ונוכל לעשות את זה באמצעות קוד או באמצעות אפליקציות.
במידה ונרצה לייבא (וגם לייצא) רשתות נוירונים מPython נוכל לייבא את הרשתות מספריות TensorFlow, PyTorch, ומפורמט ONNX™, כך שעקרונית ניתן לעבוד כמעט עם כל רשת נוירונים בסביבה של MATLAB.
Deep network designer app:
אפליקציית Deep Network Designer מאפשרת לבנות ולערוך רשתות נוירונים מאפס או עבור ביצוע transfer learning באמצעות העכבר בלבד וללא צורך בכתיבת קוד.
באמצעות כלי זה ניתן גם לנתח את הרשת כדי לוודא שארכיטקטורת הרשת מוגדרת כהלכה ולזהות בעיות לפני האימון.

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

חשוב לציין שכדי לבצע זיהוי אובייקטים (object detection) לאיתור הליקויים נוכל להשתמש ברשת נוירונים מתקדמת כמו YOLOX משמשת לאיתור, לוקליזציה וסיווג ליקויים בתמונה. מודל זיהוי האובייקטים של YOLOX הוא טכניקה חד-שלבית המסייעת בזיהוי אובייקטים קטנים, כאשר היא מקטינה משמעותית את גודל התמונות ומשפרת את מהירות החישוב בהשוואה למודלי YOLO קודמים. המידע שנקבל הוא התמונות עם הסימונים של אזורי עניין (ROIs) עם ריבועים סביבם (bounding boxes) המשמשים לאימון מודלים וזיהוי האובייקטים.

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

פריסה (Deployment) לרכיבי חומרה:
MATLAB מאפשרת יכולות הטמעה של רשתות הנוירונים לרכיבי חומרה שונים, כגון CPU של אינטל וARM, GPU של Nvidia, וגם SoCs , FPGAs של Xilinx ו-Intel. נוכל לכתוב את הסקריפטים שלנו במטלב כולל יצירת המודלים ואז בקלות לייצר מהם קוד חומרה למגוון חומרות. אפשרות זאת מאפשרת חיסכון גדול בזמן ובמיומנות של עובדים להמרת הקוד.

במידה ותרצו לשמוע עוד – אתם מוזמנים ליצור איתנו קשר!
בינתיים, תוכלו לקבל מידע נוסף על האפליקציות בלינקים הבאים:
- Automated Visual Inspection Library for Computer Vision Toolbox
- Generate C and C++ code optimized for embedded systems
- Generate CUDA code for NVIDIA GPUs
- Experiment Manager App
- Deep Network Designer
- Image labeler app
- Video Labaler App
- HDL Coder – Generate Verilog, SystemVerilog, and VHDL code for FPGA and ASIC designs