YOLOv8结构化剪枝综述

0 阅读2分钟

一、核心奠基论文(提出分阶段/分层剪枝思想)

分阶段混合策略

1. AMC: AutoML for Model Compression (2018)

首次提出每层可以有不同的剪枝率,使用强化学习自动搜索每层的最佳剪枝比例

# AMC的核心发现
不同层对剪枝的敏感度不同:
- 浅层:剪枝1% → 精度下降0.5%
- 深层:剪枝1% → 精度下降0.1%
→ 所以深层应该分配更高的剪枝率

[1802.03494] AMC: AutoML for Model Compression and Acceleration on Mobile Devices

2. NetAdapt: Platform-Aware Neural Network Adaptation (2018)

提出逐层自适应剪枝,每层根据对延迟的贡献动态调整剪枝率

# NetAdapt的逐层剪枝策略
for target_latency in [10ms, 8ms, 6ms, 5ms]:
    for layer in network:
        # 尝试剪枝该层,看哪个对延迟改善最大/精度损失最小
        best_layer = select_best_layer_to_prune()
        prune_layer(best_layer, ratio=adaptive_ratio)

[1804.03230] NetAdapt: Platform-Aware Neural Network Adaptation for Mobile Applications

二、针对检测网络的分阶段剪枝论文

3. Object Detection at 200 FPS: Towards Real-Time Detection (2019)

针对检测网络提出Backbone-Neck-Head三段式剪枝

three_stage_pruning = {
    'Backbone': 0.3,  # 特征提取层
    'Neck': 0.2,      # 特征融合层
    'Head': 0.1       # 检测头
}
# 发现Head对精度影响最大,需要最保守

4. NISP: Pruning Networks using Neuron Importance Score Propagation (2017)

提出重要性分数传播,考虑层间依赖的分阶段剪枝

# NISP的重要性传播
浅层的重要性 = f(深层的重要性)
# 所以浅层即使gamma小,如果它连接的重要深层多,也要保留

[1711.05908] NISP: Pruning Networks using Neuron Importance Score Propagation

三、YOLO系列剪枝的专门研究

5. Pruned-YOLO: Learning Efficient Object Detector Using Model Pruning (2021)

第一个系统研究YOLOv5剪枝的论文,提出分层敏感度分析

YOLOv5各层敏感度排序(从高到低):
1. Detect Head (最敏感)
2. Backbone浅层 
3. Neck4. Backbone深层 (最不敏感)

6. Model Compression Methods for YOLOv5: A Review (2023)

总结了YOLO系列的各种压缩方法,包括分阶段剪枝策略

survey_findings = {
    'stage1_backbone': '可以剪30-40%',
    'stage2_neck': '可以剪20-30%',
    'stage3_head': '只能剪10-15%',
    'final_compression': '整体约25-35%'
}

四、与YOLOv8最相关的论文

A Novel Compression Framework for YOLOv8: Achieving Real-Time Aerial Object Detection on Edge Devices via Structured Pruning and Channel-Wise Distillation

Graph-Guided Channel Pruning for Lightweight YOLOv8: Optimizing Depthwise Separable Convolutions for UAV Real-Time Detection

五、综述类论文

A Comprehensive Review of YOLO Architectures in Computer Vision: From YOLOv1 to YOLOv8 and YOLO-NAS(2024)

# 综述中总结的YOLOv8剪枝方法分类
yolov8_pruning_methods = {
    '1. 通道剪枝': [
        'Network Slimming (基于BN gamma)',
        'DepGraph (基于依赖图)',
        'HRank (基于特征图秩)'
    ],
    '2. 层剪枝': [
        'LayerDrop',
        'Structured Layer Pruning'
    ],
    '3. 模块级剪枝': [
        'C2f模块剪枝',
        'SPPF模块剪枝',
        'Detect头剪枝'
    ],
    '4. 混合粒度剪枝': [
        '通道+层混合',
        '自动化剪枝'
    ]
}

A survey of model compression strategies for object detection