YOLOV5,YOLOV7剪枝和蒸馏项目介绍((不包含v8,但入手过这个剪枝项目,后续v8也会有对应的优惠))
对于群里的剪枝相关问题,我基本都会回复,对于一些剪枝问题,我都会给出建议。
模型剪枝是深度学习中的一种技术,旨在通过减少神经网络中不必要的参数和连接,来优化模型的效率和性能。模型剪枝可以分为结构剪枝和参数剪枝两种类型。
剪枝可以很好地衡量模型轻量化程度与精度的关系,是替换轻量化结构完全没办法比的,比如我模型剪枝可以压缩百分之30的计算量,精度只下降了百分之1,但是你通过换模块来达到压缩百分之30的计算量,一般时间就会变长,因为大部分轻量化模块都是由时间换空间,而且精度还会下降得比较多,但是剪枝可以很好地避免这个问题.
yolov5-PAGCP
yolov7-PAGCP
yolov7-prune
yolov5-prune
L1
Random
Slim
GroupSlim
GroupNorm
LAMP
GroupSL
GroupReg
GroupHessian
GroupTaylor
支持稀疏训练时候可视化BN稀疏程度和数值。
稀疏训练的稀疏系数会进行线性调整,让稀疏训练后期精度更容易回升,更稳定。
支持设定加速比例,模型会进行自动压缩,压缩到指定比例或者达到最大压缩次数后会自动进入finetune。
大家关心最多的一个问题就是,我的结构能不能剪之类的,目前剪枝都是基于Torch_Pruning库进行剪枝,其中PAGCP是版本比较旧的Torch_Pruning库,prune系列的都是最新Torch_Pruning库,所以PAGCP剪枝上兼容性会比prune系列的低,prune系列的可以跳过一些不能剪枝的层(某些复杂的结构可能在构建动态图的时候失败,这些就只能换结构),这个项目会有比较多的示例和视频教程教大家如何去剪自己的结构,注意点在哪里等等。这个剪枝项目是没办法保证所有的结构都能剪,有一定的风险,是否入手请自行考虑!
Logical
L1
L2
AlignSoftTarget(自研,部分参考Bridging Cross-task Protocol Inconsistency for Distillation in Dense Object Detection,ICCV 2023)
Feature
Mimic
Masked Generative Distillation (ECCV 2022)
Channel-wise Distillation (ICCV 2021)
ChSimLoss Distillation (ICCV2021)
SPKDLoss Distillation (ICCV2019)
Feature蒸馏可以自定义选择层进行蒸馏.
蒸馏损失支持常数,线性,余弦进行动调整.
支持Logical和Feature一起使用.
过程中会输出Logical和Feature的损失,让用户可以及时调整对应的损失系数.
支持正常训练模型时候进行蒸馏和剪枝后finetune蒸馏.
实验示例结果.(以下示例实验相关命令,视频教程,实验数据都在项目里面)
2.0x 代表的是设定为两倍加速(4.0x同理),当模型压缩达到设定的倍速时会自动进入finetune阶段.
Mode:Prune Dataset:CrowdHuman 20% Model:Yolov7-Tiny using OTA
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine
6,010,302
13.0
12.0m
0.76
0.429
0.6ms
PAGCP-EXP1
3,239,782(53.9%)
7.5(57.6%)
6.4m(53.3%)
0.747(-0.013)
0.409(-0.02)
0.5ms
PAGCP-EXP2
2,035,468(33.8%)
5.0(38.4%)
4.1m(34.2%)
0.731(-0.029)
0.393(-0.026)
0.5ms
Slim(Sparse) 2.0x
920,155(15.3%)
6.2(47.7%)
2.0m(16.7%)
0.773(+0.013)
0.429(0.0)
0.6ms
Slim(Sparse) 4.0x
375,449(6.2%)
3.2(24.6%)
1.0m(8.3%)
0.73(-0.03)
0.376(-0.053)
0.4ms
GroupSlim (Sparse) 2.0x
915,589(15.2%)
6.4(49.2%)
2.0m(16.7%)
0.772(+0.012)
0.43(+0.001)
0.6ms
GroupSlim (Sparse) 4.0x
375,298(6.3%)
3.2(24.6%)
1.0m(8.3%)
0.727(-0.033)
0.372(-0.057)
0.5ms
LAMP 2.0x
1,310,893(21.81%)
6.5(50.0%)
2.9m(24.1%)
0.766(+0.006)
0.423(-0.006)
0.6ms
GroupNorm 2.0x
2,580,758(42.9%)
6.5(50.0%)
5.4m(41.5%)
0.74(-0.02)
0.398(-0.021)
0.6ms
Random 2.0x
2,950,989(49.1%)
6.5(50.0%)
6.1m(46.9%)
0.742(-0.018)
0.399(-0.02)
0.6ms
L1 2.0x
3,226,567(53.7%)
6.4(49.2%)
6.4m(56.3%)
0.72(-0.04)
0.387(0.042)
0.6ms
Mode:Prune Dataset:CrowdHuman 20% Model:Yolov7-Tiny+MobileNetV3_Small+LSKBlock+TSOCDE+RepConv
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine
24,665,523
33.0
48.0m
0.68
0.36
1.5ms
LAMP 2.0x
8,963,220(36.3%)
16.4(49.7%)
18.0m(37.5%)
0.676(-0.004)
0.354(-0.006)
1.3ms
GroupSlim (Sparse) 2.0x
10,686,041(43.3%)
16.2(49.1%)
22.0m(45.8%)
0.641(-0.039)
0.319(-0.041)
1.4ms
Slim (Sparse) 2.0x
9,211,532(37.3%)
16.3(49.4%)
19.0m(39.6%)
0.669(-0.011)
0.342(-0.018)
1.4ms
L1 1.5x
21,384,927(86.7%)
21.8(66.1%)
42.0m(87.5%)
0.45(-0.23)
0.185(-0.175)
1.4ms
Mode:Prune Dataset:CrowdHuman 20% Model:Yolov7-Tiny+DCN+AFPN
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine
4,564,641
11.7
9.1m
0.716
0.388
0.8ms
LAMP 2.0x
2,323,337(50.9%)
5.8(49.6%)
4.8m(52.7%)
0.7(-0.016)
0.372(-0.016)
0.7ms
L1 2.0x
3,469,961(76.0%)
5.8(49.6%)
7.0m(76.9%)
0.54(-0.176)
0.268(-0.12)
0.7ms
Slim (Sparse) 2.0x
2,385,252(52.2%)
5.8(49.6%)
5.8m(64.8%)
0.641(-0.075)
0.327(-0.061)
0.7ms
Mode:Prune Dataset:CrowdHuman 20% Model:Yolov7-Tiny+FasterNet+DiverseBranchBlock
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine
4,092,258
8.5
9.8m
0.69
0.358
0.6ms
LAMP 2.0x
1,392,932(34.0%)
3.6(42.3%)
4.4m(44.9%)
0.67(-0.02)
0.339(-0.019)
0.5ms
Slim (Sparse) 2.0x
1,541,346(37.7%)
3.6(42.3%)
4.7m(48.0%)
0.669(-0.176)
0.337(-0.021)
0.5ms
GroupSlim (Sparse) 2.0x
1,545,707(37.8%)
3.6(42.3%)
4.7m(48.0%)
0.674(-0.016)
0.342(-0.016)
0.5ms
GroupNorm 2.0x
2,141,255(52.3%)
3.7(43.5%)
5.8m(59.2%)
0.214(-0.476)
0.0535(-0.305)
0.5ms
Mode:Prune Dataset:CrowdHuman 20% Model:Yolov7-Tiny+ReXNet(CVPR2021)+VoVGSCSP+DyHead+DecoupledHead
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine
6,858,519
14.8
13.6m
0.731
0.405
0.14s
LAMP 1.5x
3,840,822(56.0%)
9.9(66.9%)
7.8m(57.3%)
0.7(-0.031)
0.379(-0.019)
0.09s
LAMP 2.0x
2,821,109(41.1%)
7.4(50.0%)
5.8m(42.6%)
0.681(-0.06)
0.359(-0.046)
0.08s
Mode:Prune Dataset:CrowdHuman 20% Model:Yolov7-Tiny+ReXNet(CVPR2021)+VoVGSCSP+DecoupledHead
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine
6,512,095
11.3
12.9m
0.715
0.383
0.091s
LAMP 2.0x
2,930,100(45.0%)
5.6(49.6%)
6.0m(46.5%)
0.627(-0.088)
0.32(-0.063)
0.039s
Slim (Sparse) 2.0x
2,821,109(43.3%)
5.6(49.6%)
6.3m(48.8%)
0.728(+0.013)
0.373(+0.01)
0.052s
GroupSlim (Sparse) 2.0x
3,304,167(50.7%)
5.7(50.4%)
6.8m(52.7%)
0.724(+0.009)
0.369(-0.014)
0.053s
GroupSl (Sparse) 2.0x Exp1
2,178,723(33.5%)
5.7(50.4%)
4.6m(35.7%)
0.669(-0.046)
0.341(-0.042)
0.055s
GroupSl (Sparse) 2.0x Exp2
2,060,599(31.6%)
5.6(49.6%)
4.4m(34.1%)
0.761(+0.046)
0.407(+0.024)
0.056s
GroupSl (Sparse) 3.0x Exp2
1,283,982(19.7%)
3.7(32.7%)
2.9m(22.5%)
0.679(-0.036)
0.342(-0.041)
0.041s
Mode:Distill+Prune Dataset:VisDrone(训练集只用了百分之20的数据,验证集和测试集用了全量的数据) Teacher:Yolov7-Tiny
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine(Yolov7-Tiny)
6,031,950
13.1
11.7m
0.189
0.0948
0.00121s
LAMP 2.0x
1,309,098
6.5
2.7m
0.186(-0.003)
0.0903(-0.0045)
0.00089s
LAMP 3.0x
615,877
4.3
1.4m
0.151(-0.038)
0.0691(-0.0257)
0.00070s
LAMP 3.0x + CWD exp1
615,877
4.3
1.4m
0.158(-0.031)
0.0715(-0.0233)
0.00070s
LAMP 3.0x + CWD exp2
615,877
4.3
1.4m
0.155(-0.034)
0.0686(-0.0262)
0.00070s
Mode:Prune Dataset:CrowdHuman 20% Model:Yolov5n
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine
1,761,871
4.1
3.7m
0.715
0.399
0.02s
LAMP 2.0x
296,498(16.8%)
2.0(48.8%)
0.9m(24.3%)
0.694(-0.021)
0.368(-0.031)
0.0164s
Slim (Sparse) 2.0x
398,607(22.6%)
2.0(48.8%)
1.1m(29.7%)
0.707(-0.008)
0.38(-0.019)
0.0166s
GroupSlim (Sparse) 2.0x
366,230(20.8%)
2.0(48.8%)
1.0m(27.0%)
0.704(-0.011)
0.381(-0.018)
0.0165s
GroupNorm 2.0x
1,016,400(57.7%)
2.1(51.2%)
2.3m(62.2%)
0.617(-0.098)
0.312(-0.087)
0.0134s
GroupSl (Sparse) 2.0x
474,024(26.9%)
2.0(48.8%)
1.3m(35.1%)
0.711(-0.004)
0.387(-0.012)
0.0167s
Mode:Prune Dataset:CrowdHuman 20% Model:Yolov5n+C3-Faster+RepConv
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine
1,614,495
3.7
3.4m
0.711
0.388
0.021s
LAMP 2.0x
285,554(17.7%)
1.8(48.6%)
0.9m(26.5%)
0.687(-0.024)
0.359(-0.029)
0.017s
Slim (Sparse) 2.0x
418,550(25.9%)
1.8(48.6%)
1.2m(35.3%)
0.695(-0.026)
0.365(-0.023)
0.168s
GroupSlim (Sparse) 2.0x
434,440(26.9%)
1.8(48.6%)
1.2m(35.3%)
0.698(-0.013)
0.369(-0.019)
0.017s
GroupSl (Sparse) 2.0x
447,587(27.7%)
1.8(48.6%)
1.2m(35.3%)
0.704(-0.007)
0.376(-0.012)
0.016s
GroupNorm 2.0x
935,451(57.9%)
1.8(48.6%)
2.1m(61.8%)
0.652(-0.059)
0.335(-0.053)
0.015s
Mode:Distill Dataset:VisDrone(训练集只用了百分之20的数据,验证集和测试集用了全量的数据) Teacher:Yolov5s+OTA Student:Yolov5n
Epoch:300 BatchSize:64 Device:RTX3090
model
GFLOPs
mAP50(test set)
mAP50-95(test set)
yolov5n
4.2
0.171
0.0834
yolov5s
15.8
0.263
0.136
yolov5n cwd exp1
4.2
0.181(+0.01)
0.0898(+0.0064)
yolov5n cwd exp2
4.2
0.188(+0.017)
0.0931(+0.0097)
yolov5n cwd exp3
4.2
0.176(+0.005)
0.0845(+0.0011)
yolov5n cwd exp4
4.2
0.175(+0.004)
0.0852(+0.0018)
yolov5n mgd exp1
4.2
0.181(+0.01)
0.0883(+0.0049)
yolov5n mgd exp2
4.2
0.166(-0.005)
0.0795(-0.0039)
yolov5n mimic exp1
4.2
0.178(+0.007)
0.0865(+0.0031)
yolov5n mimic exp1
4.2
0.172(+0.001)
0.0833(-0.0001)
yoplov5n l2 exp1
4.2
0.178(+0.007)
0.0844(+0.001)
yolov5n l2 exp2
4.2
0.179(+0.008)
0.0834(0.0)
yolov5n l2 exp3
4.2
0.176(+0.005)
0.0795(-0.0039)
yolov5n ast exp1
4.2
0.185(+0.014)
0.0899(+0.0065)
yolov5n ast exp2
4.2
0.189(+0.018)
0.0908(+0.0074)
yolov5n mgd+ast exp1
4.2
0.182(+0.011)
0.0867(+0.0033)
yolov5n mgd+ast exp2
4.2
0.185(+0.014)
0.0902(+0.0068)
yolov5n mgd+ast exp3
4.2
0.183(+0.012)
0.0886(+0.0052)
Mode:Distill+Prune Dataset:VisDrone(训练集只用了百分之20的数据,验证集和测试集用了全量的数据) Teacher:Yolov5s+OTA
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine(Yolov5n)
1,772,695
4.2
3.7m
0.171
0.0834
0.020s
LAMP 2.0x
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.149(-0.022)
0.0676(-0.0158)
0.016s
LAMP 2.0x + cwd exp1
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.163(+0.014)
0.0745(+0.0069)
0.016s
LAMP 2.0x + cwd exp2
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.158(+0.009)
0.0728(+0.0052)
0.016s
LAMP 2.0x + cwd exp3
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.164(+0.015)
0.0742(+0.0066)
0.016s
LAMP 2.0x + mgd exp1
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.148(-0.001)
0.066(-0.0016)
0.016s
LAMP 2.0x + mgd exp2
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.148(-0.001)
0.0673(-0.0003)
0.016s
LAMP 2.0x + mgd exp3
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.152(+0.003)
0.0687(+0.0011)
0.016s
LAMP 2.0x + l2 exp1
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.137(-0.012)
0.0542(-0.0134)
0.016s
LAMP 2.0x + l2 exp2
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.149(+0.000)
0.0638(+0.0011)
0.016s
LAMP 2.0x + ast exp1
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.154(+0.005)
0.0679(+0.0003)
0.016s
LAMP 2.0x + ast exp2
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.152(+0.003)
0.0693(+0.0017)
0.016s
LAMP 2.0x + ast exp3
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.154(+0.005)
0.0652(-0.0024)
0.016s
LAMP 2.0x + ast exp4
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.125(-0.024)
0.0547(-0.0129)
0.016s
LAMP 2.0x + ast exp5
301,033(16.98%)
2.1(50%)
0.8m(21.62%)
0.141(-0.008)
0.0635(-0.0041)
0.016s
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine(Yolov5n)
1,772,695
4.2
3.7m
0.171
0.0834
0.020s
GroupSl (Sparse) 2.0x
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.162(-0.009)
0.0754(-0.008)
0.017s
GroupSl (Sparse) 2.0x + cwd exp1
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.174(+0.012)
0.0817(+0.0063)
0.017s
GroupSl (Sparse) 2.0x + cwd exp2
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.177(+0.015)
0.0815(+0.0061)
0.017s
GroupSl (Sparse) 2.0x + cwd exp3
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.177(+0.015)
0.08(+0.0046)
0.017s
GroupSl (Sparse) 2.0x + cwd exp4
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.174(+0.012)
0.0813(+0.0059)
0.017s
GroupSl (Sparse) 2.0x + cwd exp5
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.173(+0.011)
0.0808(+0.0054)
0.017s
GroupSl (Sparse) 2.0x + mgd exp1
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.151(-0.011)
0.0662(-0.0092)
0.017s
GroupSl (Sparse) 2.0x + mgd exp2
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.164(+0.002)
0.0771(+0.0017)
0.017s
GroupSl (Sparse) 2.0x + mgd exp3
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.154(-0.08)
0.0691(-0.0063)
0.017s
GroupSl (Sparse) 2.0x + mgd exp4
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.166(+0.004)
0.0774(+0.002)
0.017s
GroupSl (Sparse) 2.0x + ast exp1
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.172(+0.01)
0.0776(+0.0022)
0.017s
GroupSl (Sparse) 2.0x + ast exp2
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.167(+0.005)
0.0763(+0.0009)
0.017s
GroupSl (Sparse) 2.0x + ast exp3
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.17(+0.008)
0.0754(+0.0)
0.017s
GroupSl (Sparse) 2.0x + cwd + ast exp1
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.169(+0.007)
0.0746(-0.008)
0.017s
GroupSl (Sparse) 2.0x + cwd + ast exp2
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.172(+0.01)
0.078(+0.0026)
0.017s
GroupSl (Sparse) 2.0x + cwd + ast exp3
330,322(18.63%)
2.1(50%)
0.8m(21.62%)
0.172(+0.01)
0.0786(+0.0032)
0.017s
Mode:Prune Dataset:CrowdHuman 20%train Model:Yolov5n+RepViT+C2f
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine(Yolov5n)
1,761,871
4.1
3.7M
0.692
0.37
0.00062s
Yolov5n+RepVit+C2f
6,001,647(340.6%)
16.2(395.1%)
12.1M(327.0%)
0.711(+0.019)
0.386(+0.016)
0.00262s
Yolov5n+RepVit+C2f Lamp 2.0x
2,318,239(131.5%)
8.2(200%)
5.0M(135.1%)
0.721(+0.029)
0.398(+0.028)
0.00218s
Yolov5n+RepVit+C2f Lamp 3.0x
1,446,593(82.1%)
5.6(136.6%)
3.3M(89.2%)
0.712(+0.02)
0.388(+0.018)
0.00197s
Yolov5n+RepVit+C2f Lamp 3.5x
1,231,668(69.9%)
4.8(117.1%)
2.9M(78.4%)
0.71(+0.018)
0.383(+0.013)
0.00189s
Yolov5n+RepVit+C2f Lamp 4.0x
1,082,684(61.5%)
4.3(104.9%)
2.7M(73.0%)
0.705(+0.013)
0.378(+0.008)
0.00185s
Yolov5n+RepVit+C2f Lamp 5.0x
897,472(50.9%)
3.4(82.9%)
2.3M(62.2%)
0.69(-0.002)
0.364(-0.006)
0.00178s
Yolov5n+RepVit+C2f GroupSl (Sparse) 2.0x
1,695,853(96.3%)
8.2(200%)
3.8M(102.7%)
0.694(+0.002)
0.364(-0.006)
0.022s
Yolov5n+RepVit+C2f Slim (Sparse) 2.0x
3,006,781(170.7%)
8.1(197.6%)
6.3M(170.3%)
0.707(+0.015)
0.376(+0.006)
0.00206s
Yolov5n+RepVit+C2f Slim (Sparse) 3.0x
1,945,689(110.4%)
5.6(136.6%)
4.3M(116.2%)
0.683(-0.009)
0.348(-0.022)
0.00189s
Yolov5n+RepVit+C2f Slim (Sparse) 4.0x
1,411,170(80.1%)
4.2(102.4%)
3.3M(89.2%)
0.662(-0.03)
0.331(-0.039)
0.0018s
Mode:Prune Dataset:CrowdHuman 20%train Model:Yolov5n+Fasternet+GoldYOLO+ASF+OTA
model
Parameters
GFLOPs
Model Size
mAP50
mAP50-95
Inference Time(bs:32)
BaseLine(Yolov5n)
1,761,871
4.1
3.7M
0.688
0.365
0.00062s
Improve(Yolov5n+Fasternet+GoldYOLO+ASF+OTA)
6,442,926(365.7%)
10.5(256.1%)
12.8M(345.9%)
0.739(+0.051)
0.395(+0.03)
0.00221s(356.4%)
Improve Lamp 2.0x
3,753,930(213.1%)
5.2(126.8%)
7.6M(205.4%)
0.732(+0.044)
0.391(+0.026)
0.00117s(188.7%)
Improve Lamp 2.5x
3,414,584(193.8%)
4.2(102.4%)
7.0M(189.2%)
0.721(+0.033)
0.377(+0.012)
0.00097s(156.5%)
Improve Lamp 3.0x
3,198,691(181.6%)
3.5(85.3%)
6.6M(178.4%)
0.7(+0.012)
0.357(-0.08)
0.00083s(133.9%)