1 在AutoDL中创建实例
2 下载模型
git clone https://github.com/ultralytics/ultralytics
存放位置
3 安装必要的库
3.1 安装requirement.txt
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
3.2 安装ultralytics
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple/
4 准备自己的数据集
4.1 数据集存放位置
在dataset文件夹中创建 images、labels、voc2007三个文件夹
images文件夹中创建train、val两个文件夹,存放训练数据和训练时的测试数据 。labels中存放对应的.txt
到此数据集已准备好。
5 在ultralytics目录下创建 data.yaml,代码如下:
train: dataset/images/train #训练集所在的路径
val: dataset/images/val #训练时测试集所在的路径
#test: E:/Projects/ultralytics-main/ultralytics/dataSets/data/test/images
# number of classes
nc: 2 #类别
# class names
names: ['sleep','phone']
5 下载权重
Detect - Ultralytics YOLOv8 Docs
存放位置如下:
同时将yolov8n.yaml文件中的nc 改为nc=2,我的类别是两个,代码如下:
# Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters
nc: 2 # number of classes
depth_multiple: 0.33 # scales module repeats
width_multiple: 0.25 # scales convolution channels
# YOLOv8.0n backbone
backbone:
# [from, repeats, module, args]
- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
- [-1, 3, C2f, [128, True]]
- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
- [-1, 6, C2f, [256, True]]
- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
- [-1, 6, C2f, [512, True]]
- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
- [-1, 3, C2f, [1024, True]]
- [-1, 1, SPPF, [1024, 5]] # 9
# YOLOv8.0n head
head:
- [-1, 1, nn.Upsample, [None, 2, 'nearest']]
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
- [-1, 3, C2f, [512]] # 13
- [-1, 1, nn.Upsample, [None, 2, 'nearest']]
- [[-1, 4], 1, Concat, [1]] # cat backbone P3
- [-1, 3, C2f, [256]] # 17 (P3/8-small)
- [-1, 1, Conv, [256, 3, 2]]
- [[-1, 12], 1, Concat, [1]] # cat head P4
- [-1, 3, C2f, [512]] # 20 (P4/16-medium)
- [-1, 1, Conv, [512, 3, 2]]
- [[-1, 9], 1, Concat, [1]] # cat head P5
- [-1, 3, C2f, [1024]] # 23 (P5/32-large)
- [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)
6 开始测试
yolo task=detect mode=train model=yolov8n.pt data=data.yaml epochs=300 batch=4
或者自己创建一个train.py文件,直接python train.py运行也行,train.py代码如下 :
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
results = model.train(data="data.yaml",imgsz=640, epochs=300, batch=16, device=0, workers=4)
7 结果存放于ultralytics/runs目录下。
8 测试
yolo task=detect mode=predict model=runs/detect/train6/weights/best.pt source=input/ device=0
结果: