‏הצגת רשומות עם תוויות GPU. הצג את כל הרשומות
‏הצגת רשומות עם תוויות GPU. הצג את כל הרשומות

יום שני, 14 באוגוסט 2017

מהר יותר, נמוך יותר, חזק יותר! | יכולות משמעותיות חדשות בתחום ה-Deep Learning בסביבת MATLAB

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

יכולות ה-Deep Learning בסביבת MATLAB נסקרו בבלוג הזה לראשונה לפני כעשרה חודשים (קישור למטה). בכנס MATLAB & Simulink 2017 Israel Expo שהתקיים לפני כשלושה חודשים התכבדתי להעביר הרצאה בנושא, בה הדגמתי כיצד סביבת MATLAB מאפשרת להתמודד בקלות עם האתגרים השונים בביצוע משימות בעולם ה-Deep Learning (קישור להרצאה - למטה). כשבוע לאחר הכנס פרסמתי פה סקירה של החידושים בתחום בגרסת ה-MATLAB הנוכחית (קישור למטה), וכעת אני מתכבד לפרסם הצצה ראשונית ליכולות הצפויות בגרסת ה-MATLAB הבאה, R2017b, אשר צפויה להשתחרר בעוד כחודש. הסקירה הזו מבוססת בחלקה על עמוד ה-Deep Learning באתר חברת MathWorks (קישור למטה).


אז מה היכולות החדשות שמתוכננות לגרסה הקרובה?

GPU Coder – כלי חדש המאפשר המרה אוטומטית של קוד MATLAB לקוד CUDA אשר יכול לרוץ על מעבדים גרפיים של חברת nVidia. מדובר בהרחבה של כלי ה-MATLAB Coder (המאפשר להמיר קוד MATLAB לקוד C), אשר לפי ה-benchmarks מאפשרת לקוד לרוץ פי 5 יותר מהר מאשר מה שמאפשרת ספריית Caffe2, ופי 7 יותר מהר מאשר TensorFlow (בבדיקה על פעולות הסקה תוך שימוש ב-Alexnet; יודגש שגם ללא הכלי סביבת MATLAB מהירה יותר מאשר שני הכלים האחרים). בנוסף, על פי ה-benchmarks הכלי מאפשר ניצול של פי 3 פחות זיכרון מאשר TensorFlow דורש. ניתן למצוא למטה קישור לפוסט בנושא.

התממשקות עם TensorFlow - Keras לצורך ייבוא מודלים – בהמשך לתמיכה ב-Caffe אשר נוספה ב-R2017a (ראו למטה סקירה של החידושים בגרסה הנ"ל). כך ניתן ליהנות הן מהמודלים המעולים שפותחו בעבר (או יפותחו בהמשך) בסביבות אלה, והן מנוחות העבודה, הויזואליזציות והמהירות של סביבת MATLAB וכן בסופו של דבר לייצר בצורה אוטומטית קוד CUDA בעזרת הכלי המוזכר למעלה. היכולת צפויה להתווסף במהלך חודש אוקטובר (לחצו לקישור). בהקשר זה יש להזכיר שקיימת אפשרות להמיר מודלים מ-PyTorch ל-Keras (לחצו לקישור), ולכן כעת - באמצעות המרה כפולה - אפשר לעבור מ-PyTorch ל-MATLAB.

תמיכה בארכיטקטורות מתקדמות של רשתות –
RNN היא רשת בעלת לולאות שמסוגלת להתמודד יותר בקלות ויותר בטבעיות עם מידע רציף, כמו וידאו, טקסט, ואודיו. כלומר – מאפשרת לנצל את המידע שנאסף במילה הקודמת במשפט או בפריים הקודם של הווידאו, על מנת להבין את המילה הבאה או הפריים הבא. בגרסה החדשה צפויה תמיכה ב-LSTM - מקרה מיוחד של RNN - אשר מצליח להשתמש במידע שנלמד בתחילת רצף ארוך - גם בשלב יותר מאוחר ברצף. משמש לתרגום, זיהוי כתב יד, זיהוי קול, סיווג תמונות, חיזוי תגיות ועוד.
DAG - רשת שבה הקלט של שכבה יכול להגיע ממספר שכבות, והפלט שלה יכול להגיע אל מספר שכבות, ללא משוב.
GoogLeNet – רשת DAG קטנה, מהירה ומדויקת, אשר זכתה בתחרות ILSVRC בשנת 2014.
הנ"ל בהמשך לתמיכה ב-VGG שנוספה ב-R2017a והרחיבה את התמיכה ב-Alexnet. 
שימו לב שבמהלך חודש אוקטובר צפויה להתווסף גם תמיכה ב-ResNet50 (רשת מקבילית עמוקה מאוד, 177 שכבות, שאומנה באמצעות למעלה ממיליון תמונות, וזכתה ב-ILSVRC  לשנת 2015. לחצו לקישור) בתור Support Package. ובהמשך - תהיה גם תמיכה ב-ResNet101.
תמיכה ב-
InceptionV3 צפויה להתווסף בסביבות סוף השנה.

Custom layer – ממשק ליצירת סוגים חדשים של שכבות באמצעות שפת MATLAB.

Batch normalization – מאפשר להאיץ את תהליך האימון ולהפחית את הרגישות לאתחול, על ידי שימוש בשכבות אשר מנרמלות את ה-activations והגרדיאנטים המתקדמים ברשת, דבר ההופך את אימון הרשת למשימה פשוטה יותר.

סוגים חדשים נוספים של שכבות – Deconv layer ,MaxUnPooling layer (מה שמאפשר לייצר DeconvNet) ועוד...

Semantic Segmentation – סגמנטציה סמנטית הינה טכניקה להפרדה של אובייקט מהרקע ברמת הפיקסל תוך התייחסות זהה לאובייקטים מאותו קלאס (למשל – התייחסות אל שני כיסאות שונים בתור קלאס זהה). בגרסה הקרובה תתווסף אפשרות להוסיף שכבות ,FCN SegNet ו-PixelClassification (מצריך את ה-Computer Vision System Toolbox) ואפשר יהיה ליצור PSPNet (יצריך לבנות את הרשת, המעוניינים יכולים לקבל ממני דוגמה לשימוש ב-Alexnet בתור בסיס; כאמור – לאחר שחרור הגרסה מתוכנן שיחרור של תוסף של ResNet50, מה שיאפשר לשכפל די טוב את ה-PSPNet המקורי). 
בנוסף, לבעלי ה-Computer Vision System Toolbox - בגרסה יתווספו גם כל מיני פונקציות עזר וכל מיני מטריקות בתחום הסגמנטציה הסמנטית, לרבות IoU / Jaccard (מדד טיב בגילוי אובייקטים – היחס בין החיתוך של ה-bounding box של הגילוי עם זה של ה-ground truth, לבין האיחוד שלהם).

Labeling – כידוע, פרט ל-App לביצוע Labeling לסרטוני וידאו (המהווה חלק מה- Automated Driving System Toolbox) קיים גם ה-App המסייע לביצוע Labeling לתמונות (אשר הינו חלק מה- Computer Vision System Toolbox). לאחרון תתווסף תמיכה בתיוג פיקסלים ואזורים עבור משימות סגמנטציה סמנטית. 

Early stopping via validation – יכולת ולידציה אוטומטית לרשת כל מספר איטרציות, ועצירת האימון כאשר מטריקות הולידציה מפסיקות להשתפר. הנ"ל יאפשר להכניס מידע ולידציה לתהליך האימון ולהציג ביצועים ב-training accuracy plot הן על מידע האימון והן על מידע הולידציה (ה-plot המשודרג גם צפוי להכיל לחצן "עצור").

Deep Learning Image Preprocessing – בזמן שהתמונות נקראות ומוזנות לתוך האימון - תהיה אפשרות לבצע פעולות גיאומטריות על מנת להגדיל את מידע האימון. למידע נוסף - לחצו פה. הנ"ל גם יוכל לשמש לצורך יצירת מסווג מתוך מאגר תמונות בעלות גדלים שונים, על ידי הפיכתן בקלות לתמונות בעלות גודל זהה. למידע נוסף - לחצו פה.

Bayesian Optimization – מציאת הגדרות אופטימליות לאימון רשתות עמוקות (מצריך את ה-Statistics & Machine Learning Toolbox)


מה הלאה?

מומלץ לשריין כבר עכשיו את ה-21/11/2017 לסמינר טכני שחברת סיסטמטיקס מתכננת לערוך באיזור הרצליה (השתתפות חינם, אך נדרשת הרשמה מראש באתר סיסטמטיקס, קישור למטה).

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

ואם יש יכולות חדשות בתחום ה-Deep Learning שהייתם רוצים לראות בסביבת MATLAB – אפשר לכתוב אותן בתגובה לפוסט זה. ב-MathWorks כבר החלו לעבוד על הגרסאות הבאות, וכמובן שהמטרה היא שהתוכנה תתאים כמה שיותר לצרכים של המשתמשים. אז קדימה, לא להתבייש :)


קישורים:

* הרשמה לסמינר שיתקיים בתאריך 21/11/2017

* פוסט מלפני כעשרה חודשים בנושא יכולות ה-Deep Learning בסביבת MATLAB
* פוסט בנושא GPU Coder
* וידאו - הרצאה מכנס MATLAB & Simulink 2017 Israel Expo

* קורס חינמי אונליין 
לחצו פה

* סקירה של החידושים בתחום בגרסת ה-MATLAB הנוכחית (R2017a)

* עמוד ה-Deep Learning באתר חברת MathWorks (מומלץ לנווט אל עמוד ה-Features באמצעות שורת התפריטים מתחת לפס הכחול אשר בחלקו העליון של העמוד)


יום רביעי, 17 בספטמבר 2014

R2014a - מוטב מאוחר מאשר לעולם לא

לפני כחצי שנה שחררה חברת MathWorks את גרסת R2014a של כליה, אשר כללה גרסאות חדשות ל-MATLAB ו-Simulink, כלי חדש, ועדכונים לכ-80 כלים נוספים. לאחרונה הסבו את תשומת לבי לכך שטרם פרסמתי סקירה של החידושים בגרסה הנ"ל, בזמן שממש בקרוב אמורה להשתחרר כבר הגרסה השניה של שנת 2014. אז למען הסדר הטוב, הנה רשימה של כמה מהחידושים העיקריים בגרסת R2014a (למרות שעקב הזמן שחלף – הם כבר לא כל כך חדשים...)  

MATLAB – חלון חדש לצפייה בהיסטוריית הפקודות שהוקלדו ולהרצה חוזרת של פקודות רצויות (נפתח על ידי לחיצה על מקש ה"חץ למעלה" כאשר הסמן ב-Command Window. נותן חיווי לגבי פקודות שהרצתן הסתיימה בשגיאה ופקודות שהורצו יחדיו, וכן נותן חיווי לגבי מספר הפעמים שבהם הורצה הפקודה ברציפות. מאפשר לקבל תזמון של משך הריצה של הפקודה וכן לסמן מספר פקודות להרצה מיידית); תמיכה בחומרת Raspberry Pi ובמצלמות רשת מתוך MATLAB ; אפשרות לייצר סקריפט שבאמצעותו ניתן יהיה לשמור את המשתנים ב-Workspace ולשחזרם מאוחר יותר; הצעת תיקונים ב-Command Window לשגיאות הקלדה של שמות פונקציות שפותחו על ידי המשתמש (ולא רק לשמות פונקציות של MathWorks).

Image Processing Toolbox – יכולת להמיר 25 פונקציות נוספות לקוד C באמצעות MATLAB Coder (למשל: edge, imfilter ו-imopen. סה"כ 41 פונקציות מתוך הכלי כבר נתמכות); יכולת להאיץ עוד 9 פונקציות באמצעות כרטיס המסך (למשל: bwdist, imfill ו-imreconstruct. מצריך Parallel Computing Toolbox, סה"כ 46 פונקציות עיבוד תמונה כבר נתמכות); אפליקציית Color Thresholder המאפשרת ליצור מסיכת סגמנטציה לתמונת צבע על ידי שימוש במרחבי צבעים שונים (לחצו לפוסט בנושא).

Simulink – Data Dictionary להגדרת וניהול מידע הקשור למודלים (לחצו לקישור); תמיכה built-in להתקני LEGO MINDSTORMS EV3, Samsung Galaxy Android  ו- Arduino Due; אפשרות להוסיף rich text, תמונות, היפרלינקים וטבלאות במודל לצורך תיעוד משופר; יכולת לשטח תת-מערכת חזרה אל תוך הרמה שמעליה (לחצו לקישור); אפשרות לייצר ממשקי משתמש לבלוקים תוך שימוש ב-dials, sliders ו-spinboxes (מלמעלה למטה, בתמונה הבאה, ניתן ללחוץ כדי להגדיל)

Computer Vision System Toolbox – פונקציה לזיהוי תווים אופטי (OCR); הרחבת התמיכה על ידי ה-MATLAB Coder לצורך המרת קוד MATLAB לקוד C (סה"כ 86 פונקציות ו-System Objects כבר נתמכות); גלאי פיצ'רים BRISK

LTE System Toolbox – גרסת מוצרים ראשונה של MathWorks בה נכלל הכלי החדש לסימולציה של Physical Layer של מערכות תקשורת אלחוטיות הפועלות בתקני LTE ו-LTE Advanced

Simulink Real-Time – כלי המשלב את יכולות ה-xPC Target ו-xPC Target Embedded Option ומשמש לצורך סימולציות ובדיקות בזמן אמת (RST) של אפליקציות.

MATLAB Coder – תמיכה בעשרות פונקציות נוספות וב-System Objects נוספים מתוך ה-Image Processing Toolbox, Computer Vision System Toolbox, Signal Processing Toolbox, Communication System Toolbox ו-DSP System Toolbox. כמו כן – תמיכה גם בפונקציות fminsearch ו-fread; אפשרות לייצר script עבור הגדרות של פרוייקט שהוכן באמצעות ה-GUI שנפתח באמצעות פקודת coder (מאפשר אוטומציה של תהליך יצירת הקוד).

Parallel Computing Toolbox – הוסרה ההגבלה על מספר ה-cores המקומיים בהם ניתן לעשות שימוש (ההגבלה היתה למקסימום 12); תוספת פונקציות MATLAB ו-Image Processing Toolbox הניתנות להאצה באמצעות כרטיס המסך.



יום שני, 23 ביוני 2014

300 משתתפים בסמינרי עיבוד תמונה וראיה ממוחשבת בסביבת MATLAB

כ-300 משתמשים / משתמשים פוטנציאליים בכלי MathWorks הגיעו באמצע יוני לשני סמינרים חצי-יומיים בנושא עיבוד תמונה וראיה ממוחשבת בסביבת MATLAB, שהתקיימו בחיפה (130) וגבעת שמואל (170).
כ-170 משתתפים בסמינר בגבעת שמואל (לחצו להגדלה)

בסמינרים, שההשתתפות בהם היתה ללא עלות, ראו הנוכחים דוגמאות מעניינות לשימוש בכלי
MathWorks, ונחשפו ליכולות שנוספו לכלים בגרסאות האחרונות שלהם. בין הדוגמאות והיכולות שהוצגו:
  •           גילוי אוטומטי של עגבניות בתמונה וניתוח מימדיהן ורמת הבשלות שלהן, לצורך ביצוע ניתוחים סטטיסטיים המשמשים להשבחת זרעי הפירות והירקות שאנו אוכלים. במהלך הדוגמא בוצע שימוש בטיפוס מידע חדש בשם table, שנוסף לסביבת MATLAB בגרסת R2013b.
  •           האצת אלגוריתמי עיבוד תמונה וראיה ממוחשבת באמצעות מחשבים מרובי ליבות, כרטיסי מסך (GPU) והמרה אוטומטית של אלגוריתמים מ-MATLAB לקוד C. חלק מהאלגוריתמים שהואצו עשו שימוש בפונקציות עיבוד תמונה אשר רק לאחרונה התווספו לרשימת הפונקציות הניתנות להאצה בעזרת ה-GPU או על ידי המרה אוטומטית שלהן לקוד C.
  •           עקיבה אחר אובייקטים בסרטון וידאו המצולם בזמן אמת.
  •          רגיסטרציה של תמונת IR עם תמונה ממצלמת רשת בשיטת Intensity-Based-Registration.
  •          זיהוי תווים אופטי (OCR) בעזרת פונקציה שהצטרפה ל-Computer Vision System Toolbox בגרסת R2014a.
  •          סגמנטציה תוך שימוש בשיטת Active Contours בעזרת פונקציה שנוספה ל-Image Processing Toolbox בגרסת R2013a.
  •         אפליקציה בשם Color Thresholder שנוספה ללשונית ה-Apps בגרסת R2014a של ה-Image Processing Toolbox, המאפשרת ליצור מסיכת סגמנטציה לתמונות צבע על ידי שימוש במרחבי צבעים שונים.
בנוסף, בסמינר הועברה גם הרצאת אורח ע"י אולג טרשנקו, בנושא המרת תמונה מדו-מימד לפסבדו תלת-מימד (שימושי להצגת תמונות שצולמו בטלפון נייד על גבי מכשירי טלויזיה התומכים בתצוגת תלת-מימד סטריאוסקופית).

להורדת קבצי הסמינר, לחצו כאן.