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
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.
Die Gewichtsdatei ist hier: http://pjreddie.com/media/files/yolo9000.weights
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
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 dascy_yolo2_findboxes.pyx
rollen und einen weiteren Meta-Schlüssel in die if-Anweisung derlabels
Methode vondarkflow/darkflow/yolo/misc.py
einbauen.Ich bin bereits in die if-Anweisung in der Labels-Methode in
misc.py
gegangen, um einhyponym_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']
undmeta['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!