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

剪枝

了解剪枝如何通过移除冗余参数来优化 Ultralytics YOLO26 等神经网络。探索边缘 AI 的结构化和非结构化方法。

剪枝是一种战略性的 模型优化 技术,通过移除不必要的参数来减小 神经网络 的大小和计算复杂度。就像园丁修剪枯死或过度生长的枝条以帮助树木茁壮成长一样,剪枝算法识别并消除对模型预测能力贡献甚微的冗余 weights and biases。主要目标是创建一个压缩的“稀疏”模型,在保持高 准确性 的同时,显著减少内存和能耗。这种缩减对于提高 推理延迟 至关重要,使得先进架构能够在移动电话和嵌入式设备等资源受限的硬件上高效运行。

机制与方法

现代 深度学习 模型通常是过参数化的,这意味着它们包含的连接远超解决特定任务所需。剪枝通过移除值接近零的连接来利用这一点,假设它们对输出的影响可以忽略不计。参数移除后,模型通常会经历一个 微调 过程,在此过程中,模型会进行短暂的重新训练,以调整剩余权重并恢复任何损失的性能。这一概念与 彩票假说 密切相关,该假说认为大型网络包含更小、高效的子网络,能够达到相似的准确性。

剪枝策略主要分为两类:

  • 非结构化剪枝: 这种方法根据权重的大小移除单个权重,而不考虑它们的位置。尽管它能有效减少总参数数量,但它会创建不规则的稀疏矩阵,标准CPUGPU在没有专用软件的情况下可能难以高效处理。
  • 结构化剪枝:这种方法移除整个几何结构,例如卷积神经网络 (CNN)中的神经元、通道或层。通过保留矩阵结构,结构化剪枝与标准硬件加速器高度兼容,通常能为实时推理带来即时加速。

实际应用

剪枝对于在各种硬件资源有限的行业中实现 边缘 AI 至关重要:

  1. 自动无人机:用于搜救的无人机依赖计算机视觉以导航复杂环境。剪枝后的目标检测模型使这些设备能够实时在本地处理视频流,避免了与云通信相关的延迟问题。
  2. 移动医疗:用于超声分析的手持医疗设备利用剪枝模型直接在设备上detect异常。这确保了患者数据隐私,并使得在没有互联网接入的偏远地区也能进行复杂的诊断。

实施实例

尽管像YOLO26这样的最先进模型旨在提高效率,但开发人员可以使用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 Platform。这简化了从数据集管理到以 ONNXTensorRT 等硬件友好格式导出模型的工作流程。

让我们一起共建AI的未来!

开启您的机器学习未来之旅