YOLOv10训练自己的数据集

YOLOv10训练自己的数据集

阿里云GPU算力平台

PAI_DSW_人工智能_深度学习_算法开发_Notebook_可视建模_开发环境_阿里云
实例搭建:
①、进入网站后,点击管理控制台。
image.png
②、选择交互式建模(DSW),并点击 新建实例
image.png
③、填写信息 及 选择相关配置,选择后点击下方的确定。
image.png
④、点击实例右侧的 打开
image.png
⑤、通过命令行 把yolov10代码拉取下来即可进行后续操作。
image.png

项目克隆和安装

克隆YOLOv10并安装

克隆项目到本机
网址: https://github.com/THU-MIG/yolov10

cd /mnt/workspace
git clone https://github.com/THU-MIG/yolov10.git

把requirements.txt中的==改为>=
执行

cd yolov10
pip install -r requirements.txt
pip install -e .

下载预训练权重文件

下载yolov10s.pt权重文件,并上传放置在/mnt/workspace/yolov10/ultralytics/weights文件夹下
权重地址:https://github.com/THU-MIG/yolov10/releases

mkdir weights

安装测试

下面这些操作均在 /mnt/workspace/yolov10路径下执行
测试图片:

yolo predict model=/mnt/workspace/yolov10/ultralytics/weights/yolov10s.pt source=/mnt/workspace/yolov10/ultralytics/assets/bus.jpg

批量预测图片:

yolo predict model=/mnt/workspace/yolov10/ultralytics/weights/yolov10s.pt source=/mnt/workspace/yolov10/ultralytics/assets

预测图片并存储推理结果

yolo predict model=/mnt/workspace/yolov10/ultralytics/weights/yolov10s.pt source=/mnt/workspace/yolov10/ultralytics/assets/bus.jpg save_txt

预测摄像头:(远程算力用不了,本地可以使用)

yolo predict model=/mnt/workspace/yolov10/ultralytics/weights/yolov10s.pt 
source=0 show

标注自己的数据集

1、安装图像标注工具labelImg

网址:https://github.com/HumanSignal/labelImg
下载后得到文件labelImg-master.zip
解压:D:\labelImg-master
建议使用Anaconda安装
以管理员身份运行Anaconda Prompt并到labelImg-master目录下执行命令
在conda虚拟环境下执行:

# 安装依赖
conda install pyqt=5
conda install -c anaconda lxml
pip install pyqt5-tools
pyrcc5 -o libs/resources.py resources.qrc

# 启动labelImg
python labelImg.py

2、添加自定义类别

修改文件labelImg-master/data/predefined_classes.txt

ball
messi
trophy

3、使用labelImg进行图像标注

用labelImg标注生成PASCAL VOC格式的xml标记文件。例如:
image.png
width =1000 height = 654
PASCAL VOC标记文件如下:
image.png
也可以直接生成YOLO格式的txt标记文件如下:

class_id       x         y           w      h  
2           0.295000   0.495413 0.216000 0.926606

x = x_center/width = 295/1000 = 0.2950
y = y_center/height = 324/654 = 0.4954
w = (xmax - xmin)/width = 216/1000 = 0.2160
h = (ymax - ymin)/height = 606/654 = 0.9266
class_id: 类别的id编号
x: 目标的中心点x坐标(横向)/图片总宽度
y: 目标的中心的y坐标(纵向)/图片总高度
w: 目标框的宽带/图片总宽度
h: 目标框的高度/图片总高度
可以用python代码实现两种标记格式的转换:

def convert(size, box):
    dw = 1./size[0]
    dh = 1./size[1]
    x = (box[0] + box[1])/2.0
    y = (box[2] + box[3])/2.0
    w = box[1] - box[0]
    h = box[3] - box[2]
    x = x*dw
    w = w*dw
    y = y*dh
    h = h*dh
    return (x,y,w,h)

box[0]:xmin
box[1]: xmax
box[2]: ymin
box[3]: ymax

准备自己的数据集

1、下载项目文件

百度网盘下载链接
链接:VOCdevkit_bm.zip
链接:testfiles.zip
链接:prepare_data.py

  • VOCdevkit_bm.zip (上传到/mnt/workspace/yolov10/ultralytics目录下并解压)
  • testfiles.zip (上传到/mnt/workspace/yolov10/ultralytics目录下并解压)
  • prepare_data.py (上传到/mnt/workspace/yolov10/ultralytics目录下)

unzip VOCdevkit_bm.zip
unzip testfiles.zip

2、解压建立或自行建立数据集

使用PASCAL VOC数据集的目录结构:
建立文件夹层次为 VOCdevkit / VOC2007
VOC2007下面建立两个文件夹:Annotations,JPEGImages
JPEGImages放所有的数据集图片;Annotations放所有的xml标记文件;

3、划分训练集和验证集

/mnt/workspace/yolov10/ultralytics路径下执行python脚本:

python prepare_data.py
  • 注意:prepare_data脚本中的 classes=[“ball”,“messi”]要根据自己的数据集类别做相应的修改
    • 在VOCdevkit目录下生成了images和labels文件夹
    • images文件夹下有train和val文件夹,分别放置训练集和验证集图片;
    • labels文件夹有train和val文件夹,分别放置训练集和验证集标签(yolo格式)
    • /mnt/workspace/yolov10/ultralytics下生成了两个文件yolov10_train.txt和yolov10_val.txt。

yolov10_train.txt和yolov10_val.txt分别给出了训练图片文件和验证图片文件的列表,含有每个图片的路径和文件名

4、修改配置文件

修改文件cfg/datasets/VOC.yaml为VOC-bm.yaml

path: /mnt/workspace/yolov10/ultralytics/VOCdevkit  
train: # train images (relative to 'path') 16551 images
 - images/train 
val: # val images (relative to 'path') 4952 images
 - images/val
test: # test images (optional)
# Classes
names:
 0: ball
 1: messi

训练自己的数据集

训练命令
/mnt/workspace/yolov10路径下执行

yolo detect train data=/mnt/workspace/yolov10/ultralytics/cfg/datasets/VOC-bm.yaml model=/mnt/workspace/yolov10/ultralytics/weights/yolov10s.pt epochs=500 
imgsz=640 batch=16 patience=500 workers=4

命令参数说明:https://docs.ultralytics.com/modes/train/#arguments
注意:如果出现显存溢出,可减小batch size

断点续训

olo detect train data=/mnt/workspace/yolov10/ultralytics/cfg/datasets/VOC-bm.yaml model=/mnt/workspace/ultralytics/runs/detect/train/weights/best.pt 
epochs=500 imgsz=640 batch=16 patience=500 workers=4 resume

注意:应使用断点时保存的相应文件下的best.pt权重文件进行断点续训
注意:如果出现显存溢出,可减小batch size

训练结果的查看
查看/mnt/workspace/yolov10/runs/detect/train目录下的文件

测试训练出的网络模型

测试图片

yolo predict model=/mnt/workspace/yolov10/runs/detect/train/weights/best.pt source=/mnt/workspace/yolov10/ultralytics/testfiles/img1.jpg conf=0.5

批量测试图片:

yolo predict model=/mnt/workspace/yolov10/runs/detect/train/weights/best.pt source=/mnt/workspace/yolov10/ultralytics/testfiles conf=0.5

测试视频:

yolo predict model=/mnt/workspace/yolov10/runs/detect/train/weights/best.pt source=/mnt/workspace/yolov10/ultralytics/testfiles/messi.mp4 show

性能统计

yolo val model=/mnt/workspace/yolov10/runs/detect/train/weights/best.pt data=/mnt/workspace/yolov10/ultralytics/cfg/datasets/VOC-bm.yaml conf=0.25

注意:性能评估结果和conf阈值的设置有关

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO(You Only Look Once)是一种实时目标检测算法,YOLOv10是YOLO系列的最新版本之一,它在前几代的基础上进行了优化和改进。训练自己的数据集是使用YOLO进行目标检测任务的关键步骤,下面是一些关键步骤: 1. 数据收集:首先,你需要一个包含目标物体及其对应标注信息(边界框坐标、类别标签)的数据集。数据集应包括不同角度、光照和背景的图像,以提高模型的泛化能力。 2. 数据预处理:对图片进行标准化,如调整大小(通常保持网络输入尺寸的一致性),转换为RGB格式,并将像素值缩放到特定的范围(例如[0, 1]或[-1, 1])。 3. 创建标注文件:对于YOLO,需要的是`.txt`格式的标注文件,每个条目包含图像文件名、类别的ID、以及对应的框信息(左上角和右下角坐标)。 4. 数据划分:将数据集划分为训练集、验证集和测试集,通常比例可能为70%、15%和15%,以便在训练过程中进行模型选择和性能评估。 5. 配置文件:准备YOLOv10的训练配置文件,其中定义了训练参数、优化器、损失函数、学习率策略等。 6. 模型训练:使用深度学习框架(如TensorFlow或PyTorch)加载预训练YOLOv10模型,然后使用自定义数据集进行训练训练过程可能需要一段时间,取决于数据量、GPU性能和设置的超参数。 7. 模型评估与调整:训练完成后,用验证集评估模型性能。如果效果不理想,可能需要调整网络结构、优化器参数或训练参数,然后重新训练
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值