前置准备步骤
- 代码下载
- 数据集准备
----- datasets
----------- data.yml
----------- train
---------------------- images
-------------------------------------------- 1.png
---------------------- labels
-------------------------------------------- 1.txt
----------- val
---------------------- images
-------------------------------------------- 1.png
---------------------- labels
-------------------------------------------- 1.txt - txt文件内容
label, center_x, center_y, w, h
0, 0.5, 0.5, 0.3, 0.4
训练以及测试代码
训练代码
#coding:utf-8
from ultralytics import YOLOv10
# 模型配置文件
model_yaml_path = "ultralytics/cfg/models/v10/yolov10n.yaml"
#数据集配置文件
data_yaml_path = 'datasets/Data/data.yaml'
#预训练模型
pre_model_name = 'yolov10n.pt'
if __name__ == '__main__':
#加载预训练模型
model = YOLOv10(model_yaml_path).load(pre_model_name)
#训练模型
results = model.train(data=data_yaml_path,
epochs=20,
batch=4,
name='train_v10')
测试代码
from ultralytics import YOLOv10
# Load a pretrained YOLOv10n model
model = YOLOv10("yolov10n.pt")
# Perform object detection on an image
# results = model("test1.jpg")
results = model.predict("test1.jpg")
# Display the results
results[0].show()
c++ 部署
onnx 库安装
https://github.com/microsoft/onnxruntime/releases/tag/v1.17.1 下载对应版本
cmake.txt配置相应路径
find_path(ONNXRUNTIME_INCLUDE_DIR onnxruntime_c_api.h
HINTS /home/xxx/data/lib/onnx-1.17.1/include
)
find_library(ONNXRUNTIME_LIBRARY onnxruntime
HINTS /home/xxx/data/lib/onnx-1.17.1/lib
)
模型转换
from ultralytics import YOLOv10
model_name = "xxx.pt"
onnx_name = "xxx.onnx"
model = YOLOv10(model_name)
model.export(format='onnx')
推理命令
./yolov10_cpp best.onnx t.png
python 与C++结果推理不一致
- 过滤阈值不一致
- 预处理图像格式不一致(BGR2RGB)