Inference(推理)是指将经过训练的深度学习模型应用于新的输入数据以获得预测结果的过程。在推理阶段,模型不再进行训练,而是将输入数据传递给模型,并输出对应的预测值。
Latency(延迟)是指从输入数据传入模型开始,到模型输出结果可用的时间间隔。在深度学习推理中,延迟是指整个推理过程中的时间延迟。延迟可以包括多个方面的时间开销,例如数据传输、计算推理、结果传回等。在实际应用中,延迟通常是实时性的关键指标。较低的延迟意味着模型能够更快地处理输入数据,并输出结果。
Preprocess(预处理)是指在输入数据进入模型之前对其进行的操作或转换。预处理包括数据清洗、缩放、归一化、裁剪、图像旋转或镜像等操作,以确保输入数据与模型的要求和期望相匹配。预处理的目的是为了提高模型的训练或推理效果,并且通常在数据集准备阶段进行。
FPS指的是每秒传输帧数。
方法一: FPS=1/Inference
这个是YOLOv5作者在测试FPS和batchsize的关系时,计算FPS的方法,链接: link
方法二: FPS=1/Latency
这个B导给出的计算FPS的方法,链接: link
方法三: FPS=1000(1s)/(preprocess+inference+postprocess)
链接: link
Speed: 2.5/0.8/3.4 ms inference/NMS/total per 640x640 image at batch-size 32
inference=2.5ms
NMS=0.8ms
total per=3.4ms
方法一:FPS=1000/2.5=400
方法三:FPS=1000/3.4=294.1
model weights:best.pt size:16.9M (bs:1)Latency:0.00850s +- 0.00027s fps:117.6
方法二:FPS=1/0.00850=117.6
运行detect.py,又会得到10ms以上的inference(推理时间)
在训练YOLOv7过程中,对FPS的计算,我真是搞不懂了,主要算出来的FPS也太大了,论文里几乎没有出现一百以上的,有相同疑惑的小伙伴可以留言和我讨论。