with self.detection_graph.as_default(): with tf.Session(graph=self.detection_graph) as sess: # Expand dimensions since the model expects images to have shape: [1, None, None, 3] image_np_expanded = np.expand_dims(imageSerialized, axis=0) image_tensor = self.detection_graph.get_tensor_by_name('image_tensor:0') # Each box represents a part of the image where a particular object was detected. boxes = self.detection_graph.get_tensor_by_name('detection_boxes:0') # Each score represent how level of confidence for each of the objects. # Score is shown on the result image, together with the class label. scores = self.detection_graph.get_tensor_by_name('detection_scores:0') classes = self.detection_graph.get_tensor_by_name('detection_classes:0') num_detections = self.detection_graph.get_tensor_by_name('num_detections:0') # Actual detection. (boxes, scores, classes, num_detections) = sess.run( [boxes, scores, classes, num_detections], feed_dict={image_tensor: image_np_expanded}) boxesList.append([boxes,xmin,ymin]) scoresList.append(scores) classesList.append(classes) # extractBox.extractBoxMessage( # RecognizeInfoList, # boxMessageList, # classNameList, # RecognizeInfo, # incisePictureWidth, # incisePictureHeight, # inciseXmin, # inciseYmin, # np.squeeze(boxes), # np.squeeze(classes).astype(np.int32), # np.squeeze(scores), # min_score_thresh=0.5 # )
以及高效率不多次生成和关闭sess:
def _detector(self,imageSerializedList,boxesList,scoresList,classesList): incisePictureWidth=self.beCheckedImageWidth incisePictureHeight=self.beCheckedImageHeight with self.detection_graph.as_default(): with tf.Session(graph=self.detection_graph) as sess: # Expand dimensions since the model expects images to have shape: [1, None, None, 3] image_tensor = self.detection_graph.get_tensor_by_name('image_tensor:0') # Each box represents a part of the image where a particular object was detected. boxes = self.detection_graph.get_tensor_by_name('detection_boxes:0') # Each score represent how level of confidence for each of the objects. # Score is shown on the result image, together with the class label. scores = self.detection_graph.get_tensor_by_name('detection_scores:0') classes = self.detection_graph.get_tensor_by_name('detection_classes:0') num_detections = self.detection_graph.get_tensor_by_name('num_detections:0') # Actual detection. for imageSerialized in imageSerializedList: image_np_expanded = np.expand_dims(imageSerialized[0], axis=0) (box, score, cla, num_detection) = sess.run( [boxes, scores, classes, num_detections], feed_dict={image_tensor: image_np_expanded}) boxesList.append([box,imageSerialized[1],imageSerialized[2]]) scoresList.append(score) classesList.append(cla)