יום רביעי, 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 הניתנות להאצה באמצעות כרטיס המסך.



יום ראשון, 10 באוגוסט 2014

Compiler או Coder ? זו השאלה

אחת מהשאלות הנפוצות ביותר שאני נתקל בהן היא "מה ההבדל בין MATLAB Coder לבין MATLAB Compiler". באופן די מבלבל, השמות של שני הכלים מתחילים ב-"MATLAB Co" ומסתיימים ב-"er", אבל הם כמובן כלים אשר משמשים לדברים שונים, כפי שיוסבר בשורות הבאות.
מה יוצרים?
ה-
Compiler משמש ליצירת קבצי הרצה (סיומת .exe) וכן ליצירת C/C++ shared libraries מתוך קבצי MATAB. בשילוב עם כלי ה-Builder השונים, התוצר אף יכול להשתלב בסביבות Java, דוט נט, ואקסל, ובעזרת כלי בשם MATLAB Production Server – הוא גם יכול לפעול על מערכות Production.
לעומתו, ה-
Coder מאפשר להמיר קוד MATLAB ל-C/C++ Source Code קריא, יעיל ונייד (Portable) לפלטפורמות כמו צ'יפים, מעבדי Arm ושאר פלטפורמות אשר תומכות ב-ANSI/ISO C/C++ Code. כמובן שניתן לקמפל את הקוד אשר יוצר ה-Coder לקבלת exe או dll שמיועדים לפעול על desktops.
מהירות ריצה של התוצר
מבחינת מהירות ריצה, התוצר של ה-
Compiler, הזקוק ל-MATLAB Compiler Runtime (MCR) כדי לפעול, רץ פחות או יותר באותה מהירות בה רץ קוד ה-MATLAB, בעוד שזה של ה-Coder בעל פוטנציאל לרוץ מהר יותר (הדבר מאוד תלוי באלגוריתם, שכן יש פונקציות MATLAB-יות שעברו אופטימיזציה). באותה נשימה, כדאי להדגיש שתוצר ה-Compiler יכול לנצל ריבוי ליבות או GPU כדי לרוץ יותר מהר (באם הקוד המקורי השתמש ב-Parallel Computing Toolbox כדי לעשות זאת), ושקוד C אשר נוצר תוך שימוש ב-Coder, הרץ על מחשב מקומי מרובה ליבות, יכול להיתמך על ידי ממשק ה-OpenMP.
איזו פונקציונליות נתמכת ?
יתרון גדול של ה-
Compiler הוא שכמעט כל הפונקציונליות של MATLAB וה-Toolbox-ים השונים נתמכת על ידי הכלי, בעוד שאצל ה-Coder התמיכה פחות מקיפה (אך עדיין - כוללת מאות פונקציות, אופרטורים ו-System Objects). היתרון הזה קריטי אצל משתמשים אשר פיתחו ממשק משתמש גרפי (GUI), שכן אותו ניתן להפיץ רק עם ה-Compiler.
סיכום
שני הכלים מפותחים ונמכרים על ידי אותה חברה, משמע – הם אינם כלים מתחרים, אלא כלים משלימים, ופעמים רבות יצא לי לראות קריאה לפונקציה שהואצה על ידי המרתה לקוד
C (עם ה-Coder) נכללת בתוך GUI אשר מקומפל עם ה-Compiler. היתרון הגדול של שני הכלים הוא שהם מאפשרים למשתמש להפיץ את הקוד אשר כתב בסביבת MATLAB למחשבים שאין עליהם התקנה של MATLAB, וההפצה הזו אינה כרוכה בתשלום כלשהו למעט התשלום הראשון (והאחרון) בעבור הכלי – Compiler, Coder, או גם וגם...
ועכשיו, אחרי שהוסבר ההבדל בין ה-MATLAB Coder לבין ה-MATLAB Compiler - אם ברצונך לבחון את מידת ההתאמה של אחד מהכלים (או שניהם) עבורך, ללא התחייבות מצידך, עם (או בלי) ליווי של מהנדס מטעם סיסטמטיקס, ניתן לפנות אליי באמצעות royf@systematics.co.il
ובקרוב יהיה גם ניתן להירשם לסמינר מקצועי בנושא (ללא עלות מצידך) שיתקיים בחודש נובמבר 2014 בצפון ובמרכז. פרטים על הסמינר יפורסמו באתר סיסטמטיקס

יום ראשון, 6 ביולי 2014

Cody Coursework - פלטפורמה לאוטומציה של תהליך מתן ציונים למשימות תכנות ב-MATLAB

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

לפני כשנתיים וחצי פורסם בבלוג הזה על Cody, פיצ'ר באתר קהילת המשתמשים של MathWorks המאפשר לכם להפגין את יכולות התכנות שלכם ב-MATLAB על ידי פתרון של משימות פשוטות באתר עצמו. הפיצ'ר הזה מאפשר לכם לקבל חיווי על אופטימליות הפתרון שלכם לכל משימה, ולשפר את יכולות התכנות שלכם על ידי התבוננות בפתרונות שהציעו משתמשי MATLAB אחרים. ואם בא לכם, אתם גם יכולים להעלות חידות משלכם, כאשר כל חידה שתפתרו או שתעלו תזכה אתכם בנקודות ותקדם אתכם במעלה הטבלה שבה דירוג כלל משתמשי ה"משחק" !

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

אם אתם מרצים או מתרגלים, אתם מוזמנים לקרוא מידע נוסף בעמוד של Cody Coursework, או לצפות בסרטון המסביר כיצד לבנות קורס בעזרת Cody Coursework. ואם אתם סטודנטים – זה הזמן להעביר את הקישור לפוסט הזה למרצים שלכם, כדי שיהיה להם מספיק זמן להכין קורס בעזרת Cody Coursework עד הסימסטר הבא.

יום שני, 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, המאפשרת ליצור מסיכת סגמנטציה לתמונות צבע על ידי שימוש במרחבי צבעים שונים.
בנוסף, בסמינר הועברה גם הרצאת אורח ע"י אולג טרשנקו, בנושא המרת תמונה מדו-מימד לפסבדו תלת-מימד (שימושי להצגת תמונות שצולמו בטלפון נייד על גבי מכשירי טלויזיה התומכים בתצוגת תלת-מימד סטריאוסקופית).

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


יום שישי, 4 באפריל 2014

מנהל מוצרי עיבוד התמונה והראיה הממוחשבת של חברת MathWorks ביקר בישראל

ברוס טננבאום, מנהל מוצרי עיבוד התמונה והראיה הממוחשבת של חברת MathWorks, ביקר בישראל בתחילת החודש לרגל כנס הראיה הממוחשבת הישראלי השנתי IMVC שמתקיים זו השנה החמישית ברציפות. במסגרת הכנס הרצה טננבאום בפני מאות מהנדסים וחוקרים על "המעבר ממחקר בתחומים עיבוד תמונה וראיה ממוחשבת, למימושים בעולם האמיתי".
טננבאום במהלך הרצאתו בכנס IMVC, לחצו להגדלה
פרט להרצאתו בכנס, קיים טננבאום 8 פגישות עם עשרות משתמשים שונים של כלי MathWorks בארץ, מחברות מובילות מהשוק הרפואי, הביטחוני והאלקטרוני. בפגישות הדגים האמריקאי את היכולות החדשות של כלי עיבוד התמונה והראיה הממוחשבת של חברת MathWorks, ושמע את הדרישות השונות של הלקוחות הישראלים ליכולות נוספות שהיו רוצים לראות בכלים.

בין הדוגמאות שהציג טננבאום במהלך ביקורו ניתן למנות דוגמה לזיהוי תווים (OCR), דוגמה לרגיסטרציה של תמונת IR עם תמונה הנרכשת ממצלמת אינטרנט פשוטה (Intensity-Based Registration), דוגמה לגילוי אוטומטי של פנים (אלגוריתם Viola-Jones) ועקיבה אחריהם (בשיטת (KLT, דוגמה ליכולת להאיץ אלגוריתמי עיבוד תמונה וראיה ממוחשבת באמצעות שימוש בכרטיס המסך (GPU) או באמצעות המרה אוטומטית שלהם לקוד C (בעזרת MATLAB Coder, יכולת אשר שופרה משמעותית בגרסת R2014a), דוגמה לשימוש בפיצ'רים לצורך מציאת אובייקט בתמונה, דוגמה לשערוך פרמטרים אינטרינזים ואקסטרינזים של מצלמה (Camera Calibration), דוגמה לביצוע סגמנטציה של תמונה תוך שימוש בשיטת Active Contours, ודוגמה לזיהוי מחוות.

בדוגמת זיהוי המחוות, יצר האמריקאי skeleton בסביבת MATLAB בזמן אמת, תוך שימוש במערכת חישת-התנועה Kinect (המבוססת על טכנולוגיה של חברת פריים-סנס הישראלית , שנרכשה לאחרונה על ידי חברת Apple). על סמך ה-skeleton מצא האלגוריתם את ידו של המצולם, ותוך שימוש בפעולות מורפולוגיות ו-Blob Analysis – הצליח לקבוע האם האדם מסמן בידו "אבן", "נייר" או "מספרים". בתמונה למטה ניתן לראות את טננבאום מדגים את האלגוריתם בזמן אמת – המצולם מסמן "מספרים", בחלון התצוגה השמאלי מסומן בירוק מרכז הכובד של היד ומסומנות באדום שתי האצבעות אשר זוהו, ובחלון התצוגה הימני מוצגת התמונה הנרכשת בזמן אמת, ועליה ה-skeleton (באדום), אזור היד (ריבוע צהוב), וחיווי המעיד על כך שהאלגוריתם גילה שהאדם בחר ב"מספרים" (scissors). 
טננבאום מדגים זיהוי מחוות, לחצו להגדלה
"זה היה הביקור הראשון שלי בישראל, והוא היה מוצלח במיוחד", סיכם ברוס טננבאום את השבוע העמוס שעבר, "אני בטוח שבמהלך השבוע הזה נחשפו עוד ועוד אנשים ליכולות המתקדמות של כלי MathWorks בתחומים רכישת תמונה (Image Acquisition), עיבוד תמונה (Image Processing), ראיה ממוחשבת (Computer Vision System Toolbox), המרה אוטומטית של קוד MATLAB לקוד C (MATLAB Coder), האצת ביצועי אלגוריתמים (Parallel Computing Toolbox), ניתוח והצגת מידע גיאוגרפי (Mapping Toolbox) וכו'. גם אני למדתי המון על צרכי השוק הישראלי, ואני מאמין שהדרישות השונות שהועלו יקבלו מענה בגרסאות הקרובות של כלי MathWorks. התרשמתי מאוד מהרמה המקצועית של האנשים עימם נפגשתי ומהדברים שאותם הם מפתחים, ואני כבר מצפה לביקור הבא שלי בישראל".
כל הדוגמאות בהן עשה טננבאום שימוש נמצאות ברשותי, במידה ותרצו לקבל אותן או שאגיע על מנת להציגן אצלכם, אנא כתבו לי ל-  royf@systematics.co.il