当前位置:   article > 正文

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

yolov7训练自己数据集

本文主要参考: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基本指令

  1. conda env list #查看拥有的环境文件
  2. conda activate 虚拟环境名 #激活环境
  3. conda deactivate 虚拟环境名 #解除环境
  4. conda create -n your_env_name python=x.x #创建新虚拟环境
  5. conda remove -n your_env_name --all #删除虚拟环境
  6. ###安装包
  7. conda install 包名 #建议先进入相应的虚拟环境再进行安装,不建议全部安装在base
  8. pip install 包名 #进入某个虚拟环境之后也可以使用pip安装包
  9. conda remove 包名 #移除包名
  10. conda list #查看已经安装的包
  11. #将包更新至最新版本
  12. conda update 包名
  13. conda update -n 环境名 包名

2、labelme

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

labelme使用:

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

 打开powershell终端输入指令:

  1. conda activate labelme
  2. cd D:\others\no8_labelme1\ ##当前labelme路径
  3. 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文件:

  1. #train和val文件夹位置,
  2. train: D://PycharmProjects//yolov7-segmentation-main//data//train//images
  3. val: D://PycharmProjects//yolov7-segmentation-main//data//valid//images
  4. #nc为number of classes,即标记的种类的个数
  5. nc: 6
  6. #按以下格式将label的内容填入
  7. 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训练,速度巨慢无比)

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

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

  1. conda activate yolov7seg
  2. #根据个人需求进行参数修改,如batch和epoch等
  3. 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"

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/295589
推荐阅读
相关标签
  

闽ICP备14008679号