[PYTHON] Comment utiliser TokyoTechFes2015

introduction

Je vais vous expliquer comment utiliser TokyoTechFes2015. J'espère qu'il vous sera utile de pratiquer la démo et d'améliorer le script.

environnement

Ce que fait le script

La discrimination des catégories d'images de visage est effectuée par apprentissage automatique. En changeant et en apprenant dans le dossier dataset, il est possible de déterminer n'importe quelle catégorie d'image faciale.

introduction

Tout d'abord, clonez depuis git.

git clone https://github.com/Arudori5001/TokyoTechFes2015.git
cd TokyoTechFes2015
pip install cv2==1.0
pip install pillow==2.9.7
pip install chainer==1.3.2
pip install matplotlib==1.4.3

Ensuite, décompressez dataset.zip et vous êtes prêt à partir.

unzip dataset.zip

La structure de répertoire du dossier dataset créé par décompression est la suivante (seul le dossier est affiché).

$ tree dataset -d
dataset
├── Baysters
├── Buffealoes
├── Carp
├── Dragons
├── Eagles
├── Fighters
├── Giants
├── Hawks
├── Lions
├── Marines
├── Swallows
└── Tigers

Je pense que les noms des 12 équipes de baseball sont alignés. Chaque dossier contient des images faciales des joueurs de chaque équipe. Si vous faites une prédiction avec les paramètres par défaut, elle prédira "le visage du joueur de quelle équipe dans les 12 équipes le visage dans l'image donnée est proche". Ce que vous attendez peut être changé en changeant le dossier dataset et ci-dessous (voir ci-dessous).

Prévoir

  1. Tout d'abord, prenez une photo de votre visage avec ImageMagick et déplacez l'image résultante vers un chemin approprié.
  2. Entrez la commande suivante.
python bbteam_pred.py (chemin de l'image que vous souhaitez prédire)
  1. L'image capturée apparaîtra à l'écran. Si le visage peut être reconnu, un cadre sera affiché autour du visage. Si cela ne peut pas être fait, ne peut pas détecter! S'affiche et le script se termine.
  2. Si la reconnaissance faciale est possible, fermez l'image du cadre affiché avec le bouton x en haut à gauche, et deux nouveaux écrans apparaîtront. L'une est une image avec le texte «Vous appartenez à (catégorie)!» Écrit sur le visage de l'image prise, et l'autre est une image en histogramme. Le premier produit la catégorie prédite et le second produit la certitude (probabilité postérieure) de chaque catégorie.

Exemple

Ici, à titre d'exemple, supposons que l'image ʻeagles_koyama.jpgdéjà dans le dossiersample` soit l'image prise à l'étape 1. eagles_koyama.jpg À propos, cette personne est Koyama de Rakuten Eagles comme le nom du fichier l'indique.

  1. Entrez la commande suivante.
python bbteam_pred.py sample/eagles_koyama.jpg
  1. L'image capturée apparaîtra à l'écran. Il y a un cadre autour du visage. detected.jpg

  2. Fermez l'image du cadre affiché avec le bouton X en haut à gauche, et deux nouveaux écrans apparaîtront (l'un peut être caché dans l'autre fenêtre). msg.jpg figure_1.png

Sur l'image ci-dessus, vous pouvez voir que Koyama est correctement prédit pour être proche du visage du joueur Eagles, avec une certitude de 95%. L'image ci-dessous montre également la confiance dans des équipes autres que les Eagles. Outre les aigles étant de 95%, la carpe semble être à environ 5% de certitude.

À propos, la même sortie est également sortie sur la console.

predicted categoriy : Eagles
certainty factor of predicted categoriy : 0.954637289047
certainty factors of each categories : 
Baysters :
	 0.00%
Buffealoes :
	 0.00%
Carp :
	 4.51%
Dragons :
	 0.00%
Eagles :
	95.46%
Fighters :
	 0.00%
Giants :
	 0.00%
Hawks :
	 0.02%
Lions :
	 0.00%
Marines :
	 0.00%
Swallows :
	 0.00%
Tigers :
	 0.00%

Apprentissage

Modifications de l'ensemble de données

Si vous souhaitez modifier ce que vous attendez, vous devez modifier l'ensemble de données avant l'entraînement. L'ensemble de données utilise des fichiers avec une structure de répertoire fixe dans le dossier dataset pour l'apprentissage et les tests. Dans le cas par défaut, comme mentionné ci-dessus, la structure des répertoires est la suivante.

$ tree dataset -d
dataset
├── Baysters
├── Buffealoes
├── Carp
├── Dragons
├── Eagles
├── Fighters
├── Giants
├── Hawks
├── Lions
├── Marines
├── Swallows
└── Tigers

Le nom de chaque répertoire directement sous le dossier dataset ( Baysters, Buffealoes, ...) représente le nom de la catégorie. Par défaut, «Baysters» a Baysters dans une catégorie.

Les images sont alignées directement sous des dossiers tels que «Baysters».

$ tree dataset/Baysters 
dataset/Baysters
├── 1000003_ss.jpg
├── 1000007_ss.jpg
├── 1000117_ss.jpg
├── 1000118_ss.jpg
├── 1000119_ss.jpg
...

Ces images sont des images faciales appartenant à leurs catégories respectives. Dans «Baysters», les images du visage des joueurs de Baysters sont alignées. Veuillez modifier la structure du répertoire en vous référant à ce qui précède.

Par exemple, si vous voulez juger s'il s'agit d'un homme ou d'une femme, procédez comme suit. Enregistrez l'image du visage féminin dans «Femme» et l'image du visage masculin dans «Homme».

$ tree dataset -d
dataset
├── Female
└── Male

Exécution du script d'apprentissage

L'apprentissage se fait avec la commande suivante.

python Learning.py (nombre de données utilisées pour l'apprentissage)(Nombre de données utilisées pour les tests)

Par défaut, il y a 680 images dans l'ensemble de données. Si vous souhaitez utiliser 520 feuilles pour l'apprentissage et 120 feuilles pour les tests, procédez comme suit.

python Learning.py 520 130

Recommended Posts

Comment utiliser TokyoTechFes2015
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Comment utiliser la liste []
Comment utiliser python-kabusapi
Comment utiliser OptParse
Comment utiliser le retour
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
Comment utiliser Qt Designer
Comment utiliser la recherche triée
[gensim] Comment utiliser Doc2Vec
python3: Comment utiliser la bouteille (2)
Comprendre comment utiliser django-filter
Comment utiliser le générateur
[Python] Comment utiliser la liste 1
Comment utiliser FastAPI ③ OpenAPI
Comment utiliser Python Argparse
Comment utiliser Pandas Rolling
[Note] Comment utiliser virtualenv
Comment utiliser les dictionnaires redis-py
Python: comment utiliser pydub
[Aller] Comment utiliser "... (3 périodes)"
Comment faire fonctionner GeoIp2 de Django
[Python] Comment utiliser input ()
Comment utiliser le décorateur
[Introduction] Comment utiliser open3d
Comment utiliser Python lambda
Comment utiliser Jupyter Notebook
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser Google Colaboratory
Comment utiliser les octets Python
Comment utiliser cron (mémo personnel)
Python: comment utiliser async avec
Comment utiliser la fonction zip