[PYTHON] Verschiedene Feinabstimmungen mit Mobilenet v2

Einführung

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.

Was für ein Durcheinander für vielbeschäftigte Menschen

・ 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.

Aufgabeneinstellungen und Bildersammlung

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. スクリーンショット 2020-10-11 11.22.20.png

Sortieren Sie die Bilder in Ordner mit der folgenden Struktur.

├── data │   ├── test │   │   ├── bird │   │   ├── cat │   │   └── dog │   ├── train │   │   ├── bird │   │   ├── cat │   │   └── dog │   └── val │   ├── bird │   ├── cat │   └── dog

Lernen und Feinabstimmung

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.

Keine Feinabstimmung

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%

Lerne die 16. Schicht und darüber hinaus neu

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%

Lerne die 15. und die folgenden Ebenen neu

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%

Lerne die 14. Schicht und darüber hinaus neu

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.

Lerne die 13. Schicht und darüber hinaus neu

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?

Lerne die 12. und die folgenden Ebenen neu

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%

Ab der 11. Schicht neu lernen

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

Ab der 10. Schicht neu lernen

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%

Lernen Sie die 9. und die folgenden Ebenen neu

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%

Lerne die 8. und die folgenden Ebenen neu

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%

Lerne die 7. und die folgenden Ebenen neu

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%

Lerne die 6. und die folgenden Ebenen neu

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%

Lerne die 5. und die folgenden Ebenen neu

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%

Lerne die 4. und die folgenden Ebenen neu

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%

Lerne die dritte und nachfolgende Ebene neu

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%

Lernen Sie die zweite und die folgenden Ebenen neu

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%

Lerne die erste und die folgenden Ebenen neu

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%

Alles neu lernen

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%

Zusammenfassung

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.

Am Ende

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

Verschiedene Feinabstimmungen mit Mobilenet v2
Ich habe versucht, CNN mit Resnet fein abzustimmen
Parametereinstellung mit luigi (2)
Parametereinstellung mit luigi
BigTransfer (BiT) Feinabstimmung
Verschiedene Farbleisten mit Matplotlib
Hyperparameter-Tuning mit LightGBM-Tuner
Probieren Sie verschiedene Dinge mit PhantomJS aus
Optimieren von Keras-Parametern mit Keras Tuner
Einzeilige Ergänzung mit verschiedenen Skripten
Bearbeiten Sie verschiedene Datenbanken mit Python
Entwickelt mit Choregraphe und verschiedenen Memoranden
SmoothGrad mit Chainer v2 implementiert