2017-10-04 45 views
1

我正在從TensorFlow的ObjectDetection部分默認IPython的筆記本: https://github.com/tensorflow/models/blob/master/research/object_detection/object_detection_tutorial.ipynb印刷類

我可以用下面的代碼打印由模型所作的註釋的座標中的最後一個單元格筆記本。

with detection_graph.as_default(): 
    with tf.Session(graph=detection_graph) as sess: 
    # Definite input and output Tensors for detection_graph 
    image_tensor = detection_graph.get_tensor_by_name('image_tensor:0') 
    # Each box represents a part of the image where a particular object was detected. 
    detection_boxes = 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. 
    detection_scores = detection_graph.get_tensor_by_name('detection_scores:0') 
    detection_classes = detection_graph.get_tensor_by_name('detection_classes:0') 
    num_detections = detection_graph.get_tensor_by_name('num_detections:0') 
    for image_path in TEST_IMAGE_PATHS: 
     image = Image.open(image_path) 
     # the array based representation of the image will be used later in order to prepare the 
     # result image with boxes and labels on it. 
     image_np = load_image_into_numpy_array(image) 
     # Expand dimensions since the model expects images to have shape: [1, None, None, 3] 
     image_np_expanded = np.expand_dims(image_np, axis=0) 
     # Actual detection. 
     (boxes, scores, classes, num) = sess.run(
      [detection_boxes, detection_scores, detection_classes, num_detections], 
      feed_dict={image_tensor: image_np_expanded}) 
     # Visualization of the results of a detection. 
     vis_util.visualize_boxes_and_labels_on_image_array(
      image_np, 
      np.squeeze(boxes), 
      np.squeeze(classes).astype(np.int32), 
      np.squeeze(scores), 
      category_index, 
      use_normalized_coordinates=True, 
      line_thickness=8) 
     plt.figure(figsize=IMAGE_SIZE) 
     plt.imshow(image_np) 
     s_boxes = boxes[scores > 0.5] 
     height = 636 
     width = 1024 
     s_boxes[:,0] = s_boxes[:,0]*height 
     s_boxes[:,2] = s_boxes[:,2]*height 
     s_boxes[:,1] = s_boxes[:,1]*width 
     s_boxes[:,3] = s_boxes[:,3]*width 
     for s in s_boxes: 
      print(s) 
     break 

輸出我得到:

output

我試圖打印與註釋關聯的類模型使得 所以輸出應該像下面的(由於「狗」在 'category_index' 索引1):

[ 23.5806942 23.79684448 548.24536133 326.084198 ]: 1 
[ 63.68989563 401.32214355 609.81091309 996.93786621]: 1 

OR

[ 23.5806942 23.79684448 548.24536133 326.084198 ]: Dog 
[ 63.68989563 401.32214355 609.81091309 996.93786621]: Dog 

我遇到的主要問題是,我無法弄清楚如何從'類'中爲相應的score > 0.5索引元素。

visualize_boxes_and_labels_on_image_array功能是在這裏:

https://github.com/tensorflow/models/blob/master/research/object_detection/utils/visualization_utils.py#L323

回答

0

classes可以被索引類似於boxes

s_class = classes[scores > 0.5] 
print(s_class) 

將返回[ 18. 18.]在物體檢測iPynb第一個例子。 18相當於狗在category_index