yolov5s添加FPS
时间: 2025-04-19 17:51:38 浏览: 23
### 如何在YOLOv5s中实现FPS计算
为了实现在YOLOv5s中的FPS(帧率)计算,可以按照以下方式修改代码来记录并展示整个流程的性能指标。这不仅有助于了解系统的实际表现,还能帮助定位潜在瓶颈。
#### 修改推理脚本以支持FPS统计
可以在现有的推理循环内加入计时逻辑,分别测量图像预处理(pre-process),模型推理(inference)以及非极大值抑制(NMS)[^5]三个阶段所耗费的时间:
```python
import time
from pathlib import Path
import cv2
import torch
def main():
# 初始化设备和加载模型
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model_path = Path('path/to/yolov5s.engine')
# 加载TensorRT引擎和其他初始化操作...
cap = cv2.VideoCapture(video_source)
frame_times = []
while True:
start_time = time.time()
ret, img = cap.read()
if not ret:
break
# 图像预处理
pre_start = time.time()
input_tensor = preprocess_image(img)
pre_end = time.time()
# 推理过程
infer_start = time.time()
output_data = do_inference(input_tensor)
infer_end = time.time()
# 后处理 (NMS等)
nms_start = time.time()
detections = postprocess(output_data)
nms_end = time.time()
end_time = time.time()
total_latency_ms = (end_time - start_time)*1000
preprocessing_latency_ms = (pre_end-pre_start)*1000
inference_latency_ms = (infer_end-infer_start)*1000
nms_latency_ms = (nms_end-nms_start)*1000
fps = 1 / ((total_latency_ms)/1000)
print(f'Total Latency: {total_latency_ms:.2f} ms | Preprocessing Time: {preprocessing_latency_ms:.2f} ms | Inference Time: {inference_latency_ms:.2f} ms | NMS Time: {nms_latency_ms:.2f} ms | FPS: {fps:.2f}')
frame_times.append(total_latency_ms)
visualize_detections(detections, img)
avg_fps = len(frame_times)/(sum(frame_times)/1000)
print(f'\nAverage FPS over all frames: {avg_fps:.2f}')
if __name__ == '__main__':
main()
```
上述代码片段展示了如何通过`time.time()`函数获取当前时间戳,在不同阶段前后调用此函数即可获得相应耗时时长,并据此计算出平均帧速率(FPS)。注意这里假设已经实现了`preprocess_image`, `do_inference`, 和 `postprocess` 函数用于具体的前处理、推理及后处理工作。
阅读全文
相关推荐


















