[PYTHON] Apprenez à reconnaître les nombres manuscrits (MNIST) avec Caffe

Qu'est-ce que Caffe

C'est un framework open source de Deep Learning, qui a été un sujet brûlant récemment. La page d'accueil officielle peut être utilisée avec ici, C ++, Python et MATLAB, vous pouvez donc choisir celui dans lequel vous êtes bon. Vous pouvez voir une démo de la classification des images depuis ici, donc si vous êtes intéressé, essayez-le.

La méthode d'introduction de Caffe est résumée dans cet article, veuillez donc vous y référer si vous le souhaitez.

Qu'est-ce que MNIST (Institut national mixte des normes et de la technologie)?

MNIST est une base de données d'images numériques manuscrites composée de 60 000 échantillons d'apprentissage et 10 000 échantillons de test de 28x28px. Il est largement utilisé dans le domaine de l'apprentissage automatique et de l'apprentissage profond comme référence pour les réseaux de neurones.

Caffe a un script qui facilite l'apprentissage de MNIST, alors je l'ai essayé!

Apprenez MNIST avec Caffe

Tout d'abord, accédez au répertoire racine de Caffe. Après le déplacement, exécutez le script préparé dans Caffe à l'avance pour télécharger l'ensemble de données MNIST, mais wget et gunzip sont nécessaires pour cette exécution, donc si vous ne l'avez pas, veuillez le mettre en homebrew.

cd /path/to/caffe
./data/mnist/get_mnist.sh

Comme Caffe doit être lu au format LevelDB ou LMDB lors de l'apprentissage d'image, les données téléchargées ci-dessus sont converties en LMDB avec le script suivant.

./examples/mnist/create_mnist.sh

Ensuite, vous devriez avoir créé . / Example / mnist / mnist_train_lmdb et. / Example / mnist / mnist_test_lmdb. Le train est utilisé pour la formation et le test est utilisé pour l'évaluation de l'apprentissage.

Si vous exécutez Caffe sur CPU_ONLY avant l'entraînement, réécrivez solver_mode: GPU dans. / Examples / mnist / lenet_solver.prototxt en solver_mode: CPU. Si vous ne le faites pas, vous aurez un bogue.

Enfin, nous apprendrons sur la base des données préparées, qui ont également un script, alors exécutez-le.

./examples/mnist/train_lenet.sh

Ensuite, lenet_train_test.prototxt et lent_solver.prototxt seront lus et la construction et l'apprentissage du réseau de couches commenceront.

Vous devriez voir une perte et une précision pendant votre apprentissage. perte signifie une valeur qui diminue à mesure que le nombre de correspondances entre la prédiction et la bonne réponse augmente, et la précision signifie le taux de réponse correct. Ainsi, si vous regardez la transition de ces valeurs, vous pouvez voir comment l'apprentissage progresse.

I0704 solver.cpp:343]     Test net output #0: accuracy = 0.0912
I0704 solver.cpp:343]     Test net output #1: loss = 2.44682 (* 1 = 2.44682 loss)

A la fin de la formation, un test s'exécute et l'évaluation finale du réseau est affichée, et .examples / mnist / lenet_iter_10000.caffemodel est généré comme modèle entraîné. En lisant ce modèle formé, le réseau dans l'état après l'apprentissage de la reconnaissance MNIST peut être reproduit à tout moment, de sorte que le réseau formé peut être incorporé dans des produits réels.

C'est la fin de l'apprentissage de la reconnaissance MNIST. Cette fois, j'ai lu le prototxt préparé à l'origine et l'ai appris, donc je ne pense pas que cela ait beaucoup de sens d'ajuster les paramètres, mais répétez le test en changeant la valeur du contenu de lenet_solver.prototxt et comparez chaque donnée. C'est amusant, alors essayez-le.

Si vous avez une idée sur la façon d'utiliser la sortie du modèle dans la formation et comment afficher la progression de la formation dans un graphique, je vais la résumer.

Si vous avez des erreurs ou des opinions, veuillez nous en informer.

Recommended Posts

Apprenez à reconnaître les nombres manuscrits (MNIST) avec Caffe
Jouez des nombres manuscrits avec Python Partie 1
Apprenez à coloriser les images monochromes avec Chainer
Jouez des nombres manuscrits avec python, partie 2 (identifier)
Se préparer à apprendre les indicateurs techniques avec TFlearn
[Computer Vision] Géométrie épipolaire apprise avec des chats
Ouvrez AI Gym pour apprendre avec le poteau de chariot contrôlé par PD
J'ai essayé d'apprendre le fonctionnement logique avec TF Learn
J'ai essayé de déplacer GAN (mnist) avec keras
Script pour tweeter avec des multiples de 3 et des nombres avec 3 !!
AWS Step Functions pour apprendre avec un exemple
Comment entraîner Kaldi avec JUST Corpus
Classification d'image MNIST (numéro manuscrit) avec Perceptron multicouche
Comment créer des nombres aléatoires avec le module aléatoire de NumPy
J'ai essayé d'entraîner la fonction péché avec chainer
Procédure pour charger MNIST avec python et sortie en png
J'ai essayé d'implémenter et d'apprendre DCGAN avec PyTorch
Classer les numéros mnist par keras sans apprentissage par l'enseignant [Auto Encoder Edition]
Comment installer Caffe sur OS X avec macports
Résumé du site pour apprendre l'apprentissage automatique avec une vidéo en anglais
Comment apprendre le SVM structuré de ChainCRF avec PyStruct
Convertit les nombres avec des virgules et des triangles en types numériques.
[Comment!] Apprenez et jouez à Super Mario avec Tensorflow !!
MVC - Édition de modèle pour apprendre de 0 avec un biais uniquement
J'ai appris MNIST avec Caffe et j'ai essayé de le dessiner (MAC OS X El Capitan)