Ich habe es mir ausgedacht und versucht, die Bilder zu Hause zu klassifizieren. Ich war übrigens neugierig und werde einen Artikel schreiben, in dem die Genauigkeit der Feinabstimmung mit Mobilenet v2 verglichen wird.
・ Ich habe verschiedene Feinabstimmungen mit Mobilenet v2 ausprobiert. ・ Es ist eine Aufgabe von 3 Kategorien: Hund / Katze / Vogel ・ Ich habe Bilder mit Flickr gesammelt ・ Keine Feinabstimmung / 16,15,14,13,12,11,10,9,8,7,6,5,4,3,2, Lernen Sie die erste und die nachfolgenden Ebenen neu / Vergleichen Sie die Genauigkeit, indem Sie alle neu lernen ich sah es ・ Diesmal war die Genauigkeit bei gleicher korrekter Antwortrate (94,4%) für das Lernen nach der 14. Schicht und das Lernen nach der 11. Schicht gut.
Es scheint, dass mit der binären Klassifizierung alles möglich ist. Daher möchte ich die Klassifizierung von Tieren versuchen, da es gut ist, Ergebnisse auf leicht verständliche Weise zu erhalten. Daher dachte ich, ich würde gerne die Klassifizierung von Tieren versuchen Ich entschied mich für eine ternäre Klassifizierung mit "" hinzugefügt.
Wenn ja, handelt es sich um eine Sammlung von Bildern. Ich wollte es aus dem Internet sammeln, aber als ich mir verschiedene Dinge ansah, schien es gut, es unter flickr zu sammeln, also entschied ich mich, es mit flickr zu sammeln. Ich habe auf diesen Artikel verwiesen. So kratzen Sie Bilddaten mit Python von flickr
Sie können bis zu 500 Bilder im Format 115 * 115 gleichzeitig herunterladen. (Als ich gierig versuchte, 1000 herunterzuladen, konnte ich nur 500 bekommen) Wir haben jeweils 500 Blätter mit "Hund", "Katze" und "Vogel" als Argumenten gesammelt. Ich beschloss, 450 Bilder zu entfernen, von denen jedes zu klein war, und Bilder, die Menschen und andere Tiere enthielten. 30 von ihnen wurden getestet und validiert, die restlichen 390 wurden für den Zug verwendet. Das Bild sieht so aus. Der PC ist mit niedlichen Hunden bedeckt.
Sortieren Sie die Bilder in Ordner mit der folgenden Struktur.
├── data │ ├── test │ │ ├── bird │ │ ├── cat │ │ └── dog │ ├── train │ │ ├── bird │ │ ├── cat │ │ └── dog │ └── val │ ├── bird │ ├── cat │ └── dog
Klicken Sie hier für den Code https://github.com/kiii142/mobilenetv2_keras
Für die Einstellung der Ebene von FineTuning habe ich auf diese Seite verwiesen, auf die ich mich immer beziehe. Transferlernen / Feinabstimmung mit TensorFlow, Keras (Beispiel für Bildklassifizierung)
Lernen ohne Feinabstimmung begann mit einer Lernrate von 0,001 und wurde in 50 Epochen trainiert. Das fein abgestimmte Lernen begann mit einer einheitlichen Lernrate von 0,0001 und wurde in 30 Epochen trainiert. Die Stapelgröße beträgt einheitlich 8 und die Bildgröße wird auf 96 * 96 geändert (da einige trainierte Gewichte 96 * 96 sind). Dieses Mal verwendet Optimizer RMSprop gemäß dem Papier. (Ich habe zuerst SGD verwendet, aber RMSprop ist genauer als das. Ich habe es diesmal nicht im Detail gemacht, aber es kann interessant sein, diesen Bereich zu vergleichen.)
Unten sind die Ergebnisse. Die Verwirrungsmatrix der Trainingskurve und das Ergebnis im Testbild werden angezeigt. Ich schäme mich zu sagen, dass ich vergessen habe zu schreiben, was die Achse der Lernkurve ist, aber die vertikale Achse ist der Wert von (korrekte Antwortrate und Verlust) und die horizontale Achse ist die Anzahl der Epochen.
Das Gewicht von Mobilenet v2 wird mit None trainiert. Ich kann mit einem guten Gefühl lernen, aber die richtige Antwortrate für Zug und Val liegt bei 60%. Ich möchte, dass Sie etwas genauer werden Die korrekte Antwortrate im Testbild beträgt 68,9%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 16. und nachfolgende Schicht werden umgeschult. Die richtige Antwortrate von val ist sehr hoch. Die korrekte Antwortrate im Testbild beträgt 93,3%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 15. und nachfolgende Schicht werden umgeschult. Auch hier ist die korrekte Antwortrate für val extrem hoch. Die korrekte Antwortrate im Testbild beträgt 90,0%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 14. und nachfolgende Schicht werden umgeschult. Die korrekte Antwortrate im Testbild beträgt 94,4%. wohlfühlen.
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 13. und nachfolgende Schicht werden umgeschult. Die korrekte Antwortrate im Testbild beträgt 86,7%. Ist es ein wenig gesunken?
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 12. und die nachfolgenden Schichten werden umgeschult. Die korrekte Antwortrate im Testbild beträgt 86,6%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 11. und nachfolgende Schicht werden umgeschult. Die korrekte Antwortrate für das Testbild beträgt 94,4%. Ich kam hierher und ging wieder hoch
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 10. und nachfolgende Schicht werden umgeschult. Die korrekte Antwortrate im Testbild beträgt 88,9%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 9. und nachfolgende Schicht werden umgeschult. Die korrekte Antwortrate im Testbild beträgt 92,2%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 8. und nachfolgende Schicht werden umgeschult. Die korrekte Antwortrate im Testbild beträgt 92,2%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 7. und nachfolgende Schicht werden umgeschult. Die korrekte Antwortrate im Testbild beträgt 85,6%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 6. und nachfolgende Schicht werden umgeschult. Die korrekte Antwortrate im Testbild beträgt 87,8%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 5. und nachfolgende Schicht werden umgeschult. Die korrekte Antwortrate im Testbild beträgt 90,0%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die 4. und nachfolgende Schicht werden umgeschult. Die korrekte Antwortrate im Testbild beträgt 86,7%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die dritte und nachfolgende Schicht werden neu gelernt. Die korrekte Antwortrate im Testbild beträgt 88,9%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die zweite und die nachfolgenden Schichten werden umgeschult. Die korrekte Antwortrate im Testbild beträgt 83,3%
Das Gewicht von Mobilenet v2 wird auf Imagenet eingestellt, und die erste und die nachfolgenden Ebenen werden neu gelernt. Die korrekte Antwortrate im Testbild beträgt 90,0%
Dies ist das Ergebnis des Lernens, ohne eine Schicht einzufrieren, indem das Gewicht von Mobilenet v2 auf Imagenet eingestellt wird. Die korrekte Antwortrate im Testbild beträgt 91,1%
Betrachtet man diesmal nur die richtige Antwortrate, so ergab sich, dass das erneute Lernen nach der 14. Schicht und das erneute Lernen nach der 11. Schicht gebunden werden sollten (94,4%). Die Feinabstimmung ist diejenige, die irgendwie nur die letzte Ebene neu lernt und die Genauigkeit herauskommt, und ich dachte, wenn ich auf die vorherige Ebene neu lernen würde, würde sich die Genauigkeit verschlechtern, aber es war nicht so schlecht. Es ist ein Eindruck, dass es ist. Erstens wird das bloße Lernen mit den Gewichten von Imagenet die Genauigkeit erheblich verbessern, daher frage ich mich, ob es keinen großen Unterschied gibt.
Um ehrlich zu sein, ist es wirklich ärgerlich, alle Ergebnisse zu veröffentlichen ... Irgendwie habe ich jedoch von nun an einen Index, den ich mit der Feinabstimmung versuchen sollte, um erst ab der 14. Ebene neu zu lernen. In diesem Sinne bin ich froh, dass ich es getan habe Ich möchte dies als Smartphone-App implementieren, wenn ich an meinen freien Tagen noch Kapazitätsreserven habe, also werde ich es weiterhin tun.
Recommended Posts