yolo5自定义训练过程记录(Windows10环境)

yolo5自定义训练过程记录(Windows10环境)

前一阵有领导提出是否可以监控货物存量的问题,经分析,货位上增加传感器的模式精度高则高矣,实施和成本都太高,故考虑可以通过监控进出量,来统计总体存量概况。这个方案是否可行?于是经过一番搜索,可能通过yolo + 目标跟踪的方案可行,这个需求很类似智能交通管理监控,不过目前还未搞定跟踪,只做到了通过yolo识别,从可行性验证方向来说是可以的,因此记录一下。

首先在Github上找到yolo5,下载zip或者克隆到本地,环境安装一下,运行一下可以跑起来了。具体环境安装过程不再赘述,网上很多大佬文章,那是图文并茂,吾不如也…

但是有个问题:默认的训练集(yolov5s.pt)只能对标准物体识别,例如人,车辆等,我使用了叉车(当然是玩具小叉车,下现场采集那是不可能滴…),标准模型对叉车识别率不高。经常识别为飞机(汗)。

我的玩具小叉车:

标准模型识别效果截图(你是飞机):

那只能自己训练啦。于是打开摄像头,随意截取了一些帧截图,还是根据面向度娘的编程原则,了解到使用labelimg即可进行标注,这里有个问题,我python环境是3.10的,但是labelimg是基于3.9的,我的解决方案是再在mini conda环境下安装一个python39的,简单粗暴但是好用,于是labelimg跑起来了。

在OpenDir打开截图目录后,即可进行标注,过程比较简单,唯一需要注意的是下面那个地方要选一下,选成yolo。

标注完成后,需要将标注图片和数据分为训练集和测试集,分别放在不同的文件夹下。例如我把训练数据放在“cust_datasets \forklift”文件夹下,然后再建“train”和“valid”文件夹,在“train”和“valid”再有images和labels文件夹存放图片和标注信息。

文件夹结构如下:

在forklift文件夹下,建一个data.yaml文件,我需要区分有货或者无货叉车,于是增加了2个分类:'forklift_empty','forklift_full'。具体yaml文件内容如下:

names: ['forklift_empty','forklift_full']

nc: 2

train: cust_datasets/forklift/train/images

val: cust_datasets/forklift/valid/images

文件内容比较简单,截图如下:

数据准备好之后,就可以执行命令进行训练了。命令如下:

python train.py --batch-size 2 --epochs 200 --data cust_datasets/forklift/data.yaml --weights yolov5s.pt

epochs和batch-size参数根据具体硬件配置可以调整,这方面我也不懂,反正就是一个抄…

注意,训练之前可能会有2个坑,一个是需要一个Arial.ttf文件,是个字体,训练时下载,需要会上网,否则会卡死在这个下载过程,这个字体文件下载后,拷贝到字体里就可以了(应该是“C:\Users\你的windows用户账户\AppData\Roaming\Ultralytics”)。另外,由于我的python环境是3.10,所以训练和执行的时候有个int不兼容的问题,度娘了一番哪里报错改哪里,int64改为int改完就好了。

训练完成之后,模型文件一般就在 “runs/train/exp11/weights/best.pt” 这里。

最后,终于可以检测了!命令(读文件)

Python detect.py --source c:\xxxxxx\xx.mp4 --weight runs/train/exp11/weights/best.pt

或从摄像头0读取视频

python detect.py --source 0 --weight runs/train/exp11/weights/best.pt

效果截图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值