Introduction
经过前面三篇教程帖子(yolov8n在行空板上的运行(中文),yolov10n在行空板上的运行(中文),Mediapipe在行空板上的运行(中文))的介绍,我们对如何使用官方代码在行空板上运行物体检测的AI模型有了基本的概念,并对常见的模型进行了简单的测试和对比。
在行空板上YOLO和Mediapipe图片物体检测的测试(中文)中我们对于行空板上使用YOLO和Mediapipe进行图片物体检测进行了测试。
进一步的,本文将
- 对不同模型的视频物体检查进行详细的对比分析;
- 进行针对在行空板上的视频物体检测进行代码编写和优化;
- 对不同模型的帧率对比测试。
Note: 因为视频物体检测和图片物体检测用的是相同的模型,所以在检测准确性上不会有区别,所以检测结果的准确性可以直接参考以行空板上YOLO和Mediapipe图片物体检测的测试(中文)所做的测试。
yolo视频物体检测
不同onnx模型导出设置的表现对比
设置和代码
导出onnx模型的官方代码为:
from ultralytics import YOLO
# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
#export onnx
model.export(format='onnx')
yolo系列模型在使用官方代码导出onnx格式模型的时候,有几个不同的选项:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
imgsz | int or tuple | 640 | 模型输入所需的图像大小。对于正方形图像可以是整数,对于特定尺寸可以是元组(高度,宽度)。 |
half | bool | False | 支持FP16(半精度)量化,减少模型尺寸,并可能加快对支持硬件的推理。 |
dynamic | bool | False | 允许ONNX和TensorRT导出的动态输入大小,增强处理不同图像尺寸的灵活性。 |
simplify | bool | False | 简化ONNX导出的模型图,潜在地提高性能和兼容性。 |
- 其中,dynamic与imgsz不兼容;dynamic与half不兼容。
我们将分别对这几个选项的不同组合进行对比测试,分辨率都采用640。共包括以下模型:
设置 | 代码 |
---|---|
默认 | model.export(format=‘onnx’, imgsz=640) |
dynamic | model.export(format=‘onnx’, dynamic=True) |
simplify | model.export(format=‘onnx’, simplify=True, imgsz=640) |
simplify和dynamic | model.export(format=‘onnx’, simplify=True, dynamic=True) |
half | model.export(format=‘onnx’, half=True, imgsz=640) |
simlify和half | model.export(format=‘onnx’, simplify=True, half=True, imgsz=640) |