一、核心奠基论文(提出分阶段/分层剪枝思想)
分阶段混合策略:
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. Neck层
4. 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. 混合粒度剪枝': [
'通道+层混合',
'自动化剪枝'
]
}