Tensorflow对象检测模块的sess.run()函数需要大约2.5秒来检测600x600图像中的边界bozes。我怎样才能加快这段代码的速度?
second_dense
答案 0 :(得分:0)
您的sess.run
执行时间对于 首次 运行是正常的,在那之后它的运行时间可能会快100倍(不是在开玩笑)。
关键是重新使用会话,在您的示例中,我将添加另一个图像评估并测量该时间并检查性能是否有所提高,例如:
# all your prev code here
print (diff)
print("3")
image_np = image2 # get another image from somewhere
image_np_expanded = np.expand_dims(image_np, axis=0)
start_time = datetime.datetime.now()
(boxes, scores, classes, num) = sess.run(
[detection_boxes, detection_scores, detection_classes, num_detections],
feed_dict={image_tensor: image_np_expanded})
end_time = datetime.datetime.now()
diff = (end_time - start_time).total_seconds()*1000
print("Detection #2")
print(diff)
因此,您还不需要GPU或较小的图像,只需“预热”会话并将其用于所有预测。
我目前在测试环境中的设置非常适中,最新版本的Ubuntu在VirtualBox上运行,单核且没有GPU(MobileNet2 + COCO数据集),一旦会话“热”,我得到的时间相当不错
--- 3.7862255573272705 seconds ---
--- 0.21631121635437012 seconds ---
--- 0.1784508228302002 seconds ---
请注意,第一个执行速度较慢,最后一个是尺寸为1050 * 600的图片