2020This module implements the CNNClassifier class, which is the interface for
2121using an existing and trained CNN model.
2222"""
23- from __future__ import absolute_import
24- from __future__ import division
25- from __future__ import print_function
26-
27- import time
2823import logging
2924
30- import operator
3125import numpy as np
3226import tensorflow as tf
3327
@@ -39,17 +33,17 @@ def __init__(self, model_file, label_file, input_layer="input", output_layer="fi
3933 self ._labels = self .load_labels (label_file )
4034 input_name = "import/" + input_layer
4135 output_name = "import/" + output_layer
42- self ._input_operation = self ._graph .get_operation_by_name (input_name );
43- self ._output_operation = self ._graph .get_operation_by_name (output_name );
36+ self ._input_operation = self ._graph .get_operation_by_name (input_name )
37+ self ._output_operation = self ._graph .get_operation_by_name (output_name )
4438 self ._session = tf .Session (graph = self ._graph )
4539 self ._graph_norm = tf .Graph ()
4640 with self ._graph_norm .as_default ():
4741 image_mat = tf .placeholder (tf .float32 , None , name = "image_rgb_in" )
4842 float_caster = tf .cast (image_mat , tf .float32 )
49- dims_expander = tf .expand_dims (float_caster , 0 );
43+ dims_expander = tf .expand_dims (float_caster , 0 )
5044 resized = tf .image .resize_bilinear (dims_expander , [input_height , input_width ])
5145 normalized = tf .divide (tf .subtract (resized , [input_mean ]), [input_std ], name = "image_norm_out" )
52- self ._input_operation_norm = self ._graph_norm .get_operation_by_name ("image_rgb_in" )
46+ self ._input_operation_norm = self ._graph_norm .get_operation_by_name ("image_rgb_in" )
5347 self ._output_operation_norm = self ._graph_norm .get_operation_by_name ("image_norm_out" )
5448 self ._sess_norm = tf .Session (graph = self ._graph_norm )
5549
@@ -75,19 +69,16 @@ def read_tensor_from_image_file(self, file_name, input_height=299, input_width=2
7569 file_reader = tf .read_file (file_name , input_name )
7670
7771 if file_name .endswith (".png" ):
78- image_reader = tf .image .decode_png (file_reader , channels = 3 ,
79- name = 'png_reader' )
72+ image_reader = tf .image .decode_png (file_reader , channels = 3 , name = 'png_reader' )
8073 elif file_name .endswith (".gif" ):
81- image_reader = tf .squeeze (tf .image .decode_gif (file_reader ,
82- name = 'gif_reader' ))
74+ image_reader = tf .squeeze (tf .image .decode_gif (file_reader , name = 'gif_reader' ))
8375 elif file_name .endswith (".bmp" ):
8476 image_reader = tf .image .decode_bmp (file_reader , name = 'bmp_reader' )
8577 else :
86- image_reader = tf .image .decode_jpeg (file_reader , channels = 3 ,
87- name = 'jpeg_reader' )
78+ image_reader = tf .image .decode_jpeg (file_reader , channels = 3 , name = 'jpeg_reader' )
8879
8980 float_caster = tf .cast (image_reader , tf .float32 )
90- dims_expander = tf .expand_dims (float_caster , 0 );
81+ dims_expander = tf .expand_dims (float_caster , 0 )
9182 resized = tf .image .resize_bilinear (dims_expander , [input_height , input_width ])
9283 normalized = tf .divide (tf .subtract (resized , [input_mean ]), [input_std ])
9384 sess = tf .Session ()
@@ -111,20 +102,15 @@ def load_labels(self, label_file):
111102 def classify_image (self ,
112103 image_file_or_mat ,
113104 top_results = 3 ):
114- s_t = time .time ()
115105 t = None
116- if type (image_file_or_mat ) == str :
106+ if isinstance (image_file_or_mat , str ) :
117107 t = self .read_tensor_from_image_file (file_name = image_file_or_mat )
118108 else :
119109 t = self .read_tensor_from_image_mat (image_file_or_mat )
120110
121- #logging.info( "time.norm: " + str(time.time() - s_t))
122- s_t = time .time ()
123111
124112 results = self ._session .run (self ._output_operation .outputs [0 ],
125- {self ._input_operation .outputs [0 ]: t })
126-
127- #logging.info( "time.cls: " + str(time.time() - s_t))
113+ {self ._input_operation .outputs [0 ]: t })
128114
129115 top_results = min (top_results , len (self ._labels ))
130116 results = np .squeeze (results )
0 commit comments