yolov5s模型剪枝详细过程(v6.0)
发布时间:2024-02-10 11:04:51

本文参考github上大神的开源剪枝项目进行学习与分享,具体链接放在文后,希望与大家多多交流!

一、原模型训练

在官方源码上训练yolov5模型,支持v6.0分支的n/s/m/l模型,我这里使用的是v5s,得到后将项目clone到本机上

git clone https://github.com/midasklr/yolov5prune.git

cd进入文件夹后,新建runs文件夹,将训练好的模型放入runs/your_train/weights/xxx.pt,我的原模型map0.5:0.95为0.84左右,模型与data.yaml设置好后可以进行稀疏化训练了。

二、稀疏化训练

python train_sparity.py --st --sr 0.0002 --weights yolov5s.pt --data data/your_data.yaml --epochs 100 --imgsz 512 --adam ...

注意:1、若原模型训练时未使用adam,则这里也不要使用adam。2:data.yaml文件改成自己的数据集文件。3:这里sr参数为稀疏化系数,具体值为多少根据不同的数据集和模型,一般设置不一样,需要自己多试试,比如我的是单类别目标检测,设置为0.0002时几乎不变化(如下图)。

这里我们cd到runs文件夹路径,然后输入tensorboard实时监看训练过程,logdir也指向runs文件夹即可,然后打开网页输入你的ip,端口号一般为6006,比如192.168.xx.xx:6006就可以监看。

tensorboard --logdir=/home/user2/yinjiacheng/pytorch-ssd/pytorch-ssd/runs --host=0.0.0.0

这个直方图的纵轴代表训练次数(从上往下训练次数增加),横轴的峰值应随着训练次数不断逼近0轴,代表着大多数bn已经变得稀疏,而出现下图这个情况或者稀疏过慢(逼近0轴的过程缓慢)时,代表sr值应该适量增大。