深圳Yolo 视觉
深圳
立即加入
词汇表

剪枝

了解修剪如何通过移除冗余参数来优化神经网络(Ultralytics )。探索适用于边缘AI的结构化与非结构化方法。

修剪是一种策略性 模型优化技术 通过移除冗余参数 来缩减神经网络的规模与计算复杂度。正如园丁修剪枯枝或过密枝条以促进树木生长,修剪算法能识别并消除 冗余权重与偏置项 weights and biases ——这些权重和偏置对模型预测能力贡献甚微。其核心目标是构建压缩后的"稀疏"模型,在保持高精度的同时显著降低内存与能耗。这种精简对提升推理延迟至关重要,使先进架构能在手机、嵌入式设备等资源受限的硬件上高效运行。

机制与方法论

现代深度学习模型往往存在过度参数化现象,即其包含的连接数量远超解决特定任务所需。剪枝技术正是利用这一特性,通过移除接近零值的连接来优化模型——其假设是这些连接对输出结果的影响微乎其微。 参数移除后,模型通常会经历微调过程——通过短暂重新训练来调整剩余权重,并恢复因参数削减导致的性能损失。该概念与彩票票假说密切相关,该假说认为大型网络中存在小型高效子网络,其准确率可与整体网络媲美。

修剪策略主要分为两大类:

  • 非结构化修剪:该方法根据权重数值大小移除单个权重,而不考虑其位置。虽然它能有效减少总参数数量,但会生成不规则的稀疏矩阵, 标准CPU 和GPU在没有专用软件的情况下可能难以高效处理。
  • 结构化剪枝:该方法通过移除卷积神经网络(CNN)中的完整几何结构(如神经元、通道或层级)实现优化。通过保留矩阵结构,结构化剪枝与标准硬件加速器高度兼容,通常能为实时推理带来显著加速效果。

实际应用

在硬件资源受限的各行各业中, 修剪技术对实现边缘人工智能至关重要:

  1. 自主无人机:用于搜救的无人飞行器依赖计算机视觉技术在复杂环境中导航。经过修剪的物体检测模型使这些设备能够实时本地处理视频流,从而规避云通信相关的延迟问题。
  2. 移动医疗:便携式超声分析医疗设备采用剪枝模型,可在设备端直接detect 。这既保障了患者数据隐私,又使偏远地区无需网络连接也能实现精密诊断。

实施实例

尽管YOLO26等尖端模型在设计时已注重效率,开发者仍可通过修剪技术进一步优化层结构,例如使用PyTorch等库实现。 PyTorch。下例演示了如何对卷积层应用 非结构化剪枝。

import torch
import torch.nn.utils.prune as prune

# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3)

# Apply L1 unstructured pruning to remove 30% of weights with the lowest magnitude
prune.l1_unstructured(layer, name="weight", amount=0.3)

# Verify sparsity (percentage of zero parameters)
sparsity = 100.0 * float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Sparsity achieved: {sparsity:.2f}%")

剪枝与相关优化技术

要有效优化模型以实现部署,区分剪枝与其他策略很有帮助:

  • 模型量化:与通过剪枝移除连接不同,量化技术通过降低权重精度(例如将32位浮点数转换为8位整数)来优化模型。这两种技术可协同使用,以在嵌入式系统上实现最高效率。
  • 知识蒸馏:该方法通过训练较小的"学生"模型来模仿较大"教师"模型的行为。 剪枝技术直接修改原始模型,而蒸馏技术则训练出新的紧凑架构。

要实现全面的生命周期管理,包括训练、标注和部署优化模型,用户可借助Ultralytics 。该平台简化了从数据集管理到以硬件友好格式(如ONNX)导出模型的工作流程。 ONNXTensorRT等硬件友好格式。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入