Darkflow: Wie bewerte ich die Genauigkeit des Testsets?

Erstellt am 5. März 2018  ·  34Kommentare  ·  Quelle: thtrieu/darkflow

Eine Möglichkeit besteht darin, "Mean Average Precision: mAP" zu berechnen.
Mir ist diese in Darkflow implementierte Funktion jedoch nicht bekannt.
Haben Sie Vorschläge, welches Darknet-Repository oder welche Person ein Skript dafür geschrieben hat?

Hilfreichster Kommentar

Gibt es niemanden der das schon mal gemacht hat?
Niemand testet ihre Genauigkeit?
Ich weiß nicht, warum so wichtige Dinge noch nicht implementiert sind.
Wenn keine vorhanden ist, muss ich diese Funktion möglicherweise selbst implementieren und endgültig festlegen.

Alle 34 Kommentare

https://github.com/thtrieu/darkflow/blob/master/darkflow/utils/box.py enthält eine grundlegende Implementierung, die zum Bewerten oder Berechnen der Überlappung zwischen zwei Bildern erforderlich ist. Sie können es nach Bedarf ändern und die durchschnittliche durchschnittliche Präzision als Multiplikation der Wahrscheinlichkeit von Klasse und Box berechnen

Gibt es niemanden der das schon mal gemacht hat?
Niemand testet ihre Genauigkeit?
Ich weiß nicht, warum so wichtige Dinge noch nicht implementiert sind.
Wenn keine vorhanden ist, muss ich diese Funktion möglicherweise selbst implementieren und endgültig festlegen.

Diese Funktion würde mich auch interessieren.

@ off99555 , ich habe

377

Hallo @off99555 , ich
Ich denke, @sandeeprepakula hat eine gute Antwort.

Danke für Ihre Hilfe

@andikira hab ich noch nicht gemacht. Ich bin mir auch nicht sicher.

Hallo @off99555 , Sie müssen dieses Repo https://github.com/Cartucho/mAP sehen, dann sehen Sie den zusätzlichen Ordner, Sie können .xml- und .json-Dateien konvertieren, dieses Repo funktioniert perfekt mit Darkflow.

@andikira @thtrieu Ich habe das yolo2-voc-Netzwerk auf dem PASCAL V0C 0712-Trainval-Set trainiert und auf dem PASCAL VOC 2007-Testset getestet, und die mAP-Leistung beträgt nur etwa 52% (nach ziemlich vielen Epochen (200~), wenn man bedenkt, dass ich initialisiert habe es mit vortrainierten Gewichten). Sie liegt deutlich unter der offiziellen Leistung (76,8% mAP). Ich möchte experimentelle Ergebnisse mit meiner Idee mit YOLO v2 in meine Arbeit einbeziehen. Könnte jemand den Grund kennen?

Ich habe dieses Problem schon einmal gesehen, bitte überprüfen Sie ein anderes Problem @bareblackfoot

@andikira Das mAP Repo funktioniert wunderbar. Ich habe dort auch ein Skript beigesteuert. Dankeschön!

Kanst du

@andikira Das mAP Repo funktioniert wunderbar. Ich habe dort auch ein Skript beigesteuert. Dankeschön!

Könnten Sie bitte genauer erklären? wie funktioniert es ? wie hast du die ergebnisse bekommen?

@srhtyldz Gehen Sie zur https://github.com/Cartucho/mAP-Website und gehen Sie zum Abschnitt Schnellstart.
Die Idee ist, dass Sie das Repo klonen, Ihre Bilder mit Darkflow vorhersagen und dann die Vorhersagedateien in den mAP-Ordner kopieren müssen. Kopieren Sie auch die Ground-Truth-Dateien.
Und Sie tun alles, wie in der README-Datei von mAP Repo vorgeschlagen, und Sie sollten mAP als eine einzelne Zahlenausgabe sehen.

Außerdem müssen Sie Ihre Dateien vom Darkflow-Format in ihr Format konvertieren. Sie stellen das Skript zum Konvertieren des Darkflow-Formats in ihr Format hier zur Verfügung: https://github.com/Cartucho/mAP/tree/master/extra
Lesen Sie die README-Datei.

Außerdem müssen Sie Ihre Dateien vom Darkflow-Format in ihr Format konvertieren. Sie stellen das Skript zum Konvertieren des Darkflow-Formats in ihr Format hier zur Verfügung: https://github.com/Cartucho/mAP/tree/master/extra
Lesen Sie die README-Datei.

Ich habe herausgefunden, dass Darknet Map-Eigenschaften besitzt. Hast du das probiert? Gibt es da einen Unterschied oder welcher ist genauer?

@srhtyldz Ich denke, der Algorithmus ist der gleiche. Außer dass mAP ein Algorithmus ist, der einige Parameter hat, die Sie einstellen können. Normalerweise wird dies vom Autor des Algorithmus manuell eingestellt. Sie sehen also nur dann, dass sie unterschiedliche Zahlen melden, wenn sie unterschiedliche Parameter haben.
Ich schlage vor, dass Sie die Erklärung zur Funktionsweise von mAP lesen, damit Sie die versteckten Parameter verstehen.
Ich habe sie beide probiert. Ich habe mich in meiner Diplomarbeit für darknet weil darkflow nicht die Möglichkeit hat, den Ausgabeordner anzugeben. Dies ist für mein Senior-Projekt von entscheidender Bedeutung, da ich den Code auf FloydHub ausführe, einer Deep-Learning-Cloud, die es Ihnen nur ermöglicht, bestimmte Ordner zu verwenden.

Zuerst verwende ich darkflow mit mAP und dann finde ich später heraus, dass ich den Ausgabepfad nicht angeben kann, also bin ich zu darknet gewechselt und verwende die interne mAP Berechnung .

Und am wichtigsten ist, dass der Besitzer von darknet Repo (der Fork-Version mit AlexeyAB als Besitzer) sehr hilfreich ist. Er beantwortet alle Fragen, die ich gepostet habe, wodurch ich vor Ablauf der Frist fertig war. Damals war es sehr stressig. Ich bin ihm sehr dankbar, ich habe auch seinen Namen in die Diplomarbeit geschrieben.

Zuerst verwende ich darkflow mit mAP und dann finde ich später heraus, dass ich den Ausgabepfad nicht angeben kann, also bin ich zu darknet gewechselt und verwende die interne mAP Berechnung .

Welche Variable möchten Sie angeben?

Zuerst verwende ich darkflow mit mAP und dann finde ich später heraus, dass ich keinen Ausgabepfad angeben kann, also bin ich zu darknet gewechselt und verwende die interne mAP Berechnung .

Meine Meinung gilt auch für Darknet. Ich denke man kann nur mit Schwellwert per Berechnung mAP schalten ? rechts ?

Welche Variable möchten Sie angeben?

@srhtyldz In darkflow etwa einem halben Jahr, als ich diesen Thread gestartet habe, kann ich den Ausgabeordnerpfad nicht angeben. Der Ausgabeordnerpfad ist der Pfad, in den die Vorhersagebilder geschrieben werden.
Wenn ich mich richtig erinnere, ist der Ausgabeordner im Ordner Ihres Datensatzes auf den Ordner out .
Wenn Sie beispielsweise einige Bilder in img/ , befinden sich die Vorhersagen in img/out/ .
In FloydHub erlauben sie Ihnen nicht, die Ausgabe in den Datensatzordner zu schreiben. Wenn der Datensatzordner img/ , können Sie keinen neuen Ordner als img/out erstellen, da Ihnen die Berechtigung verweigert wird.

Vielleicht können Sie jetzt den Ausgabepfad angeben, aber Sie müssen es überprüfen. Ich bin nicht sicher.

Meine Meinung gilt auch für Darknet. Ich denke man kann nur mit Schwellwert per Berechnung mAP schalten ? rechts ?

Wenn ich mich richtig erinnere, hat mAP einen Parameter, den der Autor definieren muss. Es ist der Schwellenwert von 0 bis 1, an dem Sie entscheiden, ob ein Bild richtig vorhergesagt wird. Normalerweise ist dieser auf 0,5 eingestellt. Wenn das Flächenverhältnis also über 0,5 liegt, bedeutet dies das richtige Bild.
Und danach müssen Sie auch noch die Average Precision . Um den Durchschnitt zu verfeinern, müssen Sie herausfinden, wie viele Genauigkeiten es gibt. Es stellt sich heraus, dass Sie auch die Anzahl der Genauigkeiten definieren können. Normalerweise wird die Anzahl der Genauigkeiten auf 11 damit Sie sie von 0, 0.1, 0.2, ..., 0.9, 1.0 anordnen können.

Ich bin mir jedoch nicht sicher, wovon ich rede. Denn das meiste habe ich schon vergessen. Sie müssen es lernen, um sicherzustellen, dass ich richtig liege. Aber 11 Sache mit den Nummern 0.5 und 11 bin ich mir ziemlich sicher. Ich weiß nur nicht, wie sie heißen.

PS. Ich ging zurück, um meine Thesenfolie zu finden (wenn ich weiß, was mAP bedeutet), so habe ich es damals beschrieben:
image

image

Welche Variable möchten Sie angeben?

@srhtyldz In darkflow etwa einem halben Jahr, als ich diesen Thread gestartet habe, kann ich den Ausgabeordnerpfad nicht angeben. Der Ausgabeordnerpfad ist der Pfad, in den die Vorhersagebilder geschrieben werden.
Wenn ich mich richtig erinnere, ist der Ausgabeordner im Ordner Ihres Datensatzes auf den Ordner out .
Wenn Sie beispielsweise einige Bilder in img/ , befinden sich die Vorhersagen in img/out/ .
In FloydHub erlauben sie Ihnen nicht, die Ausgabe in den Datensatzordner zu schreiben. Wenn der Datensatzordner img/ , können Sie keinen neuen Ordner als img/out erstellen, da Ihnen die Berechtigung verweigert wird.

Vielleicht können Sie jetzt den Ausgabepfad angeben, aber Sie müssen es überprüfen. Ich bin nicht sicher.

Meine Meinung gilt auch für Darknet. Ich denke man kann nur mit Schwellwert per Berechnung mAP schalten ? rechts ?

Wenn ich mich richtig erinnere, hat mAP einen Parameter, den der Autor definieren muss. Es ist der Schwellenwert von 0 bis 1, an dem Sie entscheiden, ob ein Bild richtig vorhergesagt wird. Normalerweise ist dieser auf 0,5 eingestellt. Wenn das Flächenverhältnis also über 0,5 liegt, bedeutet dies das richtige Bild.
Und danach müssen Sie auch noch die Average Precision . Um den Durchschnitt zu verfeinern, müssen Sie herausfinden, wie viele Genauigkeiten es gibt. Es stellt sich heraus, dass Sie auch die Anzahl der Genauigkeiten definieren können. Normalerweise wird die Anzahl der Genauigkeiten auf 11 damit Sie sie von 0, 0.1, 0.2, ..., 0.9, 1.0 anordnen können.

Ich bin mir jedoch nicht sicher, wovon ich rede. Denn das meiste habe ich schon vergessen. Sie müssen es lernen, um sicherzustellen, dass ich richtig liege. Aber 11 Sache mit den Nummern 0.5 und 11 bin ich mir ziemlich sicher. Ich weiß nur nicht, wie sie heißen.

PS. Ich ging zurück, um meine Thesenfolie zu finden (wenn ich weiß, was mAP bedeutet), so habe ich es damals beschrieben:
image

Danke vielmals . Ich werde mAP und IoU recherchieren. Ich habe das Ergebnis erhalten, konnte es aber nicht interpretieren. Kann ich noch eine Frage stellen? hast du die 'recall'-Funktion benutzt? Karten- und Rückruffunktion haben die gleiche Funktionalität oder nicht? Hast du eine Idee_?

@srhtyldz mAP wird aus der Präzision als Funktion der Erinnerung berechnet. Präzision und Erinnerung sind also bereits enthalten. mAP ist eine beliebte und konventionelle Bewertungsmetrik für Objekterkennungsaufgaben. So müssen Sie Recall oder Precision nicht einzeln durchführen. Berechnen Sie einfach mAP und wenn es hoch ist, bedeutet dies, dass Ihr Modell gut funktioniert.

@srhtyldz mAP wird aus der Präzision als Funktion der Erinnerung berechnet. Präzision und Erinnerung sind also bereits enthalten. mAP ist eine beliebte und konventionelle Bewertungsmetrik für Objekterkennungsaufgaben. So müssen Sie Recall oder Precision nicht einzeln durchführen. Berechnen Sie einfach mAP und wenn es hoch ist, bedeutet dies, dass Ihr Modell gut funktioniert.

Ich habe 90,4% von mAP bekommen. Ich denke, es funktioniert gut.

@srhtyldz Das ist sehr hoch, wenn Sie viele Klassen haben. (Beliebte Modelle für große Datensätze machen nur etwa 50-60%) Aber selbst wenn Sie nur zwei Klassen haben, ist es immer noch gut.
Stellen Sie sicher, dass Sie die vorhergesagten Bilder mit menschlichen Augen überprüfen, um sicherzustellen, dass die mAP angemessen sind.

@srhtyldz Das ist sehr hoch, wenn Sie viele Klassen haben. (Beliebte Modelle für große Datensätze machen nur etwa 50-60%) Aber selbst wenn Sie nur zwei Klassen haben, ist es immer noch gut.
Stellen Sie sicher, dass Sie die vorhergesagten Bilder mit menschlichen Augen überprüfen, um sicherzustellen, dass die mAP angemessen sind.

Ich habe nur eine Klasse. Außerdem habe ich alle Bilder mit Begrenzungsrahmen gespeichert.
Hast du das mAP-Diagramm gezeichnet? In Alex Repo gibt es ein mAP-Diagramm und während Sie Ihr Modell trainieren, sollten Sie '-map' eingeben, um ein Diagramm zu erhalten. Ich habe dieses Wort nicht verwendet du versuchst es? hast du auch die 'gültige' Funktion probiert? kennst du die unterschiede?
Ich weiß, dass ich viele Fragen gestellt habe, aber Ihre Antworten sind so wichtig für meine Abschlussarbeit :).

Ab darknet werte ich mAP mit seinem Terminal aus und mache einen Schnappschuss der Konsole.
Ich kenne die gültige Funktion nicht.
Für das mAP-Diagramm ist dies möglich, wenn Sie Darkflow verwenden und oben das mAP Repo verwenden. Es gibt ein Skript, das die Animation und die Diagramme generiert.
Ich denke, das mAP-Repo funktioniert vielleicht auch mit Darknet.

Ab darknet werte ich mAP mit seinem Terminal aus und mache einen Schnappschuss der Konsole.
Ich kenne die gültige Funktion nicht.
Für das mAP-Diagramm ist dies möglich, wenn Sie Darkflow verwenden und oben das mAP Repo verwenden. Es gibt ein Skript, das die Animation und die Diagramme generiert.
Ich denke, das mAP-Repo funktioniert vielleicht auch mit Darknet.

Das Problem ist, dass ich nicht weiß, wie die Animation ausgeführt wird. Ich habe das während des Trainings versucht, aber ich konnte keine Animation für die Karte erhalten. @alexeyAB hilft vielleicht dabei.

Ich habe eine mAP meiner Testergebnisse erhalten. Von 56 Bildern habe ich 48 richtige Bilder für meinen Test bekommen. Ich habe vier Klassen. Wie man daraus eine Verwirrungsmatrix macht. Kann mir jemand helfen .

@srhtyldz Ich habe die Funktion /darknet Detector Map cfg/aerial.data cfg/test_tiny.cfg backup\my_yolov3_tiny_final.weights verwendet, aber am Ende des Trainings konnte ich keine Punktzahl oder kein Diagramm erhalten. Wie haben Sie den mAP-Score im Darknet erhalten?

@mustafabuyuk Übergeben Sie das -map-Argument an ./darknet (darknet.exe). Es wird in der Grafik bei etwa 1000 Iterationen angezeigt. Ich bin mir nicht sicher, ob es erforderlich ist, aber ich habe auch einen Validierungssatz von Bildern.

Kann jemand eine Idee haben? YOLOv5 berechnet während des Trainings mAP anhand des Validierungsdatensatzes. Mit welchem ​​Befehl können wir den ungesehenen Testdatensatz (mAP und klassenweise mAP) berechnen?

@off99555 Der Thread scheint geschlossen zu sein. Bekommst du die Antwort?
Ich habe eine Reihe von Bildern und Yolo-Anmerkungsdateien (im TXT-Format) für die Validierung.

Wie verwende ich das Argument -map zur Validierung der Bilder, um den mAP-Score zu erhalten? Kann man daraus die Konfusionsmatrix ableiten?

@sandeeprepakula Lesen Sie meine Antwort direkt, bevor ich das Problem geschlossen habe. So können Sie mAP berechnen.
Aber ich würde weiter vorschlagen, dieses Repo nicht mehr zu verwenden. Ich habe seit einigen Monaten nicht mehr mit Objekterkennung gearbeitet, bin mir also nicht sicher, welches Repository das beste ist, aber ein kurzer Blick auf den letzten Commit dieses Repositorys ergab, dass es im Februar 2020 war. Meinst du ein Repository, das nicht aktualisiert wurde? für ein Jahr lohnt es sich zu verwenden? Wenn Sie an etwas hängen bleiben, wird Ihnen niemand helfen. Berücksichtigen Sie bei der Auswahl des zu verwendenden Repositorys auch den Community-Teil.

@off99555 Danke für den Vorschlag

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

halt9 picture halt9  ·  3Kommentare

pribadihcr picture pribadihcr  ·  5Kommentare

humanova picture humanova  ·  4Kommentare

bareblackfoot picture bareblackfoot  ·  5Kommentare

ma3252788 picture ma3252788  ·  3Kommentare