[PYTHON] Identifikation der Katzenrasse mit Deep Learning

Identifikation der Katzenrasse mit Deep Learning

Russian_Blue_212.jpg

[('Russian_Blue', 0.58100362140429651),


   ('British_Shorthair', 0.22552991563514049),
   ('Abyssinian', 0.057159848358045016),
   ('Bombay', 0.043851502320485049),
   ('Egyptian_Mau', 0.030686072815385441)])]

Katzenerkennung mit OpenCV hat das Gesicht einer Katze erkannt, aber dieses Mal werde ich Deep-Learning-Technologie verwenden, um die Katzenrasse zu identifizieren.

Wenn Sie interessiert sind, werden die technischen Details auf dem Blog geschrieben.

Hier wird eine Technik namens ** Deep Convolutional Neural Network (DCNN) ** auf die allgemeine Objekterkennung angewendet, um die Katzenrasse zu identifizieren. Das Problem in diesem Bereich heißt ** Feinkörnige visuelle Kategorisierung (FGVC) **, wodurch die Zieldomäne (diesmal die Katzenrasse) eingegrenzt wird. Es ist schwierig, eine hohe Genauigkeit zu erreichen, da es sich um visuell ähnliche Dinge handelt.

Implementierung

Es gibt mehrere DCNN-Implementierungen, aber hier verwenden wir eine Bibliothek namens Caffe (* Die Bibliothek selbst ist eine Open-Source-BSD-2-Klausel-Lizenz, die ImageNet-Daten jedoch Beachten Sie, dass es nicht kommerziell ist. Die Ausgabe der mittleren Schicht (verborgene Schicht) von DCNN wird als Merkmalsmenge von 4096 Dimensionen extrahiert und ein geeigneter Klassifizierer wird verwendet, der sie als Merkmal verwendet, um eine Vorhersage zu treffen. Ich denke, es wäre einfacher, die Scikit-Learn-Implementierung für den Klassifikator zu verwenden.

Der Quellcode wird auf GitHub veröffentlicht. Wenn Sie interessiert sind, lesen Sie ihn bitte. Die folgende Verarbeitung ist implementiert. (Es ist ein gekritzeltes Befehlszeilentool, keine Bibliothek.)

:octocat: cat-fancier/classifier at master · wellflat/cat-fancier

Überprüfung

Nehmen wir einen Benchmark mit dem von der Universität Oxford veröffentlichten Tierbilddatensatz.

cat_classes.jpg

Da es 12 Klassen sind, wird es eine leichte Aufgabe sein. Dieses Mal werden wir 1800 zum Lernen und 600 zum Verifizieren verwenden. Es scheint, dass die Anzahl der zu lernenden Bilder 150 pro Klasse beträgt, was gering zu sein scheint. Wenn es sich jedoch um 12 Klassen handelt, kann selbst diese Anzahl eine angemessene Genauigkeit ergeben. Da die Anzahl der Daten gering ist, selbst wenn Sie eine Rastersuche mit einem billigen VPS durchführen, ist das Lernen in etwa zehn Minuten abgeschlossen. Hier werden nur die Klassifizierungsergebnisse von SVM-RBF aufgelistet.

## SVM RBF Kernel
SVC(C=7.7426368268112693, cache_size=200, class_weight=None, coef0=0.0,
  degree=3, gamma=7.7426368268112782e-05, kernel='rbf', max_iter=-1,
  probability=False, random_state=None, shrinking=True, tol=0.001,
  verbose=False)
 
                   precision    recall  f1-score   support
 
       Abyssinian       0.84      0.91      0.88        47
           Bengal       0.84      0.83      0.84        46
           Birman       0.72      0.79      0.75        52
           Bombay       0.98      0.98      0.98        46
British_Shorthair       0.82      0.75      0.78        53
     Egyptian_Mau       0.87      0.87      0.87        61
       Maine_Coon       0.87      0.89      0.88        45
          Persian       0.85      0.91      0.88        45
          Ragdoll       0.76      0.76      0.76        41
     Russian_Blue       0.84      0.82      0.83        57
          Siamese       0.81      0.69      0.75        55
           Sphynx       0.94      0.96      0.95        52
 
      avg / total       0.85      0.84      0.84       600

svm_confusion_matrix_rbf.png roc.png

Im Fall von SVM-RBF betrug die Genauigkeit 84,5%. Die Genauigkeit einiger langhaariger Typen wie Teppichpuppen ist gering, aber ich denke, dass es in Ordnung ist, wenn die Genauigkeit bisher mit 1800 Lerndaten erreicht werden kann. Der Blog veröffentlicht auch die Ergebnisse anderer Klassifikatoren, aber ich denke, es ist realistischer, lineare SVM oder logistische Regression für große Datenmengen zu verwenden, da das Problem der Vorhersagegeschwindigkeit besteht.

Es ist zu beachten, dass das neuronale Netzwerk automatisch effektive Merkmale zur Erkennung findet (lernt), ohne handgefertigte Merkmale zu verwenden. Dieses Mal wurde DCNN als Feature-Extraktor verwendet, aber die Feinabstimmung wird verwendet, um das gesamte Netzwerk mithilfe anderer Lehrerdaten zu optimieren, wobei die Parameter des Modells verwendet werden, die auf umfangreichen Lehrerdaten wie ImageNet als Anfangswerte basieren. Wenn Sie ein Modell verwenden, das mit einer Technik namens (Feinabstimmung) erstellt wurde, können Sie möglicherweise mit höherer Genauigkeit klassifizieren. Ich habe verschiedene Dinge ausprobiert, aber diese Aufgabe zeigte keine signifikante Verbesserung der Genauigkeit für die Zeit (und die Speichernutzung), die zum Erstellen des Modells erforderlich ist. Ich glaube nicht, dass es Schwierigkeiten bei der Feinabstimmung gibt, wenn Sie dem Tutorial auf der offiziellen Website von Caffe folgen.

Deep CNN ist häufig in berühmten Wettbewerben wie ILSVRC zu sehen. Ich denke, dass die Anzahl der Fälle, in denen Deep Learning auf Produktebene wie Webdienste und Apps verwendet wird, in Zukunft stetig zunehmen wird. Sobald eine praktische Methode festgelegt ist, wird Geld für die Datenerfassung ausgegeben.

Abyssinian_178.jpg [('Abyssinian', 0.621), ('Bengal', 0.144), ('Sphynx', 0.087)] Abessinierwahrscheinlichkeit 62,1%, Bengalenwahrscheinlichkeit 14,4%, Sphinxwahrscheinlichkeit 8,7%

Recommended Posts

Identifikation der Katzenrasse mit Deep Learning
Versuchen Sie es mit TensorFlow
Deep Kernel Learning mit Pyro
Versuchen Sie Deep Learning mit FPGA
Generiere Pokemon mit Deep Learning
Probieren Sie Deep Learning mit FPGA-Select-Gurken aus
Machen Sie ASCII-Kunst mit tiefem Lernen
Versuchen Sie es mit TensorFlow Part 2
Überprüfen Sie die Kniebeugenform mit tiefem Lernen
Kategorisieren Sie Nachrichtenartikel mit Deep Learning
Snack-Umsatzprognose mit Deep Learning
Tiefes Lernen
Bringen Sie Menschen mit Deep Learning zum Lächeln
Klassifizieren Sie Anime-Gesichter mit tiefem Lernen mit Chainer
Probieren Sie die Bitcoin-Preisprognose mit Deep Learning aus
Versuchen Sie es mit Chainer Deep Q Learning - Launch
Versuchen Sie mit Kipoi tiefes Erlernen der Genomik
Emotionale Analyse von Tweets mit Deep Learning
Python: Geschlechtsidentifikation (Entwicklung von Deep Learning) Teil 1
Python: Geschlechtsidentifikation (Entwicklung von Deep Learning) Teil 2
Deep Learning Memorandum
Starten Sie Deep Learning
Python Deep Learning
Deep Learning × Python
Die Geschichte des tiefen Lernens mit TPU
99,78% Genauigkeit bei tiefem Lernen durch Erkennen von handgeschriebenem Hiragana
Erstes tiefes Lernen ~ Kampf ~
Python lernen mit ChemTHEATER 03
"Objektorientiert" mit Python gelernt
Eine Geschichte über die Vorhersage des Wechselkurses mit Deep Learning
Python lernen mit ChemTHEATER 05-1
Python: Deep Learning-Praxis
Deep Learning / Aktivierungsfunktionen
Deep Learning von Grund auf neu
Deep Learning Bildanalyse beginnend mit Kaggle und Keras
Deep Learning 1 Übung des Deep Learning
Deep Learning / Cross Entropy
Erstes tiefes Lernen ~ Vorbereitung ~
Erstes tiefes Lernen ~ Lösung ~
[AI] Deep Metric Learning
Python lernen mit ChemTHEATER 02
Ich habe versucht, tief zu lernen
Python lernen mit ChemTHEATER 01
Vorhersagen von Tags durch Extrahieren von Musikfunktionen mit Deep Learning
Klassifizieren Sie Anime-Gesichter durch Fortsetzung / Deep Learning mit Keras
Python: Deep Learning Tuning
Deep Learning Großtechnologie
Deep Learning / Softmax-Funktion
Versuchen Sie, ein Deep Learning / Neuronales Netzwerk mit Scratch aufzubauen
[Evangelion] Versuchen Sie, mit Deep Learning automatisch Asuka-ähnliche Linien zu erzeugen
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
(Jetzt) Erstellen Sie eine GPU Deep Learning-Umgebung mit GeForce GTX 960
Erkennen Sie Ihren Chef mit Deep Learning und verbergen Sie den Bildschirm
[Deep Learning] Bildklassifizierung mit Faltungsnetz [DW Tag 4]
Ich habe das Toho-Projekt mit Deep Learning aufgenommen ... ich wollte.
Deep Learning mit Shogi AI auf Mac und Google Colab
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
HIKAKIN und Max Murai mit Live-Spielvideo und Deep Learning
Vorzeichenkurvenschätzung mit selbst erstelltem Deep Learning-Modul (Python) + LSTM