Yolov5 训练自己的数据集 目标识别和语义分割

参考(官网教程):

Train Custom Data - Ultralytics YOLOv8 Docs

0. 需要

0.1 自己的数据集(图片的形式)

0.2 科学上网

1.流程

1.1 git项目,安装依赖

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install
/**
如果要调用gpu,就把requirements.txt里的torch相关的包注释掉,然后去pytorch官网下载gpu版本的
例如 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

如果已经有了cpu版本的又下载了gpu版本的,就会报错
OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause
解决办法就是
pip uninstall torch
conda uninstall torch
conda uninstall libtorch
重新运行conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
**/

gpu版本的调用还需要在train.py的537行

将parser.add_argument("--device", default="", help="cuda device, i.e. 0 or 0,1,2,3 or cpu")修改为parser.add_argument("--device", default="0", help="cuda device, i.e. 0 or 0,1,2,3 or cpu")

可以用txt的查询功能快速找到这一行代码

1.2 利用roboflow打标签

Roboflow Annotate: Label Faster Than Ever

(需要科学上网才能登录) 

依次点击 try it now for free -> sign up(用email)->随便填个项目名字->upload data->照着指引一步步直到

download zip to computer

1.3 组织文件夹形式和编写yaml文件

得到一个文件夹,一个文件夹是你的原图,一个是你的标签

编辑你的data.yaml(主要就是个文件夹的结构容易出错)

train: ./data/roboflow_anno418/train
val: ./data/roboflow_anno418/valid

(这里的.代表yolov5文件夹下)train文件夹里是所有训练的原图和txt标签,val里面是所有验证集的原图和txt标签,可能需要手动分割下,大概长下面这样

1.4 训练

python train.py --img 640 --epochs 20 --data ./roboflow_anno418/data.yaml --weights yolov5s.pt --epochs 300

改一下yaml文件的文件路径

1.5 测试

把runs/train里面的best.pt拷到主文件夹下,再搞个测试图片

python detect.py --weights 41712best.pt --source test4.jpg

在detect.py 里搜索conf_thres,可以改置信度阈值

2.语义分割

2.1运行命令

数据集的制作参考我的上一篇博客

YoloV5 Crack500 裂缝语义识别 训练自己的数据集_crack500数据集处理-CSDN博客

训练

python segment/train.py --data crackseg.yaml --weights yolov5s-seg.pt --img 640

测试

python segment/predict.py --weights 41713segbest.pt --source test2.jpg

这里会显示目标检测的框,可以通过注释predict.py的208到211行让它别显示目标检测的框

# if save_img or save_crop or view_img:  # Add bbox to image
#     c = int(cls)  # integer class
#     label = None if hide_labels else (names[c] if hide_conf else f"{names[c]} {conf:.2f}")
#     annotator.box_label(xyxy, label, color=colors(c, True))

2.2 改变语义分割的背景变成纯黑,而不是原图

修改方式:

也就是在im[i]后乘0 

改了之后就是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一瓶独立的花露水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值