Dokumentation
Dokumentation
1)Einführung Neuronale Netze
Neurale Netze gewinnen immer mehr Bedeutung, da die Computerindustirie immer mehr wächst. Heutzutage setzt man Neuronale Netze in vielen verschiedenen Bereichen wie zum Beispiel in der Industrie für Qualitäts- und Steuerungskontrolle, in der Medizin für Atemanalyse und Diagnose und im Verkehr für Hindernisserkennung ein.
In meiner Arbeit habe ich im Bereich der Bilderkennung verschiedene vortrainierte Neuronale Netze von verschiedenen Herstellern erst implementiert und dann, die unterschiede ermittelt und die Fehlerwahrscheinlichkeiten verglichen.
Für meine Analyse habe ich bekannte Modelle wie, Resnet50, VGG16, Inception v3 und Mobilenet, da diese häufig verwendet werden, sehr populär sind und eine niedrige Fehlerwahrscheinlichkeit haben. Alle vier Modelle wurden basierend auf der Imagenet Datenbank von 2012, mit 50000 Bildern getestet und danach wurde geschaut, ob das Modell das Bild was ihm vorgelegt wurde richtig erkannt wurde.
2) Eigenschaften der Modelle: Resnet50, VGG16, Inception v3, Mobilenet
Durch die verschiedene Implementierung der neuronalen Netze haben sie eine unterschiedliche Struktur und Eigenschaften auf die ich in folgender Tabelle kurz eingehen will.
RESNET50 | VGG16 | INCEPTION v3 | MOBILENET | |
---|---|---|---|---|
Veröffentlicht | 2015 | 2014 | 2014 | |
Anzahl der Parameter | 25 Millionen | 138 Millionen(hard to handle) | 23 Millionen | 4,2 Millionen |
Anzahl der Layer | 50 Layer | 16 Layer | 42 Layer | |
Struktur | Hauptidee: Mehr Layer"going deeper" Arbeitet mit "residual Blocks" und "identy Funktion" | nur 3x3 convolutions, und viele Filter Zum extrahieren von Bildern sehr nützlich | Hauptidee:"Factorizing into smaller Convolutions" 1x1,3x3Filter keine 5x5, 7x7 Filter →Die Anzahl der Parameter werden verringert | Hauptidee: nicht komplizierter und tiefer machen (gegen den Trend) split the convolution into 3x3 depth wise convinced and a 1x1 point wise conv →reducing computation and model size run mobile form of factorizing convolutions |
Vorteile und Nachteile | Vorteile:
Nachteile:
| Nachteile Arbeitspeicherlatz und Durchführungszeit größer als bei Inceptionv3 | Vorteile: klein und schnell sehr genau | |
top1 und top5 error | 20,74% top1 error 5,25% top5 error Validationsset 2012 | 28,07% top 1 error 9,33% top5 error Validationsset 2012 | 22,1% top 1 error 6,28% top 5 error Imagenet 2012 test set | 29,57% top 1 error 10,49% top 5 error Imagenet 2012 test set |
Gewichte | Vortrainiert auf Imagenet Datenset | Vortrainiert auf Imagenet Datenset | Vortrainiert auf Imagenet Datenset | Vortrainiert auf Imagenet Datenset |
Zu jedem der Modelle gibt es ein Paper das sehr informativ ist:
Resnet50: https://arxiv.org/abs/1512.03385
VGG16: https://arxiv.org/pdf/1409.1556.pdf
Inception v3 :https://arxiv.org/pdf/1512.00567.pdf
Mobilenet: https://arxiv.org/pdf/1704.04861.pdf
Zur Implementierung der verschiedenen Modelle findet man eine gute Anleitung auf folgender Website https://www.learnopencv.com/keras-tutorial-using-pre-trained-imagenet-models/
Dort findet man den Code für die verschiedenen vortrainierte neuronalen netze basierend auf der Datenbank von Imagenet und eine Dokumentation, wie man die Netze initialisiert und implementiert.
3)Testen der verschiedenen Modelle anhand von 50.000 Bildern und 1000 Klassen
Im nächsten Schritt wurden die Modelle getestet mit dem Validationsset von Imagenet aus dem Jahr 2012 mit 50.000 Bildern und 1000 Klassen.
Ziel war es, herauszufinden, wie gut die Modelle die einzelnen Bilder erkennen.
Als Output haben wir von den verschiedenen Modellen eine Liste mit Wahrscheinlichkeiten für die 1000 möglichen detektierten Objekten erhalten und davon die Top5 Wahrscheinlichkeiten ausgeben lassen.
Im folgenden ist der Output der verschiedenen Modelle für das Bild : sea Snake
Resnet50 Predicitions | Vgg16 Predicitions | Inception v3 Predicitions | Mobilenet Predicitions | Vgg19 Predicitions | Xception Predicitions |
---|---|---|---|---|---|
['American_alligator', 0.3109951] | sea_snake', 0.5346089 | ['sea_snake', 0.9386477] | ['sea_snake', 0.33122158] | ['water_snake', 0.2862394] | ['sea_snake', 0.7719618] |
['hognose_snake', 0.21669771] | water_snake', 0.1408455 | ['Indian_cobra', 0.011371396] | ['American_alligator', 0.12475966] | ['African_crocodile', 0.23161876] | ['water_snake', 0.046631858] |
['sea_snake', 0.20344582] | African_crocodile', 0.05819438 | ['sidewinder', 0.007748043] | ['diamondback', 0.09797719] | ['sea_snake', 0.22355235] | ['hognose_snake', 0.041428864] |
['African_crocodile', 0.17933051] | rock_python', 0.055647947 | ['night_snake', 0.006964008] | ['hognose_snake', 0.09459253] | ['American_alligator', 0.077375375] | ['rock_python', 0.022814708] |
['diamondback', 0.04036293] | diamondback', 0.041236367] | ['water_snake', 0.004855588] | ['night_snake', 0.08988458] | ['hognose_snake', 0.06330366] | ['ringneck_snake', 0.015329243] |
Als Output bekommen wir von den Modellen eine Liste, mit den Namen, was die erkannt haben und ihrer dazugehörigen Wahrscheinlichkeit.
In dem Beispiel wäre unsere Top1/Top5 Error 0% da jedes Modell in Ihrer Top5 Predicition Sea snake enthlät.
Zur Abspeicherung der Ergebnisse kann man eine CSV-Datei benutzen. Hier werden die Ergebnisse sehr kompakt dargestellt. Im Anhang stehen die Daten zur Verfügung.
Nach Durchlaufen des Validierungssets wurde der Top-1 und Top-5 Fehler ermittelt.
Resnet50 | Vgg16 | Inception v3 | Mobilenet | Vgg19 | Xception | |
---|---|---|---|---|---|---|
TOp1 | Top1 31,9% | Top1 35,7% | Top1 23,7% | Top1 31,6% | Top1 35,2% | Top1 22,4% |
Top5 | Top5 11,7% | Top5 14,4% | Top5 6,9% | Top5 11,7% | Top5 14,1% | Top5 6,2% |
Das Resnet und das VGG Modell zeigen realistische Fehlerwahrscheinlichkeiten an im Gegensatz zu Inception und Mobilenet
Diese haben eine Fehlerwahrscheinlichkeit von fast 100% und erkennen somit fast kein Bild.
Zusammenfassung
Dateien
Schriftliche Ausarbeitung, Präsentation usw.