[PYTHON] Laden und Testen des von Chainer trainierten Imagenet-Modells

Ich möchte das mit Chainer trainierte Imagenet-Modell lesen und mit Testdaten auswerten. Die Umgebung ist OS X (10.9.5 CPU), Chainer1.6.0, Python2.7.10. Es mag einen ähnlichen Artikel geben, aber ich habe ungefähr 5 Sekunden lang danach gesucht und konnte ihn nicht finden, also werde ich ihn schreiben, bitte vergib mir.

** Modelltraining **

Sie können nicht testen, ohne vorher das Modell zu trainieren. Informationen zur Trainingsmethode finden Sie unter http://hi-king.hatenablog.com/entry/2015/06/11/021144. Wenn Sie jedoch den an den obigen Link angehängten Code mit Ihrem eigenen Bild aus Caltech101 ausprobieren, wird die Größe des Bildes angegeben Die Änderung selbst wurde korrekt durchgeführt, aber das resultierende Bild wurde wie unten gezeigt verzerrt. Das obere ist das Bild vor der Änderung und das untere ist das Bild nach der Änderung (dasselbe Objekt wird dupliziert).

image_0001.jpg

image_0001_conc_.jpg

Es mag kein Problem geben, aber ich war neugierig darauf, also habe ich es ein wenig vorverarbeitet. Wenn die Feineinstellung problematisch ist, können Sie meiner Meinung nach .resize ((256,256)) von PIL.Image verwenden.

** Vorbereitung auf den Test **

Bereiten Sie sich nach dem Training auf den Test vor. Die folgenden vier Punkte sind für den Test erforderlich. Es ist fast das gleiche wie die Vorbehandlung während des Trainings.

  1. Durchschnittliche Bilddatei (verwenden Sie dieselbe wie während des Trainings). Legen Sie es in das Ausführungsverzeichnis.
  2. Datei test.txt (im gleichen Format wie während des Trainings vorbereiten). Legen Sie es in das Ausführungsverzeichnis.
  3. Geschultes Imagenet-Modell (sollte durch Training als Modell gespeichert worden sein). Legen Sie es in das Ausführungsverzeichnis.

** Bewertung des Modells **

Ich habe es geschrieben, indem ich mir den offiziellen Code von Chainer und den Code anderer Beispiele angesehen habe. Ich habe gerade chainer / examples / imagenet / train_imagenet.py zum Testen neu geschrieben, daher denke ich, dass es eine Menge nutzloser Verarbeitung gibt, aber es hat in meiner Umgebung funktioniert. Geben Sie nach den obigen Vorbereitungen den Code ↓ ein (* Ich habe die Details übersprungen, ignorieren Sie also die test_batchsize des Befehlszeilenarguments. Wenn dies nicht der Standardwert (= 1) ist, kann es nicht korrekt ausgewertet werden.) https://github.com/fullflu/ML/blob/master/evaluate_chainer_imagenet.py

python evaluate_chainer_imagenet.py -g -1 test.txt

Wenn Sie tippen, wird ein Fehler (wie sehr Sie die Vorhersage im Durchschnitt verpasst haben) mit dem folgenden Gefühl angezeigt. Der Inhalt des Prozesses besteht darin, das Modell nach dem Importieren des Modells mit "serializers.load_npz (path_to_model, model)" zu lesen und "model (x, t)" zur Vorhersage und Auswertung zu schreiben. Praktisch.

Load model from model


{"iteration": 19, "loss": 0.7662104054501182, "type": "test", "error": 0.4736842105263158}

Da ungefähr die Hälfte entfernt wird, können Sie sehen, dass Sie nicht ernsthaft lernen.

Recommended Posts

Laden und Testen des von Chainer trainierten Imagenet-Modells
Memorandum zum Speichern und Laden des Modells
Modellkomplexität und Robustheit
Bericht über das Debuggen und Testen
Führen Sie Chainers Imagenet [zuverlässig] aus.