Fehler beim Kaskaden Trainings von OpenCV

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
NinoBaumann
User
Beiträge: 80
Registriert: Samstag 25. April 2020, 19:03

Hallo,

ich arbeite mich gerade ins Thema der Bilderkennung ein. folgende Schritte habe ich schon abgeschlossen:
-n.i.O. und i.O. Bilder von Kraft-Weg-Diagrammen habe ich separiert in Ordnern gespeichert
-Txt Date mit den negativen Bildern erstellt. Also die Bilder welche keinen Fehler besitzen (i.O.)
-Dann habe ich mit dem annotation Tool von OpenCV die entsprechenden Bereiche in den Bildern markiert, welche zum n.i.O. Zustand führten
-Über das createsample Tool habe ich dann das entsprechende Training ausgeführt und die .vec Datei erhalten
Jetzt wollte ich das Kaskaden Training durchführen. Hier wird mir dann folgende Terminalmeldung ausgegeben:

OpenCV: terminate handler is called! The last OpenCV error is:
OpenCV(3.4.11) Error: Bad argument (> Can not get new positive sample. The most possible reason is insufficient count of samples in given vec-file.
> ) in CvCascadeImageReader::PosReader::get, file C:\build\3_4_winpack-build-win64-vc15\opencv\apps\traincascade\imagestorage.cpp, line 158

Der Fehler wird hier auch benannt. Der wahrscheinlichste Grund für den Fehler wird eine unzureichenden Anzahl an Beispielen in der .vec Datei sein. Aber ich habe halt überhaupt keinen Anhaltspunkt was zu >wenig< ist. brauche ich noch 10, 20, 30 oder 500?! Wie gehe ich das Problem am besten an?

Folgende Argumente sind in das Kaskadentraining gegangen:
C:/Users/nb/OpenCV/opencv/build/x64/vc15/bin/opencv_traincascade.exe -data cascade/ -vec pos.vec -bg neg.txt -w 24 -h 24 -numPos 85 -numNeg 194 -numStages 10

numPos: 85
numNeg: 194
numStages: 10
precalcValBufSize[Mb] : 1024
precalcIdxBufSize[Mb] : 1024
acceptanceRatioBreakValue : -1
stageType: BOOST
featureType: HAAR
sampleWidth: 24
sampleHeight: 24
boostType: GAB
minHitRate: 0.995
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
mode: BASIC
Number of unique features given windowSize [24,24] : 162336
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wieso trainierst du Bilderkennung für sowas? Deine Daten stellen doch schon direkt einen Featurevektor dar. Das auf Pixel aufzublasen hilft doch nicht.
NinoBaumann
User
Beiträge: 80
Registriert: Samstag 25. April 2020, 19:03

Sry. Ich verstehe gerade nicht, was Du mir sagen willst. Könntest Du es nochmal anders erklären?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du hast Messdaten. Darauf würde ich direkt lernen. Nicht auf einem gemalten Bild dieser Messdaten.
NinoBaumann
User
Beiträge: 80
Registriert: Samstag 25. April 2020, 19:03

Okay. Was ist der Überbegriff zu diesem Stichwort? Wie lerne ich Messdaten sein? Gibt es hierzu ein Tutorial auf Youtube o.Ä.?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Jedes lernverfahren ist dazu prinzipiell geeignet. SVM oder XGBoost zb. Spezifische Tutorials kenne ich nicht, aber kaggle erwähnte meine Freundin immer.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und noch ein Nachtrag: was du da gewählt hast, ist wirklich massiv ungeeignet. Das verfahren will zb vorder- und Hintergrund Bilder haben. Das existiert bei dir in einer sinnvollen Weise nicht.

Ich würde wirklich erstmal einen Grundlagenkurs ML durcharbeiten, damit du eine Vorstellung bekommst, was es gibt, und wofür die eingesetzt werden können.
NinoBaumann
User
Beiträge: 80
Registriert: Samstag 25. April 2020, 19:03

Werde ich machen. Danke für deine Tipps deets.
Antworten