[PYTHON] Ich habe versucht, das Objekterkennungs-Tutorial mit dem neuesten Deep-Learning-Algorithmus auszuführen

Einführung

Letztes Mal habe ich einen Gesichtsklassifikator unter Verwendung eines Faltungs-Neuronalen Netzwerks (CNN) erstellt, aber in Wirklichkeit ist dies nur der Anfang des maschinellen Lernens. Ich habe gelernt, dass die Welt mit enormer Geschwindigkeit voranschreitet. Ich habe erfahren, dass der Boss, der sein Leben getötet hat, tatsächlich der schwächste der 10.000 oder mehr Feinde ist.

Es scheint, dass jedes Jahr neue Algorithmen veröffentlicht werden und Wettbewerbe stattfinden, um um die Erkennungsgenauigkeit zu konkurrieren. Der Hauptgrund für den Fortschritt ist die Verbesserung der Erkennungsgenauigkeit und der Verarbeitungsgeschwindigkeit. Unter anderem habe ich versucht, das Tutorial des Single Shot MultiBox Detector (SSD) zu verschieben, der diesmal der neueste Algorithmus ist.

Für diejenigen, die die detaillierten Fortschritte in der Branche lesen möchten, ist die folgende Seite sehr einfach zu verstehen. SSD: Single Shot MultiBox Detector (ECCV2016) Zusammenfassend CNN → R-CNN → SCHNELL R-CNN → SCHNELLER R-CNN → SSD (hier und jetzt)

Wie lange es gedauert hat, diesmal zu posten

Ich war ungefähr 5 Tage lang süchtig danach und es gab ein Problem, bei dem ich keinen Hinweis finden konnte, um das Ergebnis zu lösen. Das liegt daran, dass die Implementierung selbst Python verwendet, aber Tatsache ist, dass so viele Bibliotheksoptionen erforderlich sind, um es zu implementieren.

Zuerst dachte ich, dass es mit Tesnorflow implementiert wurde, aber es gibt auch Code, der zu unverständlich zu sein scheint, und es ist nicht nur zum Zweck des unfreiwilligen Verschiebens interessant, so dass der Code immer noch minimal Keras ist. Ich habe beschlossen, das, was ich implementiert habe, zu verschieben.

Referenzcode Kuras hatte kein Problem, aber dies ist ein Mechanismus, der das Video direkt erkennt und OpenCV, FFmpeg, GTK2 benötigt. Obwohl OpenCV und FFmpeg mit Homebrew installiert wurden, wurde GTK2 nicht in OpenCV erstellt und das Video wurde nicht geladen.

Ich habe versucht, verschiedene Dinge zu bearbeiten und umzuschreiben, und verschiedene Dinge wie Build-Optionen und ähnliches ausprobiert, aber abschließend schien Homebrews OpenCV so eingestellt zu sein, dass GTK nicht erstellt werden konnte. Artikel, der zum Abschluss des Aufgebens führte

Übrigens habe ich es mit dem Build versucht, aber ich habe den Weg aufgegeben, weil der Build von FFmpeg, wie gesagt, sehr mühsam war.

Ergebnisse von Versuch und Irrtum

Aufgrund der obigen Ausführungen habe ich mich entschlossen, die mit Chainer zu testen. Dadurch können Standbilder und keine Videos erkannt werden. chainer-SSD

Umgebung

Git

brew install git

Python3.6.1

brew install python3

PFAD-Einstellung

if [ -d $(brew --prefix)/lib/python3.6/site-packages ];then
  export PYTHONPATH=$(brew --prefix)/lib/python3.6/site-packages:$PYTHONPAT
fi

Cython

pip3 install cython

Numpy

pip3 install numpy

Chainer

pip3 install chainer  

Matplotlib

pip3 install matplotlib  

git clone

cd {Arbeitsplatz}
git clone https://github.com/ninhydrin/chainer-SSD.git  

Vorbereitung

cd {Arbeitsplatz}/chainer-SSD/util
python3 setup.py build_ext -i

Lauf

Zwei Bilder zur Ausführung sind enthalten, also lassen Sie uns dies zuerst ausführen.

cd {Arbeitsplatz}/chainer-SSD
python3 demo.py img/dog.jpg
/usr/local/lib/python3.6/site-packages/skimage/transform/_warps.py:84: UserWarning: The default mode, 'constant', will be changed to 'reflect' in skimage 0.15.
  warn("The default mode, 'constant', will be changed to 'reflect' in "

Ergebnis

Hund, Auto und Fahrrad

スクリーンショット 2017-06-21 16.53.06.png

Fischförmige Fahrräder und Menschen

スクリーンショット 2017-06-21 16.58.01.png

Ich habe verschiedene Dinge ausprobiert

Auto und Katze

スクリーンショット 2017-06-21 16.56.50.png

Menschen und Vögel

スクリーンショット 2017-06-21 17.06.11.png

Waschbär

スクリーンショット 2017-06-21 17.08.17.png * Nicht erkennen (?)

Hund im Rollstuhl

スクリーンショット 2017-06-21 17.09.24.png

Viele Leute

スクリーンショット 2017-06-21 17.10.58.png

Impressionen

――Die Erkennungsgenauigkeit war auf etwa 3 Objekte pro Bild begrenzt. --Wenn das Objekt im Bild zu klein ist, wird es nicht erkannt. (Ich denke, das liegt daran, dass ich die Größe ändere) ――Es scheint, dass die Genauigkeit des Rückens, der Seiten und der unscharfen Objekte noch nicht sehr hoch ist. (Vielleicht gibt es nicht genug zu lernen) ――Die Geschwindigkeit ändert sich nicht, weil ich nicht das Gefühl hatte, dass sie für ein Bild so langsam ist. (Erfahrung ca. 5 Sekunden)

Zusammenfassung

――Ich möchte den Quellcode lesen, die Originalbilddaten lernen und es erneut versuchen. ――Ich möchte die Erkennung direkt vom Video oder der Kamera versuchen. (Wenn es eine einfache Möglichkeit gibt, auf Mac oder CentOS zu bauen)

Recommended Posts

Ich habe versucht, das Objekterkennungs-Tutorial mit dem neuesten Deep-Learning-Algorithmus auszuführen
Ich habe versucht, mit Theano tief zu lernen
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
[Erkennung von Anomalien] Versuchen Sie es mit der neuesten Methode des Fernunterrichts
Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
Ich habe die gängige Geschichte der Vorhersage des Nikkei-Durchschnitts mithilfe von Deep Learning (Backtest) ausprobiert.
Ein Amateur versuchte Deep Learning mit Caffe (Einführung)
Ein Amateur versuchte Deep Learning mit Caffe (Übung)
Ein Amateur hat Deep Learning mit Caffe ausprobiert (Übersicht)
Ich habe versucht, tief zu lernen
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht, die Anzeigenoptimierung mithilfe des Banditenalgorithmus zu simulieren
[TF] Ich habe versucht, das Lernergebnis mit Tensorboard zu visualisieren
[Deep Learning von Grund auf neu] Ich habe versucht, die Gradientenbestätigung auf leicht verständliche Weise zu erklären.
[Für diejenigen, die TPU verwenden möchten] Ich habe versucht, die Tensorflow Object Detection API 2 zu verwenden
[Pokemon-Schwertschild] Ich habe versucht, die Urteilsgrundlage des tiefen Lernens anhand der Drei-Familien-Klassifikation als Beispiel zu visualisieren
Ich habe das TensorFlow-Tutorial als erstes ausprobiert
Ich habe das 2. TensorFlow-Tutorial ausprobiert
Ich habe versucht, mit PyBrain verstärkt zu lernen
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, das TensorFlow-Tutorial mit Kommentaren auszuführen (_TensorFlow_2_0_Einführung für Anfänger).
Objekterkennung durch tiefes Lernen, Keras tief zu verstehen
Ich habe versucht, Pytorchs Deep-Learning-Modell mit TorchServe auf Amazon SageMaker zu hosten
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
Ich habe versucht, die Strichzeichnung mit Deep Learning aus dem Bild zu extrahieren
Ich habe das TensorFlow-Tutorial mit Kommentaren ausgeführt (Textklassifizierung von Filmkritiken).
Ich habe versucht, Objekte mit YOLO v3 (TensorFlow 2.1) auf der GPU von Windows zu erkennen!
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Ich habe versucht, PyCaret mit der schnellsten Geschwindigkeit zu verwenden
Ich habe versucht, die Google Cloud Vision-API zu verwenden
Ich habe versucht, ein Objekt mit M2Det zu erkennen!
Ich habe versucht, das Datetime-Modul von Python zu verwenden
Ich habe versucht, Deep Floor Plan mit Python 3.6.10 auszuführen.
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Ich habe versucht, die funktionale Programmierbibliothek toolz zu verwenden
[Deep Learning von Grund auf neu] Ich habe die Affine-Ebene implementiert
Ich habe den Deep Learning Library Chainer installiert und verwendet
Ich habe versucht, die App auf der IoT-Plattform "Rimotte" auszuführen.
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
Ich habe versucht, meinen eigenen Datensatz mit Chainer Trainer zu lernen
[Linux] Ich habe versucht, die genetische Statistiksoftware PLINK zu verwenden
Ich habe versucht, EKG-Daten mit der K-Shape-Methode zu gruppieren
Ich habe versucht, mit AWS Lambda einen AMI zu erhalten
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren
Ich habe versucht, mit OpenCV Ann Man zu werden
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Ich habe versucht, Dropout zu erklären
Ich untersuchte den stärkenden Lernalgorithmus des Algorithmushandels
Ich habe versucht, die Sprache mit CNN + Melspectogram zu identifizieren
Ich habe versucht, das Wissensdiagramm mit OpenKE zu ergänzen
Ich habe versucht, den Beispielcode des Ansible-Moduls auszuführen
Ich habe versucht, die Genauigkeit von Modellen für maschinelles Lernen mit Kaggle als Thema zu vergleichen.
Ich habe versucht, die Objekte aus dem Bild des Steak-Sets zu sortieren. ① Objekterkennung
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden