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