[PYTHON] Chargement et test du modèle imagenet entraîné de Chainer

Je veux lire le modèle imagenet formé avec Chainer et l'évaluer avec des données de test. L'environnement est OS X (10.9.5 CPU), Chainer1.6.0, Python2.7.10. Il y a peut-être un article similaire, mais je l'ai recherché pendant environ 5 secondes et je ne l'ai pas trouvé, alors je vais l'écrire, pardonnez-moi s'il vous plaît.

** Formation modèle **

Vous ne pouvez pas tester sans d'abord entraîner le modèle. Pour la méthode de formation, veuillez vous référer à http://hi-king.hatenablog.com/entry/2015/06/11/021144. Cependant, si vous essayez le code joint au lien ci-dessus avec votre propre image tirée de Caltech101, la taille de l'image Le changement lui-même a été effectué correctement, mais l'image résultante a été déformée comme indiqué ci-dessous. Le haut est l'image avant le changement et le bas est l'image après le changement (le même objet est dupliqué).

image_0001.jpg

image_0001_conc_.jpg

Il n'y a peut-être pas de problème tel quel, mais j'étais curieux à ce sujet, alors je l'ai un peu pré-traité. Si l'ajustement fin est gênant, je pense que vous pouvez utiliser .resize ((256,256)) de PIL.Image.

** Préparation au test **

Après la formation, préparez-vous pour le test. Les quatre éléments suivants sont requis pour le test. C'est presque le même que le prétraitement pendant l'entraînement.

  1. Fichier image moyen (utilisez le même que pendant l'entraînement). Placez-le dans le répertoire d'exécution.
  2. fichier test.txt (préparer dans le même format que lors de la formation). Placez-le dans le répertoire d'exécution.
  3. Modèle imagenet formé (aurait dû être enregistré comme modèle par la formation). Placez-le dans le répertoire d'exécution.

** Évaluation du modèle **

Je l'ai écrit en regardant le code officiel de Chainer et le code d'autres exemples. Depuis que je viens de réécrire chainer / examples / imagenet / train_imagenet.py pour les tests, je pense qu'il y a beaucoup de traitements inutiles, mais cela a fonctionné dans mon environnement. Après avoir effectué les préparatifs ci-dessus, mettez le code de ↓ (* J'ai ignoré les détails, donc ignorez le test_batchsize de l'argument de ligne de commande. S'il est défini sur autre chose que la valeur par défaut (= 1), il ne peut pas être évalué correctement) https://github.com/fullflu/ML/blob/master/evaluate_chainer_imagenet.py

python evaluate_chainer_imagenet.py -g -1 test.txt

Si vous tapez, une erreur (combien vous avez manqué la prédiction en moyenne) sera affichée avec le sentiment suivant. Le contenu du processus est de lire le modèle avec serializers.load_npz (path_to_model, model) après l'importation du modèle, et d'écrire model (x, t) pour la prédiction et l'évaluation. Pratique.

Load model from model


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

Étant donné qu'environ la moitié est supprimée, vous pouvez voir que vous n'apprenez pas sérieusement.

Recommended Posts

Chargement et test du modèle imagenet entraîné de Chainer
Mémorandum de sauvegarde et modèle de chargement
Complexité et robustesse du modèle
Rapport sur le débogage et les tests
Exécutez l'imagenet de Chainer [de manière fiable]