From Scratch - Build Model and Exécuter Application pour effectuer une inférence sur les images
La configuration à l'aide d'un environnement virtuel est recommandée afin de ne pas entrer en conflit avec d'autres versions existantes et peut-être non compatibles de Python (entre 3,8 et 3.11). Les versions Python sont limitées en raison des exigences de bibliothèque Scikit-Learn. Cette version Scikit-Learn (1.4.0) est gérée par les exigences.txt. Si vous décidez de ne pas utiliser un environnement virtuel, assurez-vous de désinstaller d'autres versions non compatibles de Python. Vérifiez également les versions non compatibles existantes des dépendances répertoriées dans le fichier exigence.txt. Cela peut être un peu une corvée, il est donc préférable d'utiliser un environnement virtuel et de laisser Python comprendre tous les versioning acceptables pour vous.
1 - Télécharger / installer la version utilisable 64 bits Python (tout entre 3,8 et 3.11)
2 - De l'invite de commande Windows installer VirtualEnv –Exemple: PIP installe VirtualEnv
3 - Créez un VirtualEnv dans votre répertoire de projet --example: python -m virtualenv --python python310 ASL [si vous utilisez Python 3.10] - pour voir quelles versions de Python sont installées sur votre système: Py -0 -! Avertissement: Si vous utilisez Windows / Powershell, vous avez peut-être besoin de modifier votre stratégie d'exécution pour permettre aux scripts de s'exécuter afin d'activer votre virtuel Virtualv - Set-executionpolicy -scope currentUser -executionpolicy non restreint -force
4 - Activez votre nouveau VirtualEnv à l'intérieur de votre répertoire de projet - Example :. ASL SCRIPTS Activer
5 - devrait voir une invite de commande mise à jour affichant un virtualenv - example: (ASL) PS C: Projects Capstone ASL
6 - Vérifiez la version de Python utilisée par VirtualEnv --example: Python --version --output: Python 3.10.0 [ou quelle que soit votre version]
7 - CD dans le répertoire VirtualEnv - Exemple: CD ASL
8 - Clone Github Repo to Local Machine - Example: Git Clone https://github.com/cpetrella-sketch/asl-recognnition.git --output: Clonage dans 'ASL-Recognition' ... Remote: énumération des objets: 518, fait. Remote: comptage des objets: 100% (88/88), fait. Remote: Compression des objets: 100% (54/54), fait. Remote: total 518 (Delta 35), réutilisé 72 (Delta 27), pack-réutilisé 430 objets de réception: 100% (518/518), 40,60 MIB | 3,62 MIB / s, fait. Résolution deltas: 100% (270/270), fait.
9 - Installer les dépendances Python requises - Répertoire de change: CD. ASL-Recognition ASLML
- Dépendances d'installation --Example: PIP INSTALL -R-RIDENCES.TXT --Output: ... Installation des packages collectés:
10 - Téléchargez à la fois des ensembles de données de formation et de test à partir des liens ci-dessous –Full_training_dataset.zip (2.51 Go) https://drive.google.com/file/d/1ups86xkwbjnrwf7qnhexk4infllgjvtk/view?usp=Sharing –Extracter et sauvegarder à ~. / Asl-recnogition / Aslml / –Extract et à enregistrer à ~. à dir doit être: ~. / ASL-Recognition / ASLML / Images / Full_training_Dataset / - Le répertoire devrait avoir un sous-répertoire pour chaque lettre d'alphabet (à l'exclusion de J, Z)
–Full_testing_dataset.zip (38,8 Mo) https://drive.google.com/file/d/1urn66jntxcs-s_1kvrsh11pe3vbp3vd-/view?usp=sharing –Extract et enregistrer sur ~. / Asl--rective / aslml / data / - path to dir doit être: ~. / ASL-Recognition / ASLML / Images / Full_testing_Dataset / - Le répertoire devrait avoir un sous-répertoire pour chaque lettre d'alphabet (à l'exclusion de J, Z)
11 - Créer un ensemble de données Landmark à partir des images Full_training_Dataset - Exemple: de l'intérieur ./asl-recognnition/aslml/ - à l'intérieur du Create_dataset.py, modifiez le «SampleziceCentage» à la fréquence d'échantillonnage souhaitée. La valeur par défaut est définie sur 100% de toutes les images. - Python. Create_dataset.py - Sortie: travaillant actuellement sur le répertoire A… travaillant actuellement sur le répertoire B…… travaillant actuellement sur Directory V… travaillant actuellement sur le répertoire Y ...
Taille de l'échantillon de données Sélectionné: 10% Nombre total d'images traitées (10% de l'ensemble de données complet): 8033 Détections réussies (79.73359890451886%): 6405 Détections défaillantes: 1628 Détection historique Témail ... Exportation x / y Coords and Labels to 'Data.Pickle' Exécution: 2184 secondes
12 - Trouvez les meilleurs paramètres de classificateur de forêt aléatoire et entraînez un modèle sur le jeu de données - Exemple: de ~. / ASL-Recognition / ASLML - Python. Train_classifier.py - Sortie: division des données en tests et formation avec 20,0% réservés pour les tests.
Démarrage de la recherche sur la grille ... ajusté 5 plis pour chacun des 16 candidats, totalisant 80 ajustements [CV] Bootstrap End Bootstrap = true, max_depth = aucun, min_sample_leaf = 1, min_sample_split = 2, n_estimators = 100; Temps total = 5.1s [cv] fin Bootstrap = true, max_depth = aucun, min_sample_leaf = 1, min_sample_split = 2, n_estimators = 100; Temps total = 5.4S… [CV] End Bootstrap = false, max_depth = 10, min_sample_leaf = 2, min_sample_split = 2, n_estimators = 200; Temps total = 9,6s [cv] Bootstrap de fin = false, max_depth = 10, min_sample_leaf = 2, min_sample_split = 2, n_estimators = 200; Temps total = 9,2s Voici les meilleurs paramètres trouvés:
{'bootstrap': false, 'max_depth': nul, 'min_samples_leaf': 1, 'min_sample_split': 2, 'n_estimators': 200} Rapport de classification:
precision recall f1-score support
S 0.74 0.95 0.83 58
T 0.94 0.96 0.95 53
U 0.67 0.73 0.70 56
V 0.81 0.75 0.78 59
W 1.00 0.96 0.98 56
X 0.98 0.94 0.96 52
Y 0.97 0.97 0.97 58
accuracy 0.91 1281
Macro AVG 0,92 0,91 0,91 1281 AVG pondéré 0,92 0,91 0,92 1281
91.49102263856362% des échantillons ont été classés correctement
Temps d'exécution: 103.08926582336426 secondes
13 - Testez la précision du modèle nouvellement créé sur les nouvelles données de test - Exemple: From ~. / ASL-Recognition / ASLML - Python. InférenceTester.py - Output: Fichier Image: Hand2_A_DIF_SEG_2_CROPPED.JPEG À l'intérieur du classificateur d'inférence échoué a échoué
Fichier image: a0001_test.jpg détecté avec succès des repères dans l'image de l'utilisateur: a0001_test.jpg
Le modèle prédit un A dirname est: un correct !!
Fichier image: a0024_test.jpg détecté avec succès des repères dans l'image de l'utilisateur: a0024_test.jpg
Le modèle prédit un A dirname est: un correct !! …
Fichier image: hand3_y_dif_seg_5_cropped.jpeg détecté avec succès des repères dans l'image de l'utilisateur: hand3_y_dif_seg_5_cropped.jpeg
Le modèle a prédit un y dirname est: y correct !!
Utilisation du modèle formé RandomForestClassifer: pourcentage Détection historique réussie: 69% pourcentage de prédictions de lettres à succès Détection: 76%
Nombre total d'images de test disponibles: 2510 26% d'échantillonnage aléatoire. Nombre total d'images traitées: 622 Nombre total de prédictions correctes: 332 Nombre total de prévisions incorrectes: 103 Nombre total de détections historiques réussies: 435 Nombre total de détections historiques infructueuses: 187
Utiliser l'application
14 - Copier le modèle nouvellement créé sur CGI-BIN - Exemple: Copier 'ASLMODEL.JOB' From ' . ASL-RECONNITION ASLML Modèles 'TO' . Asl-reconnaissance asllocal build Models '15 - From Inside the' ~. Asl-Recognition asllocal build 'Directory, démarrez le serveur Web - Exemple: Python -M http.server --cgi 8990 - output: Servant http sur :: port 8990 (http: // [::]: 8990 /)
Utiliser l'application
1 - Ouvrez un navigateur Web et accédez à la page Web - Exemple: http: // localhost: 8990 2 - Téléchargez une image gesture ASL .jpg pour l'inférence - cliquez sur le bouton "Télécharger le fichier" - Sélectionnez une image dans votre stockage local - attendez le statut pop-up - Exemple: LocalHost: 8990 Selon le résultat de la réussite - Cliquez sur "OK" - Sépréger les mises à jour avec l'image Uploaded et le résultat InFrend - Exemple: EXEX