娄底手机网站制作,杭州网站维护,网络一站式服务平台,国际跨境电商平台有哪些文章目录前言一、YOLOv11代码下载地址1.YOLOv11模型结构图二、数据集准备1.数据集标注软件2.voc数据集格式转换3.数据集划分4.修改yolo的训练配置文件三、YOLO环境配置教程1.pytorch环境安装2.其他依赖安装四、YOLOv11训练五、YOLOv11推理六、解决训练过程中断怎么继续上次训练… 文章目录前言一、YOLOv11代码下载地址1.YOLOv11模型结构图二、数据集准备1.数据集标注软件2.voc数据集格式转换3.数据集划分4.修改yolo的训练配置文件三、YOLO环境配置教程1.pytorch环境安装2.其他依赖安装四、YOLOv11训练五、YOLOv11推理六、解决训练过程中断怎么继续上次训练总结前言
YOLOv11 由 Ultralytics 团队在 2024 年 9 月 30 日发布 最新的 YOLOv11 模型在之前的 YOLO 版本引入了新功能和改进以进一步提高性能和灵活性。YOLO11 在快速、准确且易于使用使其成为各种目标检测和跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。可以看出官网 YOLOv11 在COCO数据集上的性能表现如下图所示 一、YOLOv11代码下载地址
手把手视频安装可以看这个视频 视频安装教程
官网的源码下载地址 官网源码
官网打不开的话从我的网盘下载就行网盘下载地址: YOLOv11原始版本源码下载版本为ultralytics-8.3.6提取码: ehhs
1.YOLOv11模型结构图
根据 yolov11.yaml 画出 yolo 整体结构图如下图所示 二、数据集准备
1.数据集标注软件
数据集使用标注软件标注好我这里推荐两个标注软件一个是 labelimg另外一个是 labelme可以在python环境使用 pip install labelimg 或者 pip install labelme 进行安装看你选择哪个标注工具标注了我使用 labelimg 标注工具
安装完成在终端输入命令启动标注软件 下面是软件界面 设置自动保存标注生成的标注文件
2.voc数据集格式转换
标注格式如果选择VOC格式后面需要代码转换格式如果选择yolo格式就不用转换voc格式转换yolo格式代码如下
import xml.etree.ElementTree as ET
import os, cv2
import numpy as np
from os import listdir
from os.path import joinclasses []def convert(size, box):dw 1. / (size[0])dh 1. / (size[1])x (box[0] box[1]) / 2.0 - 1y (box[2] box[3]) / 2.0 - 1w box[1] - box[0]h box[3] - box[2]x x * dww w * dwy y * dhh h * dhreturn (x, y, w, h)def convert_annotation(xmlpath, xmlname):with open(xmlpath, r, encodingutf-8) as in_file:txtname xmlname[:-4] .txttxtfile os.path.join(txtpath, txtname)tree ET.parse(in_file)root tree.getroot()filename root.find(filename)img cv2.imdecode(np.fromfile({}/{}.{}.format(imgpath, xmlname[:-4], postfix), np.uint8), cv2.IMREAD_COLOR)h, w img.shape[:2]res []for obj in root.iter(object):cls obj.find(name).textif cls not in classes:classes.append(cls)cls_id classes.index(cls)xmlbox obj.find(bndbox)b (float(xmlbox.find(xmin).text), float(xmlbox.find(xmax).text), float(xmlbox.find(ymin).text),float(xmlbox.find(ymax).text))bb convert((w, h), b)res.append(str(cls_id) .join([str(a) for a in bb]))if len(res) ! 0:with open(txtfile, w) as f:f.write(\n.join(res))if __name__ __main__:postfix png # 图像后缀imgpath rE:\A-毕业设计代做数据\helmet\test\images # 图像文件路径xmlpath rE:\A-毕业设计代做数据\helmet\test\annotations # xml文件文件路径txtpath rE:\A-毕业设计代做数据\helmet\test\labels # 生成的txt文件路径if not os.path.exists(txtpath):os.makedirs(txtpath, exist_okTrue)list os.listdir(xmlpath)error_file_list []for i in range(0, len(list)):try:path os.path.join(xmlpath, list[i])if (.xml in path) or (.XML in path):convert_annotation(path, list[i])print(ffile {list[i]} convert success.)else:print(ffile {list[i]} is not xml format.)except Exception as e:print(ffile {list[i]} convert error.)print(ferror message:\n{e})error_file_list.append(list[i])print(fthis file convert failure\n{error_file_list})print(fDataset Classes:{classes})代码需要修改的地方如下 1.postfix参数填图片的后缀需要注意图片格式要统一是png格式就写png是jpg格式就写jpg 2.imgpath参数填图片所在的路径 3.xmlpath参数填标注文件的路径 4.txtpath参数填生成的yolo格式的文件
3.数据集划分
划分训练集和验证集代码如下
import os, shutil
from sklearn.model_selection import train_test_splitval_size 0.2
#test_size 0.2
postfix jpg
imgpath rE:\A-毕业设计代做数据\datasets\images
txtpath rE:\A-毕业设计代做数据\datasets\labelsoutput_train_img_folder rE:\A-毕业设计代做数据\datasets\dataset_kengwa/images/train
output_val_img_folder rE:\A-毕业设计代做数据\datasets\dataset_kengwa/images/val
output_train_txt_folder rE:\A-毕业设计代做数据\datasets\dataset_kengwa\labels/train
output_val_txt_folder rE:\A-毕业设计代做数据\datasets\dataset_kengwa\labels/valos.makedirs(output_train_img_folder, exist_okTrue)
os.makedirs(output_val_img_folder, exist_okTrue)
os.makedirs(output_train_txt_folder, exist_okTrue)
os.makedirs(output_val_txt_folder, exist_okTrue)listdir [i for i in os.listdir(txtpath) if txt in i]
train, val train_test_split(listdir, test_sizeval_size, shuffleTrue, random_state0)#todo需要test放开# train, test train_test_split(listdir, test_sizetest_size, shuffleTrue, random_state0)
# train, val train_test_split(train, test_sizeval_size, shuffleTrue, random_state0)for i in train:img_source_path os.path.join(imgpath, {}.{}.format(i[:-4], postfix))txt_source_path os.path.join(txtpath, i)img_destination_path os.path.join(output_train_img_folder, {}.{}.format(i[:-4], postfix))txt_destination_path os.path.join(output_train_txt_folder, i)shutil.copy(img_source_path, img_destination_path)shutil.copy(txt_source_path, txt_destination_path)for i in val:img_source_path os.path.join(imgpath, {}.{}.format(i[:-4], postfix))txt_source_path os.path.join(txtpath, i)img_destination_path os.path.join(output_val_img_folder, {}.{}.format(i[:-4], postfix))txt_destination_path os.path.join(output_val_txt_folder, i)shutil.copy(img_source_path, img_destination_path)shutil.copy(txt_source_path, txt_destination_path)#
# for i in train:
# shutil.copy({}/{}.{}.format(imgpath, i[:-4], postfix), rE:\1-cheng\4-yolo-dataset-daizuo\multi-classify\bird-boat-horse-aeroplane-sheep\dataset20231219/images/train/{}.{}.format(i[:-4], postfix))
# shutil.copy({}/{}.format(txtpath, i), rE:\1-cheng\4-yolo-dataset-daizuo\multi-classify\bird-boat-horse-aeroplane-sheep\dataset20231219/labels/train/{}.format(i))
#
# for i in val:
# shutil.copy({}/{}.{}.format(imgpath, i[:-4], postfix), rE:\1-cheng\4-yolo-dataset-daizuo\multi-classify\bird-boat-horse-aeroplane-sheep\dataset20231219/images/val/{}.{}.format(i[:-4], postfix))
# shutil.copy({}/{}.format(txtpath, i), rE:\1-cheng\4-yolo-dataset-daizuo\multi-classify\bird-boat-horse-aeroplane-sheep\dataset20231219/labels/val/{}.format(i))#todo:需要test则放开# for i in test:
# shutil.copy({}/{}.{}.format(imgpath, i[:-4], postfix), images/test/{}.{}.format(i[:-4], postfix))
# shutil.copy({}/{}.format(txtpath, i), labels/test/{}.format(i))需要修改的地方如下 下面四个参数只需在自己电脑任意位置新建一个文件夹就行用于存放生成的训练集和验证集比如新建一个文件夹叫dataset_kengwa后面的路径不用动如下图左边的框出来的路径覆盖成你的就行 数据集有以下两种方式放置都可以进行训练常见的数据集放置是第一种也有开源的数据集按照第二种方式放置的我都遇见过也能训练起来
4.修改yolo的训练配置文件
我们需要在项目下创建一个data.yaml的文件文件名根据数据集名称取我这里方便演示直接叫data.yaml如下图所示 代码如下
train: E:\Desktop\new-yolov9\yolotest\images\train # train images (relative to path) 4 images
val: E:\Desktop\new-yolov9\yolotest\images\val # val images (relative to path) 4 imagesnc: 2# class names
names: [dog,cat]三、YOLO环境配置教程
YOLOv11/YOLOv10/YOLOv9/YOLOv8/YOLOv7/YOLOv5 环境都是通用的只需要安装一次就行
1.pytorch环境安装
基础环境配置参考教程链接环境配置链接如果已经配置好环境可以忽略此步骤
2.其他依赖安装
安装requirements.txt文件的环境需要注释掉下面两行前面的步骤已经安装了不注释的话会覆盖前面的会安装最新版本的pytorch所以注释掉 没有这个文件可以自己新建一个requirements.txt然后把下面代码复制进去就好了 # Ultralytics requirements
# Example: pip install -r requirements.txt# Base ----------------------------------------
matplotlib3.3.0
numpy1.24.4 # pinned by Snyk to avoid a vulnerability
opencv-python4.6.0
pillow7.1.2
pyyaml5.3.1
requests2.23.0
scipy1.4.1
tqdm4.64.0# Logging -------------------------------------
# tensorboard2.13.0
# dvclive2.12.0
# clearml
# comet# Plotting ------------------------------------
pandas1.1.4
seaborn0.11.0# Export --------------------------------------
# coremltools7.0 # CoreML export
# onnx1.12.0 # ONNX export
# onnxsim0.4.1 # ONNX simplifier
# nvidia-pyindex # TensorRT export
# nvidia-tensorrt # TensorRT export
# scikit-learn0.19.2 # CoreML quantization
# tensorflow2.4.1 # TF exports (-cpu, -aarch64, -macos)
# tflite-support
# tensorflowjs3.9.0 # TF.js export
# openvino-dev2023.0 # OpenVINO export# Extras --------------------------------------
psutil # system utilization
py-cpuinfo # display CPU info
thop0.1.1 # FLOPs computation
# ipython # interactive notebook
# albumentations1.0.3 # training augmentations
# pycocotools2.0.6 # COCO mAP
# roboflow 四、YOLOv11训练
(1)在根目录新建一个python文件取名为train.py如果之前看过我的文章已经新建过就不用重新新建了
(2)把训练代码复制到train.py文件如果之前看过我的文章已经复制过了就不用重新复制了只需修改参数就行 训练的代码如下
# -*- coding: utf-8 -*-Auth 挂科边缘
File trian.py
IDE PyCharm
Motto:学习新思想争做新青年
Email 179958974qq.comimport warnings
warnings.filterwarnings(ignore)
from ultralytics import YOLOif __name__ __main__:model YOLO(modelrD:\2-Python\1-YOLO\YOLOv11\ultralytics-8.3.2\ultralytics\cfg\models\11\yolo11.yaml)# model.load(yolo11n.pt) # 加载预训练权重,改进或者做对比实验时候不建议打开因为用预训练模型整体精度没有很明显的提升model.train(datardata.yaml,imgsz640,epochs50,batch4,workers0,device,optimizerSGD,close_mosaic10,resumeFalse,projectruns/train,nameexp,single_clsFalse,cacheFalse,)注意注意注意模型配置路径改成你自己的路径还有数据集配置文件也修改成你自己的路径 训练代码的参数解释
model参数该参数填入模型配置文件的路径改进的话建议不需要填预训练模型权重data参数该参数可以填入训练数据集配置文件的路径imgsz参数该参数代表输入图像的尺寸指定为 640x640 像素epochs参数该参数代表训练的轮数batch参数该参数代表批处理大小电脑显存越大就设置越大根据自己电脑性能设置workers参数该参数代表数据加载的工作线程数出现显存爆了的话可以设置为0默认是8device参数该参数代表用哪个显卡训练留空表示自动选择可用的GPU或CPUoptimizer参数该参数代表优化器类型close_mosaic参数该参数代表在多少个 epoch 后关闭 mosaic 数据增强resume参数该参数代表是否从上一次中断的训练状态继续训练。设置为False表示从头开始新的训练。如果设置为True则会加载上一次训练的模型权重和优化器状态继续训练。这在训练被中断或在已有模型的基础上进行进一步训练时非常有用。project参数该参数代表项目文件夹用于保存训练结果name参数该参数代表命名保存的结果文件夹single_cls参数该参数代表是否将所有类别视为一个类别设置为False表示保留原有类别cache参数该参数代表是否缓存数据设置为False表示不缓存。
注意注意注意一般做科研改进工作时候可以不用预训练权重因为用预训练模型整体精度很难提高
我这里演示加载预训练权重训练输出如下所示
五、YOLOv11推理
1官网的预训练模型下载 进入官网的源码下载地址 官网模型下载地址往下面拉看到模型位置YOLOv11 针对不同的场景和应用提供了 YOLOv11n、YOLOv11s 等不同大小的模型具体看官网提供的需要下载哪个鼠标左键单击下载就行。
我的源码包已经下载好了模型了如果需要其他权重自行下载就行
2在根目录新建一个python文件取名为detect.py 3把推理代码复制到detect.py文件 注意注意注意模型路径改成你自己的路径还有预测图像也改成你自己的路径 推理的代码如下
# -*- coding: utf-8 -*-Auth 挂科边缘
File detect.py
IDE PyCharm
Motto:学习新思想争做新青年
Email 179958974qq.com
from ultralytics import YOLOif __name__ __main__:# Load a modelmodel YOLO(modelrD:\2-Python\1-YOLO\YOLOv11\ultralytics-8.3.2\yolo11n-seg.pt) model.predict(sourcerD:\2-Python\1-YOLO\YOLOv11\ultralytics-8.3.2\ultralytics\assets\bus.jpg,saveTrue,showTrue,)推理代码的参数解释 1.model参数该参数可以填入模型文件路径 2.source参数该参数可以填入需要推理的图片或者视频路径如果打开摄像头推理则填入0就行 3.save参数该参数填入True代表把推理结果保存下来默认是不保存的所以一般都填入True 4.show参数该参数填入True代表把推理结果以窗口形式显示出来默认是显示的这个参数根据自己需求打开就行不显示你就填False就行
分割模型推理结果如下 目标检测模型推理结果如下
六、解决训练过程中断怎么继续上次训练
在训练过程不小心中断了那怎么继续上次的训练了这里先不慌官网也的代码写得非常好它有这个断点训练功能那么 YOLOv8 v10 v11 处理的方法都是一模一样接下来直接看图操作就行 model参数该参数填入上次中断的模型为 last.pt resume参数该参数设置为True则会加载上一次训练的模型权重和优化器状态继续训练。 总结
YOLOv11训练自己数据集和推理到此结束有问题可以留言创作不易请帮忙点个爱心呗谢谢