[PYTHON] J'ai créé un classificateur de visage Dir en gray en utilisant TensorFlow - Test de classification de visage

introduction

«Il est enfin temps de vous amuser.

programme

eval.py


#!/usr/local/bin/python
#! -*- coding: utf-8 -*-

import sys
import numpy as np
import cv2
import tensorflow as tf
import os
import random
import main

#Chemin du classificateur de visage par défaut OpenCV
cascade_path = '/usr/local/Cellar/opencv3/3.2.0/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(cascade_path)

#Étiquette d'identification et le nom correspondant à chaque numéro d'étiquette
HUMAN_NAMES = {
  0: u"Kyo",
  1: u"Kaoru",
  2: u"Shinya"
}

#Image spécifiée(img_path)Résultats d'apprentissage(ckpt_path)Jugement utilisant
def evaluation(img_path, ckpt_path):
  #Réinitialisation du graphique(Apparemment, je ne suis pas sûr de ce que je fais ...)
  tf.reset_default_graph()

  #Fichier ouvert
  f = open(img_path, 'r')
  img = cv2.imread(img_path, cv2.IMREAD_COLOR)

  #Convertir en image monochrome
  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  face = faceCascade.detectMultiScale(gray, 1.1, 3)

  if len(face) > 0:
    for rect in face:
      #Je voulais donner un nom approprié à l'image traitée car cela n'a pas d'importance. Peut-être la date et le nombre de secondes
      random_str = str(random.random())

      #Écrivons la partie du visage avec une ligne rouge
      cv2.rectangle(img, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), (0, 0, 255), thickness=2)

      #Où enregistrer l'image avec le visage entouré d'une ligne rouge
      face_detect_img_path = '{Chemin du répertoire}' + random_str + '.jpg'

      #Enregistrement de l'image avec le visage entouré d'une ligne rouge
      cv2.imwrite(face_detect_img_path, img)
      x = rect[0]
      y = rect[1]
      w = rect[2]
      h = rect[3]

      #Enregistrer l'image du visage détecté découpé
      cv2.imwrite('{Chemin du répertoire}' + random_str + '.jpg', img[y:y+h, x:x+w])

      #Découpez l'image du visage à transmettre à TensorFlow
      target_image_path = '{Chemin du répertoire}' + random_str + '.jpg'
  else:
    #Si aucun visage n'est trouvé, le processus se termine
    print 'image:No Face'
    return
  f.close()
  f = open(target_image_path, 'r')

  #Tableau pour mettre des données
  image = []
  img = cv2.imread(target_image_path)
  img = cv2.resize(img, (28, 28))

  #Après avoir organisé les informations d'image dans une rangée, 0-Défini sur une valeur flottante de 1
  image.append(img.flatten().astype(np.float32)/255.0)
  #Convertir au format numpy afin qu'il puisse être traité par TensorFlow
  image = np.asarray(image)

  #Sort et renvoie la probabilité de chaque étiquette pour l'image d'entrée(main.Appel de py)
  logits = main.inference(image, 1.0)

  # We can just use 'c.eval()' without passing 'sess'
  sess = tf.InteractiveSession()

  # restore(Lecture des paramètres)Préparation de
  saver = tf.train.Saver()

  #Initialisation variable
  sess.run(tf.global_variables_initializer())

  if ckpt_path:
    #Lecture des paramètres après l'apprentissage
    saver.restore(sess, ckpt_path)

  # sess.run(logits)Pareil que
  softmax = logits.eval()

  #résultat du jugement
  result = softmax[0]

  #Résultat du jugement%Et arrondir
  rates = [round(n * 100.0, 1) for n in result]
  humans = []

  #Créer un hachage pour le numéro d'étiquette, le nom, le pourcentage
  for index, rate in enumerate(rates):
    name = HUMAN_NAMES[index]
    humans.append({
      'label': index,
      'name': name,
      'rate': rate
    })

  #Trier par pourcentage le plus élevé
  rank = sorted(humans, key=lambda x: x['rate'], reverse=True)
  
  #Sortir le résultat sur la console
  print rank

  #Renvoie le résultat du jugement et le chemin de l'image traitée
  return [rank, os.path.basename(img_path), random_str + '.jpg']

#Pour tester à partir de la ligne de commande
if __name__ == '__main__':
  evaluation('{Chemin du répertoire}/test.jpg', '{Chemin du répertoire}/model2.ckpt')

Courir

python eval.py

Suppléments et excuses

Tous les liens de page

Recommended Posts

J'ai créé un classificateur de visage Dir en gray en utilisant TensorFlow - Test de classification de visage
J'ai créé un classificateur de visage Dir en gray en utilisant TensorFlow - (1) Introduction
J'ai créé un classificateur de visage Dir en gray en utilisant l'extraction de visage TensorFlow-④
J'ai créé un classificateur de visage Dir en gray en utilisant TensorFlow --⑥ Programme d'apprentissage
J'ai essayé de faire un classificateur de visage Dir en gris en utilisant TensorFlow --⑬ Jouer (final)
J'ai créé un classificateur de visage Dir en gray en utilisant TensorFlow --⑧ Exécution d'apprentissage
J'ai créé un classificateur de visage Dir en gray en utilisant TensorFlow --⑫ Version Web
J'ai créé un classificateur de visage Dir en gray en utilisant TensorFlow --⑦ Modèle d'apprentissage
J'ai créé un classificateur de visage Dir en gray en utilisant TensorFlow --② Construction de l'environnement
J'ai créé un classificateur de visage Dir en gray en utilisant TensorFlow - Préparation de la version Web
J'ai fait un modèle VGG16 en utilisant TensorFlow (en chemin)
Créer un outil de reconnaissance de visage à l'aide de TensorFlow
Détection de visage à l'aide d'un classificateur en cascade
J'ai essayé de jouer au jeu ○ ✕ en utilisant TensorFlow
Débutant: j'ai créé un lanceur à l'aide d'un dictionnaire
J'ai créé un jeu ○ ✕ avec TensorFlow
J'ai effectué un processus de connexion / déconnexion en utilisant Python's Bottle.
[Python] J'ai créé un classificateur pour les iris [Machine learning]
J'ai créé un jeu d'introduction au festival scolaire avec Ren'py
〇✕ J'ai fait un jeu
J'ai créé un lecteur de flux rapide en utilisant feedparser en Python
J'ai essayé d'héberger un modèle d'apprentissage en profondeur de TensorFlow à l'aide de TensorFlow Serving
J'ai essayé de faire un diagnostic de visage AI pour les golfeuses professionnelles ③
J'ai créé une application d'estimation de l'entraînement musculaire à l'aide du SDK Qore
J'ai créé Chatbot en utilisant l'API LINE Messaging et Python
J'ai essayé la reconnaissance faciale avec Face ++
J'ai fait un texte Python
J'ai essayé d'utiliser magenta / TensorFlow
J'ai fait un robot discord
J'ai créé un jeu appelé Battle Ship en utilisant pygame et tkinter
Python> J'ai créé un code de test pour mon propre fichier externe
J'ai essayé de marquer un concours de travesti en utilisant l'API Detect de Face ++
J'ai créé un chat-holdem de serveur de jeu de poker en utilisant websocket avec python
J'ai créé Chatbot en utilisant l'API LINE Messaging et Python (2) ~ Server ~
[Kaggle] J'ai fait une collection de problèmes en utilisant le didacticiel Titanic