Google Object Detection API:
https://github.com/tensorflow/models/tree/master/research/object_detection
测试代码:
我按如下方式执行了Google Object Detection API的测试代码:
with detection_graph.as_default():
with tf.Session(graph=detection_graph) as sess:
start = time.time()
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')
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)
image_np = load_image_into_numpy_array(image)
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=2)
print("--- %s seconds ---" % (time.time() - start))
根据Google研究论文,Google Object Detection API支持的所有型号都具有实时性能! 然而,上述测试代码显示检测一个图像花费约3秒(实际上,200帧 - > 130秒,400帧 - > 250秒)。我认为这个结果是错误的,因为这个模型具有实时性能。
可能的原因我期待......
请告诉我如何准确测量检测时间。
有关详细信息,请参阅以下链接 https://github.com/tensorflow/models/issues/3531
答案 0 :(得分:0)
实际上,“ object_detection_tutorial笔记本”运行非常缓慢,因为它不仅仅是实际的推断。它会加载图像,将其放入numpy数组中,加载图形(在计算上非常昂贵),以批处理大小1运行实际推断,并输出带有框的图像。
此脚本离优化还很遥远,也不是用于时间紧迫的目的。这只是为了快速视觉验证模型。
如果您想为生产部署模型(通常需要时间),Tensorflow Serve是您想要的。借助Tensorflow服务,您可以轻松构建运行模型的GPU服务器。它具有多种功能,可简化您的生活。因此,您只需要将图像传递到服务器,它将返回模型的输出。后处理应该由另一台服务器完成,因为GPU服务器通常非常昂贵。那里有一些不错的教程,描述了如何使用Tensorflow Serve设置对象检测服务器。例如here。它需要使用Docker的一些经验,但是您会相处的!
希望这会有所帮助!