Änderungen

Zur Navigation springen Zur Suche springen
Zeile 203: Zeile 203:  
* Können aus den Eigenwerten der Kovarianzmatrix der Verteilung berechnet werden
 
* Können aus den Eigenwerten der Kovarianzmatrix der Verteilung berechnet werden
 
* Nicht aussagekräftige Achsen können weggelassen werden
 
* Nicht aussagekräftige Achsen können weggelassen werden
* Bestimmung der Eigenvektoren mit Hilfe von:
+
 
** Numerischen Methoden
+
'''Ablauf:'''
** neuronalen Verfahren
+
# Bestimmung der Eigenvektoren der Kovarianzmatrix C
* Geht nur für lineare Unterräume
+
#* <math>\underline C = \frac{1}{N} \sum_{p=1}^N (\underline x^p - \underline \mu) \cdot (\underline x^p - \underline \mu)^T</math> mit <math>\underline \mu = \frac{1}{N} \sum_{p=1}^N \underline x^p</math>
 +
#* Bestimmung der Eigenvektoren mit Hilfe von numerischen Methoden (Nullstellen von C) oder neuronalen Verfahren (Schätzen der Eigenvektoren über Lernverfahren)
 +
#* Eigenwerte bestimmen: <math>(\underline C - \lambda_i \cdot \underline E) \underline w_i = \underline 0</math>
 +
# Datenvektoren in neues Basissystem tranformieren
 +
#* <math>\underline y^p = \underline W^T (\underline x^p - \underline \mu)</math>
 +
# Inputvektoren können nun durch Linearkombination der Eigenvektoren dargestellt werden
 +
#* <math>\underline x^p = \underline \mu + \underline W \cdot \underline y^p</math>
 +
# Durch Weglassen der kleinsten Eigenwerte, kann Datenreduktion mit minimalem Informationsverlust erzeugt werden
 +
 
 +
'''Bestimmung der Dimension des Unterraums:'''
 +
* Frage: wieviele Eigenvektoren sind für eine effektive Beschreibung ausreichend?
 +
* über Energie der Eigenwerte ermitteln, da diese den Varianzen der Datenverteilung in Richtung der Raumachsen entsprechen
 +
* <math>\frac{\sum_{i=0}^{m-1} \lambda_i}{\sum_{i=0}^{n-1} \lambda_i} \ge \sigma</math>
 +
 
 +
'''Einschränkungen und Probleme:'''
 +
* nur für lineare Unterräume geeignet (nichtlineare Zusammenhänge werden nicht erkannt)
 
* rein datengetrieben (Klassenlabel werden nicht berücksichtigt) → kann das Problem verschlimmern als verbessern
 
* rein datengetrieben (Klassenlabel werden nicht berücksichtigt) → kann das Problem verschlimmern als verbessern
   Zeile 212: Zeile 227:  
* Verwendung verschiedener neuronaler Netzwerkarchitekturen (MLP, RBF, Cascade Correlation,...)
 
* Verwendung verschiedener neuronaler Netzwerkarchitekturen (MLP, RBF, Cascade Correlation,...)
 
* Lernziel ist ein minimaler Klassifikationsfehler
 
* Lernziel ist ein minimaler Klassifikationsfehler
* Große Anzahl an möglichen Eingabe features
+
* große Anzahl an möglichen Eingabefeatures
    
==== Rowlesy's Ansatz ====
 
==== Rowlesy's Ansatz ====
 
* 20x20 Eingabe Pixel
 
* 20x20 Eingabe Pixel
* Aufteilung des Eingabebildes in verschiedene Bildregionen um Augen, Mund, Nase,..., besser Erfassen zu können
+
* Aufteilung des Eingabebildes in verschiedene rezeptive Felder (Stripes und Squares) um Augen, Mund, Nase,..., besser erfassen zu können
* Jede der Bildregion projeziert auf ein hidden neuron
+
* jedes rezeptive Feld projeziert auf genau ein Hiddenneuron
* Ein Ausgabeneuron
+
* ein Ausgabeneuron
* Auflösungspyramiede um verschiedene Größen von Gesichtern zu erkennen
+
* Auflösungspyramide um verschiedene Größen von Gesichtern zu erkennen
* Vorverarbeitung: Beleuchtungsausgleich, Histogrammausgleich
+
* Vorverarbeitung:
 +
** Beleuchtungskorrektur: Bestimmung der Intensitätsfunktion -> Subtraktion vom Originalbild
 +
** Histogrammausgleich: Gleichverteilung der Intensitätswerte durch Geradenbildung im kumulativen Histogramm (Summe der Häufigkeiten aller GW)
 +
* Erweiterung für inplane gedrehte / nicht frontale Gesichter
    
==== Netzwerktraining ====
 
==== Netzwerktraining ====
* exaktes Ausschneiden von Gesichtern aus einer Bilddatenbank und Labeln in Gesicht/nicht Gesicht
+
* exaktes Ausschneiden von Gesichtern aus einer Bilddatenbank, labeln wichtiger Merkmale und einteilen in Gesicht/nicht Gesicht
* Smaples durchlaufen die gleichen Vorverarbeitungsschritte wie später die richtigen Bilddaten
+
* Samples durchlaufen die gleichen Vorverarbeitungsschritte wie später die richtigen Bilddaten
* Zufälliges Samples aus garantierten Nichtgesichtern
+
* Zufälliges Sample aus garantierten Nichtgesichtern
* Künstlich erstellte Musster die auch keine Gesichter sind
+
* Künstlich erstellte Muster die auch keine Gesichter sind
* Test mit nichtgesichtern .... bei fehldetektion wird das Nichtgesicht mit in die Trainingsdatenbank aufgenommen (Bootstrapping)
+
* Test mit Nichtgesichtern -> bei Fehldetektion wird das Nichtgesicht mit in die Trainingsdatenbank aufgenommen (Bootstrapping)
** Auswahl einer gleichen Anzahl von Gesichtern/nicht Gesichtern vor dem Training notwendig da die Datenbank mit der zeit unbalanciert wird
+
** notwednig da vorab Erfassung aller Negativ-Beispiele nicht möglich
 +
** Auswahl einer gleichen Anzahl von Gesichtern/nicht Gesichtern vor dem Training notwendig, da die Datenbank mit der Zeit unbalanciert wird
 +
 
 +
=== Boosting-based classifier cascades ===
 +
* Motivation: Berechnungsaufwand leistungsfähiger Klassifikatoren zu hoch
 +
* Ziel: einfache Nichtgesichter schnellstmöglich verwerfen -> Effizienzsteigerung
 +
* Stufenbasierter Ansatz:
 +
** Klassifikatoren der ersten Stufe möglichst einfach und schnell
 +
** erste Stufe darf keine Gesichter übersehen -> dafür wird auch hohe Zahl von Fehldetektionen geduldet
 +
** letzte Stufe muss Daten sehr gut klassifizieren und darf deshalb auch komplexer sein
 +
* Verwendete Merkmale:
 +
** einfache Subtraktion der dunklen Pixelbereiche von den hellen
 +
** abschließender Schwellwert für binäre Ausgabe
 +
 
 +
'''Adaboost:'''
 +
* Lernverfahren, welches schwache Klassifikatoren zu starken Klassifikatoren kombiniert -> Booster
 +
* wählt dazu aus einer Menge möglicher Klassifikatoren eine sinnvolle Kombination aus:
 +
** den Trainingsdaten werden Gewichte zugeordnet (am Anfang alle gleich)
 +
** Traningsfehler berechnet sich aus Summe der Gewichte der falsch klassifizierten Daten
 +
** Anpassung der Gewichte durch Verringerung der Gewichte der richtig klassifizierten Daten
 +
** Auswahl des Klassifikators mit geringstem Trainingsfehler
 +
** Gesamtklassifikator entsteht aus gewichteter Mehrheitsentscheidung
 +
* sequentieller Aufbau der Kaskade: immer neue Merkmale hinzufügen bis gewünschte Fehldetektionsrate unterschritten wird
 +
 
 +
== Personendetektion mittels Körpersilhouette ==
 +
'''Einteilung:'''
 +
* statisch
 +
** einfache geometrische Strukturen
 +
** Template based
 +
* dynamisch
 +
** Punktbasiert
 +
** Level Sets
 +
** Modelbasiert
 +
 
 +
=== geometrische Strukturen ===
 +
* nutzen einfacher Ellipsen um Körper zu modellieren
 +
* es wird davon ausgegangen das nur geringe Abweichungen von diesen Formen auftreten (ein verdrehter Kopf ist immer noch elliptisch)
 +
* mehrere Formen kombinieren um ganzen Körper darzustellen
 +
* Vorteile:
 +
** einfach zu handhaben
 +
** wenige Parameter
 +
** geringer Berechnungsaufwand
 +
* Nachteil: unpräzise Beschreibung, kann leicht durch andere Objekte abgelenkt werden
 +
 
 +
=== Punktbasierte Detektion ===
 +
* Stützpunkte finden
 +
* Kontur mit Splines durch Stützpunkte nachbilden -> Kontur dadurch sehr präzise
 +
* Nachteile:
 +
** viele Parameter
 +
** hoher Berechnungsaufwand
 +
 
 +
'''Nachbilden der Kontur durch Snakes:'''
 +
* Stützpunkte die grobe Kontur nachbilden ins Bild legen
 +
* auf diese Punkte wirkt eine Kraft, die durch eine Energie, ausgehend von den Kanten des Objektes, geseuert wird
 +
** kann man sich wie eine Art Gummiband vorstellen
 +
* Ziel ist es diese Energie zu minimieren
 +
 
 +
===Level Sets===
 +
* numerische Methode für GW-Bilder
 +
* Vorteile:
 +
** benötigt keine Stützpunkte
 +
** wenige Parameter
 +
** unabhängig von der Anzahl der Objekte
 +
* Nachteil: hoher Berechnungsaufwand
 +
* Prinzip ähnlich wie Snakes
 +
 
 +
=== Modellbasiert ===
 +
* Active Shape Models
 +
* Kontur eines Objektes durch Punkte beschreiben
 +
* Prinzip wie bei Hauptkomponentenanalyse
    
= Vision-basiertes Personentracking =
 
= Vision-basiertes Personentracking =
388

Bearbeitungen

Navigationsmenü