本文主要针对yolo_v3进行模型剪枝量化,主要使用voc格式的数据集训练自己的数据,代码主要在:
https://github.com/ReOneK/Yolo_v3_prune_vocdata
具体步骤如下:
一、数据处理
- 将标注数据放入data/Annotations,图片数据放入data/images - 运行modify.py文件,避免因图片问题导致标注文件中图片的长宽为 0的问题 -将voc_label.py中classes修改为自己的训练类别,并分别运行maketxt.py、voc_label.py
二、模型剪枝 1.正常训练
对应自己的训练数据修改data/voc.data以及voc.name 同时修改yolov3.cfg中yolo层对应的filters以及classesfilters=3*(classes+5)
python3 train.py --data data/voc.data --batch-size 16 --accumulate 1 --weights weights/yolov3.weights --cfg cfg/yolov3.cfg2.稀疏化训练
`-sr`开启稀疏化,`--s`指定稀疏因子大小,`--prune`指定稀疏类型。其中:
--prune 0为正常剪枝和规整剪枝的稀疏化
--prune 1为极限剪枝的稀疏化
--prune 2为Tiny剪枝的稀疏化
python3 train.py --data data/voc.data --batch-size 16 --accumulate 1 --weights weights/yolov3.weights --cfg cfg/yolov3.cfg -sr --s 0.001 --prune 0
四、原作者链接
https://github.com/Lam1360/YOLOv3-model-pruninghttps://github.com/coldlarry/YOLOv3-complete-pruning