5 Test

5.1 Testdaten

Um die Leistung und Erkennungsgenauigkeit unseres Systems zu testen benötigen wir diverse Testdaten. Dieser Abschnitt erläutert welche Testdaten wir zu welchen Tests nutzen.

Zum Test der Erkennungsgenauigkeit verwenden wir offizielle Testdatensätze, die auch in Papern als Referenz für Testergebnisse dienen. In diesen Testdatensätzen sind mehrfache Bilder von dem gleichen Fingerabdruck oder Iris enthalten. Dies erlaubt eine zuverlässige Ermittelung der FAR und FRR Werte.

Für Fingerabdrücke sind dies die Standardtestsätze vom NIST, oder falls diese nicht verfügbar sein sollten ein Referenzdatensatz aus dem Buch „Handbook of Fingerprint Recognition“. Diese Datensätze enthalten im Schnitt einige Tausend Bilder.

Für Iris Testdaten wollen wir die frei verfügbare CASIA-IrisV3 Datenbank vom CBSR verwenden[?]. Mit ca. 22.000 Irisscans von über 700 Personen liegen uns auch hier genügend Testdaten vor um zuverlässige Werte für FAR und FRR zu ermitteln.

Neben der Erkennungsgenauigkeit liegt unser Fokus auch auf einer hohen Durchsatzleistung beim Matching. Da es unwahrscheinlich ist, dass wir hier Testdaten in der nötigen Menge, also mehrere Millionen Fingerabdrücke oder gescannte Iriden, zur Verfügung gestellt bekommen, werden wir uns zu diesem Zweck die Daten generieren.

Um möglichst realistische Ergebnisse zu erhalten wollen wir hierbei für Fingerabdrücke den Generator SFinGe[?] benutzen, der es erlaubt, riesige Mengen an synthetischen, aber realistischen Fingerabdrücken zu erzeugen. Die Verwendung von realistischen Fingerabdrücken erlaubt uns auch einen Performancetest für die Generierung der Templatedatenbank zu machen.

Als Testdaten für die Iriden wollen wir Zufallsdaten generieren, deren stochastische Verteilung der binomialen Bitverteilung von Daugmans Iriscode entspricht. Den Durchsatz beim Aufbau der Templatedatenbank können wir nach unserem jetzigen Stand nicht im grossen Stil testen, da uns nicht genügend Irisbilder zur Verfügung stehen.

5.1.1 SFinGe – Fingerprint-Generator

SFinGe bedeutet Sphinx auf Italienisch und ist ein Generator für synthetische Fingerabdrücke. Die Software ist am Biometric Systems Laboratory der Universität von Bologna in Italien entstanden und stellt das leistungsfähigste, wenn nicht sogar das einzige Produkt dieser Art am Markt dar. Wir sind auf die Software durch das Buch „Handbook of Fingerprint Recognition“ gestoßen. Einer der Autoren ist gleichzeitig Autor des Generators und eine Demoversion liegt der Cover-CD bei. Diese Demoversion generiert aber keine Daten die uns nützlich sein können, die Vollversion müsste eventuell noch beschafft werden.

SFinGe nimmt zwei Seeds graphisch entgegen und generiert Richtungsvektoren um diese. Entlang der Richtungsvektoren zieht das Programm dann Linien, die sich randomisiert minimal schlängeln. Verzweigungen und ähnliche Merkmale werden auch randomisiert eingepasst und dies immer anatomisch korrekt. Ein generierter Abdruck sollte also nicht als solcher erkannt werden.

Der Autor des Programms garantiert sogar, dass bei einer generierten Datenbank von 10 Millionen Abdrücken kein Abdruck dem anderen gleicht, was natürlich ein ausserordentliches Potential für größere Tests zum Ende der der Implementierung besitzt.

Die Software ist in einer Vollversion, die auch eine automatische Generierung der Datenbasis unterstützt, für einen Preis von 1950,- + Mehrwertsteuer zu beziehen. Es muss dabei aber ein NDA unterschrieben werden, dass garantiert, das wir die mit Sfinge generierte Datenbasis nicht öffentlich zugänglich machen.

Das relativ realistische Szenario, was durch die generierte Datenbasis zum Testen gewonnen werden kann, rechtfertigt den doch sehr hohen Preis. Natürlich ist ein Abgleich gegen eine kleinere Datenbasis möglich, wo aber dann öfters derselbe Abdruck untersucht wird.

5.2 Leistungsbewertung

In diesem Abschnitt geht es um die Definition der Metriken nach denen wir die Leistung unseres Systems beurteilen wollen. Wir haben zwei Hauptmetriken: Die Erkennungsgenauigkeit und die Durchsatzleistung.

Um die Erkennungsgenauigkeit zu testen werden wir die in 5.1 beschriebenen Testdatensätze verwenden. Als Metriken dienen die False Rejection Rate (FRR) und die False Acception Rate (FAR). Im folgenden werden diese beiden Metriken genauer beschrieben.

Zuerst wird jeder Fingerabdruck bzw. Iris des Testdatensatzes einzeln als Template betrachtet. Anschließend werden alle anderen Abdrücke bzw. Iriden vom gleichen Finger bzw. Auge gegen diesen Abdruck gematcht. Wenn der Matching-Score unterhalb einer gewissen Schwelle liegt, also kein Match zustande kommt, wird die Variable reject _num inkrementiert. In der Variable total _num werden alle Vergleiche gezählt. Die FRR berechnet sich dann wie folgt:

FRR = reject _num total _num

Anschließend wird jeder Fingerabdruck bzw. Iris einzeln gegen alle anderen Abdrücke bzw. Iriden geprüft, die nicht vom gleichen Finger bzw. Auge sind. Wenn hier ein Match zustande kommt, also der Matchingscore über der Schwelle liegt, wird die Variable accept _num inkrementiert. In total _num wird wieder die Gesamtanzahl aller Vergleiche mitgezählt. Die FAR wird dann wie folgt berechnet:

FAR = accept _num total _num

Die Werte für die Erkennungsgenauigkeit werden wir jeweils für das Fingerprint- und Irismatching ermitteln. Beim Fingerprintmatching weiterhin für jeden verwendeten Algorithmus einzeln und mögliche Kombinationen der Algorithmen (siehe 3.3). Sollten sich nicht optimale FRR und FAR Werte für dieselbe Parameterkonfiguration finden lassen, also eine nicht zufrieden stellende Equal Error Rate (ERR) ergeben, werden wir verschiedene Parameterkonfigurationen auswerten, die jeweils für FRR oder FAR gute Werte liefern.

Zum Test des Durchsatzes erstellen wir uns wie in 5.1 beschrieben eine größere Testdatenbank mit mehreren Millionen Einträgen. Basierend auf dieser Datenbank werden wir dann messen wie lange einzelne Anfragen dauern. Um hier realistische Werte zu ermitteln werden wir sowohl die Performance bei sequentiell als auch bei parallelen Anfragen messen. Als Ergebniswerte interessieren uns hier Metriken wie zum Beispiel Vergleiche pro Sekunde pro CPU oder Knoten.

Weiterhin testen wir wie sich das System skaliert indem wir die Durchsatztests mit verschiedenen Konfigurationen von den Parametern Anzahl Knoten und Größe der Datenbank durchführen.

5.3 Vergleich: Software vs. FPGA

Wie in den Zielen beschrieben wollen wir eine Performanceverbesserung erreichen, indem wir auf FPGAs zur Unterstützung beim Matching zurückgreifen. Um zu überprüfen wie groß hier die Verbesserung ist, werden wir zum einen die Algorithmen rein in Software programmieren und Durchsatztests durchführen. Zum anderen werden wir die gleichen Tests mit Unterstützung durch die FPGAs ausführen und den Speed-up im Vergleich zu den Ergebnissen der reinen Softwarevariante messen.

Weiterhin werden wir, um die Korrektheit der FPGA Implementierung zu überprüfen, einen Back-to-Back Test mit der Softwareimplementierung machen, also überprüfen, ob bei den gleichen Eingaben das gleiche Ergebnis zurückgeliefert wird.