折腾了大概一个星期, 最大的问题就是python的版本的问题.
按照下面的步骤来, 不行的话, 你抽我…
最重要感谢小蒋提示了我, 转模型要3.6, 训练要3.8, 顺这个这思路走.
设计py36 跟py38切换, 所以最好弄个conda来方便你切换环境.一般情况下, 你训练模型是在物理机的window上面, 就用windows安装conda, 具体安装方法百度一下, 我这里说说ubuntu的安装
ubuntu下载并安装minicondawget https://repo.anaconda.com/miniconda/Miniconda3–py38_4.12.0–Linux–x86_64.shbash Miniconda3–py38_4.12.0–Linux–x86_64.sh一步步往下走就行, 中间什么用户协议输入yes
是否初始化选择yes
关掉终端, 重新打开.
跟windows版本一样, 终端前面可以看到conda目前的环境.
创建并切换py38环境conda create –n train_yolo_py38 python=3.8conda activate train_yolo_py38 下载rk优化后的yolov5git clone https://github.com/airockchip/yolov5.git接着修改data/下面的yaml的配置, 训练模型, 就像平时训练一样
比如我想训练个看人有没有带安全帽的模型, 就新建个yaml, 取名叫safe_hat_detect.yaml path:../datasets/safe_hat # dataset root dirtrain: images/train # train images (relative to path) 128 imagesval: images/val # val images (relative to path) 128 imagestest: images/test # test images (optional)# Classesnc:2# number of classesnames:[person,hat]# class names把你的模型的训练数据, 做好的标记文件, 测试集, 都放在对应的位置, 这里的目录组织有点别扭, 是在yolo的目录外面, 新建一个datasets目录, 然后模型一个目录, 然后里面再分别建image/train image/val image/test, 跟image同层建立labels目录放标签的txt文件.
用yolov5的训练方法训练, 这里生成的权重/模型, 其实已经被优化过了, 一会儿看pt文件就知道, silu已经被换成了relu
python train.py —weights —cfg safe_hat_detect.yaml —data safe_hat.yaml —epochs 300—batch–size 16
修改一下batch-size, 使得显卡内存利用率更高, 让训练速度更快, 我是8G的显存, batch-size设置成32.
训练的目标就是让mAP@.5 跟mAP@.5:.95尽量的高
每个epoch即整个训练集, 约4000张图片, 每次32张图片(batch-size), 进行一次前向传播, 再用损失函数, 反向传播, 对每一个参数求偏导数, 这样就是一个epoch, 暂时定为重复300个epoch, 如果中间程序发现长时间mAP没有提升, 会提前停止训练.
50轮的时候, mAP已经是0.914了, 因为我的val跟train的样本集是分开的, 所以应该不会出现过拟合的问题.
可以看到, 训练在275轮就提前结束了, 因为最近100轮都没有啥提升.
生成的权重文件, 就在runs\train\expX\weights\best.pt
X是个会自增的数字, 每训练一次都会加1结果图 还挺理想的.
直接detect一下, 看看效果如何
python detect.py —weights runs\train\exp4\weights\best.pt —source D:\\rkai\\datasets\\safe_hat\\images\\test\\person_hat_2_72.jpg
嗯, 好了, 下一步可以开始转换模型了.
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:训练自己的yolov5样本, 并部署到rv1126 <二>-yolov3训练自己的模型 https://www.yhzz.com.cn/a/9562.html