יום שני, 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 מאפשרת לקוד לרוץ פי 14 יותר מהר מאשר מה שמאפשרת ספריית Caffe, ופי 4 יותר מהר מאשר TensorFlow (בבדיקה על פעולות הסקה תוך שימוש ב-Alexnet; יודגש שגם ללא הכלי סביבת MATLAB מהירה יותר מאשר שני הכלים האחרים). בנוסף, על פי ה-benchmarks הכלי מאפשר ניצול של פי 3 פחות זיכרון מאשר TensorFlow דורש.

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

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

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

Batch normalization – מאפשר להאיץ את תהליך האימון.

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

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

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

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

Bayesian Optimization – מציאת הגדרות אופטימליות לאימון רשתות עמוקות.


מה הלאה?

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

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


קישורים:

* פוסט מלפני כעשרה חודשים בנושא יכולות ה-Deep Learning בסביבת MATLAB

* וידאו - הרצאה מכנס MATLAB & Simulink 2017 Israel Expo

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

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


יום שני, 31 ביולי 2017

MATLAB Central – קטעי קוד לשימוש חופשי, פתרונות לשאלות, בלוגים מעניינים ועוד...

קרה לכם פעם שהתיישבתם לכתוב פונקציה מסויימת, וחשבתם לעצמכם ש"מישהו בטח כבר כתב כזה דבר"?

האם אי פעם נתקעתם כי לא ידעתם כיצד לבצע משהו שאמור להיות פשוט ב-MATLAB, ומוקד התמיכה של סיסטמטיקס בטלפון 03-7660111 כבר היה סגור?

אם עניתם "כן" על לפחות אחת מתוך השאלות שלמעלה, MATLAB Central הוא המקום בשבילכם! וגם אם לא...

בכל חודש, מעל 2 מיליון משתמשי MATLAB ו-Simulink מבקרים באתר MATLAB Central כדי:

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

לכניסה לדף הבית של MATLAB Central לחצו פה

או לחצו על הקישורים הישירים הבאים כדי:
- לקרוא פוסט שפורסם פה לפני כשלוש שנים בנושא Cody Coursework  - פלטפומה לאוטומציה של תהליך מתן ציונים למשימות תכנות ב-MATLAB (שימושי למרצים ומתרגלים)


יום ראשון, 18 ביוני 2017

Apps ב-MATLAB

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

מה זה Apps?

אחד הנושאים שחברת MathWorks מקדישה לו הכי הרבה משאבים בשנים האחרונות, הוא שיפור ההנגשה של האלגוריתמים ותהליכי העבודה השונים אלינו המשתמשים, על ידי יצירה של עוד ועוד ממשקים גרפיים להפעלה של פונקציות ולביצוע של משימות מעולם המיחשוב הטכני, ממשקים שנקראים Apps. הממשקים האלה מכילים את כל השלבים הנחוצים להשלמת המשימה – מהטעינה של המידע לתוך ה-App, דרך ביצוע החישובים, ועד קבלת התוצאות. מהיישומונים האלה גם בדרך כלל אפשר לקבל בצורה אוטומטית קוד MATLAB שקול לצורך ביצוע החישובים על נתוני קלט אחרים, אותו קוד שהייתם צריכים להקליד כדי לקבל את אותה תוצאה שקיבלתם כאשר עבדתם בצורה אינטראקטיבית ונוחה עם העכבר.

נשמע מגניב, איפה אפשר למצוא Apps?

מזה כחמש שנים ניתן למצוא לא מעט Apps בלשונית APPS בחלק העליון של סביבת MATLAB, כמובן תלוי בכלים שיש לכם ברישיון שברשותכם. חשוב כבר כעת להבהיר - Apps אלה לא אפליקציות שאתם קונים באיזה App store, אבל  – אתם בהחלט יכולים להוריד Apps בחינם מה-File Exchange של MathWorks (קישור למטה), ואתם אפילו יכולים להכין Apps בעצמכם ולהפיץ אותם בתוך הארגון (קישור למטה).

זה הרגע שלכם – אם כתבתם פעם App, אשמח אם תגיבו למטה ותשוויצו בו J

קישורים שימושיים:
הורדת Apps בחינם מה-File Exchange של MathWorks לחצו פה.
מדריך להכנת Apps משלכם – לחצו פה.
סרטון קצר המדגים שימוש ב-Apps (Curve Fitting App), הורדת Apps, הכנת Apps חדשים והפצה שלהם – לחצו פה.
סרטון קצר המתמקד בשלב אריזת ה-App לצורך הפצה ובשלב ההתקנה של App לחצו פה.
מידע בנושא אריזת Apps לחצו פה.

יום ראשון, 28 במאי 2017

חידושים בעיבוד תמונה, ראיה ממוחשבת ו-Deep Learning בסביבת MATLAB בגרסת R2017a

בשבוע שעבר נערך במלון הילטון כנס MATLAB & Simulink המרכזי לשנת 2017, בהשתתפות כ-600 משתמשים בכלי MathWorks. אחד מהמסלולים המבוקשים בכנס היה מסלול ה"חידושים בעיבוד תמונה, ראיה ממוחשבת ו-Deep Learning", אותו ריכז כותב שורות אלה. במסלול נסקרו החידושים המשמעותיים בתחומים הנ"ל בגרסאות האחרונות של הכלים הרלוונטים. מכיוון שאתם ודאי עוקבים באדיקות אחרי העדכונים המפורסמים בבלוג זה, לא אלאה אתכם בחידושים שנכנסו בגרסאות שאינן הגרסה העדכנית (מי שפספס - יכול ללחוץ פה כדי לעבור לפוסט הקודם בנושא).

אז הנה החידושים המשמעותיים בגרסת R2017a בתחומים עיבוד תמונה וראיה ממוחשבת:

          Registration Estimator App – יישומון אינטראקטיבי המקל על חקר של מגוון טכניקות רגיסטרציה (לחצו למידע נוסף)
          3D Volume Viewer App – יישומון המשמש לצפיה במידע נפחי תלת-ממדי (לחצו למידע נוסף). לידיעת העוסקים בעיבוד מידע נפחי - בגרסה החדשה נוספה תמיכה בעיבוד מידע שכזה במעל 20 פונקציות, וביניהן פונקציות הסגמנטציה בגישת Active Contours ו-Fast Marching
          ביצוע סגמנטציה בשיטת lazysnapping לרקע/אובייקט (מכונה גם graph cut). לתיעוד הפקודה - לחצו פה
         Image Segmenter App היישומון לביצוע סגמנטציה בשיטות שונות כולל את שיטת הסגמנטציה החדשה המוזכרת למעלה, והחל מהגרסה העדכנית – גם תומך בתמונות RGB
          פונקציה לאימון גלאי אובייקטים בגישת Aggregated Channel Features (ACF)
          הערכת ביצועי גלאי אובייקטים בעזרת מטריקות כמו Average Precision או Log-Average Miss Rate

והנה החידושים המרכזיים בגרסת R2017a בתחום ה-Deep Learning:

          אפשרות לבצע אימון בעזרת מספר GPUs על PCs ו-Clusters. השליטה על סביבת הביצוע מתאפשרת באמצעות הפרמטר ExecutionEnvironment (לחצו פה). 
          אפשרות לייבא מודלים מ-Caffe (בגרסה הבאה מתוכננת גם תמיכה ב-TensorFlow). לחצו כדי ללמוד על הפונקציות importCaffeLayers ו-importCaffeNetwork
          יכולת לבצע לוקאליזציה באמצעות Fast R-CNN ו-Faster R-CNN – כהמשך להכנסת התמיכה ב-R-CNN בגרסה הקודמת של הכלים. בהקשר הזה מומלץ להתעדכן גם בחידוש האחרון שהוזכר בחלק הקודם של הפוסט
          טעינת רשתות VGG-16 ו- VGG-19באמצעות שורת קוד אחת - כהמשך להכנסת היכולת לבצע זאת ל-Alexnet בגרסה הקודמת של הכלים
          יכולת להגדיר שכבת רגרסיה בעזרת הפקודה regressionLayer – לצורך אימון CNN לביצוע משימות רגרסיה
          אפשרות לבצע אימון בעזרת CPU בלבד למי שלא מעוניין או לא יכול להשתמש ב-GPU לצורך האימון (ניהול הזיכרון שופר, אך כמובן שעדיין עדיף להיעזר ב-GPU)
          deepDreamImage – לצורך הדגשת הפיצ'רים שהרשת למדה, שימושי לצורך הבנה ואבחון של התנהגות הרשת. לחצו לתיעוד
          Training Accuracy Plot – עוזר להבין האם האימון מתקדם בתהליך הנכון, או שכדאי לעצור ולשנות Setup. לחצו לתיעוד
          App לביצוע Labeling לסרטוני ווידאו (לחצו לתיעוד), כהמשך ל-App המסייע לביצוע Labeling לתמונות הקיים כבר שלוש שנים 

למידע נוסף – מומלץ לבדוק בתיעוד ו/או ב-Release Notes. וכמובן שב-MathWorks עובדים כעת על פיצ'רים מאוד משמעותיים שאמורים להיכנס בגרסת הכלים הבאה, R2017b, שצפויה להשתחרר בסביבות חודש ספטמבר, אז מומלץ לעקוב!


הצגת ה-Registration Estimator App במהלך הכנס