――It's finally time to enjoy yourself.
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
#OpenCV default face classifier path
cascade_path = '/usr/local/Cellar/opencv3/3.2.0/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(cascade_path)
#Identification label and the name corresponding to each label number
HUMAN_NAMES = {
0: u"Kyo",
1: u"Kaoru",
2: u"Shinya"
}
#Specified image(img_path)Learning results(ckpt_path)Judgment using
def evaluation(img_path, ckpt_path):
#Graph Reset(Apparently, I'm not sure what I'm doing ...)
tf.reset_default_graph()
#Open file
f = open(img_path, 'r')
img = cv2.imread(img_path, cv2.IMREAD_COLOR)
#Convert to monochrome image
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face = faceCascade.detectMultiScale(gray, 1.1, 3)
if len(face) > 0:
for rect in face:
#I wanted to give an appropriate name to the processed image because it doesn't matter. Maybe the date and the number of seconds
random_str = str(random.random())
#Let's write the face part with a red line
cv2.rectangle(img, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), (0, 0, 255), thickness=2)
#Where to save the image with the face surrounded by a red line
face_detect_img_path = '{Directory path}' + random_str + '.jpg'
#Saving the image with the face surrounded by a red line
cv2.imwrite(face_detect_img_path, img)
x = rect[0]
y = rect[1]
w = rect[2]
h = rect[3]
#Save the image of the detected face cut out
cv2.imwrite('{Directory path}' + random_str + '.jpg', img[y:y+h, x:x+w])
#Cut out face image to pass to TensorFlow
target_image_path = '{Directory path}' + random_str + '.jpg'
else:
#If no face is found, the process ends
print 'image:No Face'
return
f.close()
f = open(target_image_path, 'r')
#Array to put data
image = []
img = cv2.imread(target_image_path)
img = cv2.resize(img, (28, 28))
#After arranging the image information in a row, 0-Set to a float value of 1
image.append(img.flatten().astype(np.float32)/255.0)
#Convert to numpy format so that it can be processed by TensorFlow
image = np.asarray(image)
#Outputs and returns the probability of each label for the input image(main.Call from py)
logits = main.inference(image, 1.0)
# We can just use 'c.eval()' without passing 'sess'
sess = tf.InteractiveSession()
# restore(Parameter reading)Preparation of
saver = tf.train.Saver()
#Variable initialization
sess.run(tf.global_variables_initializer())
if ckpt_path:
#Reading parameters after learning
saver.restore(sess, ckpt_path)
# sess.run(logits)Same as
softmax = logits.eval()
#judgment result
result = softmax[0]
#Judgment result%And round off
rates = [round(n * 100.0, 1) for n in result]
humans = []
#Create a hash of label numbers, names and percentages
for index, rate in enumerate(rates):
name = HUMAN_NAMES[index]
humans.append({
'label': index,
'name': name,
'rate': rate
})
#Sort in descending order of percentage
rank = sorted(humans, key=lambda x: x['rate'], reverse=True)
#Output results to console
print rank
#Returns the judgment result and the path of the processed image
return [rank, os.path.basename(img_path), random_str + '.jpg']
#For testing from the command line
if __name__ == '__main__':
evaluation('{Directory path}/test.jpg', '{Directory path}/model2.ckpt')
python eval.py
--Since there is no file such as model2.ckpt, the directory path seems to point to the location where model2.ckpt.index was generated. ――It is successful if you can get the result of how and with what probability the test image resembles who after execution.
-I made a Dir en gray face classifier using TensorFlow --(1) Introduction -I made a face classifier for Dir en gray using TensorFlow-② Environment construction -I made a face classifier for Dir en gray using TensorFlow-③ Image collection -I made a face classifier for Dir en gray using TensorFlow-④ Face extraction -I made a face classifier for Dir en gray using TensorFlow-⑤ Learning data preparation -I made a Dir en gray face classifier using TensorFlow-⑥ Learning program -I made a face classifier for Dir en gray using TensorFlow-⑦ Learning model -I made a face classifier for Dir en gray using TensorFlow-⑧ Learning execution -I made a Dir en gray face classifier using TensorFlow --⑨ Data visualization -I made a Dir en gray face classifier using TensorFlow --⑩ Face classification test -I made a Dir en gray face classifier using TensorFlow-⑪ Web release preparation -I made a Dir en gray face classifier using TensorFlow --⑫ Web release -I tried to make a Dir en gray face classifier using TensorFlow --⑬ Playing (final)
Recommended Posts