ASOD - wykład 2
Transkrypt
ASOD - wykład 2
ANALIZA SEMANTYCZNA OBRAZU I DŹWIĘKU „Biblioteki, implementacja” dr inż. Jacek Naruniec ARToolkit Biblioteka umożliwiająca rozszerzanie rzeczywistości (augmented reality) Oparte na śledzeniu określonych wzorców Ostatnia wersja darmowa w calach niekomercyjnych z 2007 roku 2 Biblioteki, implementacja ARToolkit 3 Biblioteki, implementacja ARToolKit 4 Biblioteki, implementacja OpenCV Biblioteka open source pierwotnie rozwijana przez Intela Wieloplatformowa, obsługa kamer, GUI C, C++, Python Cały czas rozwijana Obsługa obrazków, kamery i wielu algorytmów, m.in.: Detekcja obiektów oparta na obszarach kontrastowych, obraz całkowy, Filtracja, operacje morfologiczne, operatory krawędziowe Operacje na histogramie, Punkty szczególne, Hough, Algorytmy śledzenia obiektów, Klasyfikatory i wiele innych… 5 Biblioteki, implementacja LibSVM Dobre narzędzie do klasyfikacji punktów za pomocą Support Vector Machines Pozwala na trenowanie/testowanie klasyfikatora Klasyfikacja zarówno liniowa jak i nieliniowa Graficzne obrazowanie uzyskanych klasyfikatorów 6 Biblioteki, implementacja Implementacje Algorytmy często muszą działad w czasie rzeczywistym i tradycyjna optymalizacja nie daje wystarczającej szybkości działania: 7 GPGPU Operacje zoptymalizowane pod architekturę procesora SIMD Biblioteki, implementacja GPGPU General Purpose Graphic Processing Unit Ma na celu wykorzystanie możliwości kart graficznych do obliczeo równoległych CUDA OpenCL Shaders 8 Biblioteki, implementacja GPGPU 9 Biblioteki, implementacja GPGPU 10 Biblioteki, implementacja CUDA Compute Unified Device Architecture Umożliwia pisanie programów na karty graficzne z zastosowaniem C/C++ Wymaga pewnej znajomości architektury sprzętu Osobny kompilator Współpracuje między innymi z Visual Studio, gcc Najnowsze wersje wprowadzają kompatybilnośd z C++ (klasy, dziedziczenie, wzorce) 11 Biblioteki, implementacja CUDA 12 Biblioteki, implementacja CUDA Program dzieli się na dwie części: - program hosta, wykonywany bezpośrednio na CPU, - program urządzenia (jądro), wykonywany na GPU. Tak samo pamięd dzieli się na pamięd urządzenia i pamięd hosta. Kopiowanie pomiędzy jedną a drugą pamięcią odbywa się za pomocą API. 13 Biblioteki, implementacja CUDA kernel 14 Biblioteki, implementacja CUDA 15 Biblioteki, implementacja CUDA 16 Biblioteki, implementacja CUDA Optymalizacja dostępuj do pamięci: Globalnej (maskowanie, odpowiednie adresowanie) Unikanie konfliktów banków Wysyłanie do karty/odbieranie jak największych bloków danych Wykorzystywanie wbudowanych typów (float2, float4 itp.) w celu odpowiedniej alokacji w pamięci Typowy schemat programowania wygląda następująco: 17 przegranie danych do z hosta do globalnej pamięci urządzenia (device memory), dla każdego wątka wczytanie bloku pamięci globalnej do pamięci współdzielonej, przetwarzanie, przesłanie danych z powrotem do pamięci globalnej przekazanie wyników do hosta Biblioteki, implementacja CUDA Optymalizacja kodu: 18 Unikanie pętli Unikanie częstych odwołao do pamięci globalnej Zrównoleglenie algorytmu na dużą ilośd mniejszych (możliwie niezależnych) problemów Biblioteki, implementacja CUDA 19 Biblioteki, implementacja CUDA 20 Biblioteki, implementacja CUDA 21 Biblioteki, implementacja CUDA Przedstawiony przykład nie jest zoptymalizowany, a mimo wszystko działa szybciej niż odpowiednik CPU. Inne działania:s 22 Biblioteki, implementacja CUDA 23 Biblioteki, implementacja CUDA cuFFT (8800GTX / 4x2.4GHz *źródło: http://www.cv.nrao.edu/~pdemores/gpu/+ 24 Biblioteki, implementacja Biblioteki zoptymalizowane pod procesor Intel Math Kernel Library AMD Core Math Library (ACML) Zapewniają przyspieszenie wielu operacji matematycznych – macierzowych, wektorowych, algebra liniowa, fft, generator liczb losowych ACML-GPU – w pewnych operacjach samodzielnie decyduje, czy program umieścid w CPU czy GPU 25 Biblioteki, implementacja Intel Math Kernel Library 26 Biblioteki, implementacja SIMD SIMD – Single Instruction Multiple Data MMX, 3DNow!, SSE, SSE2, SSE3, SSE4, SSE5, Wprowadza nowe wieloelementowe struktury danych 27 Biblioteki, implementacja SIMD SSE __m64 *pInt1 = (__m64*) source; __m64 *pInt2 = (__m64*) source + 1; __m128 min128 = _mm_set_ps1(FLT_MAX); __m128 max128 = _mm_set_ps1(FLT_MIN); for (i=0; i<nd4; i++) { // int2float sse conversion *pDest = _mm_cvtpi32x2_ps(*pInt1, *pInt2); min128 = _mm_min_ps(*pDest, min128); max128 = _mm_min_ps(*pDest, max128); pInt1+=2; pInt2+=2; pDest++; } 28 Biblioteki, implementacja Profilery Detekcja narożników Harrisa. Profiler Visual Studio 2010: 29 Biblioteki, implementacja DSP, FPGA Jeśli algorytm jest dobrze określony: DSP – procesory sygnałowe FPGA – układy programowalne 30 Niewielkie koszty przy małej ilości sztuk Szybkie projektowanie (AHDL, VHDL, Verilog) Biblioteki, implementacja Literatura uzupełniająca Richard O. Duda, Peter E. Hart, David G. Stork: „Pattern classification”, 2001 B.S. Manjunath, P. Salembier, T. Sikora: „Introduction to MPEG-7”, 2003 J. Holmes, W. Holmes: „ Speech synthesis and recognition” W. Kasprzak: „Rozpoznawanie obrazów i sygnałów mowy” Artykuły wymienione przy omawianiu algorytmów 31 Biblioteki, implementacja Sprawy organizacyjne Egzamin 5 pytao opisowych Ankiety 32 Ekstrakcja cech