$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Implementierung der Fußgängererkennung auf HLS
Abbildung 4 zeigt die Simulationsergebnisse auf dem HLS-Tool zur Fußgängererkennung mit HoG + SVM. Ein Eingabebild mit einem Fußgänger wird als Testeingabe für den Code eingespeist, und die Ausgabe mit den erkannten Fußgängern wird angezeigt. Im Bild gibt es zwei Abschnitte. Die erste Erkennung hat immer wieder viele Begrenzungsboxen um denselben Fußgänger, und im zweiten Bild werden die überlappenden Boxen entfernt und unterdrückt, sodass nur noch die Hauptdetektionsboxen übrig bleiben.

Abbildung 4: Simulationsergebnis mit dem HLS-Werkzeug. (A,B) Zwei verschiedene Eingabebilder und die resultierenden Bilder mit den erkannten Fußgängern. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Das HLS-Tool liefert außerdem Syntheseberichte zum Zeitpunkt und zur Ressourcennutzung. Die Zeitübersicht hebt den vom Design geforderten Zeitraum hervor und liefert die maximalen und minimalen Latenzwerte in Bezug auf die Anzahl der Zyklen. Diese Informationen sind nützlich, um abzuschätzen, wie viel Zeit das Design für die Ausführung benötigt und wie hoch die Taktfrequenz sein sollte, wenn man zur eigentlichen Hardware-Implementierung wechselt. Tabelle 2 unten zeigt den Zeitbericht nach der HLS-Synthese, der klar zeigt, dass die Ziel-Taktzeit 6 ns betrug und das Design 5,25 ns benötigte, was weniger als das Ziel ist, sodass der Zeitraum 6 ns oder höher, aber nicht unter 5 ns liegen kann.
| Zeitübersicht |
| Uhr | Ziel | Geschätzt |
| 6,00 ns | 5,250 ns |
| Nutzungszusammenfassung |
| Gesamt / Verfügbar | Prozentsatz der Nutzung |
| BRAM18K | 22 / 432 | 5% |
| DSP48E | 13 / 360 | 3% |
| FF | 5611/ 141120 | 3% |
| LUT | 9904/ 70560 | 14% |
| URAM | 0 | 0 |
Tabelle 2: Geschätzter Zeit- und Ressourcenauslastungsbericht vom HLS-Tool zur Fußgängererkennung mittels HoG-SVM.
Tabelle 2 zeigt außerdem den Auslastungsbericht. Es zeigt die prozentuale Auslastung wichtiger Onboard-FPGA-Ressourcen entsprechend der ausgewählten Zielplatine. Für dieses Fußgängererkennungsdesign zeigt der Nutzungsbericht, dass das Design 14 % der Nachschlagtabellen (LUTs), 3 % der Flip Flops (FFs), 3 % der digitalen Signalverarbeitung (DSP) und 5 % des Block Random Access Memory (BRAM) verbraucht. Diese Schätzungen sind nicht die exakten Nutzungsberichte, aber die tatsächlichen Berichte liegen nahe an diesen Schätzungen. Dies sind nur die Schätzungen, die von den HLS-Tools berechnet werden können. Die tatsächliche Umsetzung unterscheidet sich in der Regel stark von diesen Schätzungen.
Tatsächliche Implementierungsergebnisse durch Hardwareprogrammierung
Nachdem der Code in eine IP abgebildet wurde, die im FPGA-Programmierwerkzeug importiert und das Design auf der tatsächlichen FPGA-Hardware implementiert wurde, werden auch mehrere Berichte generiert. Die erste ist die Zeitzusammenfassung, die zeigt, ob die dem Design bereitgestellte Taktfrequenz ausreicht oder nicht. Wenn alle Zeitvorgaben erfüllt sind und keine Verstöße vorliegen, kann das Design fortgesetzt werden. Tabelle 3 unten zeigt die vom Tool generierte Zeitübersicht. Wie in der Tabelle dargestellt, zeigt die Zeitübersicht die größte negative Slack, nämlich 4,073 ns. Da dieser Wert positiv ist, deutet er darauf hin, dass noch so viel Zeit zur Verfügung steht. Negative Werte zeigen an, dass der FPGA länger benötigt, um die Aufgabe zu erledigen, und die Uhr läuft schnell. Da es in diesem Fall keine negativen Werte gibt, was bedeutet, dass die Zeitvorgaben erfüllt sind.
| Zusammenfassung des Entwurfszeitpunkts |
| Aufbau | Halt | Pulsbreite |
| Schlimmster negativer Slack: 4,073 ns | Schlechteste Halteslack: 0,010 ns | Schlechteste Pulsbreite Slack: 3,500 ns |
Tabelle 3: Tatsächliche Zeitübersicht für Fußgängererkennung auf der FPGA-Tafel.
Außerdem zeigt das Tool die Ressourcenauslastungsberichte an, also die tatsächliche Auslastung der Onboard-Ressourcen gemäß der ausgewählten FPGA-Platine. In diesem Fall ist die ausgewählte Platine die Zynq UltraScale+ MPSoC (Multi-Processor System On Chip) basierte FPGA-Entwicklungsplatine27. Tabelle 4 unten zeigt die Ressourcennutzung und Abbildung 5 zeigt die diagrammatische Darstellung der Ressourcennutzung.
Die Nutzungszusammenfassung zeigt den tatsächlichen Verbrauch der Bordressourcen an, da 8 HoG-IPS parallel verwendet werden und die von der HLS-Synthese gemeldeten Schätzungen für ein einzelnes HoG-IP bezogen wurden. Aber selbst nach so umfangreicher Nutzung liegt der Ressourcenverbrauch jeder Ressource bei weniger als 50 %. Tabelle 4 zeigt klar die Auslastung der verschiedenen Ressourcen und deren Auslastungsprozentsatz, was in Abbildung 5 bildlich dargestellt ist.
| Ressource | Nutzung | Verfügbar | Auslastungsprozent |
| LUT | 40536 | 70560 | 57.45% |
| LUTRAM | 7304 | 28800 | 25.36% |
| FF | 33342 | 141120 | 23.63% |
| BRAM | 68 | 216 | 31.48% |
| DSP | 128 | 360 | 35.56% |
| BUFG | 2 | 196 | 1.02% |
Tabelle 4: Tatsächlicher Nutzungsbericht für Fußgängererkennung auf FPGA-Tafel.

Abbildung 5: Ressourcenauslastung für Fußgängererkennung auf FPGA-Platine nach tatsächlicher Implementierung. Schau dir Tabellen an (LUT): 57 %, LUTRAM: 25 %, Flip-Flops (FF): 24 %, Block-RAM (BRAM): 31 %, Digitale Signalprozessoren (DSP): 36 %, Puffer: 1 %. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Der dritte Bericht betrifft die Leistungsschätzungen der Platine für den Energieverbrauch durch das Design. Abbildung 6 unten zeigt den Stromverbrauchsbericht, der zeigt, dass die gesamte On-Chip-Leistung 2,435 W beträgt. Die Verbindungstemperatur und die von jedem wichtigen Netz und jeder Komponente verbrauchte Leistung werden ebenfalls dargestellt. Die Leistungsmessungen zeigen keinen alarmierenden Stromverbrauch hervor, weshalb das Design als energieeffizient betrachtet werden kann.

Abbildung 6: Leistungsabschätzung für Fußgängererkennung auf der FPGA-Platine nach der tatsächlichen Implementierung. Der von den Werkzeugen erzeugte Strombericht zeigt die insgesamt verbrauchte Leistung mit 2,435 W an und zeigt außerdem die Verteilung der Leistung auf die verschiedenen Ressourcen auf der FPGA-Platine. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Eine weitere Analyse wird durchgeführt, um den Vorteil der Verwendung von 8 HoG-IPs anstelle einer einzelnen HoG-IP oder mehr als 8 im erstellten Blockdiagramm zu verstehen, wie in Abbildung 3 dargestellt. Die hardwarebezogenen Leistungsmetriken wurden sowohl für eine einzelne HoG-IP als auch für 8 HoG-IPs parallel berechnet. Tabelle 5 unten zeigt den Vergleich.
| Perfromanzmetrik | 1 IP | 8 IPs |
| Timing (ns) | 5.312 | ~5,25 |
| Frequenz (MHz) | 188 | 150 |
| Leistung (W) | 1.9 | 2.43 |
| LUTs | 4998 | 40536 |
| FF / Register | 4,031 | 33,342 |
| DSP | 16 | 128 |
| BRAM | 8.5 | 68 |
| FPS | ~10–11 | 83 |
Tabelle 5: Vergleich von Leistungskennzahlen unter Verwendung einzelner und mehrerer HoG-IPs.
Tabelle 5 zeigt eindeutig, dass, wenn man die Ressourcen wie LUTs, FFs, DSPs und BRAM betrachtet, dann bei einer einzelnen HoG-IP und 8 HoG-IPs die Skalierung linear ist und die Ressourcen fast achtfach zunimmt. Das ist eindeutig zu erwarten, da mehr IPs zu mehr Ressourcen führen. Außerdem verschlechtert sich die maximale Frequenz leicht um 20 % von 188 MHz auf 150 MHz. Dies ist auch zu erwarten, da mehr Blöcke zu mehr Verbindungen und damit längeren Pfaden führen, was zu einer Zunahme kritischer Pfade führt. Aber die vorteilhaften Faktoren wie Bilder pro Sekunde (FPS) verbessern sich von 10 auf 83, was eine nichtlineare Skalierung im Fall von FPS durch das eingeführte Konzept der Parallelität mit 8 HoG-IPs zeigt. Außerdem skaliert die Leistung von 1,9 W auf 2,4 W, was auf eine verbesserte Energieeffizienz durch Rohrleitungen hinweist. Daher zeigt diese Analyse eindeutig, dass die Einführung von 8 HoG-IPs für das Design vorteilhaft ist und eine Skalierung über 8 hinaus zu einem Überverbrauch von Ressourcen führen kann; daher werden die Anzahl der Blöcke über 8 nicht als günstig angesehen.
Fußgängererkennungsergebnisse nach FPGA-Implementierung
Schließlich wird das gesamte System auf der FPGA-Platine integriert und die Bitstream-Datei generiert, die dann über die SD-Karte programmiert wird, die mit Python-Programmierbarkeitsfunktion gebootet wird. Sobald die Platine mit der SD-Karte gebootet wurde, kann die Jupyter-Schnittstelle aktiviert und Python-Code auf der Plattform geschrieben und ausgeführt werden. Der Python-Code wird ausgeführt und getestet, um Fußgängererkennung auf verschiedenen Eingabebildern zu gewährleisten. Das Ergebnis einiger Bilder ist in Abbildung 7 unten dargestellt. Diese Bilder stammen aus dem INRIA-Datensatz sowie zufällige Bilder von Fußgängern, die aus Open-Source-Online-Quellenstammen 26,27.

Abbildung 7: Fußgängererkennungsergebnisse auf Standbildern über das FPGA-Board. Die getesteten Bilder umfassen Bilder aus dem INRIA-Datensatz, Open-Source-Bilder, die bei Google verfügbar sind, um die Erkennungsgenauigkeit auf überfüllten Straßen Indiens zu testen. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Das System wird außerdem mit Echtzeitbildern durch eine Webcam getestet und die Fußgänger im Bild erkannt; das System wird mit bereits aufgenommenen Videoeingaben von Fußgängern getestet. Die Ergebnisse dafür sind in Abbildung 8 und Abbildung 9 dargestellt. Abbildung 8 zeigt eine Reihe von Beispielbildern, die von der Webcam aufgenommen wurden, sowie die Ergebnisse der Fußgängererkennung in jedem Bild, während Abbildung 9 die Ergebnisse der Fußgängererkennung zeigt, die auf einem dem System bereitgestellten Eingabevideo implementiert wurden.

Abbildung 8: Fußgängererkennungsergebnisse auf einem Bild, das von einer Kamera in Echtzeit über das FPGA-Board aufgenommen wird. Echtzeitaufnahme von Videos mit der Webcam 720 P und Demonstration der Echtzeiterkennung von Fußgängern. Die verschwommenen Bilder entstehen, wenn Schnappschüsse aus dem laufenden Live-Video aufgenommen werden. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.

Abbildung 9: Fußgängererkennungsergebnisse auf Videos, die als Eingabe für das FPGA-Board bereitgestellt werden. Die Videos stammen aus Open-Source-Links. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzusehen.
Schätzung von Leistungskennzahlen
Um die Effizienz zu berechnen und die Leistung des oben umgesetzten Designs zu analysieren, ist es unerlässlich, Leistungskennzahlen zu erstellen, die zur Leistungsbewertung nützlich sind. Die Leistungsmetriken zur Erkennung der Effizienz eines Detektionsalgorithmus hängen im Wesentlichen von den Werten von echten Positiven (TP), echten Negativen (TN), Falsch-Positiven (FP) und Falsch-Negativen (FN) ab. Aus diesen Werten können Leistungskennzahlen wie Genauigkeit, Abruf, F1-Wert, Fehlalarme pro Bild und Genauigkeit gemäß den unten angegebenen Gleichungen berechnet werden. Es wurde beobachtet, dass die meisten Forschungsarbeiten ihre Nachweisleistung über den Genauigkeitsparameter angeben. Es wurde jedoch beobachtet, dass die Genauigkeitsberechnung, die die Verwendung von TN beinhaltet, ein irreführender Parameter sein kann, da der Wert von TN nicht korrekt im wahren Sinne berechnet werden kann, da es darum geht, die Anzahl aller Erkennungsfenster in einem Bild zu bestimmen, das keinen Fußgänger zeigt, und der implementierte Algorithmus meldet dies ebenfalls als keine Erkennungen. Diese Zahl ist im Allgemeinen sehr hoch, da die Gesamtzahl der Erkennungsfenster in einem Bild groß ist und die Hintergrundbereiche in jedem Bild meist Regionen ohne Fußgänger entsprechen. Durch genaue Betrachtung der Genauigkeitsformel in den Gleichungen [1] – [5] lässt sich erkennen, dass der Wert von TN im Vergleich zu TP+FP+FN recht hoch ist, sodass der Genauigkeitsparameter meist einen hohen Wert hat. Um die Leistung wirklich zu bewerten, ist es viel besser, Kennzahlen wie Genauigkeit, Abruf und F1-Score anzugeben, die nicht von TN abhängen und daher viel genauer sind.
[1]
[2]
[3]
[4]
[5]
Um die Werte von TP, TN und FN für dieses Paper zu bestimmen, wurde das Experiment mit den Standbildern auf einer riesigen Anzahl von Bildern wiederholt. Aus den Ergebnissen jedes Bildes wurde der Wert der echten Positiven berechnet, also die Anzahl der korrekt erkannten Fußgänger, Fehlalarme, die Anzahl der falsch erkannten Fußgänger und falsche Negative, also die tatsächlichen unentdeckten Fußgänger. Die folgenden Werte wurden nach den durchgeführten Experimenten angegeben und sind in Tabelle 6 unten dargestellt.
| Leistungskennzahl | Wert |
| TP | 143 |
| FP | 39 |
| FN | 19 |
| Genauigkeit | 0.786 (78.6%) |
| Rückruf | 0.883 (88.3%) |
| F1-Ergebnis | 0.831 (83.1%) |
| FPPI | 0.867 |
Tabelle 6: Leistungskennzahlen für den FPGA-basierten implementierten Fußgängererkennungsalgorithmus.
Tabelle 6 oben beschreibt somit die Genauigkeit des Fußgängererkennungsalgorithmus anhand der verschiedenen Leistungskennzahlen: Präzision, Rückruf, F1-Wert und FPPI, wenn der Algorithmus auf der Hardwareplattform implementiert wird.
Leistungsvergleich mit bestehenden FPGA-basierten HoG-Implementierungen
Schließlich kann die durchgeführte Arbeit mit der bisherigen Literatur verglichen werden, um bedeutende Beiträge dieser Forschung zu belegen. Dieser Vergleich ist in Tabelle 715, 16, 17, 21, 24unten dargestellt. Die Artikel, mit denen der Vergleich durchgeführt wird, basieren alle auf Fußgängererkennungsanwendungen, die auf FPGA-Plattformen implementiert wurden, und die für diese Erkennungen verwendeten Algorithmen sind ebenfalls für alle gleich, nämlich HoG kombiniert mit einem Klassifikator, der entweder ein Adaboost-Klassifikator oder SVM ist. Die Bildgröße ist ebenfalls für beide gleich (640 × 480). Der Vergleich basiert auf Parametern wie der Taktfrequenz, die die Geschwindigkeit, die Bilder pro Sekunde, den Stromverbrauch und die Ressourcennutzung in Bezug auf LUTs, DSPs, Speicher, Slices und Register beeinflusst. Um einen fairen Vergleich zu ermöglichen, haben die zum Vergleich betrachteten Forschungsarbeiten eine ähnliche Bildauflösung, und um den Ressourcenvergleich zu normalisieren, wird jede Ressourcennutzung normalisiert, indem die Anzahl der verbrauchten Ressourcen durch die Gesamtzahl der verfügbaren Ressourcen gemäß dem verwendeten FPGA-Board geteilt wird.
| Referenz | Bildgröße | FPGA-Board | Taktfrequenz | Bilder pro Sekunde (FPS) | Macht | Pixel /Uhr | LUTs (%) | DSP48s (%) | BRAMs / Speicherbits (%) | Register/FF (%) |
| 15 | 640×480 | Xilinx Zynq | 82,2 MHz | 40 | - | 1 | 40 | 2 | 0 | - |
| 24 | 640×480 | Virtex 6 | 150 MHz | 10 | 19 W | | 39 | 53 | 22 | - |
| 16 | 640×480 | Zyklon V | 162 MHz | 526 | 9 W | 0.99 | 21 | 86 | 100 | 21 |
| 17 | 640×480 | Altera DE2-115 | 50 MHz | 129 | 3,6 W | - | 73 | - | 72 | 60 |
| 21 | 640×480 | Zync 7000 | 100 MHz | 240 | 1,6 W | - | 13 | 3 | 1 | 10 |
| DIESE ARBEIT | 640 x 480 | Ultra 96 v2 | 150 MHz | 83 | 2,435W | 0.0632 | 57 | 35 | 31 | 24 |
Tabelle 7: Vergleich von Parametern und Leistung für Implementierungen der Fußgängererkennung auf FPGA
Wie in Tabelle 7 oben zu sehen ist, ist zu erkennen, dass im Vergleich der Umsetzung dieser Forschung mit den vorherigen Arbeiten die Vergleiche signifikante Verbesserungen hinsichtlich der Geschwindigkeit zeigen. Die FPGA-Platine kann mit einer Taktfrequenz von 150 MHz laufen, was bedeutet, dass der Zeitraum für die vollständige Aufgabe weniger als 6 ns beträgt. Obwohl einige frühere Arbeiten deutlich höhere FPS melden, lässt sich durch sorgfältige Untersuchung analysieren, dass dieser Vorteil auf Kosten eines höheren Energieverbrauchs sowie einer nahezu vollständigen Nutzung bestimmter Ressourcen einhergeht. Wenn der Stromverbrauch berücksichtigt wird, ist in dieser Arbeit auch die gemeldete Leistung eher niedrig, und die Ressourcennutzung deutet darauf hin, dass der Verbrauch jeder Ressource etwas höher ist als bei bestimmten Implementierungen, aber gleich oder weniger als 50 % (57 % LUTs, 35 % DSPs und 31 % BRAM), was erheblichen Spielraum für weitere Aufgaben in diesem Design zeigt. Insgesamt kann festgestellt werden, dass die in diesem Artikel umgesetzte Arbeit einen ausgewogenen Kompromiss zwischen Leistung, Leistung und Ressourcennutzung erreicht. Darüber hinaus zeigte die präsentierte Arbeit skalierbare Parallelität durch mehrere IP-Blöcke, ohne die Leistungsparameter drastisch zu beeinträchtigen.
Ergänzende Akte 1: Script_1_train_test.py.Bitte klicken Sie hier, um diese Datei herunterzuladen.
Ergänzende Akte 2: Script_2_HLS_hog.cpp. Bitte klicken Sie hier, um diese Datei herunterzuladen.
Ergänzende Akte 3: Script_3_HLS_test_bench.cpp. Bitte klicken Sie hier, um diese Datei herunterzuladen.
Ergänzende Akte 4: Script_4_HLS_consts.h.Bitte klicken Sie hier, um diese Datei herunterzuladen.
Ergänzende Akte 5: Script_5_jupyter_code.txt.Bitte klicken Sie hier, um diese Datei herunterzuladen.