YOLO11windows 安装以及预训练模型 以及rt模型导出onnx 或者ncnn模型
机器视觉识别yolov11 进行模型训练导出onnx模型安装以及模型训练使用过程
主要库介绍:
ultralytics :是一个用于计算机视觉任务库,专注于提供高效、易用的目标检测、实例分割和图像分类工具。它最著名的功能是实现 YOLO(You Only Look Once) 系列模型。
PyTorch:用于模型开发和训练,提供强大的灵活性和丰富的库支持 分cpu版和gpu版本
ONNX:充当一个中间层格式,促进不同深度学习框架之间的模型互操作性和标准化。
NCNN:专注于高效的模型推理,特别是在移动和嵌入式设备上。
1.安装conda (自己去找安装教程)
2. 配置环境变量 指定conda 的安装目录以及script目录
3. 创建虚拟环境并激活
conda create --name yolov11 python==3.11.9
conda activate yolov11
- 安装ultralytics库这个库包含了几乎全部运行yolov11所需的环境,输入以下命令后耐心等待即可
pip install ultralytics
注意:上面这个里面默认cpu版本的pytorch相关的依赖
如果是gpu 需要安装 gpu版本的pytorch 相关的依赖
5.下载YOLOv11 源码
https://github.com/ultralytics/ultralytics 也可以去gitee 下载与ultralytics版本对应版本的源码
6.验证环境
from ultralytics import YOLO
# 加载模型 没有会下载 或者自行下载 替换为绝对路径或者相对路径
model = YOLO("yolo11n.pt")
# 对图片执行目标检测
results = model("D:\\workspaces\\ultralytics\\ultralytics\\assets\\bus.jpg")
results[0].show() # 显示检测结果的可视化图像
# 训练模型
train_results = model.train(
data="coco8.yaml", # 数据集配置文件路径
epochs=100, # 训练轮数
imgsz=640, # 输入图像大小
device="cpu" # 训练设备(CPU 或 GPU)
)
# 在验证集上评估模型性能
metrics = model.val()
# 将模型导出为 ONNX 格式
#path = model.export(format="onnx") # 返回导出模型的路径
- 安装标注工具并打开 3.11下会出现闪退问题 在3.9下安装并运行
pip install labelimg
labelimg
此操作会出现图片与标注文本相互对应一对一的txt文件
8. 将上面的图片和label文件按照对应的顺序分开来,注意数据比例(训练集和验证集数据数量比例)(训练集以及验证集说明在后面有说明)
数据集数据目录为dataset 下面两个目录images lables 每个目录下面都有一个train 训练图片集 目录 和val 验证图片集目录
9.编写训练代码
from ultralytics import YOLO
# 加载模型 没有会下载 或者自行下载 替换为绝对路径或者相对路径
model = YOLO("yolo11n.pt")
train_results = model.train(
data="coco8.yaml", # 数据集配置文件路径 文件名可以自定义 这个需要找默认文件 并修改 训练图片集 以及预测图片集
epochs=100, # 训练轮数
imgsz=640, # 输入图像大小
device="cpu" # 训练设备(CPU 或 GPU)
)
# 在验证集上评估模型性能
#metrics = model.val()
coco8.yaml 文件讲解 names 为需要训练的标签集合可以把自己新增的添加进入; 修改相关的目录为需要训练的图片标签目录
10.导出模型
导出为onnx,安装onnx
pip install ONNX
# 将模型导出为 ONNX 格式
path = model.export(format="onnx") # 返回导出模型的路径
导出为nccn模型 安装ncnn
pip install ncnn
- pt 直接导出ncnn模型 需要修改nn\modules\head.py
- 找到导出模型 copy model.ncnn,bin model.ncnn.param 文件到一个空文件夹 并打包文件夹
3.移动端可以使用Autojs调用Yolov11 训练好的模型ncnn进行视频检测
训练数据集、验证数据集的区别作用
训练集用于训练模型,验证集用于评估模型表现并调整超参数
训练集和验证集在机器学习中扮演着不同的角色,以下是它们的核心区别:
1.用途不同
训练集:用于训练模型,模型通过训练集的数据学习并调整参数(如神经网络的权重)。训练集是模型学习的基础,模型从中找到模式并优化其性能。
验证集:用于在训练过程中评估模型的表现,帮助调整超参数(如学习率、正则化系数等),并防止模型过拟合。验证集不参与模型的参数更新,仅用于评估和优化。
2.参与模型训练的方式不同
训练集:直接参与模型的训练过程,模型通过训练集的数据不断调整参数以最小化损失函数。
验证集:不参与模型的训练,仅在每个训练阶段(如一个epoch)结束后用于评估模型的表现,帮助选择最佳的超参数。
3.对模型性能的影响不同
训练集:模型在训练集上的表现通常较好,但可能出现过拟合现象,即模型在训练集上表现优异,但在新数据上表现不佳。
验证集:验证集的表现用于判断模型是否过拟合,并指导超参数的调整,确保模型具有良好的泛化能力。
4.数据划分比例
传统上,数据集通常按照6:2:2的比例划分为训练集、验证集和测试集,但验证集并非必须,具体划分比例可根据数据规模和任务需求调整。
总结:训练集是模型学习的基础,而验证集是模型优化的工具,两者共同作用以确保模型在训练过程中不断改进,同时避免过拟合问题。
说明 PyTorch、ONNX 和 NCNN 依赖说明
PyTorch、ONNX 和 NCNN 是深度学习领域中的三个重要工具或框架,它们在模型开发、转换和部署过程中扮演着不同但相互关联的角色。以下是它们之间的关系和各自的作用:
- PyTorch
PyTorch 是一个开源的深度学习框架,由 Facebook’s AI Research lab (FAIR) 开发。它在研究和开发中广泛使用,特别是因为其动态计算图和易于使用的 API。
主要功能
模型开发:提供丰富的工具集和库,用于构建、训练和验证深度学习模型。
动态计算图:允许在运行时定义和修改模型结构,提供更高的灵活性。
丰富的生态系统:包括 torchvision、torchtext 等扩展库,以及支持分布式训练等高级功能。 - ONNX (Open Neural Network Exchange)
ONNX 是一个开放的格式,用于表示深度学习模型。由 Microsoft 和 Facebook 共同开发,旨在促进不同深度学习框架之间的互操作性。
主要功能
跨框架互操作性:ONNX 模型可以在不同的深度学习框架之间转换和共享,例如从 PyTorch 导出到 TensorFlow 或 vice versa。
标准化:定义了一套标准的操作(ops),确保不同框架实现相同的操作语义。
模型优化:提供工具(如 ONNX Runtime)来优化模型的推理性能。 - 与 PyTorch 的关系
模型转换:PyTorch 提供了直接导出模型到 ONNX 格式的功能,允许在开发和训练后轻松将模型转换为 ONNX 格式以进行跨框架部署。 - NCNN
NCNN 是一个高效的神经网络推理框架,由腾讯优图团队开发,专注于在移动设备和嵌入式设备上高效运行。
主要功能
轻量级和高效:专为移动和嵌入式设备优化,占用内存小,运行速度快。
跨平台支持:支持 Android、iOS、Windows、Linux 等多个平台。
硬件友好:对移动设备的 CPU 和 GPU 进行了优化,特别是 ARM 处理器。 - 与 ONNX 的关系
模型转换:NCNN 支持从 ONNX 模型格式转换为 NCNN 格式。这意味着您可以先在 PyTorch 中开发和训练模型,导出为 ONNX,然后再转换为 NCNN 格式以在移动设备上部署。 - 总结
PyTorch:用于模型开发和训练,提供强大的灵活性和丰富的库支持。
ONNX:充当一个中间层格式,促进不同深度学习框架之间的模型互操作性和标准化。
NCNN:专注于高效的模型推理,特别是在移动和嵌入式设备上。 - 工作流程示例:
在 PyTorch 中开发和训练模型。
将 PyTorch 模型导出为 ONNX 格式。
使用 NCNN 工具将 ONNX 模型转换为 NCNN 格式。
将 NCNN 模型部署到移动设备或嵌入式设备上进行高效推理。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)