了解剪枝如何通过移除冗余参数来优化 Ultralytics YOLO26 等神经网络。探索边缘 AI 的结构化和非结构化方法。
剪枝是一种战略性的 模型优化 技术,通过移除不必要的参数来减小 神经网络 的大小和计算复杂度。就像园丁修剪枯死或过度生长的枝条以帮助树木茁壮成长一样,剪枝算法识别并消除对模型预测能力贡献甚微的冗余 weights and biases。主要目标是创建一个压缩的“稀疏”模型,在保持高 准确性 的同时,显著减少内存和能耗。这种缩减对于提高 推理延迟 至关重要,使得先进架构能够在移动电话和嵌入式设备等资源受限的硬件上高效运行。
现代 深度学习 模型通常是过参数化的,这意味着它们包含的连接远超解决特定任务所需。剪枝通过移除值接近零的连接来利用这一点,假设它们对输出的影响可以忽略不计。参数移除后,模型通常会经历一个 微调 过程,在此过程中,模型会进行短暂的重新训练,以调整剩余权重并恢复任何损失的性能。这一概念与 彩票假说 密切相关,该假说认为大型网络包含更小、高效的子网络,能够达到相似的准确性。
剪枝策略主要分为两类:
剪枝对于在各种硬件资源有限的行业中实现 边缘 AI 至关重要:
尽管像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}%")
为了有效优化模型以进行 部署,区分剪枝与其他策略是有帮助的:
为了实现全面的生命周期管理,包括训练、标注和部署优化模型,用户可以利用 Ultralytics Platform。这简化了从数据集管理到以 ONNX 或 TensorRT 等硬件友好格式导出模型的工作流程。

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