retrain_run_inference.py
2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# -*- coding: utf-8 -*-
"""Inception v3 architecture 모델을 retraining한 모델을 이용해서 이미지에 대한 추론(inference)을 진행하는 예제"""
import sys
import numpy as np
import tensorflow as tf
imagePath = ''
modelFullPath = ''
labelsFullPath = ''
if (len(sys.argv) > 1):
imagePath = sys.argv[1] + '/test/test.jpg'
modelFullPath = sys.argv[1] + '/test/output_graph.pb'
labelsFullPath = sys.argv[1] + '/test/output_labels.txt'
else:
imagePath = './test/test.jpg' # 추론을 진행할 이미지 경로
modelFullPath = './test/output_graph.pb' # 읽어들일 graph 파일 경로
labelsFullPath = './test/output_labels.txt' # 읽어들일 labels 파일 경로
def create_graph():
"""저장된(saved) GraphDef 파일로부터 graph를 생성하고 saver를 반환한다."""
# 저장된(saved) graph_def.pb로부터 graph를 생성한다.
with tf.gfile.FastGFile(modelFullPath, 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
_ = tf.import_graph_def(graph_def, name='')
def run_inference_on_image():
answer = None
if not tf.gfile.Exists(imagePath):
tf.logging.fatal('File does not exist %s', imagePath)
answer = 'File does not exist ' + imagePath
return answer
image_data = tf.gfile.FastGFile(imagePath, 'rb').read()
# 저장된(saved) GraphDef 파일로부터 graph를 생성한다.
create_graph()
with tf.Session() as sess:
softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
predictions = sess.run(softmax_tensor,
{'DecodeJpeg/contents:0': image_data})
predictions = np.squeeze(predictions)
top_k = predictions.argsort()[-5:][::-1] # 가장 높은 확률을 가진 5개(top 5)의 예측값(predictions)을 얻는다.
f = open(labelsFullPath, 'rb')
lines = f.readlines()
labels = [str(w).replace("\n", "") for w in lines]
for node_id in top_k:
human_string = labels[node_id]
score = predictions[node_id]
print('%s (score = %.5f)' % (human_string, score))
answer = labels[top_k[0]]
return answer
if __name__ == '__main__':
run_inference_on_image()