Darkflow: YOLO 9000

Erstellt am 9. Feb. 2017  ·  41Kommentare  ·  Quelle: thtrieu/darkflow

Hallo Leute!

Danke für die tolle Arbeit!

Ich suche das Modell YOLO9000, das 9000 Kategorien einordnen kann.

Ich konnte das YOLO 9000 cfg nicht finden.

Kann bitte jemand helfen?

> find . -name '*.cfg' -exec cat {} \; | grep "classes"
classes=4
classes=20
classes=80
classes=2
classes=4
classes=20
classes=20
classes=4
classes=4
classes=20
classes=4
classes=2
classes=80
classes=4
classes=20
classes=80
classes=20
classes=20
classes=80

Ich habe so etwas erwartet wie classes=9000

help wanted

Hilfreichster Kommentar

Ich habe es zum Laufen gebracht! :)

Ich überlege gerade, wie ich meine Änderungen für eine PR am besten strukturiere. Ich sehe, dass sich in den letzten Tagen viel bewegt hat.

Ich habe das meiste davon derzeit als separates darkflow/cython_utils/cy_yolo9000_findboxes.pyx aber ich könnte es wahrscheinlich in das cy_yolo2_findboxes.pyx rollen und einen weiteren Meta-Schlüssel in die if-Anweisung der labels Methode von darkflow/darkflow/yolo/misc.py einbauen.

Ich bin bereits in die if-Anweisung in der Labels-Methode in misc.py gegangen, um ein hyponym_map hinzuzufügen, das ein Diktat ist, das einen übergeordneten Index einer Liste seiner untergeordneten Knoten pro Datendateien zuordnet.

Außerdem habe ich derzeit einen data/-Ordner in meinem cfg/-Ordner und füge gerade den Pfad der config und meta['tree'] und meta['map'] für die Dateipfade hinzu.

Wenn Sie keinen Input haben, mache ich die PR mit dem, was für mich Sinn macht, sonst bin ich ganz Ohr!

Alle 41 Kommentare

Die Konfiguration ist hier . Es scheint, dass der Autor keine YOLO9000-Gewichtsdatei bereitstellt.

Danke für die schnelle Antwort! Ich werde versuchen, die weights9000 zu finden und sie hier posten, um anderen zu helfen.

Hast du es geschafft das zum Laufen zu bekommen Ich habe die Gewichtsdatei und die Konfigurationsdatei eingefügt und auch die Datei 9k.names heruntergeladen. Die Verarbeitung dauerte nicht allzu lange, aber die Nachbearbeitung dauerte etwa 10x so lange wie beim normalen Setup von yolo.cfg und yolo.weights. Am Ende wurden in keinem der Rückgabebilder Begrenzungsrahmen angezeigt. Mache ich etwas falsch?

Ich habe mir das yolo9000.cfg , es stellt sich heraus, dass es noch mehr zu tun gibt. yolo9000 macht nicht den üblichen Softmax, sondern einen gruppierten. Im Moment sehr beschäftigt, ich werde versuchen, daran zu arbeiten, aber zumindest nicht in dieser und der nächsten Woche.

Ja, keine Sorge. Ihre Reaktionszeiten auf diese Probleme sind wahnsinnig schnell :) vielen Dank für all die Arbeit, die Sie in dieses Projekt gesteckt haben - es ist ein wirklich nettes Projekt. Ich wollte nur sichergehen, dass ich nichts falsch gemacht habe, was das Problem verursacht hat - keine Eile, dies zu klären.

Gibt es irgendwelche Neuigkeiten?
Ich habe das gleiche Problem wie abagshaw.
Nachbearbeitung 10x langsamer und keine Begrenzungsrahmen.
Muss ich die cfg-Datei ändern und wie?

Vielen Dank!

@thtrieu Können wir dieses Problem erneut öffnen, bis es behoben ist, da Darkflow im Moment meiner Meinung nach keine YOLO 9000-Funktionalität hat?

Ich werde wahrscheinlich YOLO9000 für mein Abschlussprojekt verwenden (obwohl ich es stark anpassen werde), und da dies die einzige Tensorflow-Implementierung von YOLOv2 ist, die ich finden kann, werde ich dies wahrscheinlich als Grundlage verwenden. Ich werde meine Implementierung hinzufügen, wenn sie fertig ist, aber das wird wahrscheinlich noch ein paar Wochen dauern. Wenn also jemand früher mehr Zeit hat, würde es mir auch enorm helfen! ;)

Ich habe in den nächsten Tagen etwas Zeit zur Verfügung - aber mein Verständnis von ML und dem, was hier hinter den Kulissen passiert, ist ziemlich flach. Ich bin mir nicht ganz sicher, was getan werden muss, um YOLO 9000 zum Laufen zu bringen - wenn es nicht zu kompliziert ist, könnte jemand kurz skizzieren, was zu tun ist und ich werde es versuchen (wenn es ziemlich komplex ist, kümmere dich nicht darum? Ich bezweifle, dass ich sehr weit komme :))

@abagshaw was getan werden muss, ist die folgenden Parameter in .cfg zu verstehen

random=1
tree=data/9k.tree
map = data/coco9k.map

Diese werden vom aktuellen Code in das meta Dikt eingelesen, der einzige Code, der geändert werden muss, ist die Post-Process-Funktion, die derzeit meta['random'], meta['tree'], meta['map'] nicht berücksichtigt, um den Ausgabetensor & zu interpretieren Begrenzungsrahmen zeichnen.

Aber bräuchte es nicht eine ganz andere Implementierung des Softmax (sollte einfach sein, einfach auf die verschiedenen Schichten des Baums aufteilen) und der Backpropagation über diesen Softmax? (da der Backprop nur über die beteiligten Softmax-Knoten laufen soll?)

Ja, sorry Jungs - ich denke, das ist ein bisschen über meinen Kopf. Ich habe https://github.com/pjreddie/darknet/commit/d2dece3df743c97f2cfbb9bbf0dd0449a8730cec durchkämmt und da passiert viel, was ich nicht verstehe. Ich werde weiter stöbern, aber ich glaube nicht, dass ich sehr weit kommen werde.

Irgendwelche Updates dazu?

Ja, Entschuldigung, ich habe beschlossen, dass es schneller wäre, die yolo9000-Klassifizierungsschicht nur in Tensorflow auf schneller-RCNN zu kleben. Vielleicht überlege ich, ob ich nach Abschluss meiner Abschlussarbeit etwas gemeinsam basteln möchte, aber das dauert noch 4 Monate ;)

Mist - das ist schade. Ich versuche, mir zu erklären, wie diese ganze WordNet-Baumklassifizierung in yolo9000 funktioniert. Ich wünschte, ich hätte diese Dinge besser verstanden, damit ich helfen könnte. Hoffentlich hat bald jemand Zeit, diese Funktion hinzuzufügen :)

Leute, ich habe ein Repository für YOLO 9000 erstellt. Hier wird alles erklärt. Hör zu:

https://github.com/philippermy/yolo-9000

Es verwendet Darknet anstelle von Darkflow, aber ich denke, es sollte ziemlich einfach sein, es zu portieren.

@abagshaw @TheLaurens @saiprabhakar @thtrieu @frey123

@philipperemy Danke, vielleicht fehlt mir etwas - aber ich bin mir nicht sicher, wie wir dadurch der Implementierung von YOLO9000 in Darkflow näher kommen?

Wenn Sie Lust haben, YOLO9000 auf Darkflow zu portieren, wäre das großartig :) :)

@abagshaw, dass es für Darknet funktioniert, war der erste Schritt. Jetzt werde ich mich darauf konzentrieren, wie es für Darkflow funktioniert!

@philippermy Toll! Halten uns auf dem Laufenden :)

@philipperemy Irgendwelche Fortschritte, um YOLO9000 in Darkflow zum Laufen zu bringen? :)

Leider immer noch kein großer Fortschritt! Ich bin gerade mit meiner Arbeit beschäftigt :)

Danke an Alle.

Darf ich ein paar Fragen zu diesem Thema stellen?
Aktuell ändere ich die yolo.cfg um 2 Klassen zu klassifizieren. Als Gewicht verwende ich yolo.weights. Nachdem ich das Modell trainiert habe, funktioniert es ziemlich gut.

F1: Aus diesem Problem geht hervor, dass ich für unterschiedliche Anzahl von Klassen unterschiedliche Gewichtungen brauche. Ich erinnere mich, dass yolo.weights mindestens für 20 Klassen verwendet wird. Habe ich recht?

F2: Für wie viele Klassen kann ich dieses yolo.weights verwenden?

F3: Ist es möglich, den Checkpoint eines Modells für 2 Klassen als Startgewicht für ein anderes Modell, sagen wir 3 Klassen, zu verwenden?

Danke noch einmal.

@chengs2000 Ihre Fragen beziehen sich nicht wirklich auf YOLO9000 - vielleicht posten Sie Ihre Frage in einer neuen Ausgabe und sie kann dort beantwortet werden.

Hi, es sei denn, jemand macht dies bereits (@philippermy?) Ich werde es versuchen. Werde in ein paar Tagen mit Ergebnissen berichten.

@relh mach bitte weiter! Ich hatte nicht viel Zeit, mich darauf zu konzentrieren.

@relh Irgendwelche Fortschritte? 😃

Ich habe es zum Laufen gebracht! :)

Ich überlege gerade, wie ich meine Änderungen für eine PR am besten strukturiere. Ich sehe, dass sich in den letzten Tagen viel bewegt hat.

Ich habe das meiste davon derzeit als separates darkflow/cython_utils/cy_yolo9000_findboxes.pyx aber ich könnte es wahrscheinlich in das cy_yolo2_findboxes.pyx rollen und einen weiteren Meta-Schlüssel in die if-Anweisung der labels Methode von darkflow/darkflow/yolo/misc.py einbauen.

Ich bin bereits in die if-Anweisung in der Labels-Methode in misc.py gegangen, um ein hyponym_map hinzuzufügen, das ein Diktat ist, das einen übergeordneten Index einer Liste seiner untergeordneten Knoten pro Datendateien zuordnet.

Außerdem habe ich derzeit einen data/-Ordner in meinem cfg/-Ordner und füge gerade den Pfad der config und meta['tree'] und meta['map'] für die Dateipfade hinzu.

Wenn Sie keinen Input haben, mache ich die PR mit dem, was für mich Sinn macht, sonst bin ich ganz Ohr!

@relh Super ! Vielen Dank für Ihre Arbeit dazu!!

Für meine 2 Cent: Wenn Ihr cy_yolo9000_findboxes.pyx Code völlig anders ist als der, der bereits in cy_yolo2_findboxes.pyx Erstellen einer neuen Datei kein Problem - aber wenn sie den größten Teil des gleichen Codes teilen, ist es Es wäre wahrscheinlich eine bessere Idee, zu versuchen, Ihre Änderungen in die vorhandene Datei einzufügen (um das Hinzufügen von doppeltem Code zu vermeiden). Es ist schwer für mich, viel mehr Input zu geben, ohne die Änderungen zu sehen, die Sie vorgenommen haben (ich bin ziemlich nicht vertraut damit, wie sich YOLO9000 von YOLOv2 unterscheidet) - also würde ich nach Ihrem besten Urteil gehen, wie Sie diese Änderungen vornehmen.

Freue mich auf die PR!

@relh vielen dank!! Tut mir leid, ich war in letzter Zeit sehr beschäftigt und hatte keine Zeit, daran zu arbeiten!

@relh das sind tolle Neuigkeiten. Freue mich auf die PR.

Groß! (Ich freue mich darauf, dieses Problem zu schließen).

Ist dieses Thema geschlossen? Haben wir eine Tensorflow-Implementierung für YOLO9000? Bitte weisen Sie mich gleich darauf hin. Vielen Dank.

Frage in dieser Ausgabe: pjreddie bezeichnet YOLO9000 auf seiner YOLO-Website als YOLOv2. Wenn Sie zum Abschnitt "Neuigkeiten in Version 2" gehen und auf den Link zum Papier klicken, wird das YOLO9000-Papier geöffnet.

Wenn es also keine YOLO9000-Implementierung in Darkflow gibt, was genau ist YOLOv2 im Kontext von Darkflow?

Yolo9k ist das Modell, das auf Imagenet mit der Bounding-Box-Lernmethode trainiert wird, während das Standard-yolov2 auf COCO trainiert wird.

@philippermy

1) scheint Ihr Code nur auf der CPU zu funktionieren, wissen Sie warum?
2) Was ist jetzt der Unterschied zu deinem Projekt und Darknet?

Vielen Dank!

@moskiteau- Code funktioniert gut auf der GPU
Mein Projekt basiert auf Darknet und enthält alles um YOLO9000 zu betreiben.

kompiliert mit CPU-Flag:

seb@PHQ-4035-En:~/projects/stockshot/darknet$ ./darknet detector test cfg/combine9k.data cfg/yolo9000.cfg yolo9000.weights data/person.jpg
layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   544 x 544 x   3   ->   544 x 544 x  32
    1 max          2 x 2 / 2   544 x 544 x  32   ->   272 x 272 x  32
    2 conv     64  3 x 3 / 1   272 x 272 x  32   ->   272 x 272 x  64
    3 max          2 x 2 / 2   272 x 272 x  64   ->   136 x 136 x  64
    4 conv    128  3 x 3 / 1   136 x 136 x  64   ->   136 x 136 x 128
    5 conv     64  1 x 1 / 1   136 x 136 x 128   ->   136 x 136 x  64
    6 conv    128  3 x 3 / 1   136 x 136 x  64   ->   136 x 136 x 128
    7 max          2 x 2 / 2   136 x 136 x 128   ->    68 x  68 x 128
    8 conv    256  3 x 3 / 1    68 x  68 x 128   ->    68 x  68 x 256
    9 conv    128  1 x 1 / 1    68 x  68 x 256   ->    68 x  68 x 128
   10 conv    256  3 x 3 / 1    68 x  68 x 128   ->    68 x  68 x 256
   11 max          2 x 2 / 2    68 x  68 x 256   ->    34 x  34 x 256
   12 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   13 conv    256  1 x 1 / 1    34 x  34 x 512   ->    34 x  34 x 256
   14 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   15 conv    256  1 x 1 / 1    34 x  34 x 512   ->    34 x  34 x 256
   16 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   17 max          2 x 2 / 2    34 x  34 x 512   ->    17 x  17 x 512
   18 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   19 conv    512  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x 512
   20 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   21 conv    512  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x 512
   22 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   23 conv  28269  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x28269
   24 detection
mask_scale: Using default '1.000000'
Loading weights from yolo9000.weights...Done!
data/person.jpg: Predicted in 13.577125 seconds.
Tuareg: 25%
wild horse: 27%
goat herder: 82%
Shetland pony: 86%
German shepherd: 48%
Gordon setter: 51%
seb@PHQ-4035-En:~/projects/stockshot/darknet$

und mit GPU-Flag kompiliert:

seb@PHQ-4035-En:~/projects/stockshot/darknet$ ./darknet detector test cfg/combine9k.data cfg/yolo9000.cfg yolo9000.weights data/person.jpg
layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   544 x 544 x   3   ->   544 x 544 x  32
    1 max          2 x 2 / 2   544 x 544 x  32   ->   272 x 272 x  32
    2 conv     64  3 x 3 / 1   272 x 272 x  32   ->   272 x 272 x  64
    3 max          2 x 2 / 2   272 x 272 x  64   ->   136 x 136 x  64
    4 conv    128  3 x 3 / 1   136 x 136 x  64   ->   136 x 136 x 128
    5 conv     64  1 x 1 / 1   136 x 136 x 128   ->   136 x 136 x  64
    6 conv    128  3 x 3 / 1   136 x 136 x  64   ->   136 x 136 x 128
    7 max          2 x 2 / 2   136 x 136 x 128   ->    68 x  68 x 128
    8 conv    256  3 x 3 / 1    68 x  68 x 128   ->    68 x  68 x 256
    9 conv    128  1 x 1 / 1    68 x  68 x 256   ->    68 x  68 x 128
   10 conv    256  3 x 3 / 1    68 x  68 x 128   ->    68 x  68 x 256
   11 max          2 x 2 / 2    68 x  68 x 256   ->    34 x  34 x 256
   12 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   13 conv    256  1 x 1 / 1    34 x  34 x 512   ->    34 x  34 x 256
   14 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   15 conv    256  1 x 1 / 1    34 x  34 x 512   ->    34 x  34 x 256
   16 conv    512  3 x 3 / 1    34 x  34 x 256   ->    34 x  34 x 512
   17 max          2 x 2 / 2    34 x  34 x 512   ->    17 x  17 x 512
   18 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   19 conv    512  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x 512
   20 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   21 conv    512  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x 512
   22 conv   1024  3 x 3 / 1    17 x  17 x 512   ->    17 x  17 x1024
   23 conv  28269  1 x 1 / 1    17 x  17 x1024   ->    17 x  17 x28269
   24 detection
mask_scale: Using default '1.000000'
Loading weights from yolo9000.weights...Done!
data/person.jpg: Predicted in 0.060738 seconds.
African: 25%
worker: 82%
horse: 86%
working dog: 48%
hunting dog: 50%

./darknet Detector test cfg/combine9k.data cfg/yolo9000.cfg yolo9000.weights data/person.jpg -thresh .25 -hier .001

Kann mir jemand erklären, was die Struktur des 9000 Label Tree ist? In der Datei 9k.tree, zum Beispiel n0000245 -1, n0566538625 4, was bedeuten -1 und 4? Wie kann ich mit dieser Datei 9k.tree eine Baumstruktur erstellen?

@yaxiongchi
-1 bedeutet die Wurzel des Baumes
4: der Index des Vaterknotens

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

realityzero picture realityzero  ·  3Kommentare

hrshovon picture hrshovon  ·  5Kommentare

halt9 picture halt9  ·  3Kommentare

bareblackfoot picture bareblackfoot  ·  4Kommentare

Kowasaki picture Kowasaki  ·  4Kommentare