$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Implementatie van voetgangersdetectie op HLS
Figuur 4 toont de simulatieresultaten op de HLS-tool voor de voetgangersdetectie met HoG + SVM. Een invoerbeeld met een voetganger wordt als testinvoer aan de code toegevoegd, en de output met de gedetecteerde voetgangers wordt weergegeven. Er zijn twee secties in de afbeelding. De eerste detectie heeft steeds weer veel begrenzende vakken rond dezelfde voetganger, en in de tweede afbeelding worden de overlappende vakken verwijderd en onderdrukt, waardoor alleen de hoofddetectievakken overblijven.

Figuur 4: Simulatieresultaat van de HLS-tool. (A,B) Twee verschillende invoerbeelden en de resulterende beelden met de gedetecteerde voetgangers. Klik hier om een grotere versie van deze figuur te bekijken.
De HLS-tool levert ook syntheserapporten voor de timing en het gebruik van middelen. De tijdsoverzicht benadrukt de tijdsperiode die het ontwerp vereist en geeft de maximale en minimale latentiewaarden in termen van het aantal cycli. Deze informatie is nuttig om in te schatten hoeveel tijd het ontwerp nodig heeft om uit te voeren en wat de kloksnelheid moet zijn bij de overstap naar de daadwerkelijke hardware-implementatie. Tabel 2 hieronder toont het timingrapport na de HLS-synthese, dat duidelijk aangeeft dat de beoogde klokperiode 6 ns was en het ontwerp 5,25 ns duurde, wat minder is dan het doel, en daarom kan de tijdsperiode 6ns of hoger zijn maar niet onder de 5 ns.
| Tijdsoverzicht |
| Klok | Doel | Geschat |
| 6,00 ns | 5.250 ns |
| Gebruikssamenvatting |
| Totaal / Beschikbaar | Percentage van het gebruik |
| BRAM18K | 22 / 432 | 5% |
| DSP48E | 13 / 360 | 3% |
| FF | 5611/ 141120 | 3% |
| LUT | 9904/ 70560 | 14% |
| URAM | 0 | 0 |
Tabel 2: Geschatte timing- en resourcebenuttingsrapport van de HLS-tool voor voetgangersdetectie met HoG-SVM.
Tabel 2 toont ook het gebruiksrapport. Het toont het percentage gebruik van belangrijke aan boord FPGA-bronnen volgens het geselecteerde doelbord. Voor dit voetgangersdetectieontwerp toont het gebruiksrapport aan dat het ontwerp 14% van de look-up tables (LUTs), 3% van Flip Flops (FFs), 3% van digitale signaalverwerking (DSP) en 5% van block random access memory (BRAM) verbruikt. Deze schattingen zijn niet de exacte gebruiksrapporten, maar de daadwerkelijke rapporten liggen dicht bij deze schattingen. Dit zijn alleen de schattingen die door de HLS-tools kunnen worden berekend. De daadwerkelijke uitvoering verschilt meestal sterk van deze schattingen.
Daadwerkelijke implementatieresultaten uit hardwareprogrammering
Nadat de code is omgezet in een IP, die wordt geïmporteerd in de FPGA-programmeertool, en het ontwerp is geïmplementeerd op de daadwerkelijke FPGA-hardware, worden er ook verschillende rapporten gegenereerd. De eerste is de timingoverzicht, die laat zien of de klokfrequentie die aan het ontwerp wordt toegevoegd voldoende is of niet. Als aan alle tijdsbeperkingen wordt voldaan en er geen overtredingen zijn, kan het ontwerp doorgaan. Tabel 3 hieronder toont de tijdsoverzicht die door het hulpmiddel is gegenereerd. Zoals weergegeven in de tabel, geeft de tijdsoverzicht de slechtste negatieve slack aan, namelijk 4,073 ns. Omdat deze waarde positief is, geeft het aan dat er nog zoveel tijd beschikbaar is. Negatieve waarden geven aan dat de FPGA meer tijd nodig heeft om de taak te voltooien en dat de klok snel loopt. Aangezien er in dit geval geen negatieve waarden zijn, wat aangeeft dat aan de timingbeperkingen is voldaan.
| Samenvatting van de ontwerptiming |
| Opstelling | Houd vast | Pulsbreedte |
| Slechtste negatieve slack 4,073 ns | Slechtste Hold-slack 0,010 ns | Slechtste pulsbreedte: Slack 3,500 ns |
Tabel 3: Werkelijke tijdsoverzicht voor voetgangersdetectie op het FPGA-bord.
Ook toont de tool de rapporten over het gebruik van de middelen, die het daadwerkelijke gebruik van de boordbronnen weergeven volgens het geselecteerde FPGA-bord. In dit geval is het geselecteerde bord het Zynq UltraScale+ MPSoC (Multi-Processor System On Chip) gebaseerd FPGA-ontwikkelingsbord27. Tabel 4 hieronder toont het resourcegebruik en Figuur 5 toont de diagrammatische weergave van het resourcegebruik.
De gebruikssamenvatting geeft het werkelijke verbruik van de boordmiddelen aan, aangezien er 8 HoG IPS parallel worden gebruikt, en de schattingen gerapporteerd door de HLS-synthese waren voor één enkele HoG IP. Maar zelfs na zo'n intensief gebruik is de resourcebenutting voor elke hulpbron minder dan 50%. Tabel 4 geeft duidelijk het gebruik aan met betrekking tot de verschillende hulpbronnen en hun benuttingspercentage, wat beeldend wordt weergegeven in Figuur 5.
| Bron | Gebruik | Beschikbaar | Benuttingspercentage |
| 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% |
Tabel 4: Rapport over daadwerkelijk gebruik voor voetgangersdetectie op het FPGA-bord.

Figuur 5: Resourcegebruik voor voetgangersdetectie op het FPGA-bord na daadwerkelijke implementatie. Zoek tabellen op (LUT): 57%, LUTRAM: 25%, Flipflops (FF): 24%, Block RAM (BRAM): 31%, Digitale signaalprocessors (DSP): 36%, Buffers: 1%. Klik hier om een grotere versie van deze figuur te bekijken.
Het derde rapport betreft de vermogensschattingen van de board voor het energieverbruik van het ontwerp. Figuur 6 hieronder toont het stroomverbruiksrapport, waaruit blijkt dat het totale on-chip vermogen 2,435 W is. De verbinding temperatuur en het vermogen dat door elk belangrijk net en component wordt verbruikt, worden ook weergegeven. De stroommetingen tonen geen alarmerend stroomverbruik aan, waardoor het ontwerp als energie-efficiënt kan worden beschouwd.

Figuur 6: Vermogensschatting voor voetgangersdetectie op het FPGA-bord na daadwerkelijke implementatie. Het energierapport dat door de tools wordt gegenereerd, geeft het totale verbruikte vermogen weer als 2,435 W en toont ook de verdeling van het vermogen over de verschillende bronnen op het FPGA-bord. Klik hier om een grotere versie van deze figuur te bekijken.
Een andere analyse wordt uitgevoerd om het voordeel te begrijpen van het gebruik van 8 HoG-IP's in plaats van één HoG-IP of meer dan 8 in het aangemaakte blokdiagram, zoals weergegeven in Figuur 3. De hardware-gerelateerde prestatie-metrics werden parallel berekend voor zowel één HoG IP als 8 HoG IP's. Tabel 5 hieronder toont de vergelijking.
| Perfromancemetriek | 1 IP | 8 IP's |
| Timing (ns) | 5.312 | ~5,25 |
| Frequentie (MHz) | 188 | 150 |
| Vermogen (W) | 1.9 | 2.43 |
| LUTs | 4998 | 40536 |
| FF / Registers | 4,031 | 33,342 |
| DSP | 16 | 128 |
| BRAM | 8.5 | 68 |
| FPS | ~10–11 | 83 |
Tabel 5: Vergelijking van prestatie-indicatoren met behulp van enkele versus meerdere HoG-IP's.
Tabel 5 geeft duidelijk aan dat wanneer de bronnen worden meegenomen zoals de LUT's, FF's, DSP's en BRAM, dan bij één HoG IP en 8 HoG IP's, de schaalverdeling lineair is met bijna 8 keer een toename van het gebruikte middelen. Dit is duidelijk te verwachten, aangezien meer IP's zullen leiden tot meer verbruik van middelen. Ook, als de frequentie wordt waargenomen, neemt de maximale frequentie ook licht met 20% af van 188 MHz naar 150 MHz. Dit wordt ook verwacht omdat meer blokken leiden tot meer verbindingen en dus langere paden, wat leidt tot een toename van kritieke paden. Maar de voordelige factoren zoals frames per seconde (FPS) verbeteren van 10 naar 83, wat nonlineaire schaalvergroting in het geval van FPS aantoont dankzij het geïntroduceerde concept van parallelisme, vanwege 8 HoG IP's. Ook schaalt het vermogen van 1,9 W naar 2,4 W, wat wijst op verbeterde energie-efficiëntie door leidingleiding. Deze analyse geeft dus duidelijk aan dat de introductie van 8 HoG-IP's gunstig is voor het ontwerp, en dat schalen boven 8 kan leiden tot overmatig gebruik van middelen; Daarom worden het aantal blokken boven de 8 niet als gunstig beschouwd.
Resultaten van voetgangersdetectie na FPGA-implementatie
Ten slotte wordt het hele systeem geïntegreerd op de FPGA-kaart en wordt het bitstreambestand gegenereerd, dat vervolgens op het bord wordt geprogrammeerd via de SD-kaart die met Python-programmeerbaarheid wordt opgestart. Zodra het bord met de SD-kaart is opgestart, kan de jupyter-interface worden benaderd en kan Python-code op het platform worden geschreven en uitgevoerd. De Python-code wordt uitgevoerd en getest op voetgangersdetectie op verschillende invoerafbeeldingen. Het resultaat van enkele afbeeldingen is te zien in Figuur 7 hieronder. Deze beelden worden gebruikt uit de INRIA-dataset evenals willekeurige beelden van voetgangers afkomstig uit open source online bronnen26,27.

Figuur 7: Voetgangersdetectieresultaten op stilstaande beelden via FPGA Board. De geteste beelden omvatten beelden uit de INRIA-dataset, open source afbeeldingen die via Google beschikbaar zijn om detectienauwkeurigheid te testen op drukke wegen in India. Klik hier om een grotere versie van deze figuur te bekijken.
Het systeem wordt ook getest op realtime beeldopnames via een webcamera en het detecteren van voetgangers in het beeld, evenals het systeem wordt getest op reeds opgenomen video-invoer van voetgangers. De resultaten hiervan zijn weergegeven in Figuur 8 en Figuur 9. Figuur 8 toont een reeks voorbeeldframes die door de webcamera zijn vastgelegd en de resultaten van voetgangersdetectie in elk frame, terwijl Figuur 9 de resultaten van voetgangersdetectie toont die zijn geïmplementeerd op een invoervideo die aan het systeem wordt geleverd.

Figuur 8: Voetgangersdetectieresultaten op een frame dat door een camera in realtime via het FPGA-bord is vastgelegd. Realtime video vastleggen met webcamera 720 P en demonstreren van realtime detectie van voetgangers. De wazige beelden ontstaan doordat er snapshots worden genomen van de lopende livevideo. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 9: Voetgangersdetectieresultaten op video's die als input aan het FPGA-bord worden geleverd. De video's zijn afkomstig van open source links. Klik hier om een grotere versie van deze figuur te bekijken.
Schatting van prestatiemetrics
Om de efficiëntie te berekenen en de prestaties van het hierboven geïmplementeerde ontwerp te analyseren, is het essentieel om prestatie-indicatoren te berekenen die nuttig zijn om de prestaties te evalueren. De prestatiemetrics voor het detecteren van de efficiëntie van een detectiealgoritme zijn in wezen afhankelijk van waarden van echte positieven (TP), ware negatieven (TN), vals-positieven (FP) en valse negatieven (FN). Uit deze waarden kunnen prestatie-indicatoren zoals precisie, herinnering, F1-score, valse positieven per afbeelding en nauwkeurigheid worden berekend volgens de onderstaande vergelijkingen. Er is waargenomen dat de meeste onderzoeksartikelen hun detectieprestaties rapporteren via de nauwkeurigheidsparameter. Maar er is waargenomen dat de nauwkeurigheidsberekening waarbij TN wordt gebruikt een misleidende parameter kan zijn, omdat de waarde van TN niet correct in de juiste zin kan worden berekend, omdat het inhoudt dat alle detectievensters in een afbeelding zonder voetganger worden gevonden, en het geïmplementeerde algoritme ook rapporteert dat er geen detecties zijn. Dit aantal is over het algemeen erg groot, omdat het totale aantal detectievensters in een afbeelding groot is, en de achtergrondgebieden in elke afbeelding meestal overeenkomen met gebieden zonder voetgangers. Door nauwkeurig te kijken naar de nauwkeurigheidsformule zoals weergegeven in vergelijkingen [1] – [5], kan worden vastgesteld dat omdat de waarde van TN vrij hoog zal zijn vergeleken met TP+FP+FN, de nauwkeurigheidsparameter meestal een hoge waarde heeft. Om de prestaties echt te evalueren, is het veel beter om de statistieken zoals precisie, herinnering en F1-score te rapporteren die niet afhankelijk zijn van TN en dus veel nauwkeuriger zijn.
[1]
[2]
[3]
[4]
[5]
Om de waarden van TP, TN en FN voor dit artikel te vinden, werd het experiment op de stilstaande beelden herhaald op een groot aantal beelden. Uit de resultaten van elk beeld werd de waarde van echte positieven, dat wil zeggen het aantal correct gedetecteerde voetgangers, vals-positieven, het aantal foutieve voetgangers en valse negatieven, oftewel de daadwerkelijke onontdekte voetgangers, berekend. De volgende waarden werden gerapporteerd na de uitgevoerde experimenten en worden weergegeven in Tabel 6 hieronder.
| Prestatiemaatstaf | Waarde |
| TP | 143 |
| FP | 39 |
| FN | 19 |
| Precison | 0.786 (78.6%) |
| Terugroeping | 0.883 (88.3%) |
| F1-score | 0.831 (83.1%) |
| FPPI | 0.867 |
Tabel 6: Prestatie-metrics voor het FPGA-gebaseerde geïmplementeerde voetgangersdetectie-algoritme.
Tabel 6 hierboven beschrijft dus de nauwkeurigheid van het voetgangersdetectie-algoritme via de verschillende prestatie-metrics: precisie, herinnering, F1-score en FPPI, wanneer het algoritme op het hardwareplatform wordt geïmplementeerd.
Prestatievergelijking met bestaande FPGA-gebaseerde HoG-implementaties
Ten slotte kan het uitgevoerde werk worden vergeleken met de eerdere literatuur om eventuele significante bijdragen van dit onderzoek te vermelden. Deze vergelijking is weergegeven in Tabel 715, 16, 17, 21, 24hieronder. De artikelen waarmee de vergelijking wordt uitgevoerd zijn allemaal gebaseerd op voetgangersdetectietoepassingen geïmplementeerd op FPGA-platforms, en de algoritmen die voor deze detecties worden gebruikt zijn ook voor alle gelijke, namelijk HoG gecombineerd met een classifier, die ofwel een Adaboost-classifier of SVM is. De beeldgrootte is ook hetzelfde voor elk (640 × 480). De vergelijking wordt gemaakt op basis van parameters zoals de klokfrequentie die de snelheid beïnvloedt, de frames per seconde, het energieverbruik en het gebruik van middelen in termen van LUT's, DSP's, geheugen, slices en registers. Om een eerlijke vergelijking te stimuleren, hebben de onderzoeksartikelen die worden overwogen een vergelijkbare beeldresolutie, en om de bronvergelijking te normaliseren wordt elk hulpbrongebruik genormaliseerd door het aantal verbruikte middelen te delen door het totale aantal beschikbare middelen volgens het gebruikte FPGA-bord.
| Referentie | Beeldgrootte | FPGA-bord | Klokfrequentie | Frames per seconde (FPS) | Macht | Pixels /klok | LUT's (%) | DSP48's (%) | BRAMs / geheugenbits (%) | Registers/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 | Cycloon 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 |
| DIT WERK | 640 X 480 | Ultra 96 v2 | 150 MHz | 83 | 2,435W | 0.0632 | 57 | 35 | 31 | 24 |
Tabel 7: Vergelijking van parameters en prestaties voor implementaties van voetgangersdetectie op FPGA
Zoals te zien is in tabel 7 hierboven, is te zien dat wanneer de implementatie in dit onderzoek wordt vergeleken met eerdere werken, de vergelijkingen aanzienlijke verbeteringen in snelheid laten zien. De FPGA-kaart kan draaien op een klokfrequentie van 150 MHz, wat aangeeft dat de periode voor het voltooien van de volledige taak minder dan 6 ns is. Hoewel sommige eerdere werken aanzienlijk hogere FPS rapporteren, kan door zorgvuldig onderzoek worden geanalyseerd dat dit voordeel ten koste gaat van een hoger energieverbruik en bijna volledig gebruik van bepaalde bronnen. Als het energieverbruik wordt meegenomen dan in dit werk, is het gerapporteerde vermogen ook aan de lage kant en suggereren de resourcebenuttingen dat het verbruik van elke bron iets hoger is dan bij bepaalde implementaties, maar gelijk aan of minder dan 50% (57% LUT's, 35% DSP's en 31% BRAM), wat aanzienlijke ruimte toont voor meer taken in dit ontwerp. Al met al kan worden gesteld dat het werk dat in dit artikel wordt uitgevoerd een evenwichtige afweging bereikt tussen prestaties, energie en middelengebruik. Daarnaast toonde het gepresenteerde werk schaalbare paralleliteit door meerdere IP-blokken zonder de prestatieparameters drastisch te beïnvloeden.
Aanvullend dossier 1: Script_1_train_test.py.Klik hier om dit bestand te downloaden.
Aanvullend dossier 2: Script_2_HLS_hog.cpp. Klik hier om dit bestand te downloaden.
Aanvullend dossier 3: Script_3_HLS_test_bench.cpp. Klik hier om dit bestand te downloaden.
Aanvullend dossier 4: Script_4_HLS_consts.h.Klik hier om dit bestand te downloaden.
Aanvullend dossier 5: Script_5_jupyter_code.txt.Klik hier om dit bestand te downloaden.