Deep Learning with MATLAB – New Features in R2020a
חידושים משמעותיים רבים נוספו לכלי ה-Deep Learning של חברת MathWorks בגרסת R2020a!
גרסת R2020a של כלי MathWorks, אשר שוחררה בחודש שעבר, כוללת יכולות חדשות רבות ותיקוני באגים בכלים הקיימים בסביבות MATLAB ו-Simulink, ואף שלושה כלים חדשים (לסקירת בעברית של יכולות הגרסה – לחצו פה). מבחינת תחום ה-Deep Learning – כמו בגרסה הקודמת (לחצו לסקירה) – גם בשנת 2020 התחום מקבל (ויקבל) הרבה השקעה.
אז…מה חדש בתחום ה-Deep Learning בגרסת R2020a?
להלן החידושים המרכזיים:
- ממשק לניהול ניסויים – בעזרת ה-Experiment Manager App החדש ניתן לתכנן תרחישי אימון של רשתות למידה עמוקה, להריץ אותם, לנתח את התוצאות ולהשוות בין אימונים שונים, והכל מבלי לכתוב הרבה שורות קוד. בעזרת הכלי אפשר לסרוק תחום ערכים של היפרפרמטר, לבחון את ההשפעה של שימוש ב-Data Sets שונים, או לבדוק מה מניבות ארכיטקטורות שונות עבור אותו מידע אימון. הממשק כולל כלי ויזואליזציה שימושיים כמו Training Plots, מסננים, מטריצות Confusion ואפשרות להגדיר מטריקה-מותאמת-אישית לצורך הערכת הביצועים. לדוגמאות של שימוש בממשק עבור מטרות שונות – לחצו פה.
- הממשק הגרפי לבנייה של רשתות, טעינה שלהן, הצגתן ועריכתן, מאפשר כעת גם לטפל במידע ולאמן רשתות בצורה אינטראקטיבית עבור בעיות של סיווג תמונה ולקבל קוד MATLAB עבור תהליך האימון (ולא רק עבור הגדרת הארכיטקטורה). כלומר, תוך שימוש בממשק נוח, ומבלי לכתוב קוד באופן ידני, ניתן כעת לבצע את כל תהליך העבודה – לרבות טעינה של ה-Data Set, חלוקה שלו לקבוצות אימון ובדיקה, אוגמנטציה, בניית/טעינת/עריכת ארכיטקטורה של רשת, הגדרת הגדרות האימון, הרצת האימון ושמירת התוצאה – ולקבל בצורה אוטומטית קוד MATLAB שהיה צריך לכתוב אלמלא קיומו של ה-App הנ"ל. למידע נוסף על ה-Deep Network Designer App – לחצו פה.
- חידושים בכלי ה-Labeling בסביבת MATLAB – ב-Ground Truth Labeler שב-Automated Driving Toolbox אפשר כעת לבצע תיוג של ענני נקודות מ-Lidar לצורך אימון של רשתות למידה עמוקה. ב-App הנ"ל ניתן כעת גם לתייג סיגנלי וידאו ו-Lidar מסונכרנים מתרחישי נסיעה בצורה סימולטנית (בעבר היה נדרש לבצע את התיוג של הסיגנלים השונים ב-Sessions נפרדים).
לגבי הממשק לתיוג אותות של ה-Signal Processing Toolbox – ניתן כעת לפתוח את ה-Signal Labeler ישירות מתוך תפריט ה-Apps או מתוך ה-Command Window (כלומר לא צריך עוד לעבור דרך ה-Signal Analyzer). בנוסף, אפשר לבצע תיוג אוטומטי של אותות בעזרת כל פונקציה שיכולה לתייג נקודות עניין, איזורי עניין ומאפיינים, ולאחר מכן לבחון את הצעות התיוג השונות ולאשר אותן או במידת הצורך לתקן אותן (קישור לדוגמה).
זה המקום להזכיר שפרט לשני כלי התיוג שהוזכרו לעיל, הארסנל העשיר של כלי ה-Labeling בסביבת MATLAB כולל גם את ה-Image Labeler (לתיוג תמונות), ה-Video Labeler (לתיוג קבצי וידאו ורצפי תמונות) ואת ה-Audio Labeler (לתיוג קבצי אודיו), וכן ראוי לציון גם ה-Big Image Labeler (אפילו שאינו חלק רשמי מהכלים; ה-App הנ"ל, ששוחרר בתחילת השנה, מיועד למשימות תיוג של תמונות גדולות במיוחד, כמו למשל צילומי אויר או תמונות רפואיות/מדעיות ברזולוציה גבוהה). - גילוי אובייקטים בעזרת SSD (קישור לדוגמה), בנוסף לגילויים שהיו אפשריים עד כה בעזרת YOLOv2 ומשפחת
גלאי R-CNN. פרט לכך, יש כעת דוגמה לתכנון, אימון ושימוש ברשת גילוי YOLOv3 (קישור), נוספה מטריקת Average Orientation Similarity להערכת ביצועים של גלאי מאומן וניתן גם לבצע גילוי וסיווג של אובייקטים בענני נקודות תלת-מימדיים (קישור לדוגמה בנושא אימון של רשת הסיווג PointNet). - שימוש ב-Datastores מאוד מקל על עבודה עם אוספים גדולים של מידע, דבר הנפוץ במיוחד בתחום ה-Deep Learning. בעזרת פקודת ה-MATLAB החדשה writeall ניתן לכתוב אל תוך קבצים בתיקייה רצויה את כל המידע שאליו מפנה אוביקט Datastore. תהליך זה של יצירת קבצים מתוך אוביקט Datastore שימושי למשל כאשר מבצעים אוגמנטציות ומעוניינים לשמור בדיסק את המידע החדש (למשל לצרכי שחזור של ניסוי או שיתוף של המידע עם קולגות). בנוסף, מתאפשרת כעת עבודה נוחה עם אוספים גדולים של אותות שנמצאים ב-Workspace או שמורים בקבצים – בעזרת שימוש באוביקט ה-signalDatastore ניתן לטעון את האותות הללו, לבצע להם עיבוד מקדים, להפעיל כל מיני טרנספורמציות וכו'.
- התמיכה ברשתות בעלות מספר קלטים או פלטים הורחבה – בנוסף לאפשרות לתכנן כאלה רשתות באמצעות קוד ולאמן אותן, שנוספה בגרסה הקודמת, ניתן כעת לעבוד עם רשתות שכאלה גם ב-Deep Network Designer App שהוזכר בסעיף 2, וכן לטעון רשתות כאלה לתוך MATLAB מסביבות למידה עמוקה אחרות או לייצא רשתות כאלה מ-MATLAB לסביבות אחרות (לחצו לדוגמה).
- הרחבת יכולות ה-Automatic Differentiation – כדי לאמן רשתות Deep Learning מורכבות ללא צורך בחישוב ידני של הנגזרות, התווספה בגרסה הקודמת האפשרות להשתמש באוסף של טכניקות להערכה נומרית של הגרדיאנטים (לחצו למידע). בגרסה החדשה הורחבה הרשימה של הפונקציות הנתמכות על ידי היכולת הזו. לרשימה המלאה – לחצו פה.
- הרחבת היכולות של לולאות אימון מותאמות-אישית – פונקציית dlnetwork שנוספה בגרסה הקודמת במטרה להקל על פיתוח של ארכיטקטורות למידה עמוקה מתקדמות תומכת כעת גם היא ברשתות עם מספר קלטים ופלטים שהוזכרו בסעיף הקודם, וכן ברשתות עם שכבות 3D. בנוסף, היא תומכת כעת גם בשכבות שהוגדרו על ידי המשתמש אפילו אם הן כוללות פונקציות Backward מותאמות-אישית. ניתן כעת גם להשתמש בלולאת אימון מותאמת-אישית על מנת לבצע Multi-Label Classification (בעיות בהן תצפית יכולה להיות משויכת ליותר מקטגוריה אחת), לחצו לדוגמה. למידע נוסף על Custom Training Loops – לחצו פה.
- הרחבת התמיכה ב-GAN-ים – בגרסה הקודמת נוספו יכולות בניה ואימון של ארכיטקטורות Deep Learning מתקדמות כמו GAN-ים, ומהגרסה החדשה ניתן גם לאמן Conditional GANs (לחצו לדוגמה). כך אפשר להנחות את ה-Generator לייצר תמונות מקלאס ספציפי. בנוסף, ניתן כעת להציג גרף המתאר את התקדמות האימון של ה-Generator וה-Discriminator (לחצו לדוגמה).
- שכבות חדשות, כמו Gated Recurrent Unit (לחצו כאן לדוגמה לשימוש ב-GRU לצורך בניית רשת המבצעת Image Captioning בעזרת Attention) ו-Global Max Pooling (פרט לגרסה עבור מידע 2D, יש גם גרסה עבור מידע 3D). ניתן אף לקחת מודלים העושים שימוש בשכבות אלה ולהעביר אותם בין MATLAB לסביבות למידה עמוקה אחרות, באמצעות פורמט ONNX.
- רשתות חדשות ניתנות לטעינה באמצעות שורת קוד אחת. למגוון העשיר של הרשתות המאומנות נוספו גם
DarkNet-19 ו-DarkNet-53, וניתן כעת להשתמש גם בהן כדי לבצע סיווג של תמונה, לחלץ פיצ'רים או לבצע Transfer Learning (לחצו לדוגמה). בנוסף, ניתן כעת לטעון גרסאות לא מאומנות של רשתות נפוצות על ידי קריאה לפונקציה שטוענת את הרשת המאומנת ובחירת האופציה "none" עבור ה-"Weights", וזאת ללא צורך בהתקנה של ה-Support Package החינמי שנדרש להתקין באם מעוניינים הן בארכיטקטורה והן במשקולות. בהקשר זה יצוין כי פקודת squeeznet ניתנת כעת להפעלה ללא צורך בהתקנה כלשהי, והרצת הפקודה תביא לטעינת הרשת המאומנת (ארכיטקטורה ומשקולות). - סוגים נוספים של שכבות וארכיטקטורות ניתנים כעת להמרה אוטומטית לקוד ++C יעיל בעזרת ה-MATLAB Coder, דבר שמאפשר להמיר בקלות עוד רשתות עמוקות מקוד MATLAB לקוד הפועל על מעבדים של אינטל ופלטפורמות של ARM. לרשימה המלאה של רשתות מאומנות, שכבות וקלאסים אשר נתמכים – לחצו פה.
- יצירת אוטומטית של קוד CUDA מתוך MATLAB עבור מגוון רשתות חדשות, כמו SSD (קישור לדוגמה) ורשתות הסיווג DarkNet-19 ו-NASNet-Large. כמו כן, נוספו שכבות נוספות לרשימת השכבות אשר נתמכות, כמו BiLSTM. הנ"ל מאפשר להמיר בקלות עוד רשתות עמוקות מקוד MATLAB לקוד הפועל על כרטיסי GPU של Nvidia. לרשימה המלאה של רשתות מאומנות, שכבות וקלאסים אשר ניתן להמיר אותם לקוד CUDA בצורה אוטומטית בעזרת ה-GPU Coder – לחצו פה.
- ב-GPU Coder שהוזכר בסעיף הקודם נוספה תמיכה בהמרה לקוד CUDA של פונקציות נוספות מכלים כמו MATLAB ,Image Processing Toolbox ,Computer Vision Toolbox ,Signal Processing Toolbox ו-Audio Toolbox. לרשימה המלאה של הפונקציות שנתמכות – לחצו פה. הנ"ל מאפשר לייצר קוד CUDA לאלגוריתם מלא, הכולל עוד מרכיבים מעבר לחלק של ה-Deep Learning. פרט לכך, יש כעת תמיכה ביצירת קוד CUDA עבור טיפוסי מידע מסוג Half-Precision Floating Point, אשר צורכים רק 16 ביט של זיכרון, אך הייצוג שלהם מאפשר להם לטפל בטווח דינמי רחב יותר מאשר טיפוסי מידע כמו Fixed-Point או Integer מאותו גודל. בנוסף, ניתן לבצע קוונטיזציה לרשת למידה עמוקה באמצעות ה-Deep Network Quantizer, על מנת להקטין את צריכת הזיכרון שלה (למידע נוסף ודוגמה – לחצו פה; לסרטון קצר – לחצו כאן; להורדת ה-App ללא עלות – לחצו פה).
- Reinforcement Learning עם TD3 – פרט לתמיכה שהיתה קיימת באימון תוך שימוש באלגוריתמים דוגמת
Q learning, PG, PPO, DQN, DDPG, A2C/A3C ו-SARSA, ניתן כעת גם לאמן Policies תוך שימוש באלגוריתם TD3. בהשוואה ל-DDPG, אלגוריתם Twin-Delayed Deep Deterministic, המיועד גם הוא למרחבי פעולה רציפים, מניב בדרך כלל תוצאות איכותיות יותר ומהר יותר. למידע נוסף על ה- Reinforcement Learning Toolbox – לחצו פה, ולקריאה על חידושים נוספים בכלי – לחצו כאן. - ב-Text Analytics Toolbox נוספו מגוון פונקציות, למשל עבור יצירה של סיכומים למסמכים (קישור) ועבור מציאת דמיון בין קטעי טקסט (קישור). למידע נוסף על הכלי – לחצו פה, ולמידע ממוקד על חידושים אחרים בו בגרסת R2020a – היכנסו לכאן.
ויש כמובן עוד חידושים עליהם ניתן לקרוא בתיעוד…
לסיכום, היכולות החדשות בתחום ה-Deep Learning בסביבת MATLAB יחד עם היכולות שהיו קיימות בכלי בעבר ושקיימות בכלים משלימים, הופכות את MATLAB לפלטפורמה מובילה בתחומי ה-Data Science and Machine Learning, כפי שגם קבעה בתחילת השנה חברת המחקר והייעוץ בטכנולוגיית המידע Gartner, אשר מייעצת באופן אובייקטיבי ליותר מ-15,000 חברות ברחבי העולם (לחצו לקריאת הניתוח של Gartner).
בין היתרונות של MATLAB בעולם ה-Deep Learning:
- Labeling מהיר ונוח, באמצעות מגוון Apps. מאפשר לסמן bounding boxes בתמונות/וידאו או לבצע תיוג ברמת הפיקסל לצורך סגמנטציה סמנטית ואף לבצע אוטומציה לתהליך וכן לתייג ענני נקודות מ-Lidar, קטעי אודיו ואותות אחרים.
- בניה נוחה של רשת חדשה או עריכה קלה של רשת מוכנה, ביצוע של אוגמנטציות בקלות והרצת אימון באמצעות ממשק גרפי (אפשר גם עם פקודות).
- מהירות אימון (ניתן להאיץ את התהליך עוד יותר באמצעות שימוש פשוט ונוח בחומרות נוספות כמו מספר GPUs, חוות מחשבים וענן) ומהירות Inference.
- אפשרות להמיר בצורה אוטומטית את קוד ה-MATLAB לקוד CUDA מהיר וחסכוני בזיכרון לצורך מימוש על מערכות Embedded או לקוד ++C עבור מעבדים של אינטל ופלטפורמות ARM. בעוד מספר שבועות גם צפויה להתאפשר המרה לקוד HDL עבור FPGAs ו-SoCs.
- אפשרות לייבא לתוך MATLAB מודלים שפותחו ואומנו בסביבות Deep Learning אחרות ולייצא מודלים מ-MATLAB אליהן, באמצעות פורמט ONNX.
- נוחות עבודה – הודות לשימוש בסביבת פיתוח עשירה המיועדת למהנדסים ומדענים, אשר גם כוללת כלים מתחומים נוספים, ובכך מאפשרת לפתח מוצר שלם (כלומר – לא לבצע רק Deep Learning, אלא הרבה מעבר לכך).
- תוכנה בעלת שלבי פיתוח "מסודרים" וצוותי הנדסת איכות מקצועיים (בקשות ליכולות חדשות נבחנות, ככל שמתגלים באגים הם מטופלים, וכל הכלים מהתחומים הנוספים שהוזכרו לעיל עובדים יחד זה עם זה).
- ממשק יציב, תאימות לאחור ותמיכה מלאה במערכת ההפעלה Windows בנוסף לתמיכה במערכות הפעלה אחרות.
- יכולות ויזואליזציה ודיבאגינג – צפיה ב-Activations, הצגת Deep Dream Images, צפיה במשקולות, בחינה של התקדמות האימון בכיוון הנכון, תצוגה גרפית של הרשת לצורך איתור בעיות אפשריות לפני ביצוע האימון, הצגת Class Activation Mapping וכו'…
- תיעוד מקיף וברור ומגוון דוגמאות מוכנות לשימוש, כמיטב המסורת של סביבת MATLAB.
- תמיכה טכנית מקצועית בטלפון 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 – לחצו פה.
אתם גם מוזמנים להצטרף לשאר האירועים הציבוריים החינמיים שעורכת חברת סיסטמטיקס – לחצו לרשימת האירועים המקצועיים הקרובים.
רוצים לעבור קורס מזורז בעבודה על Deep Learning בסביבת MATLAB ללא התחייבות, בזמנכם החופשי, ומבלי להתקין שום דבר על המחשב? אתם מוזמנים לנסות את ה-Hands On Tutorial החינמי באתר MathWorks . לא צריך רישיון ל-MATLAB בשביל לעבוד איתו, הכל מבוצע דרך הדפדפן. ה-Hands On אמור לקחת לכם כשעתיים, וניתן לעצור אותו בכל שלב ולהמשיך כאשר אתם רוצים. לכניסה – לחצו פה.
למידע בנוגע לקורס "Deep Learning עם MATLAB" של יום שלם – לחצו פה. ניתן לבקש פרטים נוספים על ידי לחיצה כאן.
לצפיה בסיפורי משתמשים ישראלים – לחצו פה או פה או פה.
לשיחה עם מהנדס מכירות לצורך קבלת מידע נוסף ו/או תיאום פגישת הדגמה ללא התחייבות – התקשרו לטלפון
03-7660111 או מלאו את הטופס כאן או שלחו מייל אליי ל- royf@systematics.co.il.