4.8 KiB
Main
Compilation
Deux options sont disponibles à la compilation
Une première fonctionnant sous toutes les machines:
make cnn-main
Une seconde utilisant CUDA pour la convolution, qui sera plus rapide, mais ne fonctionnera que sur les machines équipées d'une carte graphique Nvidia (nécessite nvcc
disponible sous le paquet cuda
ou cuda-tools
pour la compilation):
make cnn-main-cuda
Options à la compilation
- La taille de la couche d'entrée ainsi que la fonction d'activation utilisée sont définissable dans la création du réseau (L'architecture utilisée se définit ici également, LeNet5 étant adaptée uniquement au jeu de données MNIST)
- La définition du nombre d'époques par défaut se fait dans la définition
EPOCHS
- La définition de la taille des batches se fait dans la définition
BATCHES
- Le multi-threading est activé par défaut, se désactive en enlevant la définition
USE_MULTITHREADING
(le multithreading ne fonctionne pas pour le moment) - Il y a une option pour conserver l'ensemble du jeu de données JPEG dans la mémoire RAM détails
Options spécifiques à CUDA
- La définition de la taille des blocs peut-être trop élevée pour certaines carte graphiques, il faudra alors réduire l'une des définitions de
BLOCKSIZE
Utilisation
Usage: build/cnn-main ( train | recognize | test ) [OPTIONS]
OPTIONS:
train:
--dataset | -d (mnist|jpg) Format du set de données.
(mnist) --images | -i [FILENAME] Fichier contenant les images.
(mnist) --labels | -l [FILENAME] Fichier contenant les labels.
(jpg) --datadir | -dd [FOLDER] Dossier contenant les images.
--recover | -r [FILENAME] Récupérer depuis un modèle existant.
--epochs | -e [int] Nombre d'époques.
--out | -o [FILENAME] Fichier où écrire le réseau de neurones.
recognize:
--dataset | -d (mnist|jpg) Format de l'image à reconnaître.
--modele | -m [FILENAME] Fichier contenant le réseau entraîné.
--input | -i [FILENAME] Image jpeg ou fichier binaire à reconnaître.
test:
--modele | -m [FILENAME] Fichier contenant le réseau entraîné.
--dataset | -d (mnist|jpg) Format du set de données.
(mnist) --images | -i [FILENAME] Fichier contenant les images.
(mnist) --labels | -l [FILENAME] Fichier contenant les labels.
(jpg) --datadir | -dd [FOLDER] Dossier contenant les images.
--preview-fails | -p Afficher les images ayant échoué.
Entraînement
Entraînement du réseau de neurones
Exemple (MNIST):
build/cnn-main train \
--dataset mnist \
--epochs 15 \
--images data/mnist/train-images-idx3-ubyte \
--labels data/mnist/train-labels-idx1-ubyte \
--out reseau.bin
Exemple (JPG):
build/cnn-main train \
--dataset jpg \
--epochs 15 \
--datadir data/50States10K/train \
--out reseau.bin
Le réseau de neurones entraîné est sauvegardé dans le fichier de sortie à la fin de chaque époque.
Reconnaissance d'images
MNIST
La reconnaissance d'images se fait avec un fichier formaté de la même manière que le jeu de données MNIST.
Le plus simple pour dessiner à la main est d'utiliser le serveur web prévu à cet effet
Note:
Le serveur web ne prend pour le moment qu'une option pour dessiner et faire reconnaître par le réseau de neurones simple.
Cependant, l'image dessinée est stockée dans le fichier .cache/image-idx3-ubyte
, la faire reconnaître par le réseau convolutif est donc possible avec la commande suivante:
build/cnn-main recognize \
--dataset jpg \
--modele reseau.bin \
--input .cache/image-idx3-ubyte \
--output json
JPEG
L'image d'entrée doit conserver la même taille que les images ayant servi à entraîner le réseau (256x256 pixels)
Exemple:
build/cnn-main recognize \
--dataset jpg \
--modele reseau.bin \
--input image.jpeg \
--output json
Test sur le jeu prévu à cet effet
Exemple (MNIST):
build/cnn-main test \
--dataset mnist \
-i data/mnist/t10k-images-idx3-ubyte \
-l data/mnist/t10k-labels-idx1-ubyte \
-m reseau.bin
Exemple (JPG):
build/cnn-main test \
--dataset jpg \
--datadir data/50States10K/test \
-m reseau.bin