1 / 45

Implementing object recognition algorithm on FPGA

מצגת סוף – פרויקט חד סמסטריאלי. Implementing object recognition algorithm on FPGA. מגישים: יותם דראש דניאל פרגו. מנחה: מייק סומשיק. מטרת הפרויקט. המטרה : מימוש אלגוריתם OPTIC FLOW על גבי FPGA בזמן אמת דגשים: הכרה ולמידת כלי הפיתוח של חברת Gidel : ProcWizard / ProcAPI

ailis
Télécharger la présentation

Implementing object recognition algorithm on FPGA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. מצגת סוף – פרויקט חד סמסטריאלי Implementing object recognition algorithm on FPGA מגישים: יותם דראש דניאל פרגו מנחה: מייק סומשיק

  2. מטרת הפרויקט המטרה:מימוש אלגוריתם OPTIC FLOW על גבי FPGA בזמן אמת דגשים: • הכרה ולמידת כלי הפיתוח של חברתGidel: ProcWizard/ProcAPI • למידת כלי הפיתוח של MathWorks : Simulink & HDL Coder • אימפלמנטציה של אלגוריתם Optical flow בזמן אמת על FPGA בעזרת הכלים הנלמדים

  3. OPTIC FLOW

  4. זרימת הנתונים הקלט יהיה וידאו ב 15FPSבממדים של 320x240 אבל לפי הגדרת הפרויקט, נקטין את גודל התמונה כך שלא יהיה צורך בשימוש בזיכרון חיצוני לטובת עיבוד המידע

  5. GENERAL SCHEME

  6. INSIDE THE FPGA Ready? trigger

  7. שפה משותפת • במימוש יש שימוש אינטנסיבי בשלוש אלמנטים מיוחדים • Line Buffer- בשימוש כאשר יש צורך לדעת את הסביבה של כל פיקסל • Write Switch– בשימוש כאשר יש צורך בזיכרון לקריאה וזיכרון לכתיבה • אינדקס לכתיבה ואינדקס לקריאה – בשימוש כאשר עלינו קודם לקרוא סגמנט מזיכרון לפני שמתחילים לכתוב לזיכרון

  8. Line Buffer 6 2 1 1 7 5 4 1

  9. Write Switch שני בנקי זיכרון - אחד לכתיבה ואחד לקריאה, אשר מחליפים תפקיד בסיום כל פריים. Write to RAM 1 Read from RAM 0 0 1 1

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

  11. The Controller • הבקר הינו מכונת מצבים. • כל מצב מתאים להפעלת חלק לוגי אחר בתהליך החישוב • בכל מצב יש שרשרת החלטות פנימית והפעלת אותות מתאימה

  12. בקר: מכונת מצבים

  13. הזיכרון • כל הזיכרונות ממומשים בעזרת RAM • לכל הזיכרונות, מלבד זיכרונות F[xx] קיים write switch להבחנה בין המידע שנכתב לבין המידע שנקרא, כפי שצוין מקודם.

  14. לוגיקה חישובית • חישוב נגזרות במרחב של התמונה • חישוב נתוני עזר בהתבסס על התמונה הנוכחית והנגזרות של התמונה הקודמת • חישוב וקטורי התנועה ושמירתם • טיפול בתנאי שפה – מסגרת התמונה

  15. שיטות בדיקה • מציאת החלק הבסיסי ביותר שניתן לבדיקה ומציאת הקוד המקביל לו ב Matlab • הכנסת הקלט הפשוט ביותר והמתאים לרכיב זה • טעינת נתונים נכונים מה workspace- ובדיקת התוצאות על ידי יצוא נתוני הסימולציה ל workspace. • שימוש בסקופים וגרפים • השוואת הגרפים המתקבלים לתרשים אותות צפוי.

  16. דוגמא:בדיקת כתיבה לזיכרון

  17. דוגמא: בדיקת כתיבה לזיכרון • הקלט:סדרתי • בדיקה:שהכתיבה מתבצעת כראוי ובתזמון הנכון Data Address Write Enable

  18. דוגמא לבדיקת Fxx תןצאות קוד המטלב המקורי תוצאת מערכת הסימולינק השוואת התוצאות על ידי פונקציית השוואה

  19. שימוש בסקופ והשוואה לתרשים אותות

  20. סוף סקירת מצגת אמצע

  21. Fixed point • ייצוג מספרים לא שלמים בצורה פשוטה לעיבוד חומרתי. • המספר מיוצג על ידי מספר קבוע של ספרות בינאריות אשר מהוות את החלק השלם ומספר קבוע של ספרות בינאריות המייצגות את השבר. • זהו ייצוג לא מדוייק! • ייצוג זה נחוץ לפעולה חלקה של כל מעבד אשר לא מכיל יחידת FP. • רוב מעבדי DSP עובדים בייצוג זה.

  22. Simulink Fixed Point Tool • מספק תמיכה לסימולציה בתנאי fixed point . • תומך HDL Coder • מאפשר השוואה נוחה של תוצאות בין floating point וfixed point • מציע, על סמך מבחן קלט-פלט אורך מילה ויחס שלם\שבר. • מאפשר שינוי רוחבי של פרמטרי הייצוג לאחר מעבר ראשוני של פרויקט ל fixed point.

  23. קשיים עם fixed point • המעבר ל fixed point איננו טריוויאלי. • קיים קושי במעבר נתונים בין מודלים של simulink ושל matlab. • פעולות אריתמטיות "מתנהגות" באופן שונה • הטיפול ב fixed point בקוד מטלב הוא מסורבל • מציאת ערכי מילה\שבר מתאימים הינם עדיין עניין של ניסוי וטעייה

  24. התקדמות עם fixed point • בתחילת המעבר התקשינו מאוד ולא הצלחנו להמיר אפילו חלקים קטנים של קוד ל fixed point • ישבנו עם מייק ואחרי הנחייה ועזרה צמודה שלו הצלחנו להעביר את פונקציית הנגזרות ל fixed point • בעזרת הידע שלמדנו עם מייק ראינו כי המעבר אפשרי אך ההתקדמות בו הייתה איטית ומסורבלת ביותר.

  25. תוצאות • לאחר בדיקת כל אותות הביניים עוברים לבדיקה המלאה –וקטורי התנועה U,V • הבדיקה מתבצעת תחילה על 2 תמונות פשוטות והשוואת התוצאות לקוד המקורי • הכנסת 2 תמונות מתוך הסרט והשוואה לקוד המקורי • הכנסת סרט וידאו מלא והשוואה על ידי סקריפט לקוד המקורי

  26. At first: only 2 frames

  27. Simple Picture

  28. U-Result

  29. V-Result

  30. Video בדיקת המערכת על סרט וידאו: • 283 פריימים • גודל פריים: 120x160 • נבחן את התוצאות המתקבלות, בשקפים הבאים

  31. Full Video Input

  32. Appearance (frames 16-17)

  33. U-Result

  34. V-Result

  35. Hand Shake (frames 136-137)

  36. U-Result

  37. V-Result

  38. Walk Back (frames 245-246)

  39. U-Result

  40. V-Result

  41. תוצאות: יעדים • אלגוריתם openflow מומש בsimulink באופן מלא • מסלול נתונים מלא • בקר מתפקד • שלב החומרה של הפרויקט, שהוגדר כפרויקט ב לא התבצע כי לא המשכנו לפרויקט ב • לא עמדנו בדרישות למעבר מ FP ל fixed point

  42. תוצאות : יעדים אקדמאיםתכנון • למדנו (על בשרנו) את חשיבות התכנון הראשוני, לפני המימוש. למרות שחלק מהמימוש ניתן לנו, ראינו כי שינויים שמתבצעים ללא תכנון מקדים משפיעים במקומות לא צפויים. • למדנו טכניקות שונות בעבודה עם מערכות לעיבוד נתונים בזמן אמת – בנקי זיכרון שונים, מקביליות, caching (line buffer) , הפרדה בין מסלול נתונים לבקרה ועוד.

  43. תוצאות: יעדים אקדמאיםתכנות • התנסינו בצורה ישירה בסיבוכיות של תכנון מערכת מורכבת בעלת חלקים שונים אשר צריכים לתקשר אחד עם השני • גילינו והתמודדנו עם בעיית הסנכרון בין אותות במערכות מסוג זה. • הכרנו לעומק את simulink ואת סביבת העבודה • שיפרנו את יכולתנו בתכנות ב matlab.

  44. תוצאות: יעדים אקדמאיםבדיקות • העיקרון המנחה שלמדנו – " דבר ראשון, בודד את הבעיה" • השתמשנו בסט טסטים ששימשו לנו כסוג של benchmark לתפקוד המערכת • למדנו את חשיבות השימוש בשרטוט אותות כדי לדבג מערכות סינכרוניות • למדנו לאהוב את ה scope • גילינו את חשיבות רעיון ה code review

More Related