יום שני, 23 באפריל 2018

עברנו למשכננו החדש :)

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

יום שני, 26 במרץ 2018

Deep Learning with MATLAB in R2018a

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

כזכור – כבר בגרסה הקודמת היו ל-MATLAB יתרונות רבים בהשוואה לחלופות החינמיות, למשל:
·         תיוג מהיר ונוח, באמצעות Apps (לחצו למידע על ה-Image Labeler, המאפשר לתייג תמונות בקלות ואף לבצע תיוג ברמת בפיקסל לצורך סגמנטציה סמנטית; או לחצו למידע על ה-Ground Truth Labeler, המאפשר לתייג במהירות וידאו או סדרות של תמונות)
·         מהירות אימון (ראו בתחתית הפוסט שנפתח על ידי לחיצה פה)
·         מהירות Inference (לחצו לפוסט בנושא)
·         אפשרות להמיר בצורה אוטומטית את קוד ה-MATLAB לקוד CUDA מהיר וחסכוני בזיכרון לצורך מימוש על מערכות Embedded (לחצו לפוסט בנושא ה-GPU Coder)
·         נוחות עבודה – הודות לשימוש בסביבת פיתוח שנועדה למהנדסים ומדענים
תמיכה מלאה במערכת ההפעלה Windows – בנוסף לתמיכה במערכות הפעלה אחרות
·         יכולות ויזואליזציה ודיבאגינג – צפיה ב-activations, הצגת Deep Dream Images, צפיה במשקולות, בחינה של התקדמות האימון בכיוון הנכון וכו'...
·         תמיכה טכנית מקצועית בטלפון 03-7660111 לבעלי רישיון תחת חוזה שירות
וכל זאת - מבלי להתפשר על האפשרות לייבא מודלים שפותחו ואומנו בסביבות החינמיות (Keras, Caffe, PyTorch). בקרוב, אגב, גם מתוכננת תמיכה ב-ONNX לצורך ייבוא וייצוא של המידע בין MATLAB והסביבות האחרות (עריכה - התמיכה כבר קיימת).

אז...מה נשתנה בתחום ה-Deep Learning בגרסת R2018a? להלן החידושים המרכזיים:
·         תצוגה גרפית של הרשת בעזרת ה-Network Analyzer App – לצורך איתור בעיות אפשריות לפני ביצוע האימון (לחצו פה)
·         ייצוא/ייבוא מודלים בין MATLAB ופורמט ONNX – ייצוא המודלים מ-MATLAB מאפשר שימוש בהם בתוך סביבות התומכות בפורמט זה, דוגמת TensorFlow, Caffe2, CNTK, MXNet, CoreML. ייבוא המודלים מאפשר להכניס לתוך MATLAB מודלים מסביבות כמו CNTK, PyTorch, Chainer, Caffe2. למידע נוסף - לחצו פה
·         יצירה, אימון וניתוח של רשתות DAG – אימון מהיר יותר (בעזרת GPUs), חישוב והצגה של activations של שכבות ביניים, החלפה פשוטה יותר של שכבות בעת עריכת רשתות מסוג זה
·         המרה של קוד MATLAB לקוד CUDA – אפשר כעת להמיר גם רשתות DAG ולייצר קוד CUDA מתוך רשתות נפוצות נוספות כמו GoogLeNet, ResNet (50/101), SegNet ו-SqueezeNet (לטעינת הרשת האחרונה בצורה נוחה - לחצו פה). לרשימת הרשתות והשכבות הנתמכות על ידי ה-GPU Coder לחצו פה. בנוסף, יש כעת אפשרות להשתמש ב-TensorRT בעת יצירת קוד CUDA, בהמשך לרמיזה שנרמזה בבלוג זה בעבר (לחצו לקריאה, לפני הגרף השני), מה שיאפשר קבלת קוד CUDA מהיר במיוחד
·        תמיכה ביצירת קוד עבור חומרות נוספות – ה-GPU Coder מסוגל כעת לייצר קוד C עבור רשתות גם עבור מעבדים של אינטל (Intel Xeon CPU, למשל) ופלטפורמות Arm (Neon), דבר שיאפשר, למשל, לטרגט טלפון אנדרואיד
·         יכולות חדשות באפליקציות התיוג  ה-Ground Truth Labeler תומך כעת בסגמנטציה ברמת הפיקסל, ב-Sub-Labels וכן בצירוף Attributes ל-labels (הנ"ל יכולים להיות ערכים נומרים ועשויים לסייע בתרחישי תיוג לצורך משימות רגרסיה). גם הוא וגם ה-Image Labeler מקלים כעת עוד יותר על ביצוע תיוג ברמת הפיקסל, באמצעות אופציית ה-Smart Polygon המאפשרת לעדן את הסגמנטציה בתוך איזור עניין על ידי סימון פיקסלים בתור רקע או אובייקט
·         ולידציה של Custom Layers  - כזכור, החל מהגרסה הקודמת ניתן לייצר סוגים חדשים של שכבות באמצעות שפת MATLAB, והחל מהגרסה הנוכחית – ניתן לבצע ולידציה אוטומטית לטיפוסי המידע והמימדים, לבחון תאימות מבחינת עבודה עם GPU ולוודא שהגרדיאנטים הוגדרו כנדרש
·         תמיכה של רשתות CNN במידע תמונתי בעל יותר מ-3 ערוצים (מולטיספקטרלי)
·         שיפור מהירות ריצה על CPU באימון ו-Inference
·         אופטימייזרים חדשיםAdam ו-RMSProp (בנוסף ל-SGDM)
·         המימד השלישי של הקלט לא חייב להיות רק 1 או 3
·         הקפאת שכבות – נוספה הפקודה freezeWeights שגורמת לכך שהפרמטרים של שכבות שרוצים להקפיא - פשוט לא יתעדכנו במהלך האימון. ומכיוון שלא מחשבים את הגרדיאנטים של השכבות האלה - האימון יהיה מהיר יותר. ואגב, אם ה-data set החדש שבו משתמשים ב-transfer learning הוא קטן, אז הקפאה של השכבות הראשונות יכולה למנוע overfitting שלהן אליו. 
·         שימוש בטכניקת Gradient Clipping כדי למנוע "התפוצצות" של הגרדיאנטים ברשתות עמוקות במיוחד (שימושי לרוב בעבודה עם RNNs)
·         LSTM תמיכה ברשתות LSTM עם שכבת רגרסיה בקצה; תמיכה ברשתות LSTM דו-כיווניות (כדי ללמוד מכל ההקשר של הרצף)

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

רוצים להתנסות בעבודה על Deep Learning בסביבת MATLAB ללא התחייבות, בזמנכם החופשי, ומבלי להתקין שום דבר? אתם מוזמנים לנסות את ה-Hands On Tutorial החינמי באתר MathWorks. לא צריך רישיון ל-MATLAB בשביל לעבוד איתו, הכל מבוצע דרך הדפדפן. ה-Hands On אמור לקחת לכם כשעתיים, וניתן לעצור אותו בכל שלב ולהמשיך כאשר אתם רוצים. לכניסה – לחצו פה.

מעוניינים להשתתף בכנס מקצועי בנושא Deep Learning, בו ירצו מומחים מהתעשייה והאקדמיה? בתאריך 7/5/18 מתוכנן כנס באיזור הרצליה, ההשתתפות ללא עלות, אך דרושה הרשמה מראש. לרישום מוקדם – לחצו פה.

לעמוד ה-Deep Learning באתר MathWorks לחצו פה.

יום רביעי, 28 בפברואר 2018

לא רוצים שתיפול עליכם עז בשלב האינטגרציה המערכתית? זה הזמן ל-Speedgoat!

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


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

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


השימושים הנפוצים במערכות אלו הם:
-          תכנון בקרים בצורה מהירה (rototypeRapid Control P) - חיבור ה-PC שלכם אל מחשב זמן-האמת מאפשר לכם לשלוט בבקרת המנוע ללא צורך בתהליך של יצירת הקוד, הטמעתו בבקר ובדיקת תגובתו. בשיטת עבודה זו תוכלו במיידי לשנות את פרמטרי הבקרה, לייצר קוד, לדגום את התנהגות המפעיל ולנתח את הנתונים על פלטפורמה אחת.
-         בדיקת התנהגות המודל (oopHardware In the L) – בשיטה זו מסמלצים את המודל ובודקים את התנהגותו אל מול מערכת האלגוריתמיקה שמפעילה אותו (בקר, מחשב וכד'). לא תמיד תוכלו לבצע בדיקות על החומרה או אב-הטיפוס הקיים (טרם יוצר, עלות גבוהה, חשש לכשל וכד') ולכן מבצעים זאת על גבי מכונת זמן-האמת.

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

כחלק מן העבודה המשותפת בין MathWorks ל Speedgoat המוצרים של שתי החברות נבדקים זה מול זה לפני כל גרסה חדשה שיוצאת. בנוסף סיסטמטיקס הינה הנציגה של שתי החברות הללו בישראל, כך שיש ללקוחות מוקד אחד שנותן מענה מקצה לקצה על כל שאלה או בעיה שעלולה לצוץ, וכמובן שניתן להתקשר אלינו כדי לקבל פרטים נוספים על הכלים וההתאמה שלהם עבורכם (03-7660111).

למידע נוסף:



יום רביעי, 31 בינואר 2018

חי, חי, חי, כן, הסקריפט הוא חי!

אני מתכבד לארח בבלוג פעם נוספת את שירן גולן, העובדת יחד עמי כמהנדסת אפליקציה בחברת סיסטמטיקס. הנה מה שהיה לשירן לכתוב לכם על Live Scripts, שהם סקריפטים מאוד מיוחדים שאותם ניתן לכתוב ולהריץ בעזרת ה-MATLAB Live Editor:


ה-MATLAB Live Editor הוא סביבה שמאפשרת לחקור את המידע שלנו באופן אינטראקטיבי ויעיל ולהפוך את הקוד שלנו למעין סיפור או דו"ח. הדו"ח יכול להכיל בתוכו לא רק את הקוד (כפי שהEditor- הישן והאהוב מכיל), אלא גם את תוצאות ההרצה שלו, כותרות, קישורים, משוואות, תמונות וטקסט בכל שפה שהיא. ניתן לגרור תמונות וטקסט מאפליקציות דוגמת Word ישירות  לתוך ה-Live Script שלנו, אותו אנו עורכים בLive Editor-ניתן גם לבחור אם תוצאות ההרצה יופיעו בתוך הקוד, או לצידו כפי שמופיע בתמונה הבאה (לחצו על התמונה כדי להגדילה).


אחד מהפיצ'רים החשובים של ה-MATLAB Live Editor הוא שהוא מקפיץ על המסך חלון שעוזר לנו לכתוב את הקוד שלנו, ולהשתמש נכון ובאופן יעיל בפונקציות להן אנו קוראים בקוד. ראו בצד שמאל למטה:


ניתן לשתף את ה-Script שכתבנו ב-Live Editor עם קולגות, כך שיוכלו לקרוא את הסיפור של הקוד שלנו, לראות תוצאות ולערוך שינויים בקלות, ואפשר גם ליצור PDF או html מתוכו.

רוצים להתחיל?
כל שעליכם לעשות זה לפתוח קובץ חדש, אך במקום לבחור באופציה Script (שנותנת קובץ m שאיתו אתם כבר רגילים לעבוד), עליכם לבחור Live Script ולקבל קובץ mlx, כפי שניתן לראות למטה:


שימו לב כי התמיכה ב-Live Scripts היא החל מגרסת R2016a, וניתן לפתוח את ה-Live Scripts כ-Scripts רגילים בגרסאות R2014b, R2015a, R2015b

למידע נוסף - לחצו פה.
לדוגמאות - דוגמה 1, דוגמה 2.

יום חמישי, 28 בדצמבר 2017

MATLAB מכל מקום - דפדפני אינטרנט, מכשירי iPhone ו-iPad והתקני Android!

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

למה זה טוב?
MATLAB Online מאפשר לכם לשחזר בקלות גרסאות קודמות של הקבצים שלכם (לחצו להסבר).
MATLAB Online נותן לכם את האפשרות לשתף פעולה עם אחרים הן על ידי שיתוף קבצי הקוד שלכם (לחצו להסבר) והן על ידי יצירת קבצי HTML ו-PDF ושיתוף ה-URL שלהם (לחצו להסבר).
בשילוב עם MATLAB Drive החינמי עומדים לרשותכם 5GB לצורך אחסון, ניהול וגישה לקבצים שלכם מכל מקום.
וכל מה שאתם עושים ב-Session נשמר, אפילו אם תבצעו לוג-אין ממחשב אחר, ואתם גם יכולים להשתמש ב-MATLAB Drive Connector החינמי כדי לסנכרן את הקבצים שלכם בין MATLAB Online לבין המחשבים השונים שלכם, דבר שיחסוך לכם את הצורך לבצע העלאות והורדות ידניות.
מוכנים לנסות? לחצו פה!

ואם מתחשק לכם להתחבר ל-MATLAB ממכשירי ה-iPhone, iPad או Android שלכם – בדקו את MATLAB Mobile החינמי – שמאפשר לכם להפעיל MATLAB ממכשירים אלה, להתחבר מהם אל המחשב שלכם מרחוק כדי לראות מה הסטטוס של ריצה שהרצתם, ואף נותן לכם את האפשרות לרכוש מידע מחיישנים שנמצאים בהתקן שלכם ולהעביר את המידע הזה להמשך ניתוח באמצעות MATLAB.