yolov3剪枝

作者: 霜冷长河wzq | 来源:发表于2020-12-28 11:24 被阅读0次

剪枝原理

参考<<Learning Efficient Convolutional Networks through Network Slimming>>

剪枝原理
训练时的损失函数,将BN的系数\gamma作为正则项,使用L1,这种训练称之为稀疏训练:
损失函数
训练的结果,使得\gamma值趋向于0,从而可以去除相应的通道。
BN层尺度参数正常训练vs稀疏训练

代码运行

参考代码:https://github.com/tanluren/yolov3-channel-and-layer-pruning

1、darknet模型转换成代码使用的格式

python3 -c "from models import *; convert('cfg/yolov3.cfg', 'weights/last.pt')"

2、正常训练(可做为baseline,与稀疏训练进行对比)

python3 train.py --cfg cfg/my_cfg.cfg --data data/my_data.data --weights weights/yolov3.weights --epochs 100 --batch-size 32

3、稀疏训练

python3 train.py --cfg cfg/my_cfg.cfg --data data/my_data.data --weights weights/last.weights --epochs 300 --batch-size 32 -sr --s 0.001 --prune 1

4、通道剪枝(考虑需不需对shortcut层进行剪枝;层剪枝,在通道剪枝上衍生而来,需要计算各层平均\gamma值)

python3 prune.py --cfg cfg/my_cfg.cfg --data data/my_data.data --weights weights/last.pt --percent 0.85

5、微调

python3 train.py --cfg cfg/prune_0.85_my_cfg.cfg --data data/my_data.data --weights weights/prune_0.85_last.weights --epochs 100 --batch-size 32

6、查看指标

python3 test.py --data data/voc_yolov3.data --cfg cfg/yolov3.cfg --weights converted.pt

Class Images Targets P R mAP F1
all 5.93e+03 1.39e+04 0.959 0.949 0.943 0.953

7、图片,文件夹,视频,相机等测试

python3 detect.py --data data/voc_yolov3.data --cfg cfg/yolov3.cfg --weights converted.pt
--source {
   0 # webcam
  file.jpg # image
  file.mp4 # video
  path/ # directory
  path/*.jpg # glob
  rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa # rtsp stream
  rtmp://192.168.1.105/live/test # rtmp stream
  http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8 # http stream
  }
--output output/ --conf 0.5

8、tensorboard
使用tensorboard可视化

tensorboard --logdir=runs/ --port=40110

在xshell里面设置


xshell设置

然后可以在本地输入网址 127.0.0.1:40110 访问

相关文章

网友评论

    本文标题:yolov3剪枝

    本文链接:https://www.haomeiwen.com/subject/czlznktx.html