树莓派Yolo V8推理速度优化:小尺寸图像为何未提速?
机器人定位YOLOv8n推理速度优化问题
我尝试通过摄像头实现机器人定位,在尝试数月经典计算机视觉方法定位花园地标无果后,转而制作自定义数据集并快速训练了效果优异的Yolov8 nano模型,目前需解决推理速度问题。
我运行以下代码测试图像尺寸对速度的影响:
import time import numpy as np import cv2 from ultralytics import YOLO model = YOLO("best.pt") # load a pretrained model (recommended for training) img = cv2.imread('house.jpg') sizes = [320,480,640,1280] for sz in sizes: times = [] resized = cv2.resize(img, (sz,sz), interpolation = cv2.INTER_AREA) for i in range(10): timeStart = time.time() results = model.predict(source= resized,show= False,verbose = False) # predict on an image timeEnd = time.time() times.append(timeEnd-timeStart) ar = np.array(times) print(f'size:{sz:4}, mean:{int(ar.mean()*1000):3}, st dev:{int(ar.std()*1000):3}, min:{int(ar.min()*1000):3}, max:{int(ar.max()*1000)}:3')
搭载i9处理器+小型GPU的笔记本测试结果(单位:毫秒)
| 尺寸 | 均值 | 标准差 | 最小值 | 最大值 |
|---|---|---|---|---|
| 320 | 19 | 16 | 10 | 134 |
| 480 | 16 | 4 | 6 | 31 |
| 640 | 15 | 4 | 10 | 20 |
| 1280 | 16 | 4 | 8 | 30 |
原以为所有尺寸图像均可在GPU并行处理,速度差异不大,但实际小尺寸耗时更长,推测可能是首次运行加载权重导致。笔记本上的结果参考意义有限,因其速度已足够快。
树莓派4测试结果(单位:毫秒)
| 尺寸 | 均值 | 标准差 | 最小值 | 最大值 |
|---|---|---|---|---|
| 320 | 2002 | 391 | 1846 | 3177 |
| 480 | 1895 | 26 | 1845 | 1929 |
| 640 | 1933 | 30 | 1902 | 1992 |
| 1280 | 1931 | 33 | 1896 | 1991 |
同样首次测试的尺寸耗时更长,且所有尺寸的推理速度都慢得超出预期。原本期望缩小图像尺寸能提升CPU上的推理速度,但并未实现。
待解决问题
- 为何CPU上小尺寸图像未提速?
- 有哪些方法可提升树莓派上Yolo V8的推理速度?(已尝试超频至1800,提速效果微乎其微)
内容的提问来源于stack exchange,提问作者Alan Johnstone
相关产品推荐
相关产品推荐

