Vortrag zur Bildbe- und verarbeitungauf der Grafikkarte mit Hilfe von OpenCL. Hintergrund ist die Bildvorverarbeitung und Verbesserung zur bei Gesichtserkennungsverfahren zur Erhöhung der Wiedererkennungsrate.
2. Inhalt Bild-Vor- und Bearbeitung auf der GPU Einstieg Biometrische Erkennung und Gesichter ElasticBunch Graph Matching Eigenface und Eigenspace Eigenes Gesichtserkennungsprogram
3. OpenCL Platform Model One Host + one or more Compute Devices Each Compute Device is composed of one or more Compute Units Each Compute Unitis further divided into one or more Processing Elements
4. Kernel Execution Total number of work-items = Gx * Gy Size of each work-group = Sx * Sy Global ID can be computed from work-group ID and local ID
5. Compute Unit 1 Compute Unit N OpenCL Memory Model Private Memory Private Memory Private Memory Private Memory Local Memory Local Memory Work Item 1 Work Item M Work Item 1 Work Item M PE PE PE PE Global / Constant Memory Data Cache Compute Device Address spaces Private - private to a work-item Local - local to a work-group Global - accessible by all work-items in all work-groups Constant - read only global space Global Memory Compute Device Memory
6. Memory Objects Buffer objects 1D collection of objects (like C arrays) Scalar types & Vector types, as well as user-defined Structures Buffer objects accessed via pointers in the kernel Image objects 2D or 3D texture, frame-buffer, or images Must be addressed through built-in functions Sampler objects Describe how to sample an image in the kernel Addressing modes Filtering modes
7. OpenCL C Language Restrictions Pointers to functions not allowed Pointers to pointers allowed within a kernel, but not as an argument Bit-fields not supported Variable-length arrays and structures not supported Recursion not supported Writes to a pointer of types less than 32-bit not supported Double types not supported, but reserved 3D Image writes not supported Some restrictions are addressed through extensions
8. Bildverarbeitung auf der Grafikkarte Mögliche Vorverarbeitungsschritte auf GPU Kontrast- und Helligkeitsanpassung Gamma-Skalierung (punktweise) Histogramskalierung Tiefpassfilter (FFT) / Glättung Schärfung Rausrechnen von Vignettierung …
9. Bildverarbeitung - Invertierung Einfaches Beispiel: Invertierung Nutzung einer Zwischenklasse zur Kapselung verschiedener GPGPU-Technologien Anlegen einer Kommandowarteschlange Laden der Funktion aus Code-String in die Kernels Erstellen der Datenpuffer für Ein- und Ausgabebild Kopieren der Eingangsbilddaten in globalen GPU-Puffer Setzen der Kernelargumente und Ausführen des Kernels Kopieren des GPU-Out-Puffers in neue Bilddaten
11. Bildverarbeitung – Rekursive Filter Filterung (Kanten, Rauschen) als Matrix-Operation sehr gut für GPU geeignet Portierung von variablen Filtern auf GPU schwierig Keine variable Filterbreite, da dazu Rekursion nötig (oder man verliert Geschwindigkeits-vorteil) Daher: Feste Filterbreite und variable Filterstärke Beispiel: Portierung des 3x3-Gaußfilters mit variablem Sigma Nötig dafür: „Quasi-Rekursivität“
13. Einstieg Biometrische Erkennung und Gesichter Biometrische Verfahren – 2 Phasen Enrollment (Training): Training eines biometrischen Systems mit Beispiel-Datensätzen Recognition (Erkennung): getrennt in „Identifikation“ und „Verifikation“ 2 Hauptkategorien für Gesichtserkennung: Konzentration auf Bildaspekte (Bildähnlichkeiten, Bildmerkmale) Konzentration auf biologische/biometrische Aspekte