Можем ли мы распечатать и сохранить метки и результаты прогноза с веб-камеры с помощью API Tensorflow Object Detection - PullRequest
0 голосов
/ 30 апреля 2019

Я следую учебному пособию по API обнаружения тензорных объектов и получаю прогнозы для каждого изображения.Я реализовал пример API-кода обнаружения объектов для обнаружения объектов по изображениям, и я также могу распечатать метки классов и вероятности предсказания, используя следующий код.

      width = image_np.shape[1]  # Number of columns
      height = image_np.shape[0]

            for i in range(len(output_dict['detection_boxes'])):

                    class_name = category_index[output_dict['detection_classes'][i]]['name']
                    if output_dict['detection_scores'][i] > 0.5:

                        print("{class: %s, prediction: %s, boundingbox: %s,%i,%i,%i,%i,%i,%i,%i}"
                              % (class_name,
                                 output_dict['detection_scores'][i],
                                 image_path,
                                 width,
                                 height,
                                 output_dict['detection_classes'][i],
                                 int(width * output_dict['detection_boxes'][i][1]),
                                 int(height * output_dict['detection_boxes'][i][0]),
                                 int(width * output_dict['detection_boxes'][i][3]),
                                 int(height * output_dict['detection_boxes'][i][2])
                 ))

Вывод с метками и оценкой предсказания в Jupyter Notebook

Output with labels and prediction score in Jupyter Notebook

Теперь я успешно выполнил одно и то же обнаружение, используя свою веб-камеру и openCV.Но я не могу понять, как получить более высокую производительность, используя обнаружение и распознавание моей веб-камеры в реальном времени.Код для использования веб-камеры вместо статических изображений также приведен ниже.Я буду очень благодарен, если вы, люди, можете помочь мне с этой проблемой.

    with detection_graph.as_default():
        with tf.Session(graph=detection_graph) as sess:
            while True:

                ret, image_np = cap.read()
                image_np_expanded = np.expand_dims(image_np, axis=0)
                image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')
                boxes = detection_graph.get_tensor_by_name('detection_boxes:0')
                scores = detection_graph.get_tensor_by_name('detection_scores:0')
                classes = detection_graph.get_tensor_by_name('detection_classes:0')
                num_detections = detection_graph.get_tensor_by_name('num_detections:0')
                (boxes, scores, classes, num_detections) = sess.run([boxes, scores, classes, num_detections],feed_dict = {image_tensor: image_np_expanded})   
                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)                                                                                                                
                cv2.imshow('object detection', cv2.resize(image_np, (800,600)))

                if cv2.waitKey(25) & 0xFF == ord('q'):

                    cv2.destroyAllWindows()
                    break
...