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



我的模型处理视频,我想计算它处理帧的速度,如每秒帧数或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帧的处理时间是1/50秒或者如果是1/10秒,因为模型只能处理10帧,其他帧只会在预处理中跳过。我应该把开始时间和结束时间放在哪里?

哪条路是标准路还是正确路?

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

如果你试图只展示深度学习模型所用的时间,不要包括预处理步骤。

如果要对端到端流程计时,请包括整个管道。

一个更好的解决方案是评测你的代码。这将为您提供代码每一部分所需时间的明细,这样您就不必挑剔其他部分。

在你的情况下,由于你想把时间放在帧数上,我不在乎你的模型看到了多少帧,也不在乎你管道的任何工作。作为一个用户,我关心的只是如果我放入X个帧,需要多长时间。所以以50帧/秒的速度进行。

最新更新