MaochengHu 576cda45b8 first commit | 2 years ago | |
---|---|---|
.. | ||
distillation | 2 years ago | |
extensions | 2 years ago | |
nas | 2 years ago | |
prune | 2 years ago | |
quantization | 2 years ago | |
sensitive | 2 years ago | |
README.md | 2 years ago |
在PaddleDetection, 提供了基于PaddleSlim进行模型压缩的完整教程和实验结果。详细教程请参考:
下面给出压缩的benchmark实验结果。
pretrained_weights
外配置不变。YOLOv3模型主要剪裁yolo_head
部分,即剪裁参数如下。
--pruned_params="yolo_block.0.0.0.conv.weights,yolo_block.0.0.1.conv.weights,yolo_block.0.1.0.conv.weights,yolo_block.0.1.1.conv.weights,yolo_block.0.2.conv.weights,yolo_block.0.tip.conv.weights,yolo_block.1.0.0.conv.weights,yolo_block.1.0.1.conv.weights,yolo_block.1.1.0.conv.weights,yolo_block.1.1.1.conv.weights,yolo_block.1.2.conv.weights,yolo_block.1.tip.conv.weights,yolo_block.2.0.0.conv.weights,yolo_block.2.0.1.conv.weights,yolo_block.2.1.0.conv.weights,yolo_block.2.1.1.conv.weights,yolo_block.2.2.conv.weights,yolo_block.2.tip.conv.weights"
YOLOv3模型剪裁中剪裁策略r578
表示yolo_head
中三个输出分支一次使用0.5, 0.7, 0.8
的剪裁率剪裁,即剪裁率如下。
--pruned_ratios="0.5,0.5,0.5,0.5,0.5,0.5,0.7,0.7,0.7,0.7,0.7,0.7,0.8,0.8,0.8,0.8,0.8,0.8"
YOLOv3模型剪裁中剪裁策略sensity
表示yolo_head
中各参数剪裁率如下,该剪裁率为使用yolov3_mobilnet_v1
模型在COCO数据集上敏感度实验分析得出。
--pruned_ratios="0.1,0.2,0.2,0.2,0.2,0.1,0.2,0.3,0.3,0.3,0.2,0.1,0.3,0.4,0.4,0.4,0.4,0.3"
骨架网络 | 剪裁策略 | GFLOPs | 模型体积(MB) | 输入尺寸 | Box AP | 下载 |
---|---|---|---|---|---|---|
ResNet50-vd-dcn | baseline | 44.71 | 176.82 | 608 | 39.1 | 下载链接 |
ResNet50-vd-dcn | sensity | 37.53(-16.06%) | 149.49(-15.46%) | 608 | 39.8(+0.7) | 下载链接 |
ResNet50-vd-dcn | r578 | 29.98(-32.94%) | 112.08(-36.61%) | 608 | 38.3(-0.8) | 下载链接 |
MobileNetV1 | baseline | 20.64 | 94.60 | 608 | 29.3 | 下载链接 |
MobileNetV1 | baseline | 9.66 | 94.60 | 416 | 29.3 | 下载链接 |
MobileNetV1 | baseline | 5.72 | 94.60 | 320 | 27.1 | 下载链接 |
MobileNetV1 | sensity | 13.57(-34.27%) | 67.60(-28.54%) | 608 | 30.2(+0.9) | 下载链接 |
MobileNetV1 | sensity | 6.35(-34.27%) | 67.60(-28.54%) | 416 | 29.7(+0.4) | 下载链接 |
MobileNetV1 | sensity | 3.76(-34.27%) | 67.60(-28.54%) | 320 | 27.2(+0.1) | 下载链接 |
MobileNetV1 | r578 | 6.27(-69.64%) | 31.30(-66.90%) | 608 | 27.8(-1.5) | 下载链接 |
MobileNetV1 | r578 | 2.93(-69.64%) | 31.30(-66.90%) | 416 | 26.8(-2.5) | 下载链接 |
MobileNetV1 | r578 | 1.74(-69.64%) | 31.30(-66.90%) | 320 | 24.0(-3.1) | 下载链接 |
YOLOv3-MobileNetV1
提供了在608/416/320
三种不同尺寸下的精度结果sensity
剪裁策略下,YOLOv3-ResNet50-vd-dcn
和YOLOv3-MobileNetV1
分别减少了16.06%
和34.27%
的FLOPs,输入图像尺寸为608时精度分别提高0.7
和0.9
r578
剪裁策略下,YOLOv3-ResNet50-vd-dcn
和YOLOv3-MobileNetV1
分别减少了32.98%
和69.64%
的FLOPs,输入图像尺寸为608时精度分别降低0.8
和1.5
骨架网络 | 剪裁策略 | GFLOPs | 模型体积(MB) | 输入尺寸 | Box AP | 下载 |
---|---|---|---|---|---|---|
MobileNetV1 | baseline | 20.20 | 93.37 | 608 | 76.2 | 下载链接 |
MobileNetV1 | baseline | 9.46 | 93.37 | 416 | 76.7 | 下载链接 |
MobileNetV1 | baseline | 5.60 | 93.37 | 320 | 75.3 | 下载链接 |
MobileNetV1 | sensity | 13.22(-34.55%) | 66.53(-28.74%) | 608 | 78.4(+2.2) | 下载链接 |
MobileNetV1 | sensity | 6.19(-34.55%) | 66.53(-28.74%) | 416 | 78.7(+2.0) | 下载链接 |
MobileNetV1 | sensity | 3.66(-34.55%) | 66.53(-28.74%) | 320 | 76.1(+0.8) | 下载链接 |
MobileNetV1 | r578 | 6.15(-69.57%) | 30.81(-67.00%) | 608 | 77.6(+1.4) | 下载链接 |
MobileNetV1 | r578 | 2.88(-69.57%) | 30.81(-67.00%) | 416 | 77.7(+1.0) | 下载链接 |
MobileNetV1 | r578 | 1.70(-69.57%) | 30.81(-67.00%) | 320 | 75.5(+0.2) | 下载链接 |
YOLOv3-MobileNetV1
提供了在608/416/320
三种不同尺寸下的精度结果sensity
和r578
剪裁策略下,YOLOv3-MobileNetV1
分别减少了34.55%
和69.57%
的FLOPs,输入图像尺寸为608时精度分别提高2.2
和1.4
可通过高精度模型蒸馏通道剪裁后模型的方式,训练方法及相关示例见蒸馏通道剪裁模型。
COCO数据集上蒸馏通道剪裁模型库如下。
骨架网络 | 剪裁策略 | GFLOPs | 模型体积(MB) | 输入尺寸 | teacher模型 | Box AP | 下载 |
---|---|---|---|---|---|---|---|
ResNet50-vd-dcn | baseline | 44.71 | 176.82 | 608 | - | 39.1 | 下载链接 |
ResNet50-vd-dcn | r578 | 29.98(-32.94%) | 112.08(-36.61%) | 608 | YOLOv3-ResNet50-vd-dcn(39.1) | 39.7(+0.6) | 下载链接 |
MobileNetV1 | baseline | 20.64 | 94.60 | 608 | - | 29.3 | 下载链接 |
MobileNetV1 | baseline | 9.66 | 94.60 | 416 | - | 29.3 | 下载链接 |
MobileNetV1 | baseline | 5.72 | 94.60 | 320 | - | 27.1 | 下载链接 |
MobileNetV1 | r578 | 6.27(-69.64%) | 31.30(-66.90%) | 608 | YOLOv3-ResNet34(36.2) | 29.0(-0.3) | 下载链接 |
MobileNetV1 | r578 | 2.93(-69.64%) | 31.30(-66.90%) | 416 | YOLOv3-ResNet34(34.3) | 28.0(-1.3) | 下载链接 |
MobileNetV1 | r578 | 1.74(-69.64%) | 31.30(-66.90%) | 320 | YOLOv3-ResNet34(31.4) | 25.1(-2.0) | 下载链接 |
YOLOv3-MobileNetV1
提供了在608/416/320
三种不同尺寸下的精度结果r578
剪裁策略并使用YOLOv3-ResNet50-vd-dcn
作为teacher模型蒸馏,YOLOv3-ResNet50-vd-dcn
模型减少了32.94%
的FLOPs,输入图像尺寸为608时精度提高0.6
r578
剪裁策略并使用YOLOv3-ResNet34
作为teacher模型蒸馏下,YOLOv3-MobileNetV1
模型减少了69.64%
的FLOPs,输入图像尺寸为608时精度降低0.3
Pascal VOC数据集上蒸馏通道剪裁模型库如下。
骨架网络 | 剪裁策略 | GFLOPs | 模型体积(MB) | 输入尺寸 | teacher模型 | Box AP | 下载 |
---|---|---|---|---|---|---|---|
MobileNetV1 | baseline | 20.20 | 93.37 | 608 | - | 76.2 | 下载链接 |
MobileNetV1 | baseline | 9.46 | 93.37 | 416 | - | 76.7 | 下载链接 |
MobileNetV1 | baseline | 5.60 | 93.37 | 320 | - | 75.3 | 下载链接 |
MobileNetV1 | r578 | 6.15(-69.57%) | 30.81(-67.00%) | 608 | YOLOv3-ResNet34(82.6) | 78.8(+2.6) | 下载链接 |
MobileNetV1 | r578 | 2.88(-69.57%) | 30.81(-67.00%) | 416 | YOLOv3-ResNet34(81.9) | 78.7(+2.0) | 下载链接 |
MobileNetV1 | r578 | 1.70(-69.57%) | 30.81(-67.00%) | 320 | YOLOv3-ResNet34(80.1) | 76.3(+2.0) | 下载链接 |
YOLOv3-MobileNetV1
提供了在608/416/320
三种不同尺寸下的精度结果r578
剪裁策略并使用YOLOv3-ResNet34
作为teacher模型蒸馏下,YOLOv3-MobileNetV1
模型减少了69.57%
的FLOPs,输入图像尺寸为608时精度提高2.6
ms/images
arm8
架构并使用4线程(4 Threads)推理时延骨架网络 | 数据集 | 剪裁策略 | GFLOPs | 模型体积(MB) | 输入尺寸 | Tesla P4 | 麒麟970 | 高通835 | 高通855 |
---|---|---|---|---|---|---|---|---|---|
MobileNetV1 | VOC | baseline | 20.20 | 93.37 | 608 | 16.556 | 748.404 | 734.970 | 289.878 |
MobileNetV1 | VOC | baseline | 9.46 | 93.37 | 416 | 9.031 | 371.214 | 349.065 | 140.877 |
MobileNetV1 | VOC | baseline | 5.60 | 93.37 | 320 | 6.235 | 221.705 | 200.498 | 80.515 |
MobileNetV1 | VOC | r578 | 6.15(-69.57%) | 30.81(-67.00%) | 608 | 10.064(-39.21%) | 314.531(-57.97%) | 323.537(-55.98%) | 123.414(-57.43%) |
MobileNetV1 | VOC | r578 | 2.88(-69.57%) | 30.81(-67.00%) | 416 | 5.478(-39.34%) | 151.562(-59.17%) | 146.014(-58.17%) | 56.420(-59.95%) |
MobileNetV1 | VOC | r578 | 1.70(-69.57%) | 30.81(-67.00%) | 320 | 3.880(-37.77%) | 91.132(-58.90%) | 87.440(-56.39%) | 31.470(-60.91%) |
ResNet50-vd-dcn | COCO | baseline | 44.71 | 176.82 | 608 | 36.127 | - | - | - |
ResNet50-vd-dcn | COCO | sensity | 37.53(-16.06%) | 149.49(-15.46%) | 608 | 33.245(-7.98%) | - | - | - |
ResNet50-vd-dcn | COCO | r578 | 29.98(-32.94%) | 112.08(-36.61%) | 608 | 29.138(-19.35%) | - | - | - |
r578
剪裁策略下,YOLOv3-MobileNetV1
模型减少了69.57%
的FLOPs,输入图像尺寸为608时在单卡Tesla P4(TensorRT)推理时间减少39.21%
,在麒麟970/高通835/高通855上推理时延分别减少57.97%
, 55.98%
和57.43%
sensity
和r578
剪裁策略下,YOLOv3-ResNet50-vd-dcn
模型分别减少了16.06%
和32.94%
的FLOPs,输入图像尺寸为608时在单卡Tesla P4(TensorRT)推理时间分别减少7.98%
和19.35%
l2_distiil
为使用teacher模型和student模型特征图的L2损失作为蒸馏损失进行蒸馏,为slim/distillation/distill.py
的默认策略split_distiil
为使用YOLOv3细粒度损失进行蒸馏,通过-o use_fine_grained_loss=true
指定骨架网络 | 蒸馏策略 | 输入尺寸 | teacher模型 | Box AP | 下载 |
---|---|---|---|---|---|
MobileNetV1 | baseline | 608 | - | 29.3 | 下载链接 |
MobileNetV1 | baseline | 416 | - | 29.3 | 下载链接 |
MobileNetV1 | baseline | 320 | - | 27.1 | 下载链接 |
MobileNetV1 | split_distiil | 608 | YOLOv3-ResNet34(36.2) | 31.4(+2.1) | 下载链接 |
MobileNetV1 | split_distiil | 416 | YOLOv3-ResNet34(34.3) | 30.0(+0.7) | 下载链接 |
MobileNetV1 | split_distiil | 320 | YOLOv3-ResNet34(31.4) | 27.1(+0.0) | 下载链接 |
YOLOv3-MobileNetV1
提供了在608/416/320
三种不同尺寸下的精度结果YOLOv3-ResNet34
模型通过split_distiil
策略蒸馏下,输入图像尺寸为608时YOLOv3-MobileNetV1
模型精度提高2.1
骨架网络 | 蒸馏策略 | 输入尺寸 | teacher模型 | Box AP | 下载 |
---|---|---|---|---|---|
MobileNetV1 | baseline | 608 | - | 76.2 | 下载链接 |
MobileNetV1 | baseline | 416 | - | 76.7 | 下载链接 |
MobileNetV1 | baseline | 320 | - | 75.3 | 下载链接 |
MobileNetV1 | l2_distiil | 608 | YOLOv3-ResNet34(82.6) | 79.0(+2.8) | 下载链接 |
MobileNetV1 | l2_distiil | 416 | YOLOv3-ResNet34(81.9) | 78.2(+1.5) | 下载链接 |
MobileNetV1 | l2_distiil | 320 | YOLOv3-ResNet34(80.1) | 75.5(+0.2) | 下载链接 |
YOLOv3-MobileNetV1
提供了在608/416/320
三种不同尺寸下的精度结果YOLOv3-ResNet34
模型通过l2_distiil
策略蒸馏下,输入图像尺寸为608时YOLOv3-MobileNetV1
模型精度提高2.8
post
为使用离线量化得到的模型,aware
为在线量化训练得到的模型。骨架网络 | 预训练权重 | 量化策略 | 输入尺寸 | Box AP | 下载 |
---|---|---|---|---|---|
MobileNetV1 | ImageNet | baseline | 608 | 29.3 | 下载链接 |
MobileNetV1 | ImageNet | baseline | 416 | 29.3 | 下载链接 |
MobileNetV1 | ImageNet | baseline | 320 | 27.1 | 下载链接 |
MobileNetV1 | ImageNet | post | 608 | 27.9(-1.4) | 下载链接 |
MobileNetV1 | ImageNet | post | 416 | 28.0(-1.3) | 下载链接 |
MobileNetV1 | ImageNet | post | 320 | 26.0(-1.1) | 下载链接 |
MobileNetV1 | ImageNet | aware | 608 | 28.1(-1.2) | 下载链接 |
MobileNetV1 | ImageNet | aware | 416 | 28.2(-1.1) | 下载链接 |
MobileNetV1 | ImageNet | aware | 320 | 25.8(-1.3) | 下载链接 |
ResNet34 | ImageNet | baseline | 608 | 36.2 | 下载链接 |
ResNet34 | ImageNet | baseline | 416 | 34.3 | 下载链接 |
ResNet34 | ImageNet | baseline | 320 | 31.4 | 下载链接 |
ResNet34 | ImageNet | post | 608 | 35.7(-0.5) | 下载链接 |
ResNet34 | ImageNet | aware | 608 | 35.2(-1.1) | 下载链接 |
ResNet34 | ImageNet | aware | 416 | 33.3(-1.0) | 下载链接 |
ResNet34 | ImageNet | aware | 320 | 30.3(-1.1) | 下载链接 |
R50vd-dcn | object365 | baseline | 608 | 41.4 | 下载链接 |
R50vd-dcn | object365 | aware | 608 | 40.6(-0.8) | 下载链接 |
R50vd-dcn | object365 | aware | 416 | 37.5(-) | 下载链接 |
R50vd-dcn | object365 | aware | 320 | 34.1(-) | 下载链接 |
608/416/320
三种不同尺寸下的精度结果YOLOv3-MobileNetV1
使用离线(post)和在线(aware)两种量化方式,输入图像尺寸为608时精度分别降低1.4
和1.2
YOLOv3-ResNet34
使用离线(post)和在线(aware)两种量化方式,输入图像尺寸为608时精度分别降低0.5
和1.1
YOLOv3-R50vd-dcn
使用在线(aware)量化方式,输入图像尺寸为608时精度降低0.8
模型 | 量化策略 | 输入尺寸 | Easy Set | Medium Set | Hard Set | 下载 |
---|---|---|---|---|---|---|
BlazeFace | baseline | 640 | 91.5 | 89.2 | 79.7 | 下载链接 |
BlazeFace | post | 640 | 87.8(-3.7) | 85.1(-3.9) | 74.9(-4.8) | 下载链接 |
BlazeFace | aware | 640 | 90.5(-1.0) | 87.9(-1.3) | 77.6(-2.1) | 下载链接 |
BlazeFace-Lite | baseline | 640 | 90.9 | 88.5 | 78.1 | 下载链接 |
BlazeFace-Lite | post | 640 | 89.4(-1.5) | 86.7(-1.8) | 75.7(-2.4) | 下载链接 |
BlazeFace-Lite | aware | 640 | 89.7(-1.2) | 87.3(-1.2) | 77.0(-1.1) | 下载链接 |
BlazeFace-NAS | baseline | 640 | 83.7 | 80.7 | 65.8 | 下载链接 |
BlazeFace-NAS | post | 640 | 81.6(-2.1) | 78.3(-2.4) | 63.6(-2.2) | 下载链接 |
BlazeFace-NAS | aware | 640 | 83.1(-0.6) | 79.7(-1.0) | 64.2(-1.6) | 下载链接 |
BlazeFace
系列模型中在线(aware)量化性能明显优于离线(post)量化BlazeFace
模型使用在线(aware)量化方式,在Easy/Medium/Hard
数据集上精度分别降低1.0
, 1.3
和2.1
BlazeFace-Lite
模型使用在线(aware)量化方式,在Easy/Medium/Hard
数据集上精度分别降低1.2
, 1.2
和1.1
BlazeFace-NAS
模型使用在线(aware)量化方式,在Easy/Medium/Hard
数据集上精度分别降低0.6
, 1.0
和1.6