CV | 手把手教你使用YOLO11训练自己的数据集

文摘   2024-10-17 14:36   马来西亚  

👆点击上方名片关注哟👆

Ultralytics YOLO11 🚀是一款尖端的、最先进的 (SOTA) 模型,它以之前 YOLO 版本的成功为基础,并引入了新功能和改进,以进一步提高性能和灵活性。YOLO11 旨在快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿势估计任务的绝佳选择。

代码:https://github.com/ultralytics/ultralytics
DEMO:https://yolo11.com/

YOLO11的创新点

  • 增强的特征提取:YOLO11采用改进的主干和颈部架构,增强了特征提取能力,以实现更精确的目标检测和复杂任务性能。

  • 针对效率和速度进行优化:YOLO11 引入了精致的架构设计和优化的训练管道,提供更快的处理速度使得准确性和性能得以平衡。

  • 使用更少的参数获得更高的精度:随着模型设计的进步,YOLO11m 在 COCO 数据集上实现了更高的平均精度(mAP),同时使用的参数比 YOLOv8m 少 22%,从而在不影响精度的情况下提高计算效率。

  • 跨环境适应性:YOLO11可以无缝部署在各种环境中,包括边缘设备、云平台以及支持NVIDIA GPU的系统,确保最大的灵活性。

  • 支持的任务范围广泛:无论是对象检测、实例分割、图像分类、姿态估计还是定向对象检测 (OBB),YOLO11 旨在应对各种计算机视觉挑战。

2.代码复现

2.1.环境设置

要求:python>=3.8&PyTorch>=1.8

本文环境:Anaconda+VScode

新建一个虚拟环境

conda create med

2.2.YOLO安装

在不同环境下

pip install ultralytics

测试代码

yolo predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg'

在当前文件夹下/run/detect/predict下就可以看到检测结果

2.3.准备自己的数据集

脑肿瘤检测数据集由核磁共振成像或 CT 扫描的医学图像组成,其中包含有关脑肿瘤存在、位置和特征的信息。

2.3.1.数据集

准备好自己的数据集,这里我使用脑肿瘤数据集。

分为两个子集:

  • 训练集:由 893 幅图像组成,每幅图像都附有相应的注释。

  • 测试集:包括 223 张图像,每张图像都有配对的注释。

将数据集处理为YOLO训练时所需要的格式

datasets\数据集# ├── train 训练集 #     └── images#     └── labels# └── valid 测试集#     └── images#     └── labels# └── brain-tumor.yaml 数据集配置文件


3.训练

方法1:本地新建train.py

from ultralytics import YOLO
#加载没有预训练权重的模型架构model = YOLO("yolov11s.yaml")  # 从 YAML 建立新模型
# 训练模型results = model.train(data="brain-tumor.yaml", epochs=100, imgsz=640)

然后运行train.py文件

python train.py

显示YOLO结构


(可省略)方法2:本地CLI

#使用模型架构文件从头开始训练yolo detect train data=brain-tumor.yaml model=yolov11n.yaml epochs=100 imgsz=640


(可省略)方法3:Colab(免费GPU)

https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb

predict/val测试验证预测部分可忽略,如果想要保存权重,需要连接谷歌drive。

# 检查当前目录import osos.getcwd()  #将训练数据保存到谷歌云盘from google.colab import drivedrive.mount('/content/drive')

使用TensorBoard作为数据可视化图标

#YOLO11 🚀 logger logger = 'TensorBoard' #@param ['Comet', 'TensorBoard']
if logger == 'Comet': %pip install -q comet_ml import comet_ml; comet_ml.init()elif logger == 'TensorBoard': %load_ext tensorboard %tensorboard --logdir .

直接使用准备好的数据集进行训练

from google.colab import drivedrive.mount('/content/drive')
# 开始训练并将结果保存到 Google Drive!python train.py --img 640 --batch 16 --epochs 50 --data coco.yaml --weights yolov5s.pt --project /content/drive/MyDrive/runs/detect --name train
#如果并未自动保存,可通过以下代码进行复制# !cp -r /content/runs/detect/ /content/drive/MyDrive/YOLO11/

#!yolo detect train data=brain-tumor.yaml model=yolov11n.yaml epochs=50 imgsz=640

这是使用50epoch

训练结束

查看训练结果

tensorboard --logdir runs/detect/train

打开drive就可以看到

训练不足所以精度不是特别高,有时间还是需要多训练些epoch.

4.测试

方法1的测试

新建test.py

# @AI Pluse公众号#  #确认好训练后的路径以及测试图片的路径from ultralytics import YOLO
# 下载训练后的模型model = YOLO("D:\Lina_pro\medical\yolo11_brain_50epoch.pt")
# 使用图片进行目标检测results = model("D:\\Lina_pro\\medical\\datasets\\brain-tumor\\train\\images\\00056_147.jpg")results[0].show()

方法2的测试

yolo predict model='D:\Lina_pro\medical\yolo11_brain_50epoch.pt' source='D:\Lina_pro\medical\datasets\brain-tumor\train\images\00058_122.jpg' imgsz=640

方法3的测试

#使用训练后的权重进行测试!yolo predict model=/content/drive/MyDrive/YOLO11/detect/train/weights/best.pt source='/content/datasets/brain-tumor/train/images/00054_145.jpg'
#将结果复制到云盘指定位置!cp -r runs/detect/predict /content/drive/MyDrive/YOLO11/

就可以看到

今天的文章就到这里啦,有什么问题可以点击后台进行留言咨询哟~

【PS】过程中可能会遇到的问题及解决

PS1.unzip : 无法将“unzip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1 字符: 1

+ unzip brain-tumor.zip -d D:\Lina_pro\medical\data

+ ~~~~~+ CategoryInfo          : ObjectNotFound: (unzip:String) [], CommandNotFoundException

+ FullyQualifiedErrorId : CommandNotFoundException

原因分析:虚拟环境没有下载zip指令

# 在conda环境中conda install -c conda-forge unzip# 在linux环境中apt update && sudo apt install unzip

这个错误信息表明在Windows 10操作系统中,Anaconda的某个虚拟环境下找不到unzip命令。unzip是一个常用于解压缩.zip文件的命令行工具,在Linux系统中常见,但在Windows系统中不默认安装。

其他方法:安装第三方软件:可以安装第三方的解压缩工具,如7-Zip,它提供了命令行界面(7z.exe),可以用来解压缩.zip文件。使用Python代码:在Python虚拟环境中,可以使用zipfiletarfile模块来解压缩.zip文件。安装Windows版本的unzip:有时可以在Windows上安装Linux命令行工具,可以通过Chocolatey包管理器来安装unzip。使用Anaconda的命令行界面:如果Anaconda环境中有相应的包,可以使用Anaconda提供的命令行界面来执行解压缩操作。




别忘了点赞👍+关注✨哟~~     


AI Pulse
"AI Pulse - AI脉动",探索AI技术前沿,深入解析算法精髓,分享行业应用案例,洞察智能科技未来。欢迎关注,与我们共赴AI学习之旅。
 最新文章