In meiner Klasse muss ich eine Anwendung mit zwei Klassifikatoren erstellen, um zu entscheiden, ob ein Objekt in einem Bild ein Beispiel für Phylum porifera (Seeschwamm) oder ein anderes Objekt ist.
Ich bin jedoch völlig verloren, wenn es um Extraktionstechniken in Python geht. Mein Berater hat mich überzeugt, Bilder zu verwenden, die nicht im Unterricht behandelt wurden.
Kann mich jemand zu einer aussagekräftigen Dokumentation oder zum Lesen führen oder Methoden vorschlagen, die in Betracht gezogen werden sollten?
python
feature-extraction
image-recognition
Jeremy Barnes
quelle
quelle
Antworten:
In Bildern sind einige häufig verwendete Techniken zur Merkmalsextraktion das Binarisieren und Verwischen
Binarisieren: Konvertiert das Bildarray in Einsen und Nullen. Dies erfolgt beim Konvertieren des Bildes in ein 2D-Bild. Auch Graustufen können verwendet werden. Es gibt Ihnen eine numerische Matrix des Bildes. Graustufen nehmen viel weniger Platz in Anspruch, wenn sie auf einer Disc gespeichert werden.
So machen Sie es in Python:
Beispielbild:
Konvertieren Sie jetzt in Graustufen:
wird dir dieses Bild zurückgeben:
Und die Matrix kann folgendermaßen angezeigt werden:
Das Array würde ungefähr so aussehen:
Verwenden Sie jetzt ein Histogramm- und / oder ein Konturdiagramm, um die Bildfunktionen anzuzeigen:
Dies würde Ihnen eine Handlung zurückgeben, die ungefähr so aussieht:
Unschärfe: Der Unschärfealgorithmus verwendet den gewichteten Durchschnitt benachbarter Pixel, um die Umgebungsfarbe in jedes Pixel zu integrieren. Es verbessert die Konturen und hilft, die Merkmale und ihre Bedeutung besser zu verstehen.
Und so machen Sie es in Python:
Und das unscharfe Bild ist:
Das sind also einige Möglichkeiten, wie Sie Feature-Engineering durchführen können. Und für fortgeschrittene Methoden müssen Sie die Grundlagen von Computer Vision und neuronalen Netzwerken sowie die verschiedenen Arten von Filtern und ihre Bedeutung und die Mathematik dahinter verstehen.
quelle
Dieses großartige Tutorial befasst sich mit den Grundlagen des Faltungsneuraltrakts, die derzeit bei den meisten Sehaufgaben auf dem neuesten Stand der Technik sind:
http://deeplearning.net/tutorial/lenet.html
Es gibt eine Reihe von Optionen für CNNs in Python, einschließlich Theano und der darauf aufgebauten Bibliotheken (ich fand Keras einfach zu bedienen).
Wenn Sie es vorziehen, tiefes Lernen zu vermeiden, sollten Sie sich mit OpenCV befassen, das viele andere Arten von Funktionen, Line-Haar-Kaskaden und SIFT-Funktionen lernen kann.
http://opencv-python-tutroals.readthedocs.org/de/latest/py_tutorials/py_feature2d/py_table_of_contents_feature2d/py_table_of_contents_feature2d.html
quelle
Wie Jeremy Barnes und Jamesmf sagten, können Sie beliebige Algorithmen für maschinelles Lernen verwenden, um das Problem zu lösen. Sie sind leistungsstark und können die Funktionen automatisch identifizieren. Sie müssen dem Algorithmus nur die richtigen Trainingsdaten zuführen. Da es für die Bearbeitung von Bildern erforderlich ist, sind neuronale Faltungsnetze eine bessere Option für Sie.
Dies ist ein gutes Tutorial, um etwas über das neuronale Faltungsnetzwerk zu lernen. Sie können den Code auch herunterladen und entsprechend Ihrer Problemdefinition ändern. Sie müssen jedoch die Python- und die Theano-Bibliothek für die Verarbeitung lernen, und Sie erhalten auch dafür gute Tutorials
http://deeplearning.net/tutorial/lenet.html
quelle