使用AutoDL训练YOLOV8

2023-12-24 10:45:24

917的服务器一直连接超时 所以租了个autoDL的3090?

一、数据准备

1.原始数据集

  • 7581开源
  • 工地数据集来自师兄

共14620张?

210000 到217999 一共8000张是工地的(李师兄打的) 有hat和person、head??

待解决:工地上的图片 hat和head基本都检测出来了,但是很多person没有检测出来 所以我需要再对这8000张 用李师兄的权重重新跑一边

还有6620张 来自开源

2.重构数据集(12.17版本)

old:

0:person

1:hat

2:head

new:

0:person

1:personNoHat

参考:

1.增加数据集的分类

?YOLOv5在建筑工地中安全帽佩戴检测的应用(已开源+数据集) - 知乎 (zhihu.com)

2.merge_data.py

Smart_Construction/data/gen_data/merge_data.py at master · PeterH0323/Smart_Construction · GitHub

3.? 炮哥? ?vocToYolo

目标检测---数据集格式转化及训练集和验证集划分_bndbox-CSDN博客

4. yoloToVoc

方法一

Yolo标准数据集格式转Voc数据集_数据集转化为voc格式-CSDN博客

步骤:

本地代码 :E:\object detection\helmet_project\yolov5-6.1?

数据:E:\object detection\dataset\helmet和E:\object detection\helmet_project\yolov5-6.1的VOCdevkit*

注意 目前只做了images(useful)1中一部分 截止到12月19号)

1.检测person??

yolov5?会推理出所有的分类,并在?inference/output?中生成对应图片的?.txt?标签文件;

(注意VOC2008已经改动 原本是跑了1608张图片 ? ?来自images(useful)1中前半部分开源的)

python detect.py --save-txt --source "E:\object detection\dataset\helmet\VOC2008\JPEGImages"  --weights yolov5x.pt

结果在:E:\object detection\helmet_project\yolov5-6.1\runs\detect\exp8\labels

2.? vocToYolo(为了merge)

E:\object detection\helmet_project\yolov5-6.1\voctoyolo.py

classes = ["person"]
# classes=["ball"]

TRAIN_RATIO = 100

将E:\object detection\helmet_project\yolov5-6.1\VOCdevkit(12.17)\VOC2007\Annotations下的xml转成了E:\object detection\helmet_project\yolov5-6.1\VOCdevkit(12.17)\VOC2007\YOLOLabels

3.merge

E:\object detection\helmet_project\yolov5-6.1\merge_data.py

将YOLOV5_LABEL_ROOT (步骤1得到的)的txt 和DATASET_LABEL_ROOT(步骤2得到的)的txt? merge? ?是原地merge到?DATASET_LABEL_ROOT

4. yoloToXMl(为了打标签 以及和工地的一起划分)

E:\object detection\helmet_project\yolov5-6.1\yoloToVocNew.py

把3中得到的txt转为xml

5 jump到打标签

6.再次vocToYolo(划分训练集和测试集)

注意 换了文件夹

  • xml都放到如下文件夹
  • 对应的image放进去

3.打标签-labelimg

(12.17打标签到210684)

目标检测---利用labelimg制作自己的深度学习目标检测数据集_目标检测利用labeling制作-CSDN博客

E:\object detection\dataset\helmet\VOC2008

labelimg装在bytetrack环境中? ,然后去指定文件夹下 执行命令

注意这个按钮

一些标注rule

  • 注意 无法判断的person(只有一只手 没有头部露出 肉眼分不清默认是戴了的 重点是将没带的挑出来
  • 有时候只有一张脸(没戴帽子) 也可认为是没戴的 而不用全身
  • 而且 原本无法判断帽子帽子是否戴在头上(拿在手里?)、是否规范佩戴 现在都可以解决了
  • 安全帽没有黑色 但是对于戴了黑色帽子的建议标注为person
  • 骑行头盔 不算
  • 各种姿势的人标注 弯腰 蹲下 躺下
  • 只有一个人脸 yolov5x能认出来他是个人 所以我也标注?
  • 主要区分了 草帽、保安、军人/警察的帽子、自行车头盔、毛巾
  • 密集的图片删掉了 我的场景绝对不会很密集?

485.JPG


二、使用AutoDL训练

1.参考

1.yolov8官方文档??

主页 - Ultralytics YOLOv8 文档

2. 主要步骤

我使用的base环境

在AutoDL中使用YOLOV8训练自己的数据集-CSDN博客

配置:??

1.train.py? (或者使用命令

2.data.yaml

3. yolov8.yaml? ? 作者说“同时将yolov8n.yaml文件中的nc?改为nc=2,我的类别是两个” 但是现在版本

/root/autodl-tmp/ultralytics/ultralytics/cfg/models/v8/yolov8.yaml? ? ? 没有之前yolov8n.yaml

包含了 n s m l x? 后面改模型的时候再自己改吧

3. 其它

使用自定义数据集训练YOLOv8模型(基于AutoDL算力云平台,内附免费的源码、数据集和PYQT-GUI界面)-CSDN博客

手把手教你使用AutoDL云服务器训练yolov5模型-CSDN博客

自学历程-AutoDL服务器训练YOLOv8-CSDN博客

云服务器训练YOLOv8-新手教程 - 哔哩哔哩 (bilibili.com)? ?迪菲赫尔曼 (没看)

4.YOLOv8

YOLOv8训练参数详解(全面详细、重点突出、大白话阐述小白也能看懂)-CSDN博客

三种训练模式

手把手实现 | 使用Yolov8训练自己的数据集【环境配置-准备数据集(采集&标注&划分)-模型训练(多种方式)-模型预测-模型导出】-CSDN博客

yolov8的train.py

第一个model没有用到预训练

第二个 就是pt

第三个 改了backbone以后用它!

from ultralytics import YOLO

# 加载一个模型
model = YOLO('yolov8n.yaml')  # 从YAML建立一个新模型
model = YOLO('yolov8n.pt')  # 加载预训练模型(推荐用于训练)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # 从YAML建立并转移权重 
  # (另一种解读) 从YAML加载 然后再加载权重

# 训练模型
results = model.train(data='coco128.yaml', epochs=100, imgsz=640)

model: 模型文件的路径。这个参数指定了所使用的模型文件的位置,例如 yolov8n.pt 或 yolov8n.yaml。

选择.pt和.yaml的区别

.pt类型的文件是从预训练模型的基础上进行训练。若我们选择 yolov8n.pt这种.pt类型的文件,其实里面是包含了模型的结构和训练好的参数的,也就是说拿来就可以用,就已经具备了检测目标的能力了,yolov8n.pt能检测coco中的80个类别。假设你要检测不同种类的狗,那么yolov8n.pt原本可以检测狗的能力对你训练应该是有帮助的,你只需要在此基础上提升其对不同狗的鉴别能力即可。但如果你需要检测的类别不在其中,例如口罩检测,那么就帮助不大

.yaml文件是从零开始训练。采用yolov8n.yaml这种.yaml文件的形式,在文件中指定类别,以及一些别的参数。

2.上传文件

最开始使用jupyterLab踩了大坑 、还可以使用网盘

最终使用Xshell?

AutoDL帮助文档

3.解决RuntimeError

yolov8训练自己数据集遇到找不到yaml中路径问题-CSDN博客

1.使用绝对路径??

这个方法其实没问题? 而且会把settings.yaml中的ignore掉

但是lnb把datasets拼成了datesets 所以一直报错?

2.相对路径??

Yolov8训练自己数据集时出现的RuntimeError:DataSet ......error-CSDN博客

?vim ?/root/.config/Ultralytics/settings.yaml? 查看如下这样一个配置文件

其中datasets_dir修改了? 它会去这个地方去找数据集?然后拼上data.yaml中的train和val

文章来源:https://blog.csdn.net/weiyuhaodashabi/article/details/135093757
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。