$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Implementacja wykrywania pieszych w HLS
Rysunek 4 przedstawia wyniki symulacji w narzędziu HLS do wykrywania pieszych z użyciem HoG + SVM. Obraz wejściowy z pieszym jest podawany jako testowe wejście do kodu, a wyjście z wykrytymi pieszymi jest wyświetlane. Na obrazie są dwie części. Pierwsze wykrywanie ma wiele ramek ograniczających wokół tego samego pieszego wielokrotnie, a na drugim obrazie nakładające się ramki są usuwane i tłumione, pozostawiając jedynie główne pola wykrywania.

Rysunek 4: Wyniki symulacji za pomocą narzędzia HLS. (A,B) Dwa różne obrazy wejściowe oraz powstałe obrazy z wykrytymi pieszymi. Proszę kliknąć tutaj, aby zobaczyć większą wersję tej figurki.
Narzędzie HLS dostarcza również raporty syntetyczne dotyczące czasu i wykorzystania zasobów. Podsumowanie czasowe podkreśla wymagany przez projekt okres czasowy oraz podaje maksymalne i minimalne wartości opóźnień w liczbie cykli. Te informacje są przydatne do oszacowania, ile czasu projekt wymaga na wykonanie oraz jaka powinna być częstotliwość zegara przy przejściu do rzeczywistej implementacji sprzętowej. Tabela 2 poniżej pokazuje raport czasowy po syntezie HLS, który wyraźnie pokazuje, że docelowy okres zegara wynosił 6 ns, a projekt trwał 5,25 ns, co jest mniej niż docelowy, dlatego okres może wynosić 6ns lub więcej, ale nie poniżej 5 ns.
| Podsumowanie czasowe |
| Zegar | Cel | Szacunkowo |
| 6,00 ns | 5,250 ns |
| Podsumowanie wykorzystania |
| Całość / Dostępne | Procent wykorzystania |
| BRAM18K | 22 / 432 | 5% |
| DSP48E | 13 / 360 | 3% |
| FF | 5611/ 141120 | 3% |
| LUT | 9904/ 70560 | 14% |
| URAM | 0 | 0 |
Tabela 2: Szacowany raport o czasie i wykorzystaniu zasobów z narzędzia HLS do wykrywania pieszych z użyciem HoG-SVM.
Tabela 2 również przedstawia raport o wykorzystaniu. Pokazuje procentowe wykorzystanie ważnych zasobów FPGA na pokładzie zgodnie z wybranym planszem docelowym. W przypadku tego projektu wykrywania pieszych raport wykorzystania pokazuje, że projekt zużywa 14% tabel wyszukiwania (LUT), 3% flipflopów (FF), 3% cyfrowego przetwarzania sygnałów (DSP) oraz 5% pamięci o dostępie o losowym dostępie blokowym (BRAM). Te szacunki nie są dokładnymi raportami o wykorzystaniu, ale rzeczywiste raporty są do nich zbliżone. To są tylko szacunki, które mogą być obliczone przez narzędzia HLS. Rzeczywista realizacja zwykle bardzo różni się od tych szacunków.
Rzeczywiste wyniki implementacji wynikające z programowania sprzętowego
Po mapowaniu kodu na adres IP, który jest importowany do narzędzia programistycznego FPGA, a projekt jest zaimplementowany na rzeczywistym sprzęcie FPGA, generowane są również liczne raporty. Pierwszym jest podsumowanie czasowe, które pokazuje, czy częstotliwość zegara podany do projektu jest wystarczający, czy nie. Jeśli wszystkie ograniczenia czasowe są spełnione i nie ma naruszeń, projekt może być kontynuowany. Tabela 3 poniżej przedstawia podsumowanie czasowe wygenerowane przez to narzędzie. Jak pokazano w tabeli, podsumowanie czasowe wskazuje na najgorszy ujemny slack, który wynosi 4,073 ns. Ponieważ ta wartość jest dodatnia, oznacza to, że tyle czasu jest jeszcze dostępne. Wartości ujemne wskazują, że FPGA potrzebuje więcej czasu na wykonanie zadania, a zegar pędzi. Ponieważ w tym przypadku nie ma wartości ujemnych, oznacza to, że ograniczenia czasowe są spełnione.
| Podsumowanie czasowania projektu |
| Przygotowanie | Zatrzymaj | Szerokość impulsu |
| Najgorszy ujemny luz 4,073 ns | Najgorszy luz trzymania 0,010 ns | Najgorsza szerokość impulsu – luz 3,500 ns |
Tabela 3: Rzeczywiste podsumowanie czasowe wykrywania pieszych na tablicy FPGA.
Narzędzie pokazuje również raporty wykorzystania zasobów, czyli rzeczywiste wykorzystanie zasobów pokładowych zgodnie z wybranym planszem FPGA. W tym przypadku wybrana płytka to Zynq UltraScale+ MPSoC (Multi-Processor System On Chip) oparty na FPGA board27. Tabela 4 poniżej przedstawia wykorzystanie zasobów, a Rysunek 5 przedstawia diagramatyczne przedstawienie wykorzystania zasobów.
Podsumowanie wykorzystania wskazuje rzeczywiste zużycie zasobów pokładowych, biorąc pod uwagę, że równolegle używanych jest 8 IPS HoG, a szacunki podane przez syntezę HLS dotyczyły jednego IP HoG. Ale nawet po tak intensywnym wykorzystaniu zasoby dla każdego zasobu jest poniżej 50%. Tabela 4 wyraźnie pokazuje wykorzystanie w odniesieniu do poszczególnych zasobów oraz ich procentowy wskaźnik, co jest przedstawione obrazkowo na Rysunku 5.
| Zasoby | Wykorzystanie | Dostępne | Procent wykorzystania |
| 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% |
Tabela 4: Raport rzeczywistego wykorzystania wykrywania pieszych na tablicy FPGA.

Rysunek 5: Wykorzystanie zasobów do wykrywania pieszych na tablicy FPGA po rzeczywistej implementacji. Tabele wyszukiwania (LUT): 57%, LUTRAM: 25%, flip-flopy (FF): 24%, RAM blokowy (BRAM): 31%, cyfrowe procesory sygnału (DSP): 36%, bufory: 1%. Proszę kliknąć tutaj, aby zobaczyć większą wersję tej figurki.
Trzeci raport dotyczy szacunków mocy płyty dla ilości zużycia energii przez projekt. Rysunek 6 poniżej przedstawia raport o zużyciu energii, który pokazuje, że całkowita moc na chipie wynosi 2,435 W. Pokazane są również temperatury złącza oraz zużycie energii przez każdą ważną sieć i element. Pomiary mocy nie wykazują alarmującego zużycia energii, dlatego konstrukcja może być uznana za energooszczędną.

Rysunek 6: Estymacja energii wykrywania pieszych na płycie FPGA po rzeczywistej implementacji. Raport o poborze energii generowany przez narzędzia przedstawia całkowite zużycie energii jako 2,435 W oraz rozkład mocy pomiędzy różne zasoby na tablicy FPGA. Proszę kliknąć tutaj, aby zobaczyć większą wersję tej figurki.
Kolejna analiza ma na celu zrozumienie korzyści płynących z użycia 8 IP HoG zamiast jednego IP HoG lub więcej niż 8 w utworzonym schemacie blokowym, jak pokazano na Rysunku 3. Wskaźniki wydajności sprzętowej były obliczane zarówno dla jednego IP HoG, jak i 8 IP HoG równolegle. Tabela 5 poniżej przedstawia porównanie.
| Metryka perfromancji | 1 IP | 8 IP |
| Timing (ns) | 5.312 | ~5.25 |
| Częstotliwość (MHz) | 188 | 150 |
| Moc (W) | 1.9 | 2.43 |
| LUT-y | 4998 | 40536 |
| FF / Rejestry | 4,031 | 33,342 |
| DSP | 16 | 128 |
| BRAM | 8.5 | 68 |
| FPS | ~10–11 | 83 |
Tabela 5: Porównanie wskaźników wydajności przy użyciu pojedynczych i wielu adresów IP HoG.
Tabela 5 wyraźnie wskazuje, że gdy rozpatrujemy zasoby takie jak LUT, FF, DSP i BRAM, to przy jednym IP HoG i 8 IP HoG, skalowanie jest liniowe, z prawie 8-krotnym wzrostem wykorzystania zasobów. Jest to oczywiście oczekiwane, ponieważ więcej IP oznacza większe zużycie zasobów. Ponadto, jeśli zaobserwujemy tę częstotliwość, maksymalna częstotliwość również nieznacznie spada o 20% z 188 MHz do 150 MHz. Jest to również oczekiwane, ponieważ więcej bloków prowadzi do większej liczby połączeń, a co za tym idzie do dłuższych ścieżek, co powoduje wzrost liczby ścieżek krytycznych. Jednak korzystne czynniki, takie jak liczba klatek na sekundę (FPS), poprawiają się z 10 do 83, co pokazuje nieliniowe skalowanie w przypadku FPS dzięki wprowadzonej koncepcji równoległości, wynikającej z 8 IP HoG. Ponadto moc waha się od 1,9 W do 2,4 W, co wskazuje na poprawę efektywności energetycznej dzięki rurolinizacji. Analiza ta wyraźnie wskazuje, że wprowadzenie 8 IP HoG jest korzystne dla projektu, a skalowanie powyżej 8 może powodować nadmierne zużycie zasobów; dlatego liczba bloków powyżej 8 nie jest uznawana za korzystną.
Wyniki wykrywania pieszych po wdrożeniu FPGA
Na koniec cały system jest integrowany na płycie FPGA, a plik bitstream jest generowany, który jest następnie programowany na płycie za pomocą karty SD uruchamianej z programowalnością Pythona. Po uruchomieniu płyty za pomocą karty SD można uzyskać dostęp do interfejsu jupytera oraz napisać i uruchomić kod w Pythonie na platformie. Kod Pythona jest uruchamiany i testowany pod kątem wykrywania pieszych na różnych obrazach wejściowych. Wynik kilku zdjęć przedstawiono na Rysunku 7 poniżej. Obrazy te są wykorzystywane z zestawu danych INRIA oraz losowych zdjęć pieszych uzyskanych z otwartych źródeł online26,27.

Rysunek 7: Wyniki wykrywania pieszych na statycznych obrazach za pomocą FPGA Board. Testowane obrazy obejmują obrazy z zestawu danych INRIA, otwarte obrazy dostępne w Google do testowania dokładności wykrywania na zatłoczonych ulicach Indii. Proszę kliknąć tutaj, aby zobaczyć większą wersję tej figurki.
System jest również testowany na podstawie rejestrowania klatek w czasie rzeczywistym przez kamerę internetową i wykrywania pieszych w kadrze, a także na już nagranych sygnałach wideo pieszych. Wyniki tego pokazano na Rysunku 8 i 9. Rysunek 8 przedstawia zestaw przykładowych klatek zarejestrowanych przez kamerę internetową oraz wyniki wykrywania pieszych w każdej klatce, natomiast Rysunek 9 pokazuje wyniki wykrywania pieszych zaimplementowane na wideo wejściowym dostarczonym do systemu.

Rysunek 8: Wyniki wykrywania pieszych na klatce zarejestrowanej przez kamerę w czasie rzeczywistym przez płytę FPGA. Rejestrowanie wideo w czasie rzeczywistym kamerą internetową 720 P i demonstracja wykrywania pieszych w czasie rzeczywistym. Rozmyte obrazy powstają podczas robienia migawek z trwającego nagrania na żywo. Proszę kliknąć tutaj, aby zobaczyć większą wersję tej figurki.

Rysunek 9: Wyniki wykrywania pieszych na nagraniach wideo dostarczanych jako dane wejściowe do tablicy FPGA. Filmy pochodzą z linków open source. Proszę kliknąć tutaj, aby zobaczyć większą wersję tej figurki.
Szacowanie metryk wydajności
Aby obliczyć efektywność i przeanalizować wydajność powyższego wdrożonego projektu, niezbędne jest obliczenie wskaźników efektywności, które są przydatne do oceny efektywności. Metryki wydajności wykrywającej efektywność algorytmu detekcji zasadniczo zależą od wartości prawdziwych pozytywnych wyników (TP), prawdziwych negatywów (TN), fałszywych pozytywów (FP) oraz fałszywych negatywów (FN). Z tych wartości można obliczyć wskaźniki wydajności, takie jak precyzja, przypomnienie, wynik F1, fałszywie pozytywne wyniki na obraz oraz dokładność zgodnie z poniższymi równaniami. Zaobserwowano, że większość artykułów naukowych raportuje ich skuteczność wykrywania za pomocą parametru dokładności. Zaobserwowano jednak, że obliczenia dokładności wymagające TN mogą być mylącym parametrem, ponieważ wartości TN nie da się prawidłowo obliczyć, gdyż polega na znalezieniu liczby wszystkich okien detekcji na obrazie, który faktycznie nie ma pieszego, a zaimplementowany algorytm również raportuje to jako brak wykryć. Ta liczba jest zazwyczaj bardzo duża, ponieważ łączna liczba okien detekcji na obrazie jest duża, a obszary tła na każdym zdjęciu zazwyczaj odpowiadają regionom bez pieszych. Dokładnie analizując wzór na dokładność przedstawiony w równaniach [1] – [5], można zauważyć, że ponieważ wartość TN będzie dość wysoka w porównaniu do TP+FP+FN, parametr dokładności zwykle ma wysoką wartość. Aby naprawdę ocenić wyniki, znacznie lepiej jest podać wskaźniki takie jak precyzja, przypomnienie i wynik F1, które nie zależą od TN i są znacznie dokładniejsze.
[1]
[2]
[3]
[4]
[5]
Aby znaleźć wartości TP, TN i FN dla tego artykułu, eksperyment na nieruchomych obrazach powtórzono na ogromnej liczbie obrazów. Na podstawie wyników każdego obrazu obliczano wartość prawdziwych pozytywnych wyników, czyli liczby prawidłowo wykrytych pieszych, fałszywie pozytywnych, liczby błędnie wykrytych pieszych oraz fałszywych negatywów, czyli faktycznych pieszych, którzy pozostali niewykryti. Następujące wartości zostały przedstawione po przeprowadzonych eksperymentach i przedstawione są w Tabeli 6 poniżej.
| Metryka wydajności | Wartość |
| TP | 143 |
| FP | 39 |
| FN | 19 |
| Precison | 0.786 (78.6%) |
| Przypomnienie | 0.883 (88.3%) |
| Wynik F1 | 0.831 (83.1%) |
| FPPI | 0.867 |
Tabela 6: Metryki wydajności dla algorytmu wykrywania pieszych opartego na FPGA.
Tabela 6 powyżej opisuje zatem dokładność algorytmu wykrywania pieszych poprzez różne wskaźniki wydajności, precyzję, przywołanie, wynik F1 oraz FPPI, gdy algorytm jest implementowany na platformie sprzętowej.
Porównanie wydajności z istniejącymi implementacjami HoG opartymi na FPGA
Wreszcie, wykonaną pracę można porównać z wcześniejszą literaturą, aby wskazać istotny wkład tych badań. To porównanie przedstawiono w tabeli 7 15,16,17,21,24 poniżej. Artykuły, z którymi przeprowadza się porównanie, opierają się na aplikacjach wykrywania pieszych zaimplementowanych na platformach FPGA, a algorytmy stosowane do tych detekcji są również takie same dla wszystkich, czyli HoG połączony z klasyfikatorem, którym jest albo Adaboost, albo SVM. Rozmiar obrazu jest również taki sam dla każdego (640 × 480). Porównanie opiera się na parametrach takich jak częstotliwość zegara wpływająca na prędkość, liczba klatek na sekundę, zużycie energii oraz wykorzystanie zasobów w kategoriach LUT, DSP, pamięci, wycinków i rejestrów. Aby wywołać uczciwe porównanie, rozważane artykuły badawcze mają podobną rozdzielczość obrazu, a aby znormalizować porównanie zasobów, każde wykorzystanie zasobów jest normalizowane przez podzielenie liczby zużytych zasobów przez całkowitą liczbę dostępnych zasobów według użytej tablicy FPGA.
| Bibliografia | Rozmiar obrazu | Tablica FPGA | Częstotliwość zegara | Liczba klatek na sekundę (FPS) | Zasilanie | Piksele /zegar | LUTs (%) | DSP48s (%) | BRAMs / memory Bits (%) | Rejestry/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 | Cyklon 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 |
| TO DZIEŁO | 640 x 480 | Ultra 96 v2 | 150 MHz | 83 | 2,435W | 0.0632 | 57 | 35 | 31 | 24 |
Tabela 7: Porównanie parametrów i wydajności dla implementacji wykrywania pieszych w FPGA
Jak widać w Tabeli 7 powyżej, można zauważyć, że porównanie implementacji w tym badaniu z poprzednimi pracami pokazuje znaczącą poprawę pod względem szybkości. Płyta FPGA może pracować z częstotliwością zegara 150 MHz, co oznacza, że czas wykonania całego zadania jest krótszy niż 6 ns. Chociaż niektóre wcześniejsze prace zgłaszały znacznie wyższe FPS, poprzez dokładną analizę można przeanalizować, że ta przewaga wiąże się z wyższym zużyciem energii oraz niemal całkowitym wykorzystaniem niektórych zasobów. Jeśli uwzględnić zużycie energii, to w tej pracy raportowana energia jest również niższa, a wykorzystanie zasobów sugeruje, że zużycie każdego zasobu jest nieco wyższe niż w niektórych implementacjach, ale równe lub mniejsze niż 50% (57% LUT, 35% DSP i 31% BRAM), co wskazuje na znaczne pole do realizacji kolejnych zadań w tym projektowaniu. Ogólnie można stwierdzić, że prace realizowane w tym artykule osiągają zrównoważony kompromis między wydajnością, energią a wykorzystaniem zasobów. Dodatkowo prezentowane prace wykazały skalowalny równoległość poprzez wiele bloków IP bez drastycznego wpływu na parametry wydajności.
Plik uzupełniający 1: Script_1_train_test.py.Kliknij tutaj, aby pobrać ten plik.
Plik uzupełniający 2: Script_2_HLS_hog.cpp. Kliknij tutaj, aby pobrać ten plik.
Plik uzupełniający 3: Script_3_HLS_test_bench.cpp. Kliknij tutaj, aby pobrać ten plik.
Plik uzupełniający 4: Script_4_HLS_consts.h.Kliknij tutaj, aby pobrać ten plik.
Plik uzupełniający 5: Script_5_jupyter_code.txt.Kliknij tutaj, aby pobrać ten plik.