yolo模型转ONNX
在yolov8中,我们将训练结果的.pt权重文件转换为onnx格式只需要使用ultralytics库中的YOLO类,使用pip安装ultralytics库,然后执行下面python代码
from ultralytics import YOLO
# 加载YOLOv8模型
model = YOLO("best.pt")
# 将模型导出为ONNX格式
success = model.export(format="onnx", simplify=True)
# 检查是否成功导出
assert success
此程序就会加载当前根目录下的best.pt并转换为ONNX格式进行导出
C#中使用ONNX
创建一个.NET 8.0的项目,因为自己写比较繁琐,我们直接使用封装好的Nuget包YoloDotNet
地址:NuGet Gallery | YoloDotNet 1.2.0
安装Nuget包命令
NuGet\Install-Package YoloDotNet -Version 1.2.0
这个包比较大,安装时间可能有点久,耐心等待!!!
安装完成后,我们通过如下代码读取ONNX文件,下面代码中创建yolo实例有两个构造函数的参数,第一个就是onnx文件的地址,第二个就是你是否使用GPU来进行识别,如果你的电脑有装英伟达的GPU并且按照了cuda,就设置为true。我的电脑没有,所有只能使用cpu来跑,因此我设置为false
new Yolo(@"D:\best.onnx", false);
然后就是读取你的图片,调用yolo的RunObjectDetection,将图片作为第一个参数,第二个参数就是识别的阈值
using var image = Image.Load<Rgba32>(@"D:\testphoto\1.jpg");
var results = yolo.RunObjectDetection(image, 0.3);
如果你的模型不是目标检测,而是图像分类或者其他,可以使用yolo的其他方法
然后就是将识别图片结果保存本地了,下面是示例的所有代码
class Program
{
public static void Main(string[] args)
{
using var yolo = new Yolo(@"D:\best.onnx", false);
using var image = Image.Load<Rgba32>(@"D:\testphoto\1.jpg");
var results = yolo.RunObjectDetection(image, 0.3);
image.Draw(results);
image.Save(@"D:\testphoto\2.jpg");
}
}