yolov5部署以及训练10种中药材分类数据集

记录以下我使用yolov5来训练自己数据集的过程以及遇到的坑~~~

首先要部署yolov5的环境

首先去github上下载yolov5 直达

安装依赖包

编译环境我是用的是anaconda 创建的虚拟环境,方便管理,如何创建虚拟环境就不细讲了。创建好之后根据yolov5中的requirment.txt安装它需要的依赖包。
方式一:之前第一次配置环境的时候,用的是pycharm来安装依赖,有几个包一直报错,还是通过 pip install 包.whl的方式安装上的,特别是coco。
方式二:后来换了电脑,直接在anaconda prompt中通过pip就很顺利的就装好了。
还是推荐方式二安装依赖包,方便又好管理

测试yolov5

进入anaconda的虚拟环境,进入到yolov5的路径下,执行:

python detect.py --source 0

--source 0 表示是用电脑的摄像头,采集视频。如果不想采集视频,可以不加上 source,直接使用 \data\images文件下的测试图片不管是图片还是视频, 测试的结果会保存在yolov5项目中 \runs\detect\exp 文件夹下。

这样yolov5就部署好了,可以训练自己的数据集了。

准备训练集

yolov5的数据集的形式有很多种,我才用的是
图片与标签分开存放在不同的文件夹下,目录如下:

yolov5部署以及训练10种中药材分类数据集

images中存放的是训练和验证的图片,labels中存放的是标签。之前存放图片的文件夹名称为img,在训练的时候老是报错 not found labels,改成images就好了。
标签和图片是根据图片名称来对应的。
打标签用的是LabelImg,使用的方法就不介绍了, 记得使用YOLO的标签格式

; 更改程序

一:将data/coco128.yaml文件更改三个地方:
1.train/val 的路径 更改为自己的图片的存放地址,标签的地址可以自动推断出来
2.nc 更改分类数目
3.names 更改分类名称
下面是根据我的数据集更改过后的文件


download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip

train: ../train_imgs/images/train
val: ../train_imgs/images/val

nc: 10

names: [ 'aiye', 'ajiao', 'baifan', 'banxia', 'chenpi', 'honghua' ,'puhuang', 'shanzha' ,'xiakucao', 'xixin' ]

二:根据在train.py当中要使用的权重文件,比如更改yolo5s.yaml文件,这里只需要更改 nc就可以了

yolov5部署以及训练10种中药材分类数据集
下面是更过后的文件,只更改了nc

nc: 10
depth_multiple: 0.33
width_multiple: 0.50

anchors:
  - [10,13, 16,30, 33,23]
  - [30,61, 62,45, 59,119]
  - [116,90, 156,198, 373,326]

backbone:

  [[-1, 1, Focus, [64, 3]],
   [-1, 1, Conv, [128, 3, 2]],
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],
   [-1, 9, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],
   [-1, 1, SPP, [1024, [5, 9, 13]]],
   [-1, 3, C3, [1024, False]],
  ]

head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],
   [-1, 3, C3, [512, False]],

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],
   [-1, 3, C3, [256, False]],

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],
   [-1, 3, C3, [512, False]],

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],
   [-1, 3, C3, [1024, False]],

   [[17, 20, 23], 1, Detect, [nc, anchors]],
  ]

训练模型

有了数据集可以开始训练了
进入虚拟环境,进入yolov5的目录,执行:

python train.py --device 0

--device 0表示使用gpu0来训练模型,如果没有gpu的话,不用加上 device,默认是cpu。
正常训练结束如下图,会产生两个模型文件best.pt和last.pt, 保存在 \runs\train\exp\weights 文件夹下

yolov5部署以及训练10种中药材分类数据集
报错

在训练的时候报错说: OSError: [WinError 1455] 页面文件太小,无法完成操作,这是内存太小,更改虚拟内存的页面大小,可以解决。

yolov5部署以及训练10种中药材分类数据集

; 测试自己的模型

首先要更改train.py文件中的模型
测试模型还是使用detect.py文件,首先要更改使用的权重文件,把原来的 yolov5s.pt更改为刚刚训练保存的 last.pt或者 best.pt文件。

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', nargs='+', type=str, default='last.pt', help='model.pt path(s)')

更改之后可以使用跟之前一样的命令来测试。保存结果的目录和之前一样。

python detect.py --source 0

Original: https://blog.csdn.net/qq_43441764/article/details/116332341
Author: 老白的小猴子
Title: yolov5部署以及训练10种中药材分类数据集

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/666530/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球