Deep Learning with MATLAB – New Features in R2020b
חידושים משמעותיים רבים נוספו לכלי ה-Deep Learning של חברת MathWorks בגרסת R2020b! זה המקום לקרוא עליהם, וכן על היתרונות של MATLAB בתחום זה, ואף למצוא קישורים למקורות מידע מקצועי נוסף, כולל קורס Hands-On חינמי
גרסת R2020b של כלי MathWorks, אשר שוחררה בחודש שעבר, כוללת יכולות חדשות רבות ותיקוני באגים בכלים הקיימים בסביבות MATLAB ו-Simulink, ואף ארבעה כלים חדשים (לסקירת של יכולות הגרסה – לחצו פה). מבחינת תחום ה-Deep Learning – כמו בגרסה הקודמת (לחצו לסקירה) – גם בגרסה השניה לשנת 2020 התחום זכה להשקעה רבה.
פוסט זה מורכב משלושה חלקים – בחלק הראשון תוכלו לקרוא על החידושים בתחום הלמידה העמוקה בגרסת R2020b. בחלק השני תמצאו ריכוז של היתרונות העיקריים של MATLAB בעולם זה. ובחלק השלישי לרשותכם הפניות לסמינרים מקצועיים מקוונים, קורס Hands-On חינמי, סיפורי משתמשים ישראלים ודרכים לקבלת מידע נוסף.
אז…מה חדש בתחום ה-Deep Learning בגרסת R2020b?
להלן החידושים המרכזיים:
- יצירת קוד HDL עבור רשתות – ניתן לבנות אבטיפוס של רשת למידה עמוקה ולהוריד אותה בקלות ל-FPGA או SoC בעזרת כלי חדש – Deep Learning HDL Toolbox (למידע נוסף על הכלי – לחצו פה). לסרטון קצר (5 דקות) בו מודגם תהליך הההורדה ל-FPGA של רשת לאיתור פגמים ברכיבים, לרבות ניתוח הביצועים שלה על החומרה וביצוע קוונטיזציה ל-int8 – לחצו פה. לרשימת חומרות Xilinx הנתמכות – לחצו פה. לרשימת חומרות אינטל הנתמכות – לחצו פה.
הכלי הנ"ל מתווסף לכלי ה-GPU Coder המאפשר להמיר בצורה אוטומטית קוד MATLAB ומודלי Simulink לקוד CUDA מהיר וחסכוני בזיכרון לצורך מימוש על מערכות Embedded ולכלי ה-MATLAB Coder המאפשר להמיר קוד MATLAB לקוד ++C עבור מעבדים של אינטל ופלטפורמות ARM. - הרחבת התמיכה ב-Lidar – מגרסת R2020b ניתן לפתח מערכות עיבוד Lidar, לנתח אותן ולבחון אותן בעזרת כלי חדש – Lidar Toolbox (למידע נוסף על הכלי – לחצו פה). הכלי מאפשר אימון של מודלי גילוי אובייקטים וסגמנטציה סמנטית מותאמים אישית בעזרת PointSeg ,PointPillars ו-SqueezeSegV2. הוא אף כולל ממשק משתמש נוח לתיוג ידני או חצי-אוטומטי של ענני נקודות Lidar, המתווסף לאוסף עשיר של ממשקי תיוג מעולים שכבר היו קיימים בסביבת MATLAB ושופרו בגרסה החדשה (למידע נוסף על ה-Lidar Labeler – לחצו פה. מידע על מגוון ממשקי התיוג – בסעיף 9). לסרטון קצר (5 דקות) בו מודגם השימוש ברשת PointPillars לצורך גילוי אובייקטים ב-3D בענני נקודות Lidar, וכן מוצג ממשק התיוג – לחצו פה. לדוגמה להמרה אוטומטית של רשת SqueezeSegV2 לקוד CUDA – לחצו פה.
- למידה עמוקה ב-Simulink ויצירת קוד CUDA ממודלי Simulink – ספריית הבלוקים החדשה Deep Neural Networks (שמגיעה כחלק מה-Deep Learning Toolbox) מכילה בלוקים של Simulink לביצוע סיווג של תמונה באמצעות רשת מאומנת ולביצוע חיזוי של תגובה (אקטיבציות) של רשת מאומנת. הנ"ל מאפשר שילוב קל של רכיב למידה עמוקה בתוך מערכת הממודלת ב-Simulink, דבר שמאפשר ביצוע סימולציה ובדיקות של רכיב זה ברמת המערכת המלאה בסביבה זו, שיכולה לכלול רכיבים ממגוון תחומים (מערכות בקרה, מידול פיזיקלי של מערכות מכאניות/חשמליות וכו'). שני הבלוקים החדשים, Image Classifier ו-Predict, אף נתמכים להמרה אוטומטית לקוד C++/CUDA. בהקשר זה יודגש שהחל מהגרסה החדשה ה-GPU Coder תומך גם בהמרה לקוד CUDA של מודלי Simulink המכילים בלוק MATLAB Function (שיכול להכיל רשת גילוי אובייקטים, LSTM וגם קוד MATLAB שאינו קשור לתחום הלמידה העמוקה). חידוש זה מאפשר האצה של סימולציות Simulink תוך שימוש ב-GPU, יצירת exe לצורך בניה מהירה של אבטיפוס להרצה על GPU, והורדה של מודל Simulink ל-Embedded GPU כמו Jetson ו-DRIVE. לסרטון קצר (2 דקות) המדגים יצירה של קוד CUDA מתוך מודל Simulink המכיל רכיב של למידה עמוקה – לחצו פה.
- יכולות חדשות בממשק הגרפי האינטראקטיבי לעבודה עם רשתות עמוקות – ה-Deep Network Designer App (לחצו למידע) תומך כעת במגוון רחב יותר של משימות, כמו ביצוע סגמנטציה סמנטית, רגרסיה של תמונה עם תמונה ובעיות של ריבוי קלטים ומידע אשר חורג ממשאבי הזיכרון (וזאת בנוסף לתהליכי עבודה של סיווג תמונה, רגרסיה, רצפים וסדרות זמן). כלומר, תוך שימוש בממשק נוח, ומבלי לכתוב קוד באופן ידני, ניתן כעת לבצע את כל תהליך העבודה – לרבות טעינה של ה-Data Set, חלוקה שלו לקבוצות אימון ובדיקה, אוגמנטציה, בניית/טעינת/עריכת ארכיטקטורה של רשת וניתוח שלה, הגדרת הגדרות האימון, הרצת האימון ושמירת התוצאה – ולקבל בצורה אוטומטית קוד MATLAB שהיה צריך לכתוב ידנית אלמלא קיומו של ה-App הנ"ל. לדוגמה לשימוש ב-Deep Network Designer App עבור בעיית סיווג (לא חדש…) – לחצו פה. לדוגמה לשימוש בו עבור בעיית סגמנטציה סמנטית (כאמור – יכולת חדשה) – לחצו פה.
בנוסף, הממשק מאפשר כעת טעינה של רשתות Sequence-to-Sequence ו-Sequence-to-Label מוכנות בלחיצת עכבר (לדוגמה לשימוש בכך לצורך אימון רשת לסיווג רצפים – לחצו פה), מספק תצוגה מקדימה של המידע המיובא לתוכו ובכך מאפשר לבצע בדיקות פשוטות לפני תחילת האימון (לדוגמאות לתצוגה הזו – לחצו פה), תומך בטעינה של מספר רשתות בו זמנית ובהכנסה של שכבות מותאמות אישית (לדוגמה להכנסה של שכבה שנכתבה על ידי המשתמש אל תוך הממשק – לחצו פה) ומכיל תיבת סימון לביצוע חלוקה אקראית של המידע המיובא לסט אימון וסט ולידציה (שימושי כאשר המידע מאוחסן בצורה לא אקראית ואנו לא רוצים שתמיד אותן תמונות שבסוף המאגר ייכנסו לסט הולידציה). כמו כן, כעת ניתן להעלות את הממשק עם רשת רצויה בעזרת שורת קוד (למשל, יש להקליד deepNetworkDesigner(squeezenet) כדי לפתוח את הממשק עם רשת SqueezeNet), ואפשר לבצע בו עריכה של מאפיינים נוספים של שכבות קונבולוציה מבלי לאבד את מידע המשקולות וה-bias-ים (שימושי למשל כאשר רוצים ליצור רשת סגמנטציה סמנטית תוך שימוש ברשת מאומנת בתור בסיס, בה רוצים לערוך מאפיינים כמו
stride ,dilation ,cropping וריפוד, על מנת להגיע ליישור הרצוי). - אימון מספר רשתות במקביל ושימוש ב-Bayesian Optimization לצורך כִּיונוּן Hyperparameters בממשק ניהול הניסויים – כזכור, בגרסה הקודמת נוסף ה-Experiment Manager App, ממשק שמאפשר לתכנן תרחישי אימון של רשתות למידה עמוקה, להריץ אותם, לנתח את התוצאות ולהשוות בין אימונים שונים, והכל מבלי לכתוב הרבה שורות קוד. בעזרת הכלי אפשר לסרוק תחום ערכים של היפרפרמטר, לבחון את ההשפעה של שימוש ב-Data Sets שונים, או לבדוק מה מניבות ארכיטקטורות שונות עבור אותו מידע אימון. הממשק כולל כלי ויזואליזציה שימושיים כמו Training Plots, מסננים, מטריצות Confusion ואפשרות להגדיר מטריקה-מותאמת-אישית לצורך הערכת הביצועים.
החל מהגרסה החדשה הממשק הנ"ל תומך באימון של מספר רשתות במקביל (מצריך רישיון ל-Parallel Computing Toolbox). ניתן להמשיך לעבוד עם MATLAB בזמן שהאימונים מתקדמים, ואפשר לעצור ואף לבטל תרחישי אימון ספציפיים במהלך פעולתם אם לא נראה שהם מתקדמים באופן תקין. לדוגמה – לחצו פה (יודגש שניתן לאמן רשתות במקביל גם ללא ממשק ניהול הניסויים, לדוגמה – לחצו פה).
שימוש ב-Bayesian Optimization מהווה חלופה לסריקה של Hyperparameters, וכאמור גם הוא נתמך כעת דרך ממשק ניהול הניסויים (מצריך רישיון ל-Statistics and Machine Learning Toolbox). לאחר הגדרה של תחום ערכים אפשריים לכל Hyperparameter ומטריקה שאותה רוצים למקסם או למזער, ממשק ניהול הניסויים יחפש את אוסף ה-Hyperparameters שיביא לאופטימיזציה של המטריקה הנ"ל, כאשר אוסף ה-Hyperparameters שנבדק בכל ניסוי נבחר על סמך תוצאות הניסויים הקודמים. ניתן אף להריץ מספר ניסויים של Bayesian Optimization במקביל (שוב, הרצה מקבילית מצריכה רישיון גם ל-Parallel Computing Toolbox). לדוגמה – לחצו פה. - מגוון רשתות מאומנות חדשות – ניתן לטעון כעת באמצעות שורת קוד אחת את רשת EfficientNet-b0 המדויקת, המהירה והקטנה (מבחינת משאבי זיכרון) יחסית, ולבצע בעזרתה סיווג לתמונה או להשתמש בה לצורך Transfer Learning. הרשת גם ניתנת להמרה אוטומטית לקוד CUDA באמצעות ה-GPU Coder. להורדת הרשת – לחצו פה. למאמר בו הוצגה לראשונה משפחת הרשתות אליה היא משתייכת – לחצו פה.
בתחום האודיו ניתן להשתמש כעת בשתי רשתות מאומנות חדשות – YAMNet ו-VGGish (מצריך רישיון ל-Audio Toolbox). הרשת הראשונה משמשת לסיווג קטעי קול בין 521 קלאסים סמנטיים (קולות אנושיים כמו דיבור, שריקה, נשימה; קולות מהטבע כמו רוח, מים, רעם ואש; קולות של בעלי חיים כמו חיות מחמד, חיות משק וחיות בר; קולות של "דברים" כמו רכב, פעמון ואזעקה). למידע נוסף – לחצו פה. הרשת השניה משמשת לחילוץ Embeddings של אודיו (וקטורי פיצ'רים 128-מימדיים אשר יכולים לשמש בתור קלט עבור מודל סיווג). למידע נוסף – לחצו פה. ניתן להשתמש בשתי הרשתות גם לצורך ביצוע Transfer Learning. - אימון של רשתות Mask-R-CNN – כידוע, Instance Segmentation הינו סוג משודרג של גילוי אובייקטים, אשר הפלט שלו הוא מפת סגמנטציה עבור כל דוגמה אשר אותרה מכל סוג של אובייקט. כלומר, להבדיל מסגמנטציה סמנטית אשר מתייחסת לכל האובייקטים של אותו Class בתור יישות אחת, ב-Instance Segmentation ההתייחסות לאובייקטים הללו היא כאל יישויות שונות (למשל – בעוד שבני אדם שונים יקבלו בסגמנטציה סמנטית התייחסות זהה, ב-Instance Segmentation תהיה הבחנה בין בני האדם השונים). אחד מהאלגוריתמים הנפוצים לביצוע Instance Segmentation הוא Mask-R-CNN, והחל מהגרסה החדשה ניתן לאמן רשת כזו, הודות להוספת השכבה roiAlign. ניתן גם להיעזר בפונקציה InsertObjectMask לצורך הצגת ה-Instances השונים בצבעים שונים, כפי שניתן לראות למטה. למידע נוסף – לחצו פה.
- שימוש בטכניקת LIME כדי להסביר תוצאות של ביצוע סיווג לתמונה – ליכולות הויזואליזציה העשירות של סביבת MATLAB בתחום הלמידה העמוקה נוספה האפשרות להשתמש באלגוריתם Local Interpretable Model-agnostic Explanation על מנת למפות את האיזורים בתמונת הקלט שמשפיעים יותר מאחרים על הפלט של רשת הסיווג. לדוגמה לשימוש בפקודה החדשה imageLIME – לחצו פה. בדוגמה הנ"ל ניתן להתרשם מהיתרונות של טכניקת LIME על פני שיטות אחרות שכבר קיימות ב-MATLAB, כמו Grad-CAM ו-Occlusion Sensitivity, בהיבט של אפשרויות הצגות התוצאות (לא רק מפת חום). לפוסט הסוקר את הטכניקות השונות – לחצו פה. למאמר בו הוצגה טכניקת LIME לראשונה – לחצו פה.
- שיפורים לממשקי ה-Labeling – כידוע, בסביבת MATLAB קיים אוסף עשיר של ממשקי תיוג מעולים, אליו התווסף בגרסה החדשה ה-Lidar Labeler (ראו סעיף 2). בנוסף, בגרסה זו התווסף ממשק לביצוע סגמנטציה עבור תמונות של נפחים תלת-מימדיים, ה-Volume Segmenter, אשר מאפשר ליצור ולעדכן מסיכות סגמנטציה בצורה אוטומטית, חצי-אוטומטית או ידנית (לדוגמה לשימוש בכלי עבור סגמנטציה סמנטית – לחצו פה). פרט לכך בגרסה החדשה גם בוצעו שיפורים לממשקים שהיו קיימים עוד לפניה, ולהלן כמה מהם:
Image Labeler – ממשק תיוג תמונות – נוספה אפשרות לסימון איזורי עניין תלת-מימדיים (ROI שהוא תיבה, להבדיל ממלבן). למידע נוסף על ממשק זה – לחצו פה.
Video Labeler – ממשק תיוג קבצי וידאו ורצפי תמונות – כנ"ל. למידע נוסף על ממשק זה – לחצו פה.
Ground Truth Labeler – ממשק תיוג ליישומי נהיגה אוטונומית (מצריך רישיון ל-Automated Driving Toolbox) – נוספו עוד קיצורי דרך באמצעות המקלדת ופעולות עכבר, לרשימה המלאה – לחצו פה. למידע נוסף על ממשק זה – לחצו פה.
Signal Labeler – ממשק תיוג אותות – נוספו אפשרות לייבא מידע מקבצים (ולא רק מה-Workspace) ואפשרות להציג ספקטוגרמה ואת ספקטרום ההספק של האות על מנת לסייע במלאכת התיוג שלו. למידע נוסף על ממשק זה – לחצו פה.
ב-Audio Labeler – ממשק תיוג קבצי אודיו – לא חל שינוי מיוחד, אך הוא מוזכר כאן לשם השלמת התמונה. למידע נוסף על ממשק זה – לחצו פה.
למידע על בחירת ממשק התיוג המתאים ליישום שלכם, כולל השוואה בין הממשקים השונים – לחצו פה. ואפילו שהוא לא נכלל בהשוואה (כיוון שאינו חלק רשמי מהכלים), ראוי לציין גם את ה-Big Image Labeler, ששוחרר בתחילת השנה, והינו ממשק תיוג של תמונות גדולות במיוחד, כמו למשל צילומי אויר או תמונות רפואיות/מדעיות ברזולוציה גבוהה. למידע נוסף – לחצו פה. - שדרוג ליכולות ההמרה של רשתות בצורה אוטומטית לקוד CUDA – פרט לתמיכה של ה-GPU Coder בהמרה לקוד CUDA של מודלי Simulink, של רשת הסגמנטציה הסמנטית החדשה SqueezeSegV2 לענני נקודות Lidar ושל הרשת המאומנת החדשה EfficientNet-b0 (ראו סעיפים 3, 2 ו-6, בהתאמה), בגרסה החדשה נוספה בו גם תמיכה בהמרה של Custom Layers (שכבות לא-סטנדרטיות שכתבתם בעצמכם). לדוגמה לתהליך הבניה של שכבה מותאמת אישית הניתנת להמרה לקוד CUDA – לחצו פה. לדוגמה בנושא יצירת קוד CUDA עבור רשת גילוי האובייקטים YOLO v3 הכוללת שכבה מותאמת אישית – לחצו פה.
בנוסף, יש כעת תמיכה ברשתות בעלות מספר קלטים ורשתות LSTM קונבולוציוניות (רשתות המכילות שכבות קונבולוציה ושכבות LSTM, שימושיות עבור סיווג וידאו ותמונה). כמו כן, נוספו שכבות נוספות לרשימת השכבות אשר נתמכות, כמו Focal Loss ו-GRU (הראשונה תומכת כעת גם בבעיות סיווג תמונה וסגמנטציה סמנטית, בנוסף לתמיכה שכבר היתה בה בבעיות גילוי אובייקטים). הנ"ל מאפשר להמיר בקלות עוד רשתות עמוקות מקוד MATLAB לקוד הפועל על כרטיסי GPU של Nvidia. לרשימה המלאה של רשתות מאומנות, שכבות וקלאסים אשר ניתן להמיר אותם לקוד CUDA בצורה אוטומטית בעזרת ה-GPU Coder – לחצו פה.
לסיום, יצויין כי נוספה תמיכה בהמרה לקוד CUDA של פונקציות נוספות מכלים כמו
Computer Vision Toolbox ,Audio Toolbox ,Signal Processing Toolbox ו-Wavelet Toolbox. הנ"ל מאפשר לייצר קוד CUDA לאלגוריתם מלא, הכולל עוד מרכיבים מעבר לחלק של ה-Deep Learning. לרשימה המלאה של הפונקציות שנתמכות – לחצו פה. - שדרוג ליכולות ההמרה של רשתות בצורה אוטומטית לקוד ++C – גם ב-MATLAB Coder נוספה כעת תמיכה ב-Custom Layers שהוזכרו בסעיף הקודם, עבור מעבדי Intel ו-ARM. פרט לכך נוספה תמיכה ביצירת קוד עבור רשתות
LSTM ,Stateful LSTM ו – Bidirectional LSTM עבור מעבדי Intel וכן תמיכה בהמרה של רשת הסגמנטציה הסמנטית החדשה SqueezeSegV2 לקוד C++/C. כמו כן, נוספו שכבות נוספות לרשימת השכבות אשר נתמכות, כמו Focal Loss ו-GRU, דבר שמאפשר להמיר בקלות עוד רשתות עמוקות מקוד MATLAB לקוד ++C יעיל הפועל על מעבדים של אינטל ופלטפורמות של ARM. לרשימה המלאה של רשתות מאומנות, שכבות וקלאסים אשר נתמכים – לחצו פה. - תמיכה בשכבות נוספות על ידי dlnetwork – פונקציית dlnetwork שנוספה לפני כשנה במטרה להקל על פיתוח של ארכיטקטורות למידה עמוקה מתקדמות תומכת כעת גם בשכבת Word Embedding (הממפה מידע טקסט לאוסף של וקטורים נומריים, ומצריכה רישיון ל-Text Analytics Toolbox). לדוגמה לשימוש בשכבה מסוג זה בלולאת אימון מותאמת אישית לצורך סיווג טקסט – לחצו פה. כמו כן dlnetwork תומכת כעת גם בשכבת BiLSTM (המסייעת בלמידה של תלויות ארוכות טווח בשני הכיוונים של רצף מידע) וכן בשכבת Feature Input שנוספה בגרסה החדשה (מאפשרת לאמן רשתות באמצעות מערכי מידע של סקלרים נומריים המייצגים פיצ'רים). לדוגמה לשימוש בשכבה האחרונה בלולאת אימון מותאמת אישית לצורך סיווג ספרות הכתובות בכתב יד, בעזרת מידע משולב המורכב מתמונות ופיצ'רים – לחצו פה.
למידע נוסף על לולאות אימון מותאמות אישית – לחצו פה. - שיפורים במהירויות האימון וה-Inference – בהשוואה לגרסה הקודמת, אימון באמצעות פקודת trainNetwork במערכת ההפעלה Windows תוך שימוש במספר GPU-ים הינו מהיר יותר. ניתן לראות למטה השוואה של מהירויות האימון בין הגרסה הקודמת לגרסה החדשה, עבור כמות שונה של GPU-ים אשר שימשו לצורך כך.
בהשוואה לגרסת R2018b (מלפני שנתיים), מהירות ה-Inference גבוהה כעת פי 2.8 על GPU ופי 3 על CPU (המספרים הינם עבור שימוש ב-ResNet-50 עם גודל Batch של 32, על מעבד Intel Xeon 3.6GHz וכרטיס גרפי Titan V של Nvidia).
פרט לכך, בהשוואה לגרסה הקודמת, יש שיפור במהירות של פקודות predict ,classify ו-activations בעת שימוש ב-CPU עבור רשתות RNN, וניתן למצוא ב-Release Notes תרחיש בדיקה בו מודגם שיפור של פי 3.4 בזמן הריצה.
בנוסף, פקודת dlfeval רצה מהר יותר על GPU בהשוואה לגרסה הקודמת בעת חישוב גרדיאנטים של רשתות שנבנו בעזרת dlnetwork ושאינן מכילות שכבות מותאמות אישית. ניתן למצוא ב-Release Notes תרחישי בדיקה בהם מודגמים שיפורים של פי 1.3 עד 1.4 בזמן הריצה.
יודגש שפרט לשימוש ב-GPU ,CPU או מספר GPU-ים, ניתן לבצע למידה עמוקה ב-MATLAB גם באמצעות ענן כמו Azure ו-aws ותחנות עבודה מסוג DGX תוצרת Nvidia. - הרחבת שיתוף הפעולה עם סביבות למידה עמוקה אחרות – כידוע, מזה מספר גרסאות ניתן לייבא לתוך MATLAB מודלים שפותחו ואומנו בסביבות Deep Learning אחרות ולייצא מודלים מ-MATLAB אליהן.
החל מהגרסה החדשה אפשר לייצא/לייבא מודל בפורמט ONNX גם אם הוא כולל שכבות מסוג Sigmoid ,Multiplication ,2-D Resize, 3-D Resize ,Space to Depth ו-Instance Normalization. לפקודת הייבוא של רשת לתוך MATLAB מסביבת למידה עמוקה אחרת – לחצו פה. לפקודת הייצוא – לחצו פה.
אם פקודת הייבוא הנ"ל נתקלת ביותר מידי אופרטורים שאינם נתמכים על ידי MATLAB, או אם מעוניינים להגדיר לרשת המיובאת לולאת אימון מותאמת אישית, ניתן החל מהגרסה החדשה לייבא את הרשת בתור פונקציה (באופן כללי שיטת המידול הזו נותנת יותר גמישות מאשר עבודה עם Layer Graph כמו Series Network ,DAG או dlnetwork). לפקודת הייבוא בתור פונקציה – לחצו פה. למידע נוסף על לולאות אימון מותאמות אישית – לחצו פה.
הרשום לעיל הינו בנוסף לאפשרות לייבא מודלים בצורה ישירה מסביבות כמו Caffe ו-TensorFlow-Keras. באשר לאחרונה, יצוין כי בגרסה החדשה ניתן כעת לייבא מ-Keras מודלים גם אם הם מכילים שכבות
מסוג Sigmoid ,2-D Upsampling ,3-D Upsampling ו-Multiplication. לפקודת הייבוא מ-Keras – לחצו פה. לסרטון קצר (5 דקות) המדגים ייבוא של רשת מ-Keras והמרה אוטומטית שלה לקוד CUDA לצורך האצת פעולתה – לחצו פה.
למידע נוסף על שיתוף הפעולה בין MATLAB וסביבות ה-Deep Learning האחרות – לחצו פה. - יכולות חדשות בתחום ה-Reinforcement Learning – ב-Toolbox הייעודי לתכנון ואימון policies בעזרת אלגוריתמי Reinforcement Learning, עבור בקרים ומערכות קבלת-החלטה אוטונומיות, ניתן כעת ליצור סוכנים עם מבנה ברירת מחדל של רשתות נוירונים עבור ה-Actor וה-Critic, דבר החוסך את הצורך לנסח Policies בצורה ידנית. סוכני ברירת מחדל זמינים עבור סוכני DQN ,DDPG ,PPO ,TD3 ,PG ,AC ו-SAC. האחרון הינו סוג של סוכן שנכנס בגרסה החדשה (Soft Actor-Critic הוא גרסה משופרת של DDPG ומיועד גם הוא למרחבי פעולה רציפים). פרט לכך נוספה תמיכה באימון של מספר סוכנים בו-זמנית באמצעות אותה סביבה ב-Simulink (לדוגמה לאימון של של מספר סוכנים לצורך ביצוע של משימה משותפת – לחצו פה).
- תוספת של עשרות דוגמאות ממגוון תחומי יישום – יחד עם 38 הדוגמאות החדשות, קיימות כעת מעל 200 דוגמאות מתועדות היטב לביצוע למידה עמוקה בסביבות MATLAB ו-Simulink עבור מגוון תחומי יישום – עיבוד תמונה וראיה ממוחשבת, עיבוד Lidar, עיבוד אודיו ואותות אחרים, ניתוח טקסט, בקרה (Reinforcement Learning), נהיגה אוטונומית ועוד. לבלוג הסוקר חלק מהדוגמאות החדשות – לחצו פה. לעמוד הבית של תחומי היישום השונים, ממנו ניתן להגיע לפקודות חשובות, Apps רלוונטים ודוגמאות שימושיות עבור תחום היישום שלכם – לחצו פה. ולדוגמאות רשמיות שממשיכות להתווסף כל הזמן – היכנסו ל-Repositories שלנו לתחום הלמידה העמוקה ב-GitHub (לחצו פה).
ויש כמובן עוד חידושים עליהם ניתן לקרוא בתיעוד…
לסיכום, היכולות החדשות בתחום ה-Deep Learning בסביבת MATLAB יחד עם היכולות שהיו קיימות בכלי בעבר ושקיימות בכלים משלימים, הופכות את MATLAB לפלטפורמה מובילה בתחומי ה-Data Science and Machine Learning, כפי שגם קבעה בתחילת השנה חברת המחקר והייעוץ בטכנולוגיית המידע Gartner, אשר מייעצת באופן אובייקטיבי ליותר מ-15,000 חברות ברחבי העולם (לחצו לקריאת הניתוח של Gartner).
בין היתרונות של MATLAB בעולם ה-Deep Learning:
- Labeling מהיר ונוח, באמצעות מגוון Apps. מאפשר לסמן bounding boxes בתמונות/וידאו או לבצע תיוג ברמת הפיקסל לצורך סגמנטציה סמנטית ואף לבצע אוטומציה לתהליך ולהשתמש באלגוריתמים מותאמים אישית וכן לתייג ענני נקודות מ-Lidar, קטעי אודיו ואותות אחרים.
- ממשקי משתמש אינטראקטיביים החוסכים את הצורך בכתיבת קוד (עבור בניה נוחה של רשת חדשה או עריכה קלה של רשת מוכנה, ביצוע של אוגמנטציות, הרצת אימון, ניהול ניסויים, קוונטיזציה).
- מהירות אימון (ניתן להאיץ את התהליך עוד יותר באמצעות שימוש פשוט ונוח בחומרות נוספות כמו מספר GPUs, חוות מחשבים וענן) ומהירות Inference.
- אפשרות להמיר בצורה אוטומטית את קוד ה-MATLAB ומודלי ה-Simulink לקוד CUDA מהיר וחסכוני בזיכרון לצורך מימוש על מערכות Embedded או לקוד ++C עבור מעבדים של אינטל ופלטפורמות ARM או לקוד HDL עבור FPGAs ו-SoCs (כדי לטרגט כאלה רכיבים דלי הספק וזיכרון, אפשר להיעזר בממשק הקוונטיזציה Deep Network Quantizer המוזכר לעיל והמודגם פה, שעוזר לוודא שלא חורגים מדרישות הדיוק הרצויות). ניתן גם לשלוח את האלגוריתם השלם לרוץ על PC אחר, מערכת אנטרפרייז, Edge Device או ענן.
- אפשרות לייבא לתוך MATLAB מודלים שפותחו ואומנו בסביבות Deep Learning אחרות ולייצא מודלים מ-MATLAB אליהן (קישור למידע נוסף).
- נוחות עבודה – הודות לשימוש בסביבת פיתוח עשירה המיועדת למהנדסים ומדענים.
- כל תהליך הפיתוח בתחום הלמידה העמוקה יכול להתבצע בסביבה משולבת אחת (משלב היצירה/ההכנה של ה-Data, דרך אימון הרשת ועד להורדתה אל חומרה), אשר גם כוללת כלים מתחומים נוספים, ובכך מאפשרת לפתח מוצר שלם (כלומר – לא לבצע רק Deep Learning, אלא הרבה מעבר לכך, ולבצע deployment ליישום כולו).
- אפשרות לביצוע סימולציה ובדיקות ברמת המערכת המלאה בעזרת סביבת Simulink, אשר יכולה לסייע גם ביצירה/סימולציה של ה-Data הדרוש (קישור למידע נוסף).
- תוכנה בעלת שלבי פיתוח "מסודרים" וצוותי הנדסת איכות מקצועיים (בקשות ליכולות חדשות נבחנות, ככל שמתגלים באגים הם מטופלים, וכל הכלים מהתחומים הנוספים שהוזכרו לעיל עובדים יחד זה עם זה).
- ממשק יציב, תאימות לאחור ותמיכה מלאה במערכת ההפעלה Windows בנוסף לתמיכה במערכות הפעלה אחרות.
- יכולות ויזואליזציה ודיבאגינג – צפיה ב-Activations, הצגת Deep Dream Images, צפיה במשקולות, בחינה של התקדמות האימון בכיוון הנכון, תצוגה גרפית של הרשת וניתוח שלה לצורך איתור בעיות אפשריות לפני ביצוע האימון, הצגת Class Activation Mapping, ניתוחי Occlusion Sensitivity, שימוש בטכניקת LIME וכו'…
- תיעוד מקיף וברור ודוגמאות מוכנות לשימוש במגוון תחומים, כמיטב המסורת של סביבת MATLAB (ראו סעיף 16 לעיל).
- תמיכה טכנית מקצועית בטלפון 03-7660111 או באתר, לבעלי רישיון תחת חוזה שירות, ושירותי ייעוץ לפרויקטים מורכבים.
מה הלאה?
ההשקעה של MathWorks בתחום ה-Deep Learning נמשכת, וצפויים חידושים משמעותיים גם בשנה הבאה. אם יש יכולות שאתם זקוקים להן והן עדיין לא נכללות בכלים – אתם מוזמנים לכתוב זאת למטה בתגובה ואשמח לבדוק עבורכם האם הן מתוכננות (ובמידה ולא – אעביר אותן לצוות הפיתוח על מנת שישקול לעבוד עליהן).
לצפיה בסמינר מקוון בעברית בנושא "Deep Learning בסביבת MATLAB עבור יישומי ראיה ממוחשבת", שהתקיים ב-23/4/20 – לחצו כאן.
לוובינר בעברית בנושא "אימון רשתות למידה עמוקה באמצעות MATLAB עבור יישומי ראיה ממוחשבת", ששודר ב-5/5/20 – לחצו פה.
לוובינר בעברית בנושא "גילוי אובייקטים באמצעות למידה עמוקה בסביבת MATLAB", ששודר בתאריך 14/5/20 – לחצו פה.
לוובינר בעברית בנושא "ביצוע רגרסיה באמצעות למידה עמוקה בסביבת MATLAB", ששודר בתאריך 21/5/20 – לחצו כאן.
לצפיה בוובינר בעברית בנושא "Deep Learning של אותות מכ"מ לצורך סיווג מטרות באמצעות MATLAB ", שהוקלט ב-7/4/20 – לחצו כאן.
לוובינר בנושא סיווג של אותות בעזרת Wavelet Scattering ,CNN ו-LSTM והמרה אוטומטית של קוד MATLAB לקוד CUDA, שהוקלט ב-13/5/20 – לחצו פה.
לוובינר בנושא "לימוד מכונה ולמידה עמוקה לישומי עיבוד תמונות רפואיות", שהוקלט בתאריך 20/5/20 – לחצו כאן.
לוובינר בעברית בנושא "המרת רשתות למידה עמוקה לקוד CUDA/C++/C והפעלתו על מערכות Embedded", ששודר בתאריך 19/8/20 – לחצו כאן.
לוובינר בעברית בנושא "למידה עמוקה עם קוד פתוח או עם MATLAB? או גם וגם?", שהוקלט בתאריך 25/8/20 – לחצו כאן.
לוובינר בעברית בנושא "Style Transfer בעזרת למידה עמוקה בסביבת MATLAB", ששודר בתאריך 8/9/20 – לחצו פה.
לוובינר בעברית בנושא "Style Transfer לקבצי וידאו בעזרת למידה עמוקה בסביבת MATLAB", ששודר בתאריך 9/3/21 – לחצו פה.
לוובינר בעברית בנושא "סיווג של מודלים תלת מימדיים בעזרת למידה עמוקה בסביבת MATLAB", ששודר בתאריך 27/12/20 – לחצו פה.
אתם גם מוזמנים להצטרף לשאר האירועים הציבוריים החינמיים שעורכת חברת סיסטמטיקס – לחצו לרשימת האירועים המקצועיים הקרובים.
רוצים לעבור קורס מזורז בעבודה על Deep Learning בסביבת MATLAB ללא התחייבות, בזמנכם החופשי, ומבלי להתקין שום דבר על המחשב? אתם מוזמנים לנסות את ה-Hands On Tutorial החינמי באתר MathWorks . לא צריך רישיון ל-MATLAB בשביל לעבוד איתו, הכל מבוצע דרך הדפדפן. ה-Hands On אמור לקחת לכם כשעתיים, וניתן לעצור אותו בכל שלב ולהמשיך כאשר אתם רוצים. לכניסה – לחצו פה.
רוצים לעבור קורס מזורז שיאפשר לכם להיכנס לעולם ה-Reinforcement Learning? אתם מוזמנים לנסות את ה-Hands On Tutorial החינמי המקביל, הממוקד לתחום זה. לכניסה – לחצו פה.
למידע בנוגע לקורס "Deep Learning עם MATLAB" של יום שלם – לחצו פה. ניתן לבקש פרטים נוספים על ידי לחיצה כאן.
לצפיה בסיפורי משתמשים ישראלים – לחצו פה או פה או פה.
לשיחה עם מהנדס מכירות לצורך קבלת מידע נוסף ו/או תיאום פגישת הדגמה ללא התחייבות – התקשרו לטלפון
03-7660111 או מלאו את הטופס כאן או שלחו מייל אליי ל- royf@systematics.co.il.