Jonvy

导航

Yolo

1.ONNX format是什么?

ONNX(Open Neural Network Exchange),中文名是开放神经网络交换格式,是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的人工智能框架(如PyTorch、MXNet)可以采用相同格式存储模型数据并交互。

ONNX的规范及代码主要由微软、亚马逊、Facebook和IBM等公司共同开发,以开放源代码的方式托管在Github上。https://github.com/microsoft/onnxruntime

ONNX格式具有以下特点:

  • **开放性:**ONNX是一种开放的格式,任何人都可以免费使用和修改。这使得ONNX可以成为不同人工智能框架之间进行模型互操作的标准。
  • **轻量级:**ONNX格式是一种轻量级的格式,它使用了一种称为Protocol Buffers的二进制编码方案来存储模型数据。这使得ONNX模型文件非常小巧,易于存储和传输。
  • **可扩展性:**ONNX格式是一种可扩展的格式,它支持多种类型的模型和操作符。这使得ONNX可以满足各种机器学习应用的需求。

ONNX格式的主要用途包括:

  • **模型转换:**ONNX可以用于将模型从一个人工智能框架转换到另一个框架。这使得用户可以自由选择最适合其需求的框架,而不必担心模型兼容性问题。
  • **模型部署:**ONNX可以用于将模型部署到各种硬件平台上。这使得ONNX模型可以广泛应用于移动设备、嵌入式设备和云端平台。
  • **模型共享:**ONNX可以用于共享模型。这使得研究人员和开发人员可以更容易地分享他们的研究成果和开发成果。

ONNX格式的出现,对于促进人工智能技术的发展具有重要意义。它使得不同的人工智能框架之间可以更加容易地进行互操作,从而推动人工智能技术的创新和应用。

 使用onnx-simplifier对onnx文件进行简化:

(1)pip install onnxsim

(2)python -m onnxsim yolov5s.onnx yolov5s_simplified.onnx (PyCharm中右键点击weights文件夹,Open in->Terminal,如何运行此命令)

2.yolov8n.pt是什么文件?

YOLOv8 是一种目标检测算法,它可以用于识别和定位图像中的目标。yolov8n.pt 模型文件包含了 YOLOv8 模型的参数和权重,这些参数和权重是在大量的图像和视频数据集上训练得到的。因此,可以使用 yolov8n.pt 模型文件在新的图像和视频上进行目标检测。

.pt 是 PyTorch 模型文件的扩展名。PyTorch 是一个深度学习框架,它为构建和训练神经网络提供了一套易用且灵活的工具。PyTorch 模型文件可以使用 .pt 格式保存,也可以使用 .pth 格式保存。.pt 格式和 .pth 格式都是二进制格式,它们不能直接被文本编辑器打开。

yolov8n.pt 模型文件可以使用以下工具加载和使用:

  • PyTorch:可以使用 torch.load() 函数加载 yolov8n.pt 模型文件,然后使用模型进行目标检测。
  • ONNX Runtime:ONNX Runtime 是一个用于推理 ONNX 模型的开源推理引擎。可以使用 ONNX Runtime 将 yolov8n.pt 模型文件转换为 ONNX 格式,然后使用 ONNX Runtime 进行目标检测。
  • OpenVINO:OpenVINO 是英特尔开发的开源推理框架。可以使用 OpenVINO 将 yolov8n.pt 模型文件转换为 OpenVINO 格式,然后使用 OpenVINO 进行目标检测。

3.yolov8n.yaml是什么文件?

yolov8n.yaml 是 YOLOv8 模型的配置文件,它用于定义模型的结构和超参数。yolov8n.yaml 文件通常与 yolov8n.pt 模型文件一起使用,yolov8n.pt 模型文件包含了模型的参数和权重,而 yolov8n.yaml 文件则定义了如何使用这些参数和权重。

yolov8n.yaml 文件的内容主要包括以下几个方面:

  • **模型架构:**yolov8n.yaml 文件定义了模型的架构,包括模型的层数、每层的结构、以及各层之间的连接方式。
  • **超参数:**yolov8n.yaml 文件定义了模型的超参数,包括学习率、动量、权重衰减等。
  • **数据集:**yolov8n.yaml 文件定义了数据集的配置,包括数据集的路径、图像大小、以及类别信息等。

yolov8n.yaml 文件可以通过以下方式使用:

  • **训练模型:**可以使用 yolov8n.yaml 文件来训练 YOLOv8 模型。在训练过程中,模型会根据 yolov8n.yaml 文件中定义的结构和超参数进行学习。
  • **推理模型:**可以使用 yolov8n.yaml 文件来推理 YOLOv8 模型。在推理过程中,模型会根据 yolov8n.yaml 文件中定义的结构来提取图像中的目标。

4.Colab和Kaggle是什么?

 ColabKaggle 都是用于机器学习和数据科学的平台,但它们具有不同的功能和侧重点。

Colab 是由 Google 提供的免费云端 Jupyter 笔记本环境。它允许用户无需设置任何基础设施即可运行 Python 代码。Colab 提供了免费的 GPU 和 TPU 资源,这使其成为训练机器学习和深度学习模型的理想平台。

Kaggle 是一个数据科学社区,以举办机器学习和深度学习竞赛而闻名。它还提供 Kaggle 笔记本,这些是由免费 GPU 和 CPU 支持的可共享 Jupyter 笔记本。Kaggle 笔记本可用于共享代码、数据和结果。

5.Comet是什么?

Comet ML 是一款用于跟踪、比较、解释和优化机器学习模型和实验的平台。它允许您在模型训练过程中记录指标、参数、媒体等信息,并通过美观的网络界面监控您的实验。

6.yoloV5训练代码train.py参数解析

https://www.cnblogs.com/yilangUAV/p/17872526.html

7.Yolov5 Step

(1) 使用train.py进行training

(2)export.py输出onnx文件

需修改export.py中参数项"--weights",选择正确的best.pt文件路径

需修改export.py中参数项"--include",将默认的torchscript格式改为onnx格式

(3)使用onnx-simplifier对onnx文件进行简化(见上面)

(4)在https://netron.app/查看模型

8.protocal buffers是什么?

Protocol Buffers,简称 Protobuf,是一种 语言中立、平台中立、可扩展 的机制,用于 序列化结构化数据。你可以把它想象成一种更小、更快、更简单的 XML,但它专门用于 高效地传输和存储数据

为什么使用 Protocol Buffers?

  • 高效: Protobuf 序列化后的数据比 XML 更小,解析速度也更快,这对于网络传输和存储来说非常重要。
  • 灵活: 您可以定义自己的数据结构,并且可以随时添加新的字段,而不会破坏已有的数据。
  • 语言无关: Protobuf 提供了多种语言的实现,如 C++、Java、Python、Go 等,方便在不同语言之间进行数据交换。
  • 平台无关: Protobuf 生成的代码可以在不同的平台上运行,例如 Windows、Linux、macOS 等。

9:

(1)machine learing training

https://learn.microsoft.com/en-us/training/modules/intro-machine-learning-pytorch/2-tensors

(2)获取onnx模型输入输出结构信息的3种方式

https://blog.csdn.net/qq_42589613/article/details/140111482

(3)Z-AI V1.4 发行版本

https://github.com/PassByYou888/Z-AI1.4

(4)模型部署 ONNX ONNX runtime

https://www.cnblogs.com/qiulinzhang/p/14317346.html

(5)C#调用yolov5模型转化onnx模型实现C#模型部署

https://blog.csdn.net/qq_65356682/article/details/138177436?

(6)winform部署yolov5自定义数据集的目标检测模型onnx

https://blog.csdn.net/2301_80438203/article/details/140461756

(7)C# 部署YOLOv5 初步结果

https://blog.csdn.net/weixin_45800731/article/details/126771502?

 

 

posted on 2024-07-03 16:50  不亮  阅读(184)  评论(0)    收藏  举报