计算深度学习模型的处理时间

时间:2020-08-30 19:38:12

标签: python performance machine-learning deep-learning

我的模型处理视频,我想计算它以每秒帧数或1帧的处理时间处理帧的速度。

我做了一个单一的函数来获取预测,它将原始帧作为输入,进行所有预处理,然后返回分类。预处理步骤之一是从视频中采样帧,基本上,它会将进入深度学习模型的帧数减少1/5。没有所有的预处理,模型将无法达到预期的效果。

所以我的问题是,我还应该考虑预处理时间吗?而且,最重要的是,此处理时间是针对所有帧还是仅针对模型实际看到的帧?

示例代码结构如下:

start = time.time()
prediction = main(data)
end = time.time
print("Time for 1 frame=",(end-start)/n_frames) # lets say n_frames = 50

main函数内部:

preprocessed = preprocess(data) # resizing, sampling down from 50 to 10 frames
prediction = model.predict(preprocessed)
return prediction

示例:输入为50帧,对其进行预处理和进行预测所花费的总时间为1秒。 (请注意,该模型只能看到10个预处理帧) 因此,一帧的处理时间为1/50秒。 OR 应该是1/10秒,因为模型只能处理10帧,因此其他人只会在预处理中被跳过。我应该在哪里放置开始时间和结束时间?

哪种方法是标准方法还是正确的方法?

1 个答案:

答案 0 :(得分:0)

没有标准的方法,这取决于您要使用结果的确切方式。

如果您只想证明深度学习模型用尽的时间,请不要包括预处理步骤。

如果您希望对端到端过程进行计时,请包括整个管道。

一个更好的解决方案是对profile进行编码。这样一来,您就可以详细了解代码各部分所花费的时间,以使您不必选择其他任何地方。

在您的情况下,由于您希望将时间用帧数表示,因此我不关心模型看到多少帧或管道中的任何工作。作为用户,我所关心的就是如果放入X帧,需要多长时间。因此,每秒50帧。

相关问题