YOLOv7训练自己的数据集(个人笔记篇)

该文详细介绍了在Windows10系统和4070显卡环境下,如何利用conda管理环境,使用labelme进行图像标注,通过roboflow上传数据集并生成训练所需格式,以及使用YOLOv7-segmentationGitHub项目训练自定义的实例分割模型。在训练过程中,强调了数据预处理、训练参数设置及解决训练过程中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要参考:RizwanMunawar/yolov7-segmentation: YOLOv7 Instance Segmentation using OpenCV and PyTorch (github.com)https://github.com/RizwanMunawar/yolov7-segmentation

主机系统为win10系统,显卡为4070

目录

1、conda基本指令

2、labelme

3、roboflow上传数据集并生成

4、训练自己的模型

4.1 数据预处理

4.2 train

4.3 训练完成


1、conda基本指令

conda env list                  #查看拥有的环境文件
conda activate 虚拟环境名             #激活环境
conda deactivate 虚拟环境名          #解除环境

conda create -n your_env_name python=x.x   #创建新虚拟环境
conda remove -n your_env_name --all        #删除虚拟环境        
###安装包
conda install 包名                         #建议先进入相应的虚拟环境再进行安装,不建议全部安装在base
pip install 包名                            #进入某个虚拟环境之后也可以使用pip安装包
conda remove 包名                          #移除包名
conda list                      #查看已经安装的包
#将包更新至最新版本
conda update 包名 
conda update -n 环境名 包名

2、labelme

labelme安装: https://github.com/wkentaro/labelme

labelme使用:

创建一个文件夹,在这个文件夹中创建一个文件夹(里面放images)和labels.txt;txt文件的形式如图:

 打开powershell终端输入指令:

conda activate labelme
cd D:\others\no8_labelme1\        ##当前labelme路径
labelme images_2 --labels labels.txt --nodata --validatelabel exact --config '{shift_auto_shape_color: -2}'

即可对image进行标注。

3、roboflow上传数据集并生成

roboflow官网:https://app.roboflow.com/

 roboflow使用需要科学上网;逐步upload、generate、export  选择yolov7 pytorch版本。

最后会生成一个zip文件,例如下图: (当然,train valid test的比例可以自己设置,一般设置82或者73开。)

 

 里面data.yaml中的第六行label的顺序十分重要!!!十分重要!!!十分重要!!

4、训练自己的模型

RizwanMunawar/yolov7-segmentation: YOLOv7 Instance Segmentation using OpenCV and PyTorch (github.com)https://github.com/RizwanMunawar/yolov7-segmentation

4.1 数据预处理

将上一步文件中的train和valid转入源码的data文件夹下;创建一个custom.yaml文件,内容直接复制之前的data.yaml,路径需要修改(我之前就是6个label没有直接复制,自己写,结果顺序全错了把树木识别成了水泥地)

custom.yaml文件:

#train和val文件夹位置,
train: D://PycharmProjects//yolov7-segmentation-main//data//train//images
val: D://PycharmProjects//yolov7-segmentation-main//data//valid//images
#nc为number of classes,即标记的种类的个数
nc: 6
#按以下格式将label的内容填入
names: ['bushes', 'car', 'cementfloor', 'dirtroad', 'grassland', 'tree']

------------------------------------------手动分割线  数据预处理工作完成-------------------------------------------

4.2 train

接下来开始重头戏:Train

下载本文参考链接的源码,在anaconda中配置环境 。由于版本不适配的缘故,建议在配完环境之后卸载torch和torchvision,从pytorch官网PyTorch重新安装与自己cuda适配的torch版本 ;或者在配环境之前把requirements.txt文件中的torch和torchvision注释掉。

我的显卡适配的是当前最新cuda11.8版本(30系显卡的话cuda11.7就够了,如果gpu不适配就只能用cpu训练,速度巨慢无比)

##重新安装torch
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

按照作者要求下载权重文件yolov7-seg.pt至目录下,并在当前位置打开终端,在终端中运行:

conda activate yolov7seg
#根据个人需求进行参数修改,如batch和epoch等
python segment/train.py --data data/custom.yaml --batch 8 --weights "yolov7-seg.pt" --cfg yolov7-seg.yaml --epochs 500 --name yolov7-seg  --img 640 --hyp hyp.scratch-high.yaml

成功启用显卡可以看到:

 如果有错误显示:AttributeError: module 'numpy' has no attribute 'int'.
`np.int` was a deprecated alias for the builtin `int`. To avoid this error in existing code, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

那么重新安装numpy

pip install numpy==1.20.3

看到GPU_mem,说明调用显卡开始工作了:

 --------------------------------------------------慢慢等着训练完成吧---------------------------------------------------

4.3 训练完成

Results saved to runs\train-seg\yolov7-seg3

训练完成后生成的文件:

训练完成后,可以用自己的模型predict:

 python segment/predict.py --weights "runs/train-seg/yolov7-seg3/weights/best.pt" --source "folder or video or pic"

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值