La structure et certaines parties fondamentales de ce code sont adaptées de l'apprentissage en profondeur complète (FSDL).
Vous pouvez voir ce projet en action dans la démo et publier accompagnés, ou exécuter le code dans ce cahier.
Le dossier /cloud imite le stockage des données dans le cloud. Dans les paramètres du monde réel, l'ensemble de données sera stocké sur un service de stockage cloud tel qu'Amazon S3. Le code réel vit dans le dossier /codebase . Il existe une séparation claire entre le code de formation (sous /codebase/training ) et tout le reste, y compris les modèles, les réseaux, les ensembles de données et autres utilitaires (Under /codebase/font_classifier ). Cette séparation rend le déploiement du système plus facile et plus propre.
Comme présenté dans le cours FSDL, pour contrôler les données, nous ne vérifions pas les images réelles dans GIT. Au lieu de cela, un fichier JSON est créé contenant une entrée par instance de données. Chaque entrée se compose de l'URL d'instance de données (stockage cloud), de l'étiquette et d'autres métadonnées, si pertinentes. Ce fichier JSON est ce qui est suivi par GIT et nous pouvons donc obtenir les données à la version requise en vérifiant le commit GIT correspondant. À mesure que l'ensemble de données augmente, la taille du fichier JSON augmente, auquel cas Git-LFS peut être utilisé. Avantages de cette façon de gérer les données:
Reproductibilité: Puisqu'il est suivi par Git, nous pouvons obtenir les données exactes que nous avons utilisées il y a une semaine ou un an.
Extensibilité: l'ensemble de données peut être étendu pour incorporer de nouvelles données tout en s'assurant de ne jamais utiliser les instances de tests précédents comme instances de formation et vise versa.
Portabilité: réduit l'espace disque requis pour le projet, ce qui le rend portable sur GIT ou tout autre moyen.
Pour exécuter le code localement:
Installation des exigences:
$ pip install -r requirements.txtRetrait et extraire les données des rejets vers / dossier Cloud:
$ wget ' https://github.com/mhmoodlan/arabic-font-classification/releases/download/v0.1.0/rufa.tar.gz ' -O ./cloud/rufa.tar.gz
$ cd /cloud && tar -xzf ' rufa.tar.gz ' Faites tourner un serveur simple dans le dossier /cloud à http://0.0.0.0:8000/:
$ cd /cloud && python -m http.serverExécutez une expérience:
$ cd /codebase/code && export PYTHONPATH=. && python training/run_experiment.py --save
' {"dataset": "RuFaDataset", "model": "FontModel", "network": "cnn", "train_args": {"epochs": 6, "mode": "test", "validate_mismatch": "False"}} ' La configuration 'mode' dans 'train_args' prend l'une des deux valeurs: 'val' ou 'test' .
En mode 'val' : le modèle est entraîné et validé sur les données synthétiques uniquement. Si 'validate_mismatch' est défini sur true, une validation de décalage des données supplémentaire est effectuée sur un sous-ensemble des données réelles.
En mode 'test' : le modèle est formé sur l'ensemble des données synthétiques + la partie des données réelles utilisées dans la validation de l'inadéquation des données en mode 'val' . Après la formation, l'erreur de généralisation finale est signalée sur le reste des données réelles.
Cette commande doit sortir quelque chose de similaire à ce qui suit:
Epoch 1/6
1254/1254 [==============================] - 119s 95ms/step - loss: 0.3185 - accuracy: 0.8751
Epoch 2/6
1254/1254 [==============================] - 40s 32ms/step - loss: 0.0539 - accuracy: 0.9918
Epoch 3/6
1254/1254 [==============================] - 40s 32ms/step - loss: 0.0386 - accuracy: 0.9953
Epoch 4/6
1254/1254 [==============================] - 40s 32ms/step - loss: 0.0270 - accuracy: 0.9976
Epoch 5/6
1254/1254 [==============================] - 40s 32ms/step - loss: 0.0264 - accuracy: 0.9973
Epoch 6/6
1254/1254 [==============================] - 40s 32ms/step - loss: 0.0246 - accuracy: 0.9979
Training took 323.854642 s
In test mode, mismatch data isn't validated since it's used during training.
14/14 [==============================] - 0s 10ms/step - loss: 0.2316 - accuracy: 0.9712
Test score: [0.2316255271434784, 0.971222996711731]