• Nie Znaleziono Wyników

Analiza czasowa proponowanego systemu wizyjnego

4.   Weryfikacja implementacyjna – środowisko eksperymentów

4.3.   Analiza czasowa proponowanego systemu wizyjnego

Implementacja algorytmów przetwarzania danych systemu wizyjnego wiąże się z wykonywaniem wielu prostych operacji na stosunkowo dużej ilości danych. W systemach wizyjnych opartych o komputery PC procesory ogólnego przeznaczenia obciążane są dużą

143 Może istnieć potrzeba modyfikacji kodu celem uzupełnienia listy obsługiwanych kamer.

144 Testowano jej działanie pod systemami Microsoft Windows XP, Microsoft Windows 2000.

145 Oprogramowanie tworzono pod systemami Fedora 3 i Ubuntu 8.10, jednak można użyć dowolnego systemu umożliwiającego łatwą konfigurację klastra LAM/MPI i spełniającego wynotowane w dalszej treści wymagania.

146 Może istnieć potrzeba modyfikacji kodu celem uzupełnienia listy obsługiwanych kamer.

liczbą przesłań pomiędzy pamięcią i procesorem, co konsumuje sporo czasu procesora i blokuje magistralę systemu wieloprocesorowego [148]. W przypadku zastosowania klastra jako narzędzia przetwarzania rozproszonego, dodatkowym problemem jest znaczne ograniczenie przepustowości magistrali – najczęściej sieci komputerowej. Zmniejszanie czasu potrzebnego na przesyłanie danych między węzłami (czasu komunikacji) powoduje się zmianę jakościową problemu szybkości obliczeń [148].

Pomimo asynchronicznej pracy węzłów (lub grup węzłów) przetwarzających określone konteksty strumienia wideo (ruch, kolory, kształty, m.in.), możliwe jest oszacowanie czasu opóźnienia wynikającego z pracy systemu wizyjnego. Węzeł nadrzędny klastra w każdej chwili dysponuje historycznymi (nadal aktualnymi) informacjami zwrotnymi z poszczególnych węzłów (grup węzłów), aktualizowanymi asynchronicznie po ukończeniu przetwarzania klatki obrazu w danej grupie węzłów (węźle). Pracę synchroniczną podsystemu akwizycji, przygotowania danych i wejścia klastra przedstawia rysunek Rys. 4.9. Pracę asynchroniczną węzłów klastra w podziale funkcjonalnym przedstawia rysunek Rys. 4.11. Część czasu konsumowanego przez synchroniczną część rozproszonego (klastrowego) systemu wizyjnego można określić (podobnie jak w [148]) w sposób przedstawiony na równaniu (6) poniżej. Czas części asynchronicznej można natomiast oszacować przy założeniu nieprzerwanej dostępności aktualnej informacji zwrotnej lub historycznej zastępującej aktualną (równanie (7) ).

t1= takw+ ttrans1+ tbezkont+ tDWT+ tkompr (6)

gdzie t1 – czas części synchronicznej algorytmu; takw – czas podsystemu akwizycji;

ttrans1 – czas transmisji do klastra;

tbezkont – czas operacji bezkontekstowych wstępnego przetwarzania; tDWT – czas operacji przekształcenia DWT z użyciem POI;

tkompr – czas operacji kompresji danych;

t2 = ttrans2+ tIDWT+ tkont+ twnios+ tster (7)

gdzie t2 – czas części asynchronicznej algorytmu; ttrans2 – czas komunikacji;

tIDWT – czas operacji przekształcenia IDWT;

tkont – czas operacji kontekstowych przetwarzania;

twnios – czas podstawowej pętli podsystemu wnioskowania;

Uzyskanie informacji zwrotnej w części asynchronicznej (dla dowolnego węzła klastra) trwa tyle czasu ile wynosi t2, jednakowoż całkowity czas opóźnienia systemu wizyjnego (od zmiany w scenie do reakcji robota) powinien być wyznaczany z uwzględnieniem dodatkowych opóźnień:

tsys= t1+ trand1+ trand 2+ t2 (8)

gdzie tsys – całkowity czas opóźnienia systemu wizyjnego (od zmiany w scenie do reakcji robota);

t1 – czas części synchronicznej algorytmu; t2 – czas części asynchronicznej algorytmu;

trand1 – czas (wartość przypadkowa) pomiędzy ukończeniem148 ostatniego cyklu synchronicznego, a zainicjowaniem cyklu asynchronicznego;

wartość z przedziału149 od 0+tcyklu do t1,

gdzie tcyklu – najkrótszy czas procesora pomiędzy zakończeniem jednej operacji a rozpoczęciem drugiej;

trand2 – czas (wartość przypadkowa) opóźnienia wysłania żądania kolejnej klatki wynikający z nieukończenia poprzedniego cyklu asynchronicznego; wartość z przedziału od 0+tcyklu do t2;

Powyższe równania wynikają po części z przeprowadzonej analizy literaturowej [148], a po części z prac projektowych wynikających z wstępnej fazy przygotowań do eksperymentów. Poniżej, na rysunkach Rys. 4.9, Rys. 4.10 i Rys. 4.11 przedstawiono szkic zachowania części synchronicznej i asynchronicznej proponowanego systemu wizyjnego. Wyniki weryfikacji implementacyjnej przedstawiono w rozdziale 4.5.

148 Przesłanie danych przed ukończeniem przetwarzania oczywiście jest możliwe (i będzie bardzo często spotykane podczas normalnej pracy systemu), jednak skutkuje przesłaniem danych poprzednich. Aby możliwe było przetwarzanie nowych danych dotyczących najnowszego stanu sceny, należy wpierw ukończyć

przetwarzanie cyklu synchronicznego.

149 W skrajnym przypadku (najdłuższej zwłoki pomiędzy ukończeniem cyklu synchronicznego a rozpoczęciem cyklu asynchronicznego). Czas t1 wynika z czasu przygotowania nowych danych wizualnych w cyklu

synchronicznym, natomiast czas t2 jest tu także obecny, ponieważ węzeł klastra, który nie ukończył przetwarzania cyklu asynchronicznego, nie pobierze nowych danych.

Rys. 4.9. Część synchroniczna rozproszonego (klastrowego) systemu wizyjnego, przedstawiona diagramem sekwencji. (opis w tekście)

Na rysunku powyżej (Rys. 4.9) zilustrowano część synchroniczną rozproszonego (klastrowego) systemu wizyjnego, przedstawioną diagramem sekwencji. Węzeł wejściowy klastra cyklicznie dokonuje przetwarzania wstępnego i konwersji DWT z POI oraz kompresji najnowszej klatki obrazu pobranej z robota (kolor pomarańczowy – obraz kolorowy RGB, kolor szary – macierz dwuwymiarowa – obraz monochromatyczny lub spreparowany obraz monochromatyczny danej cechy obrazu). Komputer wbudowany robota kontroluje pracę kamery, otrzymuje najnowszą klatkę obrazu, przechowuje ją i udostępnia na żądanie węzłowi wejściowemu klastra, nie wykonuje na niej żadnych innych operacji.

Komputer pokładowy robota mobilnego zwykle stanowi najsłabsze ogniwo w zakresie jego inteligencji i możliwości. Czas procesora komputera pokładowego jest bardzo cenny i z tego powodu zdecydowano się znaczną część przekształceń i operacji przenieść do węzła

wejściowego klastra komputerowego. Sprzęt komputerowy zamontowany na/w robocie przetwarza obraz jedynie w zakresie niezbędnym do jego pozyskania i odesłania do klastra. Wszystkie operacje związane ze wstępnym przygotowaniem, konwersją oraz kompresją, przeprowadzane są poza komputerem robota, w węźle wejściowym klastra (Rys. 4.9). Węzeł ten bezustannie przygotowuje kolejne wersje kolejnych klatek strumienia klatek wejściowych, a ponieważ trwa to znacznie dłużej niż czas pomiędzy kolejnymi pozyskanymi klatkami, właśnie ten komputer staje się wąskim gardłem czasu przetwarzania klatki (opóźnienia powodowanego przez system wizyjny). Aby zminimalizować skutki tej komplikacji postanowiono zrównoleglić również ten fragment algorytmu poprzez zastosowanie komputera wieloprocesorowego (lub wielordzeniowego) jako komputera węzła wejściowego klastra. Koncepcję tą zobrazowano na rysunku poniżej (Rys. 4.10).

Rys. 4.10. Część synchroniczna proponowanego rozproszonego (klastrowego) systemu wizyjnego. (opis w tekście)

Rysunek Rys. 4.10 różni się od poprzedniego specyfikacją i algorytmem węzła wejściowego klastra – wymieniono je na wersję wielowątkową wykorzystującą współbieżność. Dzięki temu możliwe jest uruchomienie kilku operacji w tym samym czasie, na odrębnych procesorach/rdzeniach. Dodatkowo możliwe stało się wcześniejsze rozpoczęcie analizy kolejnej klatki (pomimo niezakończenia przetwarzania poprzedniej), co widoczne jest na rysunku150 (technika ta funkcjonuje w literaturze pod nazwą overlapping). Wymiana algorytmu i maszyny węzła wejściowego klastra na wersję wspierającą równoległość skróciło czas obliczeń – przetwarzanie wstępne RGB odbywa się równolegle do wątków przetwarzania wstępnego monochromatycznych obrazów i macierzy cech oraz daje możliwość znaczącego zwiększenia częstotliwości pojawiania się nowych przetworzonych klatek obrazu po stronie klastra. Na rysunku zaznaczono co prawda cztery linie należące do bloku „węzeł wejściowy klastra”, co mogłoby sugerować zastosowanie czterech procesorów/rdzeni, jednak liczba procesorów/rdzeni była również przedmiotem badań, których wyniki teoretyczne dostępne są poniżej, a empiryczne w rozdziale 4.5.

Począwszy od trzech współbieżnie realizowanych operacji w węźle wejściowym klastra wydzielono osobny wątek dla zadań komunikacji.

Zrównoleglenie pracy węzła wejściowego klastra oraz zastosowanie trybu asynchronicznego pomiędzy podsystemem synchronicznym przetwarzania wstępnego a klastrem komputerowym z podziałem funkcjonalnym doprowadziło do zjawiska, które w literaturze nazywane jest „osłabieniem Prawa Amdahla”. W takiej sytuacji, zastosowanie asynchronicznego połączenia dwóch fragmentów algorytmu aplikacji współbieżnej zakłóca relację pomiędzy czasem trwania części sekwencyjnej zadań a przyspieszeniem.

W zaproponowanym rozproszonym (klastrowym) systemie wizyjnym zdecydowano się na całkowite rozdzielenie części synchronicznej systemu od węzłów przetwarzających zadania rozumienia wizji i wnioskowania. Komunikacja pomiędzy tymi dwiema częściami systemu jest całkowicie asynchroniczna. Przewidywane korzyści z takiego rozwiązania przedstawiono na rysunkach poniżej (Rys. 4.12 i Rys. 4.13), a korzyści zaobserwowane na rzeczywistej eksperymentalnej implementacji omówiono w rozdziale 4.5.

150 Pomarańczowe prostokąty, symbolizujące operacje przetwarzania wstępnego (bezkontekstowego, DWT z POI i kompresję) dla obrazu kolorowego, nakładają się na siebie w czasie.

Rys. 4.11. Część asynchroniczna proponowanego rozproszonego (klastrowego) systemu wizyjnego.

Rysunek poniżej przedstawia czas przejścia danych dotyczących klatki obrazu przez część synchroniczną systemu wizyjnego dla różnej liczby równolegle uruchomionych wątków węzła wejściowego klastra, z zaznaczeniem charakteru/rodzaju zadań i ich ziarnistości. Zwiększanie ilości wątków (/procesorów) powyżej pewnej wartości nie przynosi rezultatu, właśnie z uwagi na ziarnistość. Różne kolory oznaczają różne operacje (opisano je na wcześniejszych rysunkach). Dla jednego przypadku bywają dwa rozwiązania, gdy można rozróżnić przypadek pesymistyczny (P) – m.in. żądana jest klatka z kolorowym obrazem oraz przypadek optymistyczny (O) – m.in. dany węzeł żąda jedynie monochromatycznej reprezentacji danych danej klatki. Wartość czasu jest zależna od użytego w eksperymencie sprzętu, dlatego na osi rzędnych nie zaznaczono wartości.

Rys. 4.12. Czas przejścia danych dot. klatki obrazu przez część synchroniczną systemu wizyjnego dla różnej liczby równolegle uruchomionych wątków węzła wejściowego klastra.

Na podstawie równań (6) i (7) można określić szacowany całkowity czas opóźnienia rozproszonego (klastrowego) systemu wizyjnego (równanie (8)). Jest to czas odpowiedzi rozproszonego (klastrowego) systemu wizyjnego na zmiany obrazu znajdującego się w sąsiedztwie punktu POI (zmiana współrzędnych punktu POI również powoduje zmianę obrazu w jego sąsiedztwie). Opóźnienie jest najważniejszym spośród parametrów opisujących działanie systemu wizyjnego w kontekście czasu, ale nie jedynym. Drugim, również znaczącym aspektem jest częstotliwość, z jaką udostępniane151 są nowe klatki obrazu systemowi wizyjnemu. Rysunek Rys. 4.13 przedstawia zależność pomiędzy ilością współbieżnych wątków wejściowego węzła klastra, wg rysunku Rys. 4.10, a czasem odpowiedzi sekwencyjnej części algorytmu na żądanie przesłania kolejnej klatki, pochodzące z dowolnego węzła klastra części asynchronicznej.

151 Nie tylko pobierane (akwizycja), ale również wstępnie przetwarzane, konwertowane z użyciem DWT i POI, kompresowane i przygotowywane w buforze do wysłania.

Rys. 4.13. Czas odpowiedzi części synchronicznej algorytmu na żądanie przesłania jakiejkolwiek klatki (ostatniej pobranej) dla różnej liczby równolegle uruchomionych wątków węzła wejściowego klastra.

Proponowany system wizyjny ma stanowić uzupełnienie/rozszerzenie możliwości percepcyjnych („inteligencji”) robota mobilnego. System ten projektowano z założeniem, że operacje krytyczne (równowaga, bezpieczeństwo, „odruchy bezwarunkowe”) zostaną zaimplementowane w klasyczny sposób152, a tylko dodatkowa funkcjonalność zostanie przeniesiona do nowego rozwiązania. W takim przypadku opóźnienie ma o wiele mniejsze znaczenie niż częstotliwość dostępności nowych (zmienionych) danych. Dlatego celowe jest zrównoleglenie algorytmu węzła wejściowego klastra, które umożliwi zastosowanie wspomnianego wcześniej overlapping’u. Na rysunku powyżej można zaobserwować diametralną poprawę czasu odpowiedzi wraz z zastosowaniem wydzielonego rdzenia/procesora do obsługi zadań komunikacji po stronie asynchronicznej. Ze względu na charakter i ziarnistość zadań jest to zasadne dopiero przy trzech wątkach, zatem w przypadku jednego i dwóch wątków czas odpowiedzi mieści się w opisanym w rozdziale zakresie. Wartość czasu jest zależna od użytego w eksperymencie sprzętu, dlatego na osi rzędnych ilustracji nie zaznaczono wartości. Weryfikację eksperymentalną przedstawiono w rozdziale 4.5.