2016-02-04 3 views
5

Ich benutze SVM, da ich ML brauche, um meine Klassifikator zu trainieren, und ich sah auf mehrere Papiere auf Branderkennung, dass sie SVM und logistische Regression verwendet, aber da keine logistische Regression in 2.4.9 Ich plane die Verwendung von SVM. Ich benutze opencv 2.4.9, da Leute sagten, dass opencv 3 fehlerhaft ist.Zug Branderkennung mit opencv SVM

Im neu in dieser so wird es hilfreich sein, wenn wir von einfach

beginnen habe ich mehrere Feuer und Nicht-Feuer-Videos bereit vorbereitet in Frames extrahiert werden. Ich bin neu bei opencv und alles über Klassifikatoren. Meine Frage ist, was sind die Grundlagen beim Training eines Klassifikators speziell SVM, in welchem ​​Format brauche ich meine Bilder und wie trainiere ich sie? Gibt es gute Links für ein Tutorial? Ich habe einen in der opencv-Dokumentation gefunden, aber es lehrt nicht über Training mit Bild. Was benötige ich zur Bestimmung der Parameter und für welche Parameter? Vielen Dank im Voraus

+1

Sie filename.train wird Zuerst müssen Sie Funktionen aus Ihren Bildern extrahieren, um eine SVM zu trainieren. Feature-Extraktionsalgorithmen hängen stark von der Anwendung ab. Wenn Sie OpenCV verwenden, würde ich empfehlen, diese Tutorials über Keypoint-Detektoren und Feature-Extraktion zu betrachten. http://docs.opencv.org/master/db/d27/tutorial_py_table_of_contents_feature2d.html#gsc.tab=0 –

+0

Muss ich meine Bilder in einem bestimmten Format haben? oder jpg ist machbar? –

+0

Und wo stelle ich die extrahierten Features? Ich kann nicht in der Svm-Zugmethode herausfinden, welcher Parameter ist das –

Antwort

8

Dies ist eine konzeptionelle Frage, die für viele Papiere und Tutorials zu erklären erfordert. Wie in den Kommentaren erläutert, versuche ich jedoch, die Merkmalsextraktion näher auszuführen. Feature Deskriptoren sollten robust gegen Skalierung, Translation und Rotation sein. Diese Robustheit wird wörtlich als invariante Merkmale bezeichnet. Zum Beispiel sind Momente und ihre Ableitungen eine der bekanntesten Arten von Invarianten gegen Rotation, Skalierung und Translation. Sie können die Verwendung von Hu-Momenten wie in dieser paper erläutert finden. Flammen- oder Branderkennung ist etwas anderes. Das Merkmal entspricht der Flamme kann aus der dynamischen Textur des Feuers extrahiert werden. Zum Beispiel hat Feuer eine spezielle Farbstruktur, die es vom Hintergrund trennt. Die herkömmlichen Flammendetektoren verwenden Infrarotsensoren, um eine Flamme zu detektieren. In der Bildverarbeitung oder in der RGB-Welt können wir dasselbe tun, indem wir die Natur der Flamme selbst betrachten. Flame emittiert einen signifikanten Teil seiner Energie durch Wärme und Infrarotstrahlung. Man kann also erwarten, dass ein großer Teil des roten Kanals der Flamme gewidmet wird. Sehen Sie sich das folgende Bild an. enter image description here enter image description here

in dem verarbeiteten Bild wird der rote Kanal durch Einführung eine Schwelle zu BW Bild umgewandelt. Um es klarer zu sagen, habe ich die 3 Kanäle wie folgt getrennt.
R: red channel G: green channel B: blue channel
Es ist offensichtlich, dass der rote Kanal mehr über die Flamme zu sagen hat. Daraus kann geschlossen werden, dass die Flamme dort ist, wo R Kanal einen Teil seiner Information hat, dann G und schließlich B Kanal. Siehe this.
Ihr Merkmalsvektor ist dann ein dreidimensionaler Vektor, der zum Beispiel die Kontur der Flamme in drei RGB-Kanälen darstellt. SVM-Klassifikatoren können jetzt verwendet werden. Manchmal kann das Video flammige Segmente enthalten, die vermieden werden sollten und ansonsten zu Fehlalarmen führen. SVM hilft Ihnen, einen Flammenkandidaten zu akzeptieren oder abzulehnen. Um Ihre Support-Vektor-Maschine zu trainieren, sammeln Sie einige echte Flammen und einige Bilder, die von Ihrem Feature Extractor falsch eingeschätzt werden können. Beschriften Sie sie dann mit positiven und negativen Merkmalen. Lassen Sie opencv schließlich die Magie tun und trainieren Sie sie. Weitere Informationen zu SVM finden Sie in diesem Video von Patrick Winston, MIT, unter youtube.

UPDATE ---- Da Sie neugierig auf die Erstellung von Feature-Vektor sind, brachte ich Ihnen das folgende Beispiel. Angenommen, R-, G- und B-Kanäle sind fein getrennt, so dass man sie statistisch als unabhängig bezeichnen kann; Dies ist in realen Bildern nicht der Fall, in denen R-, G-, B-Ebenen nicht statistisch unabhängig sind. enter image description here
Daher wird ein Punkt im RGB-Bild 3 Darstellungen in RGB-Kanälen haben. Zum Beispiel wird eine Flamme 3 Punkte auf allen R, G, B Ebenen machen. Beispielsweise wird hier die Fläche jedes Spots nachverfolgt. Beschriften Sie den Flammenfleck im RGB-Bild mit "A". enter image description here
Die Darstellungen der Fläche A wurden oben in R-, G-, B-Bildern dargestellt. A_r, A_g, A_b bezeichnen den entsprechenden Bereich des Bereichs A auf R-, G- bzw. B-Ebenen.

enter image description here Daher wird Punkt A durch ein Triplett (Ar, Ag, Ab) in der xyz-Ebene dargestellt. SVM akzeptiert nun diesen Vektor als Eingabe und entscheidet, ob er eine echte Flamme bedeutet.
Die Bereiche, normalisiertes Format, ist eine der vielen geometrischen Funktionen, die Sie in den Entscheidungsprozess einbeziehen können. Andere nützliche Eigenschaften dieser Art sind Seitenverhältnisse, Momente und so weiter.

Kurz gesagt, müssen Sie Folgendes tun:
1 - Finden Sie die Flamme gefallenen Bereichen.
2 - Verfolgen Sie den Kandidatenfleck in allen R-, G- und B-Ebenen.
3 - Extrahieren Sie das Feature (ich schlage Momente) in jeder Ebene.
4 - Bilden Sie den Merkmalsvektor
5 - Führen Sie die SVM mit diesem Vektor

Ich hoffe, dass Sie diesen Kommentar hilfreich.

+0

Danke für die Erklärung, ich habe eine Frage. Was meinst du damit ist, werde ich Feature mit einem dreidimensionalen Vektor extrahieren? Ich habe harte Zeit, wie man das benutzt Wie ich in der Dokumentation hier sehe http://docs.opencv.org/2.4.9/modules/nonfree/doc/feature_detection.html Ich gebe das in den Schlüsselpunkten Parameter ein? –

+0

@RedViper, ich habe meinen Beitrag aktualisiert. –

+0

Was ist die Kante von Momenten gegen die Brandung? als Feature, weil ich surfen viel im Internet, wenn es darum geht, Funktionen Extraktionen –

2

Ja richtig, Ihre Aufgabe besteht jetzt darin, eine .txt-Datei mit Daten für jedes Bild zu erstellen, das Sie verarbeiten werden. Diejenigen, die wahr sind, werden mit +1 gekennzeichnet, gefolgt von einem Feature-Set und enden mit -1 -. Diejenigen, die falsche Bilder von Bränden sind, beginnen mit -1 gefolgt von Feature-Sets und enden wieder mit -1 mit Feature-Set des nächsten Bildstarts seine gonna ba mühsame Arbeit, aber ich bin sicher, ul verwalten, dass und schließlich die Datei mit der Erweiterung von .train speichern und nicht so Ihr Training Dateiname .txt Gonna