מערכות הראייה המשובצות אפשר למצוא בכל מקום במרחבי תחום התעשייה והיישומים, החל במערכות עזר מתקדמות לנהיגה (ADAS) ובמערכות רובוטיות מונחות, עד דימות רפואי ומציאות רבודה (augmented reality). רוחב החדירה של ראייה משובצת על פני מקטעי השוק השונים, הוא עצום. צינור עיבוד הנתונים (pipeline) של התמונה בכיוון אל היעד (היורד) נראה דומה ביותר ברוב היישומים האלו. צינור עיבוד נתונים יורד כזה כולל פונקציות כגון חיבור ממשק אל חיישן תמונה או אל מצלמה, והרכבה מחדש של התמונה בתבנית שמתאימה לעיבוד נוסף. אלגוריתמים שמשמשים לרוב בעיבוד בכיוון היורד הם אלגוריתם לשחזור צבעים (מסנן Bayer), אלגוריתם להמרה עבור מרחב הצבע (colour space) ואלגוריתם להפחתת רעש. האלגוריתמים הייחודיים ליישום, הם אלו שבהם ההבדלים בין היישומים הופכים להיות ברורים. במימוש של אלגוריתמים אלו, איש הפיתוח של מערכות ראייה משובצות משקיע זמן רב ומאמצים משמעותיים ביותר.
לעתים, המימוש של אלגוריתמי יישומים כאלו באמצעות טכניקות כגון זיהוי וסיווג של עצמים, סינון ופעולות חישוב, מורכב. הפיתוח של אלגוריתמי יישומים אלו נעשה יותר ויותר באמצעות מסגרות עבודה של קוד מקור פתוח, כמו למשל OpenCV ו-Caffe. השימוש במסגרות אלו לקוד מקור פתוח מאפשר לאיש הפיתוח של ראייה משובצת להתמקד במימוש של האלגוריתם. שימוש בפונקציות המוגדרות מראש המסופקות בהן ובקניין הרוחני שנכלל בתוכן, מסיר את הצורך להתחיל את שלב הפיתוח מההתחלה ובכך מקצר באופן משמעותי את זמן הפיתוח.
בתלות ביישום, האתגר העומד בפני המתכנן הוא לא רק איך לממש את האלגוריתמים הנדרשים. המפתח של מערכות הראייה חייב גם לענות על שני האתגרים העומדים בפני היישום ובפני הסביבה שלו, תוך כדי כך שהוא לוקח בחשבון מגמות שוק עתידיות.
אתגרים ומגמות אלו כוללים עיבוד וקבלת החלטות בקצה, מאחר שרבים מבין יישומי הראייה המשובצת הם אוטונומיים ולא יכולים להיות תלויים בחיבור לענן המחשוב. אחת הדוגמאות לכך יכולה להיות מערכות רובוטיות שמונחות על ידי ראייה, ואשר נדרשות לעבד מידע שנאסף מהחיישנים שלהן ולפעול על פיו, כדי לנווט בתוך הסביבה שלהן. יישומים רבים מממשים גם מיזוג של חיישנים שבו הם ממזגים כמה צורות של מודליות חיישנים כדי לקבל הבנה מעמיקה של הסביבה ולסייע בקבלת ההחלטות, כאשר בתוך כך הם מעמידים דרישות מוגברות של עיבוד. בגלל ההתפתחות המהירה של החיישנים ושל אלגוריתמי עיבוד תמונה, חייבת להיות למערכת גם יכולת שדרוג, על מנת לתמוך בדרישות המתקדמות ביותר במפת הדרכים של המוצר. העלייה של יישומים אוטונומיים ויישומים שנשלטים מרחוק מביאה עמה אתגרים של פיזור הספק בנצילות גבוהה ואבטחה למניעת ניסיונות של ביצוע שינויים לא מורשים.
כדי לענות על אתגרים אלו, אנשי פיתוח משתמשים בהתקני מערכת על שבב לתכנות מלא (All Programmable System on Chip)ומערכת של ריבוי מעבדים על שבב ((Multi Processor on Chip (MPSoC) של ®Xilinx מהמשפחות של מערכות MPSoC, Zync®-7000 ו- + ™Zync® UltraScale כדי לממש את הפתרון שלהם. התקנים אלו מספקים מעבדים בעלי ביצועים גבוהים, שמחוברים באופן הדוק ללוגיקה ניתנת לתכנות ומאפשרים לאנשי הפיתוח של מערכות ראייה משובצת לשפר באופטימיזציה את הפתרון שלהם.
השימוש במערכות MPSoC, ZyncSoC ו-+ZyncUltraScale מאפשר לאיש הפיתוח לזכות ביכולת הקישור של כל אחד לכל אחד, שנגזרת מהשימוש בלוגיקה ניתנת לתכנות. באמצעות לוגיקה זו שניתנת לתכנות אפשר גם לממש את צינור (או את צינורות) עיבוד נתוני התמונה ולספק עלייה בביצועים בזכות האופי המקבילי שלה. שימוש בלוגיקה ניתנת לתכנות מגדיל את הביצועים והקישוריות של המערכת ואת הביצועים לכל וואט של הספק שנמצא בשימוש, ובכך מספק פתרון שהוא באופן כולל בעל נצילות גבוהה יותר.
אפשר להשתמש בליבות העיבוד לצורך רמה גבוהה יותר של פונקציונליות של היישום, למשל לקבלת החלטות בהתבסס על מידע ותקשורת שמועברים בין מערכות למערכות, ובין מערכות לבין ענן המחשוב.
על מנת לענות על ענייני אבטחה שנוצרים עם יישומים אוטונומיים ושנשלטים מרחוק, מספקות שתי משפחות ההתקנים סביבה מאובטחת בתוך המעבד, עם תמיכה באתחול מאובטח ומוצפן, וכן את הטכנולוגיה Trust Zone (אזור בטוח) של ®ARM בתוך המעבד ואת היכולת לממש פונקציונליות למניעת ביצוע שינויים באופן לא מורשה.
השימוש בהתקני המערכות על שבב בריבוי מעבדים Zync®-7000 ו-®Zync מספק לאנשי הפיתוח של ראייה משובצת יכולת לענות על אתגרים ועל מגמות. לצורך השימוש ביכולות אלו יש צורך במערכת סביבתית לפיתוח שתאפשר לאנשי הפיתוח של ראייה משובצת, לא רק לנצל את היתרונות הגלומים בהתקנים אלו, אלא עליה גם לספק את היכולת להמשיך ולהשתמש במסגרות העבודה הנפוצות בשימוש בתוך הפתרון שלהם. וזה המקום שבו משתלבת reVISION™ Stack.
reVISION Stack
reVISION Stack פותחה מתוך מטרה לאפשר לאנשי פיתוח של מערכות ראייה משובצת לענות על ארבעה אתגרים חשובים שהוגדרו לעיל, אשר ניכרים לעין בתחום של ראייה משובצת. אפשר לסכם את האתגרים האלו כהיענות, יכולת להגדרת קונפיגורציה, קישוריות והגדרה בתוכנה.
כדי לענות על ארבע מגמות מובילות אלו, reVISION Stack משלבת טווח רחב של משאבים ומאפשרת פיתוח של פלטפורמה, יישום ואלגוריתם. ככזו, המחסנית נערכת לשלוש רמות מוגדרות:
- שכבת הפלטפורמה. הרמה הנמוכה ביותר של המחסנית וזו שעליה נבנות השכבות האחרות של המחסנית. ככזו היא מספקת את הגדרת החומרה של מערכות MPSoC, Zync®-7000 ו-, ודרך מערכת הפעלה מותאמת אישית גם את הגדרות התוכנה שמיועדות לתמוך בהגדרות החומרה. הגדרות החומרה יכולות להגדיר את התצורה של המעגל המוכן לפיתוח או לייצור, למשל מערכת על מודול. ממשקי החיישנים והמערכת מוגדרים בהגדרות החומרה. את פלטפורמת החומרה מקבלים באמצעות Vivado® HLX, והיא יכולה להביא לשיפור בלוקים של קניין רוחני (IP) מבית היוצר של xilinx וגם מבית היוצר של ספקים צד שלישי, עם יכולת שימוש בסינתזה ליצירה של קניין רוחני של מומחים. שכבה זו תספק גם מנהלי התקנים (דרייברים) בתוכנה עבור מודולי IP ואם נדרש, קונפיגורציית PetaLinux לא מעודכנת, על מנת לתמוך בסביבה בהגדרת תוכנה ברמה גבוהה יותר.
- הרמה האמצעית של המחסנית מכונה שכבת האלגוריתמים. הפיתוח ברמה זו מתרחש בסביבת ™SDoC מבוססת eclipse. סביבת SDSoC היא מהדר (compiler) לשיפור מערכות באופטימיזציה, אשר מאפשר פיתוח באמצעות סביבה שמוגדרת בתוכנה. חשוב ביותר, בעת הפיתוח של האלגוריתמים, אפשר לזהות צווארי בקבוק בביצועים ולסלק אותם על ידי האצת פונקציות בתוך הלוגיקה הניתנת לתכנות. עבור המשתמש, תהליך זה מתבצע באופן חלק באמצעות השילוב של סינתזה ברמה גבוהה ומסגרת עבודה של קישוריות, כדי להעביר פונקציה מביצוע בתוכנה למימוש בלוגיקה ניתנת לתכנות. OpenCV משמשת ברמה זו כדי לממש את האלגוריתמים המשמשים לעיבוד תמונה עבור יישום מסוים. על מנת להפחית את צווארי הבקבוק שזוהו בתוך האלגוריתם לעיבוד התמונה, reVISION מספקת טווח רחב של פונקציות OpenCV מוכנות להאצה. ברמה זו מסופקת תמיכה גם עבור הספריות הנפוצות ביותר של רשתות עצביות, לרבות AlexNet, GoogLeNet, SqueezNet, SSD ו-FCN.
- השכבה האחרונה היא רמת הפיתוח של היישום ובה משמשות מסגרות העבודה ברמה הגבוהה כגון Caffe ו-OpenVX כדי להשלים את היישום תוך כדי, למשל, מימוש הפונקציונליות של קבלת ההחלטות. פיתוח היישומים ברמה הזו נעשה באמצעות סביבה מבוססת eclipse שמיועדת לליבות המעבד בתוך מערכות MPSoC, Zync®-7000 ו- .
היכולת המתקבלת מ-reVISION Stack מספקת את כל החלקים הנדרשים כדי ליצור יישומי דימות בעלי ביצועים גבוהים על פני טווח רחב של יישומים, מהאינטרנט של הדברים בתחום התעשייתי (IIoT) עד מערכות רובוטיות מונחות ראייה, ומעבר להן.
האצת OpevCV
אחד ההיבטים המעניינים ביותר של reVISION Stack הוא היכולת להאיץ טווח רחב של פונקציות OpenCV בתוך שכבת הפיתוח של האלגוריתמים. בתוך שכבה זו, יש אפשרות לחבר בקבוצות את פונקציות OpenCV שאותן אפשר להאיץ אל תוך אחת מבין ארבע קטגוריות ברמה גבוהה:
- חישובים – קטגוריה זו כוללת פונקציות כגון הפרש מוחלט בין שתי מסגרות, פעולות ברמת הפיקסלים (חיבור, חיסור וכפל), פעולות על גרדייאנטים ועל אינטגרלים.
- עיבוד קלט – קטגוריה שמספקת תמיכה בהמרות של עומק סיביות, פעולות על ערוצים, השוואה (equalisation) של היסטוגרמות, מיפוי חוזר ושינוי גודל.
- סינון – קטגוריה שמספקת תמיכה בטווח רחב של מסננים לרבות Sobel, קונבולוציה בהתאמה אישית ומסננים גאוסייאניים.
- אחרים – קטגוריה שמספקת טווח רחב של פונקציות, בהן נכללות גילוי שפה עם Canny/ Fast/ Harris, יצירת ערכי סף ומסווגי SVM ו- HoG.
אנשי פיתוח יכולים להשתמש בפונקציות אלו כדי ליצור צינור עיבוד נתונים (pipeline) אלגוריתמי בתוך הלוגיקה הניתנת לתכנות של ההתקן הנבחר. היכולת לממש את הלוגיקה באופן כזה מגדילה את הביצועים של מימוש האלגוריתם, באופן משמעותי.
מאחר שספריות OpenCV אלו הן בעלות יכולת האצה מוגדרות בתוכנה ותומכות בסינתזה ברמה גבוהה, ברור שהן יכולות גם לשמש בתוך הכלי Vivado HLS. כך מתאפשרת היצירה של מודולי קניין רוחני שבהם אפשר להשתמש בתוך שכבת הפלטפורמה לאחר שנקבעה הגדרת החומרה.
אחד האלגוריתמים המשמש באופן נפוץ ב- OpenCV הוא גילוי הפינות Harris Corner, אשר משמש כדי לגלות פינות בתוך תמונה. בתוך reVISION Stack קיימת פונקציה מוגדרת מראש עבור גילוי הפינות Harris Corner. בהשוואת הביצועים של גילוי הפינות Harris Corner בתוך reVISION לעומת מימוש רגיל ב-OpenCV, כפי שמודגם בהמשך, נראה ששניהם מספקים ביצועים זהים. עם זאת, שימוש בפונקציה Harris Corner ב-reVISION כשהיא מואצת לתוך PL מספק למשתמש עלייה בביצועי המערכת אשר מאפשרת פתרון מגיב (responsive) יותר, עם נצילות הספק טובה יותר.
אם אנשי הפיתוח בוחרים בתוך reVISION Stack להאיץ פונקציות של OpenCV, הם יכולים לשפר באופטימיזציה את התכנון לשימוש במשאבים ולביצועים בתוך הלוגיקה הניתנת לתכנות. השיטה העיקרית שבאמצעותה אפשר להשיג זאת היא מספר הפיקסלים שעוברים עיבוד בכל מחזור של אות שעון. עבור רוב הפונקציות המואצות הם יכולים לבחור לעבד פיקסל יחיד או שמונה פיקסלים. עיבוד יותר פיקסלים בכל מחזור של אות השעון מגדיל את הדרישה לשימוש במשאבים תוך קיצור זמן העיבוד. עיבוד של פיקסל אחד בכל אות שעון יביא לדרישה מוקטנת של משאבים, על חשבון זמן אחזור גדול יותר. בחירה זו במספר הפיקסלים בכל אות שעון מוגדרת דרך קריאה לפונקציה ומספקת שיטה פשוטה ביותר לבצע אופטימיזציה של התכנון לפי הנדרש.
עם ביצועי תכנון משופרים באופטימיזציה באמצעות ספריות OpenCV שניתנות להאצה, איש הפיתוח של הראייה המשובצת יכול, לאחר מכן, לפתח את הרמות היותר גבוהות של היישום בשימוש ביכולות המסופקות על שכבות האלגוריתמים והיישום של המחסנית.
מסקנות
השימוש בהתקני המערכות MPSoC, Zync®-7000 ו- לתכנות מלא בתוך יישומי ראייה משובצת מביא כמה יתרונות בגמישות, ביצועים, אבטחה ובטיחות, ובעיבוד בעל נצילות גבוהה. פיתוח של היישום בתוך reVISION Stack מאפשר להשתמש בכמה מסגרות עבודה שמשמשות באופן נפוץ ומביא גם לזמני פיתוח קצרים יותר וליציאה מהירה יותר לשוק.