$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
מימוש זיהוי הולכי רגל ב-HLS
איור 4 מציג את תוצאות הסימולציה בכלי HLS לזיהוי הולכי רגל באמצעות HoG + SVM. תמונת קלט עם הולך רגל מוזנת כקלט הבדיקה לקוד, והפלט עם הולכי הרגל שזוהו מוצג. יש שני חלקים בתמונה. בגילוי הראשון יש תיבות גבול רבות סביב אותו הולך רגל שוב ושוב, ובתמונה השנייה הקופסאות החופפות מוסרות והן מדוכאים, ונשארות רק תיבות הזיהוי הראשיות.

איור 4: תוצאת סימולציה מכלי HLS. (א,ב) שתי תמונות קלט שונות והתמונות שהתקבלו עם הולכי הרגל שזוהו. אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.
כלי HLS מספק גם דוחות סינתזה לתזמון ולניצול משאבים. סיכום התזמון מדגיש את תקופת הזמן הנדרשת על ידי העיצוב ומספק את ערכי ההשהיה המקסימליים והמינימליים במונחים של מספר המחזורים. מידע זה שימושי להערכת כמה זמן העיצוב דורש לביצוע ומה צריך להיות תדר השעון בעת המעבר ליישום החומרה בפועל. טבלה 2 למטה מציגה את דוח התזמון לאחר סינתזת HLS, שמראה בבירור שתקופת השעון היעד הייתה 6 ננו-שניות והעיצוב לקח 5.25 ננו-שניות, שזה פחות מהיעד, ולכן תקופת הזמן יכולה להיות 6 ננו-שניות ומעלה אך לא מתחת ל-5 ננו-שניות.
| סיכום תזמון |
| שעון | מטרה | הערכה |
| 6.00 ננו-שניות | 5.250 ננו-שניות |
| סיכום השימוש |
| סך הכל / זמין | אחוז ניצול |
| BRAM18K | 22 / 432 | 5% |
| DSP48E | 13 / 360 | 3% |
| FF | 5611/ 141120 | 3% |
| LUT | 9904/ 70560 | 14% |
| URAM | 0 | 0 |
טבלה 2: דוח מוערך של תזמון וניצול משאבים מכלי HLS לזיהוי הולכי רגל באמצעות HoG-SVM.
טבלה 2 מציגה גם את דוח השימוש. הוא מציג את אחוז השימוש במשאבי FPGA חשובים על הספינה בהתאם ללוח היעד שנבחר. לעיצוב זיהוי הולכי רגל זה, דוח השימוש מראה שהעיצוב צורך 14% מטבלאות החיפוש (LUTs), 3% מ-Flip Flops (FFs), 3% מעיבוד אותות דיגיטליים (DSP), ו-5% מזיכרון גישה אקראית (BRAM). הערכות אלו אינן דוחות השימוש המדויקים, אך הדוחות עצמם קרובים להערכות אלו. אלו רק ההערכות שניתן לחשב באמצעות כלי ה-HLS. היישום בפועל בדרך כלל שונה מאוד מהערכות אלו.
היישום בפועל נובע מתכנות חומרה
לאחר שהקוד ממופה ל-IP, שמיובא בכלי התכנות FPGA, והעיצוב מיושם על חומרת ה-FPGA עצמה, נוצרים גם מספר דוחות. הראשון הוא סיכום התזמון, שמראה האם תדר השעון שניתן לעיצוב מספיק או לא. אם כל מגבלות התזמון מתקיימות ואין הפרות, העיצוב יכול להתקדם. טבלה 3 למטה מציגה את סיכום התזמון שנוצר על ידי הכלי. כפי שמוצג בטבלה, סיכום התזמון מצביע על הרווח השלילי הגרוע ביותר, שהוא 4.073 ננו-שניות. מכיוון שערך זה חיובי, הוא מצביע על כך שכמות הזמן הזו עדיין זמינה. ערכים שליליים מצביעים על כך שה-FPGA לוקח יותר זמן להשלים את המשימה, והשעון רץ במהירות. מכיוון שבמקרה זה אין ערכים שליליים, מה שמעיד שמגבלות התזמון מתקיימות.
| סיכום תזמון העיצוב |
| הכנה | המתן | רוחב פולס |
| הגרוע ביותר של סלאק 4.073 ננו-נו. | הגרוע ביותר ב-Hold Slack 0.010 ns. | רוחב הפולס הגרוע ביותר Slack 3.500 ns |
טבלה 3: סיכום תזמון אמיתי לזיהוי הולכי רגל בלוח FPGA.
בנוסף, הכלי מציג את דוחות ניצול המשאבים, שהם השימוש בפועל במשאבים המובנים לפי לוח ה-FPGA שנבחר. במקרה זה, הכרטיס הנבחר הוא לוח פיתוח FPGA מבוסס Zynq UltraScale+ MPSoC (Multi-Processor System On Chip)27. טבלה 4 למטה מציגה את ניצול המשאבים ואיור 5 מציג את הייצוג הדיאגרמטי של ניצול המשאבים.
סיכום השימוש מצביע על הצריכה האמיתית של המשאבים שעל הסיפון, בהתחשב בכך שיש 8 HoG IPS במקביל, וההערכות שדווחו על ידי סינתזת HLS היו עבור IP יחיד של HoG. אבל גם לאחר שימוש נרחב כזה, השימוש במשאבים בכל משאב הוא פחות מ-50%. טבלה 4 מציינת בבירור את השימוש ביחס למשאבים השונים ולאחוז השימוש בהם, כפי שמוצג בתמונה באיור 5.
| משאב | שימוש | זמין | אחוז ניצול |
| LUT | 40536 | 70560 | 57.45% |
| לוטטרם | 7304 | 28800 | 25.36% |
| FF | 33342 | 141120 | 23.63% |
| BRAM | 68 | 216 | 31.48% |
| DSP | 128 | 360 | 35.56% |
| BUFG | 2 | 196 | 1.02% |
טבלה 4: דוח ניצול בפועל לזיהוי הולכי רגל בלוח FPGA.

איור 5: ניצול משאבים לזיהוי הולכי רגל בלוח FPGA לאחר יישום בפועל. חפש טבלאות (LUT): 57%, LUTRAM: 25%, Flipflops (FF): 24%, בלוק RAM (BRAM): 31%, מעבדי אותות דיגיטליים (DSP): 36%, מאפרי אות: 1%. אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.
הדוח השלישי עוסק בהערכות ההספק של הלוח עבור כמות צריכת האנרגיה על ידי התכנון. איור 6 למטה מציג את דוח צריכת החשמל, שמראה שסך ההספק על השבב הוא 2.435 וואט. טמפרטורת הצומת והאנרגיה הנצרכת על ידי כל רשת ורכיב חשוב מוצגות גם הן. מדידות ההספק אינן מדגישות צריכת חשמל מדאיגה, ולכן ניתן לראות את העיצוב כיעיל אנרגטית.

איור 6: הערכת הספק לזיהוי הולכי רגל בלוח FPGA לאחר יישום בפועל. דוח ההספק שנוצר על ידי הכלים מציג את סך ההספק הנצרוך כ-2.435 וואט וגם מציג את חלוקת החשמל בין המשאבים השונים בלוח FPGA. אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.
ניתוח נוסף נעשה כדי להבין את היתרון בשימוש ב-8 כתובות IP של HoG במקום כתובת IP אחת של HoG או יותר מ-8 בדיאגרמת הבלוקים שנוצרה, כפי שמוצג באיור 3. מדדי הביצועים הקשורים לחומרה חושבו הן עבור כתובת IP אחת של HoG והן עבור 8 כתובות IP של HoG במקביל. טבלה 5 למטה מציגה את ההשוואה.
| מדד ביצוע | 1 IP | 8 קניינים רוחניים |
| תזמון (ns) | 5.312 | ~5.25 |
| תדר (MHz) | 188 | 150 |
| כוח (W) | 1.9 | 2.43 |
| LUTs | 4998 | 40536 |
| FF / רגיסטרים | 4,031 | 33,342 |
| DSP | 16 | 128 |
| BRAM | 8.5 | 68 |
| FPS | ~10–11 | 83 |
טבלה 5: השוואת מדדי ביצועים באמצעות IP יחיד מול מספר של HoG.
טבלה 5 מציינת בבירור שכאשר המשאבים מתחשבים כמו LUTs, FFs, DSPs ו-BRAM, אז עם כתובת IP בודדת של HoG ו-8 IPs של HoG, הסקאלה היא ליניארית עם כמעט פי 8 עלייה במשאבים המנוצלים. זה צפוי בבירור, שכן יותר קניין רוחני יוביל לצריכת משאבים נוספים. כמו כן, אם נצפים התדר, התדר המרבי יורד במעט ב-20% מ-188 מגה-הרץ ל-150 מגה-הרץ. זה צפוי גם כאשר יותר בלוקים מובילים ליותר חיבורים וכך למסלולים ארוכים יותר, מה שגורם לעלייה במסלולים הקריטיים. אך הגורמים החיוביים כמו פריימים לשנייה (FPS) משתפרים מ-10 ל-83, ומדגימים קנה מידה לא ליניארי במקרה של FPS בעקבות מושג המקביליות שהוכנס, בעקבות 8 IPs של HoG. בנוסף, ההספק נע בין 1.9 וואט ל-2.4 וואט, מה שמעיד על שיפור ביעילות האנרגטית באמצעות צינור. לכן, ניתוח זה מצביע בבירור כי הכנסת 8 קנייני HoG מועילה לעיצוב, והגדלה מעבר ל-8 עלולה לגרום לצריכת משאבים מופרזת; לכן, מספר הבלוקים מעבר ל-8 אינו נחשב לטוב.
תוצאות זיהוי הולכי רגל לאחר יישום FPGA
לבסוף, כל המערכת משולבת על לוח FPGA, וקובץ זרם הסיביות נוצר, אשר מתוכנת על הלוח דרך כרטיס ה-SD שמופעל עם יכולת תכנות פייתון. לאחר שהלוח מופעל עם כרטיס ה-SD, ניתן לגשת לממשק ה-jupyter ולכתוב ולהריץ קוד פייתון על הפלטפורמה. קוד הפייתון רץ ונבדק לזיהוי הולכי רגל על תמונות קלט שונות. התוצאה של כמה תמונות מוצגת באיור 7 למטה. תמונות אלו מנוצלות ממאגר הנתונים של INRIA וכן מתמונות אקראיות של הולכי רגל שהושגו ממקורות מקוונים בקוד פתוח26,27.

איור 7: תוצאות זיהוי הולכי רגל בתמונות סטילס דרך לוח FPGA. התמונות שנבדקו כוללות תמונות ממאגר הנתונים INRIA, תמונות בקוד פתוח הזמינות בגוגל לבדיקת דיוק זיהוי ברחובות הצפופים בהודו. אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.
המערכת נבדקת גם בצילום פריימים בזמן אמת דרך מצלמת רשת וזיהוי הולכי הרגל במסגרת, וכן המערכת נבדקת על קלטי וידאו מוקלטים של הולכי רגל. התוצאות של זה מוצגות באיור 8 ובאיור 9. איור 8 מציג סט של פריימים לדוגמה שצולמו על ידי מצלמת הרשת ואת תוצאות זיהוי הולכי הרגל בכל פריים, בעוד שאיור 9 מציג את תוצאות זיהוי הולכי הרגל שמיושמות על וידאו קלט שסופק למערכת.

איור 8: זיהוי הולכי רגל מתקבל על פריים שצולם על ידי מצלמה בזמן אמת דרך לוח ה-FPGA. צילום וידאו בזמן אמת באמצעות מצלמת רשת 720 P והדגמת זיהוי בזמן אמת של הולכי רגל. התמונות המטושטשות נגרמות כאשר נלקחות תמונות מהסרטון החי המתמשך. אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.

איור 9: תוצאות זיהוי הולכי רגל בסרטונים שסופקו כקלט ללוח ה-FPGA. הסרטונים נלקחו מקישורים בקוד פתוח. אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.
הערכת מדדי ביצועים
כדי לחשב את היעילות ולנתח את ביצועי העיצוב שהושם לעיל, חיוני לחשב מדדי ביצועים שימושיים להערכת הביצועים. מדדי הביצועים לזיהוי יעילות של אלגוריתם זיהוי תלויים בעיקר בערכים של חיוביים אמיתיים (TP), שליליים אמיתיים (TN), חיוביים שגויים (FP) ושליליים שגויים (FN). מהערכים הללו ניתן לחשב את מדדי הביצועים כמו דיוק, שחזור, ציון F1, חיובי שגוי לכל תמונה ודיוק לפי המשוואות המוצגות להלן. נצפה כי רוב מאמרי המחקר מדווחים על ביצועי הגילוי שלהם דרך פרמטר הדיוק. אך נצפה כי חישוב הדיוק הכולל שימוש ב-TN יכול להיות פרמטר מטעה, שכן ערך TN אינו ניתן לחישוב נכון במובן האמיתי, שכן הוא כולל מציאת מספר כל חלונות הזיהוי בתמונה שאין בה בפועל הולך רגל, והאלגוריתם המיושם גם מדווח על כך כללא זיהויים. מספר זה בדרך כלל גדול מאוד, שכן מספר חלונות הזיהוי הכולל בתמונה גדול, והאזורים הרקעים בכל תמונה בדרך כלל תואמים לאזורים ללא הולכי רגל. על ידי התבוננות מקרוב בנוסחת הדיוק המוצגת במשוואות [1] – [5], ניתן להבין שכיוון שערך TN יהיה גבוה יחסית ל-TP+FP+FN, לפרמטר הדיוק בדרך כלל יש ערך גבוה. כדי להעריך באמת את הביצועים, עדיף לדווח על מדדים כמו דיוק, זיכרון וציון F1 שאינם תלויים ב-TN ולכן הם הרבה יותר מדויקים.
[1]
[2]
[3]
[4]
[5]
כדי למצוא את הערכים של TP, TN ו-FN עבור מאמר זה, הניסוי על תמונות הסטילס חזר על מספר עצום של תמונות. מתוצאות כל תמונה, ערך החיוביים האמיתיים, כלומר מספר הולכי הרגל שזוהו נכון, חיוביים שגויים, מספר הולכי הרגל שזוהו בטעות, והשליליים השגויים, שהם הולכי הרגל האמיתיים שלא זוהו. הערכים הבאים דווחו לאחר הניסויים שבוצעו ומוצגים בטבלה 6 למטה.
| מדד ביצועים | ערך |
| TP | 143 |
| FP | 39 |
| FN | 19 |
| פרסיסון | 0.786 (78.6%) |
| זימון מחדש | 0.883 (88.3%) |
| ציון פורמולה 1 | 0.831 (83.1%) |
| FPPI | 0.867 |
טבלה 6: מדדי ביצועים לאלגוריתם זיהוי הולכי רגל מבוסס FPGA המיושמים.
טבלה 6 למעלה מתארת אפוא את דיוק אלגוריתם זיהוי הולכי הרגל באמצעות מדדי ביצועים שונים, דיוק, שחזור, ציון F1 ו-FPPI, כאשר האלגוריתם מיושם על פלטפורמת החומרה.
השוואת ביצועים עם יישומי HoG מבוססי FPGA קיימים
לבסוף, ניתן להשוות את העבודה שבוצעה לספרות הקודמת כדי לציין תרומות משמעותיות של מחקר זה. השוואה זו מוצגת בטבלה 7 15,16,17,21,24 למטה. המאמרים שבהם מתבצעת ההשוואה מבוססים כולם על יישומי זיהוי הולכי רגל שמיושמים בפלטפורמות FPGA, והאלגוריתמים לזיהוי אלו זהים גם לכולם, כלומר HoG בשילוב עם מסווג, שהוא או מסווג Adaboost או SVM. גודל התמונה זהה גם לכל אחד (640 × 480). ההשוואה מבוססת על פרמטרים כמו תדר השעון שמשפיעים על המהירות, מספר הפריימים לשנייה, צריכת החשמל וצריכת המשאבים במונחים של LUTs, DSPs, זיכרון, Slices ו-Registers. כדי לעודד השוואה הוגנת, מאמרי המחקר שנבדקו להשוואה הם בעלי רזולוציית תמונה דומה, וכדי לנרמל את השוואת המשאבים, כל ניצול משאבים מנורמל על ידי חלוקת מספר המשאבים שנצרכו במספר המשאבים הזמינים לפי לוח FPGA שבו משתמשים.
| מקור | גודל תמונה | דירקטוריון FPGA | תדר שעון | פריימים לשנייה (FPS) | כוח | פיקסלים / שעון | LUTs (%) | DSP48s (%) | BRAMs / ביטי זיכרון (%) | רגיסטרים/FF (%) |
| 15 | 640×480 | זילינקס זינק | 82.2 מגה-הרץ | 40 | - | 1 | 40 | 2 | 0 | - |
| 24 | 640×480 | Virtex 6 | 150 מגה-הרץ | 10 | 19 W | | 39 | 53 | 22 | - |
| 16 | 640×480 | ציקלון V | 162 מגה-הרץ | 526 | 9 W | 0.99 | 21 | 86 | 100 | 21 |
| 17 | 640×480 | אלטרה DE2-115 | 50 מגה-הרץ | 129 | 3.6 W | - | 73 | - | 72 | 60 |
| 21 | 640×480 | Zync 7000 | 100 מגה-הרץ | 240 | 1.6 W | - | 13 | 3 | 1 | 10 |
| עבודה זו | 640 על 480 | אולטרה 96 v2 | 150 מגה-הרץ | 83 | 2.435W | 0.0632 | 57 | 35 | 31 | 24 |
טבלה 7: השוואת פרמטרים וביצועים ליישום זיהוי הולכי רגל ב-FPGA
כפי שניתן לראות בטבלה 7 למעלה, ניתן להבחין שכאשר היישום במחקר זה משווים לעבודות הקודמות, ההשוואות מציגות שיפורים משמעותיים במהירות. לוח ה-FPGA מסוגל לפעול בתדר שעון של 150 מגה-הרץ, מה שמעיד שתקופת הזמן להשלמת כל המשימה היא פחות מ-6 ננו-שניות. למרות שחלק מהעבודות הקודמות מדווחות על FPS גבוה משמעותית, ניתן לנתח שהיתרון הזה בא על חשבון צריכת חשמל גבוהה יותר וכן ניצול כמעט מלא של משאבים מסוימים. אם לוקחים בחשבון את צריכת החשמל מאשר בעבודה זו, ההספק המדווח גם הוא בצד הנמוך יותר, וניצולי המשאבים מצביעים על כך שצריכת כל משאב מעט גבוהה יותר ממימושים מסוימים, אך שווה או פחות מ-50% (57% LUTs, 35% DSP ו-31% BRAM), מה שמראה מקום משמעותי ליישום משימות נוספות בעיצוב זה. בסך הכול, ניתן לומר שהעבודה המיושמת במאמר זה משיגת איזון בין ביצועים, אנרגיה וניצול משאבים. בנוסף, העבודה שהוצגה הציגה מקביליות ניתנת להרחבה דרך בלוקי IP מרובים מבלי להשפיע באופן דרסטי על פרמטרי הביצוע.
תיק משלים 1: Script_1_train_test.py.אנא לחצו כאן להורדת הקובץ הזה.
תיק משלים 2: Script_2_HLS_hog.cpp. אנא לחצו כאן להורדת הקובץ הזה.
תיק משלים 3: Script_3_HLS_test_bench.cpp. אנא לחצו כאן להורדת הקובץ הזה.
תיק משלים 4: Script_4_HLS_consts.h.אנא לחצו כאן להורדת הקובץ הזה.
קובץ משלים 5: Script_5_jupyter_code.txt.אנא לחצו כאן להורדת הקובץ הזה.