J'ai réussi à faire fonctionner imagenet en regardant certains sites, alors je l'ai écrit pour conserver le contenu. De nombreux sites ont exécuté l'exemple de chaîne, mais il est possible qu'il reste bloqué en raison de différences de versions et de codes, je vais donc résumer l'environnement dans lequel il a été réellement exécuté et la littérature (article) utilisée à ce moment-là.
La personne qui a fait l'échantillon de mnist. Débutant (car je suis aussi débutant)
Mémorandum pour démarrer la classification des images avec le chainer (v1.14.0)
Le NIN de Chainer vous permet d'apprendre et de reconnaître en profondeur votre propre jeu d'images
Construction de l'environnement à l'aide de pyenv (Mac OS)
CPickle.UnpicklingError in Chainer
Tout le contenu cette fois a été réalisé sur MacOS. Je voulais le faire avec python3, mais il semble que le site ci-dessus utilisait 2.x, j'ai donc utilisé Anaconda 2.1.0 (python2.7.13). J'ai installé anaconda 2.1.0 avec pyenv et construit l'environnement. La version chainer utilisait chainer == 1.20.0.1.
Empruntez les outils de git publiés dans le premier article.
git clone https://github.com/shi3z/chainer_imagenet_tools.git
Réécrivez le code comme dans le deuxième article. Il est plus facile de faire ces deux choses en premier.
Vous pouvez utiliser votre ensemble de données préféré pour les images. Tout doit être utilisable tant qu'il est [nom du répertoire / nom de la classe de classification / fichier réel]. La première chose à faire est de créer des données d'enseignant de classification et des données de test à partir de l'ensemble de données. Git clone le programme fourni par le deuxième article et l'utilise.
wget http://www.vision.caltech.edu/Image_Datasets/Caltech101/101_ObjectCategories.tar.gz
Pour préparer l'ensemble de données. Utilisation du code fourni par le deuxième article
python make_train_data.py 101_ObjectCategories
Ce faisant, le répertoire images qui collecte les données d'image et les trois fichiers train.txt, test.txt et label.txt sont générés. En regardant le contenu, le train et le test décrivent le chemin vers l'image et le numéro de la classe de classification à laquelle elle appartient.
Les images étant disjointes, il est nécessaire de la réduire à la dimension d'entrée de ce réseau de neurones. À cette fin, crop.py est préparé dans l'article. L'image générée est enregistrée dans les images de recadrage. Ici, le chemin vers l'image est décrit dans train.txt et test.txt mentionnés ci-dessus, mais comme l'image utilisée cette fois est cropimages, remplacez-la par images-> cropimages à l'aide d'un éditeur ou autre.
Ici, utilisez compute_mean.py qui existe dans [examples / imagenet /] de chainer pour générer un fichier de moyenne.
python compute_mean.py train.txt
Générez un fichier moyen avec. Réécrivez également le programme en vous référant à ce dernier article. Le contenu est réécrit ici, mais grosso modo, cela change l'utilisation de pickel pour enregistrer le modèle dans le sérialiseur. Il semble bon d'étudier ce domaine en regardant le document chainer. La classe réelle du réseau neuronal est décrite dans nin.py. En personnalisant cela, vous pouvez apprendre à utiliser le réseau neuronal que vous avez défini.
Même si vous atteignez ce point, certaines personnes recevront une erreur liée à cPickel tel quel. Par conséquent, reportez-vous à cPickle.UnpicklingError in Chainer et lisez le fichier moyen autour des lignes 68-70.
mean_image = np.load(args.mean) #Lire le fichier moyen
Réécrivez dans. Vous devriez enfin pouvoir le faire.
python train_imagenet.py -E 10 train.txt test.txt 2>&1 | tee log
Cette exécution génère un fichier modèle. (Dump du réseau neuronal après l'entraînement)
Dans l'article publié au début, le modèle de sortie est utilisé pour expérimenter avec des données autres que les données de test pour voir si la classification fonctionne. La procédure consiste à redimensionner et classer l'image à tester. Quant à l'image, l'image de la moto dans l'article est utilisée telle quelle
wget http://www.trago.co.uk/ekmps/shops/tragoshop/images/wk-650i-motorbike-35kw-restricted-version-for-a2-license-available-white-blue-35677-p.jpg
mv wk-650i-motorbike-35kw-restricted-version-for-a2-license-available-white-blue-35677-p.jpg bike.jpg
mkdir resized
Tout ce que tu as à faire c'est courir
python resize.py bike.jpg
python inspection.py resized/bike.jpg
Vous devriez voir le résultat à l'écran.
Il existe de nombreux matériaux sur le marché, vous pouvez donc facilement profiter de l'apprentissage automatique en déplaçant les échantillons. Je suis désolé de vouloir l'exécuter sur python3 au lieu de python2.x. Dans les prochains articles, j'aimerais découper des visages dans des images et classer les personnes qui les utilisent.
L'exemple de code de chainer semble avoir de nombreux fichiers, mais seuls train_imagenet.py et nin.py ont été utilisés pour la formation, et comme c'est le code pour créer et tester les données des enseignants, si vous lisez principalement ces codes Je pense que c'est facile à comprendre.