Я следую учебному пособию по 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](https://i.stack.imgur.com/TP0Xu.png)
Теперь я успешно выполнил одно и то же обнаружение, используя свою веб-камеру и 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