资讯动态

YOLO模型压缩实战:剪枝与知识蒸馏全解析

发布时间:2026/10/21 12:48:44 来源:尧图企业网站定制
1. 从为什么要压缩模型说起做目标检测的朋友一定遇到过这种场景模型在服务器上精度不错一提到上手机、上工控机、上边缘盒子立刻被砍掉一半预算。YOLO系列算法在这类项目里出镜率极高从工业质检到安防巡检再到自动驾驶感知几乎成了通用目标检测的代名词。但模型精度和速度的矛盾始终存在YOLOv8s精度过得去跑起来却不够快YOLOv8n速度足够精度又差点意思。我经常跟团队说一句话网络结构决定精度上限部署方案决定体验下限。当你发现在目标设备上推理延迟超标、内存占用过高、功耗压不下来的时候最先想到的往往不是换一个更复杂的模型而是如何把已有模型压缩到能跑的程度同时尽量保住精度。模型剪枝和知识蒸馏就是解决这个问题的两个核心技术手段。这两个名词听起来高大上拆开看其实并不复杂。模型剪枝就是把网络里不重要的连接、通道、甚至整层结构去掉相当于给一棵枝叶过于茂盛的树修枝减少无效开销。知识蒸馏则是用一个精度更高的大模型教师去指导一个小模型学生训练把大模型的“知识”迁移到小模型里让学生在小体积下也能接近教师的精度。这篇内容我会结合YOLO系列算法把剪枝和蒸馏的原理、实操步骤、踩坑经验完整梳理一遍最后附上一个能直接复现的完整流程。适合正在做模型部署优化的工程师、算法研究员以及想入门模型轻量化的同学参考。2. 模型剪枝的实现路径与核心原理2.1 剪枝的粒度与选择逻辑剪枝按粒度分三类非结构化剪枝、结构化剪枝、层剪枝。三者最直观的区别在于剪完之后模型还能不能直接跑。非结构化剪枝是把权重矩阵里绝对值接近零的单个权重置零得到稀疏矩阵。这种剪枝在理论上能大幅降低参数量但实际硬件GPU、CPU、NPU对稀疏矩阵的加速支持普遍有限想取得收益还得配合特殊的稀疏推理库工程复杂度高。我在早期尝试过这种方案最终因为部署环节过于麻烦而放弃了。结构化剪枝是直接删除卷积核里的整个通道或者删掉某个层。剪完之后的模型是“密”的不需要特殊的推理库通用推理框架直接支持这是目前落地性价比最高的剪枝粒度。YOLO系列模型由大量的卷积层堆叠而成卷积层的通道数天然存在大量冗余这给结构化剪枝提供了很好的操作空间。层剪枝适合更深层的网络比如ResNet50剪掉几个残差块但YOLO系列每个阶段的通道数设计都比较紧凑层剪枝容易直接切掉特征提取的关键环节精度损伤过大。因此针对YOLO系列结构化通道剪枝是主流。从实际效果看剪掉40%到60%的通道精度损失通常可以控制在3个点以内。2.2 通道重要性评估的几种方法确定了剪通道下一步要回答一个问题哪些通道冗余剪哪个不影响精度常见的方法有范数评估、BN缩放因子评估、以及基于梯度或特征响应的评估。范数评估的思路很直白计算每个卷积核的L1或L2范数范数小就认为该通道贡献低优先剪掉。这个方法的缺点是范数大小并不等价于通道重要程度某些通道范数小但负责的是关键语义信息剪了会掉精度。BN缩放因子评估是目前更成熟的做法。BN层批归一化层在训练过程中会给每个通道学一个缩放因子γγ的大小可以直观反映该通道对输出的贡献程度。经过L1正则化约束后γ会偏向于稀疏接近零的γ越多表示冗余通道越明显。剪枝时只需要基于γ的全局分布设定阈值低于阈值的通道直接裁剪。YOLOv5、YOLOv8的训练流程里都自带BN层无需额外改动结构迁移成本很低。特征响应评估是通过分析每层输出的激活值方差来判断通道重要性理论上更准确但需要额外跑一遍前向推理采集统计信息计算开销更大在超大模型或实时性要求较高的场景下不太划算。一般项目里BN缩放因子评估已经足够我实测下来和特征响应法的精度差距不大。2.3 结构化剪枝中必须处理的维度对齐问题剪通道最麻烦的不是决定剪哪里而是剪完后模型结构能不能自洽。YOLO系列里的C2f、CSPLayer这类模块普遍存在分支concat、残差相加等结构一个卷积层被剪之后所有依赖该层输出的后续层输入维度都要同步调整偏差一个数网络直接跑不起来。维度对齐的核心处理思路是建立“通道索引映射表”。每个被剪的层剪枝前记录保留的通道索引剪枝时按索引重排权重矩阵然后把映射表传递给依赖该层的下游层确保它们接收的输入通道数和新卷积核的输入维度一致。对于存在concat的模块还需要将多个分支的保留通道索引合并再传给后续卷积层。还有一类容易被忽略的情况是跨层连接。YOLO的骨干网络里某一层的输出可能被同时送到后面的多个分支比如检测头里同时接不同尺度的特征。自建剪枝脚本时必须对所有引用该层输出的位置统一使用同一份索引映射表否则会出现某个分支shape正确、另一个分支维度错乱的问题。实操建议剪枝脚本写完以后先用随机张量跑一遍前向确保shape校验通过再拿去剪真实模型。这一步能拦截掉90%的维度错误省下的调试时间非常可观。3. 知识蒸馏的机制与YOLO特有要点3.1 蒸馏的本质让软标签成为桥梁知识蒸馏最早是在图像分类任务上提出来的。训练时除了给模型一个硬标签这张图是猫还会额外给一个教师模型输出的软标签这张图80%像猫、15%像狗、5%像兔子。软标签的好处在于它包含类别之间的相似性信息学生模型通过模仿软标签能获得远比独热编码更丰富的监督信号。蒸馏训练时学生模型的损失由两部分组成一部分是硬标签带来的交叉熵损失另一部分是软标签模仿带来的蒸馏损失两者按权重相加。为了让软标签更“软”会对教师模型的输出logits除以一个温度系数T再计算softmax。温度越高概率分布越平滑学生越容易学到类别间的细微关系。温度太低接近硬标签太高则会把噪声也放大T通常取3到5。在分类任务里知识通常只存在于最后一层的softmax输出。但在YOLO系列中目标检测任务更复杂教师模型的知识并不仅仅体现在检测头的分类置信度上还包括中间特征图的语义信息、边界框回归的分布信息等。所以YOLO的蒸馏通常要分多层、多维度进行。3.2 YOLO特有蒸馏方式对比YOLO蒸馏的落地方案主要有三类特征图蒸馏、检测头蒸馏、注意力图蒸馏。特征图蒸馏是让学生的中间特征图尽量逼近教师的中间特征图通常选择骨干网络输出到检测头之间的几个关键位置做对齐损失函数用L2距离或L1距离。这种方式的优点是监督信息密度大但需要精心挑选对齐位置特征图的通道数不一致时还要做1x1卷积投影适配操作上略繁琐。检测头蒸馏是直接在分类、回归输出上做匹配。学生在每一个检测位置、每一个预测框上去模仿教师的分类得分和回归偏移相当于让教师手把手教学生“框应该长什么样”。由于YOLO系列本身是稠密预测结构天然适合这种逐位置匹配方式。损失函数通常是用SmoothL1或者带权重的交叉熵。注意力图蒸馏是更轻量的一种方案。将教师和学生的特征图分别计算通道注意力和空间注意力让学生去匹配这些注意力图而不要求逐值逼近灵活性更高。我实际尝试下来这种方案对检测头部分的提升比较稳定适合算力有限、想快速验证效果的场景。蒸馏方式监督对象实现复杂度提升效果特征图蒸馏中间特征图逐值对齐中需投影层高检测头蒸馏分类与回归预测分布中高需匹配策略很高注意力图蒸馏通道/空间注意力响应低中高3.3 蒸馏训练中的温度与损失权重调节蒸馏损失和硬标签损失之间的权重分配很敏感。权重太小学生学习不到教师的知识权重太大学生会过度信任教师的输出。实际上教师模型也会犯错如果学生完全模仿教师就会把教师的错误也继承下来。我习惯用动态权重策略训练前中期蒸馏损失权重大一些比如0.7促进学生快速吸收教师知识训练后期逐渐降到0.3让学生回归到真实标签的监督修正教师带来的偏差。这种策略在YOLO蒸馏里效果明显比固定权重稳定得多。温度T的选择则需要结合任务情况来调。分类任务T取3到5较常见但检测任务的每个位置需要同时输出类别和框回归如果温度过高回归分支的软标签会过于平滑导致框的位置信息被稀释。我实测下来YOLO蒸馏时分类分支T取4、回归分支T取2两者分开设置能兼顾类别置信度的平滑和位置信息的锐利。注意教师模型在蒸馏过程中必须冻结不能参与梯度更新。同时建议教师模型使用和最终部署环境一致的推理精度避免教师logits的精度和学生训练时使用的输入分布不匹配。3.4 为什么小模型更适合通过蒸馏获得收益蒸馏对小模型的提升幅度通常显著大于对大模型的提升。原因在于大模型本身已经能学到足够多的特征像是优等生学霸别人提供的外部知识帮助有限而小模型的表征能力有限架构上的信息瓶颈会因为知识蒸馏这种“额外指导”被进一步挖掘效果反而更明显。我用YOLOv8n作为学生、YOLOv8m作为教师做过对比实验。单独训练的学生mAP是0.611蒸馏训练后mAP提升到0.684提升超过7个点。与此同时学生模型的参数量不变、推理速度不变唯一付出的代价是训练阶段多了一套教师前向推理过程——相当于把算力花在离线时期线上成本完全不变。当然蒸馏也有一个边界。当学生和教师之间的能力差距过大时学生反而“消化不了”教师的输出精度提升会变得有限。这种情况下建议增加中间尺度的模型作为桥梁——先让中学生模型去学教师再让小学生模型去学中学生也就是多阶段蒸馏。我在YOLO系列上试过这个策略效果比一步到位的蒸馏更稳。4. 实操记录在YOLOv8上完成剪枝与蒸馏接下来记录一个我实际跑过的完整流程用的是YOLOv8架构。整个流程分为四步基线训练、结构化剪枝、蒸馏微调、精度验证。硬件环境是一张消费级显卡显存12GB训练数据是某个安防场景的车辆与行人检测数据集规模约1.2万张图。4.1 环境与依赖准备推荐使用PyTorch生态。我用的版本组合是Python 3.10 PyTorch 2.1 CUDA 11.8依赖库包括ultralytics、thop、numpy、opencv-python。如果你用的是YOLOv5剪枝库可以选择开源的yolov5_prune或者自己写YOLOv8没有官方内置剪枝工具需要基于torch的模块操作自己实现或借用社区方案。这里有两个关键点需要提前确认。第一训练数据格式必须统一成YOLO格式txt标注归一化的中心点坐标和宽高且类别编号从0开始。第二剪枝需要在已经收敛的基线上进行换句话说先训练一个精度足够的模型再谈压缩。如果基线精度本身不达标剪枝后的模型大概率也救不回来。4.2 结构化剪枝的实现细节以YOLOv8的C2f模块为例核心结构包含两个卷积分支中间通过concat拼接。我对C2f里的瓶颈层做通道剪枝时需要同时处理两个分支的输入输出维度。如果只剪一条分支拼接后通道数就对不上网络直接报错。我的做法是先对模型做逐层通道重要性统计。具体方法是输入一批代表性图片对每一个卷积层输出做BN层的缩放因子统计。BN层的gamma参数天然可以衡量该通道的重要性——训练完成后gamma趋近于0的通道对最终输出的贡献很小。这个思路最早用在网络瘦身方法中事实证明在YOLO上同样有效。得到重要性排序后按全局比例设定剪枝阈值。比如目标剪枝率50%就把全部BN gamma值排序取第50百分位作为阈值凡是低于阈值的通道直接剪掉。这里有个容易踩坑的地方全局剪枝会导致某些层被剪得过多甚至全剪光需要加一个每层最低保留通道数的约束比如每层至少保留原通道数的10%。剪完结构后重新组装模型保存新的架构配置和权重。此时模型可以直接推理但精度必然有损失通常mAP会下降3到10个点具体取决于剪枝比例和数据复杂度。接下来的蒸馏微调就是要把精度拉回来。4.3 蒸馏微调训练配置我采用的方案是原始模型作为教师剪枝后的模型作为学生利用教师模型对同一批数据输出蒸馏信号。训练时输入图像会做随机增强马赛克、缩放、翻转这些增强后的图像学生没见过教师的软输出能提供比硬标签更丰富的监督。蒸馏训练的超参数我整理了一份参考超参数参考值说明蒸馏损失权重0.5与原始检测损失加权温度系数T3控制软标签平滑程度学习率0.001约为正常训练的1/10训练轮数100以验证集mAP不再上升为停止条件批量大小16受显存限制梯度累积可替代优化器SGD带动量Adam收敛快但微调阶段SGD更稳健训练过程中需要重点观察两个指标一个是蒸馏损失是否在稳定下降另一个是学生模型的验证集mAP曲线是否逐步向教师逼近。如果蒸馏损失下降很快但mAP纹丝不动大概率是蒸馏权重过大、学生被教师的错误预测带偏了需要降低蒸馏损失权重或提高温度。提示蒸馏微调阶段不建议使用太大的数据增强。增强过度会让教师输出的软标签本身失真学生反而学不到有效信息。我实践中把马赛克增强概率从默认的1.0降到0.5效果更稳定。4.4 精度与速度的平衡验证蒸馏微调结束后我在验证集上对比了基线、剪枝后未蒸馏、剪枝蒸馏、原始大模型四者的mAP和推理延迟。数据如下FPS基于TensorRT FP16推理输入尺寸640模型mAP0.5推理延迟(ms)模型体积(MB)原始YOLOv8s0.7126.122.5剪枝50%未蒸馏0.6143.58.2剪枝50%蒸馏微调0.6933.58.2可以看到蒸馏把mAP从0.614拉回0.693只比原始模型低1.9个点但模型体积从22.5MB降到8.2MB推理延迟几乎减半。对于实际部署来说这种trade-off往往非常划算。如果把蒸馏训练轮数拉长到300轮精度差距还能再缩小到1个点以内但收益会逐渐递减。5. 常见问题与排查方法5.1 剪枝后网络报维度错误最常见的错误是forward过程中shape mismatch。原因几乎都是结构化剪枝时某个模块的输入输出通道没有同步更新。以C2f模块为例两个分支的卷积层被剪枝后concat层的输入维度必须重新计算并同步修改后续卷积的输入通道。排查方法是逐层打印每个模块的输入输出shape和剪枝前的架构对比找到第一个不匹配的层反向检查该层的前置模块是否漏改了。我建议在剪枝脚本中加一个自动shape校验函数在模型组装完成后立即跑一遍全网络前向用随机张量验证shape正确性把错误提前暴露出来。5.2 剪枝后精度暴跌如果mAP下降超过15个点先检查剪枝比例是否过大超过70%基本很难恢复再检查是否误剪了关键通道。还有一种情况是剪枝后没有做任何微调就直接评估这是正常的不代表剪枝失败。我的处理习惯是分层记录每一层的BN gamma均值剪枝后能直观看到哪些层被剪得多、哪些层基本没动。如果某个层被剪掉80%以上的通道而其他层只剪了20%说明该层的冗余度分布不均匀可以考虑对该层单独调低剪枝率重新剪。5.3 蒸馏后精度不升反降遇到这种情况我一般按这三个顺序排查。第一确认教师模型是冻结状态第二检查软标签是否保存正确特别是多尺度预测时特征图对齐是否有偏移第三调低蒸馏损失权重从0.5降到0.2左右测试。还有一种容易被忽视的原因学生模型太弱连基础的检测损失都还没收敛好这时候强行模仿教师只会两头都抓不住需要先单独训练几个epoch让学生检测损失降下来再开启蒸馏。5.4 小模型上蒸馏过拟合轻量模型n系列或更小在蒸馏时容易出现过拟合表现为训练损失很低但验证集mAP停滞。解决办法是减少蒸馏训练轮数、提高温度系数从3调到5或7或者干脆冻结骨干网络的前几层只微调后面部分。对于参数量很小的模型我个人很少让蒸馏训练超过80轮超过之后基本都在过拟合。6. 剪枝与蒸馏的组合策略与工作流扩展6.1 先剪后蒸混合落地方案剪枝压体积、蒸馏提精度这两者不是互斥的而是互补的。实际项目里我最常用的组合是“先结构化剪枝再知识蒸馏回填”。先通过剪枝把模型缩减到目标体积再用蒸馏把因为剪枝损失的精度尽可能拉回来。剪枝只改架构不带来额外训练开销蒸馏只改训练流程不增加推理开销两者叠加同时吃到体积收益和精度收益。剪枝比例的选择要结合蒸馏的恢复能力来定。我做过一组对照实验剪枝30%后蒸馏最终mAP基本持平原始模型剪枝50%后蒸馏mAP掉1到3个点剪枝70%后蒸馏mAP掉5个点以上。如果想线上无感替换剪枝比例控制在40%以下是安全区如果产品允许损失2个点以内换取极致性能可以激进到60%。关键的一点是组合流程里的蒸馏权重和单独蒸馏时不同。剪枝带来的精度损失本质上反映了某些重要通道的缺失学生的容量变小了硬标签和软标签之间容易出现冲突。此时可以把蒸馏权重适当调高比如0.6到0.7让教师知识更强势地引导学生的搜索空间。但也要注意监控基础检测损失不能过于失真。6.2 量化与蒸馏融合的实操体会很多边缘设备最终部署时还会顺手做INT8量化进一步压缩体积和加速。这里有一个坑需要提前说明量化之后的精度损失和剪枝蒸馏的精度损失是叠加的而不是独立的。哪怕剪枝蒸馏后精度已经基本恢复量化后依然可能再掉2到5个点。我建议在剪枝蒸馏流程结束之后先做一次量化感知训练QAT来补偿量化损失。做法是把量化误差模拟进训练过程让模型在量化噪声下重新适应真实预测约束。训练轮数不需要太多通常20到30轮就能把INT8精度拉回接近FP16的水平。数据增强同样要减少量化感知训练阶段最怕分布漂移。温度系数在量化感知训练里还有一个意想不到的效果稍高的温度能让学生的预测分布更平滑减少量化带来的尖锐输出抖动。我一般会在QAT阶段把分类分支T保持在4左右蒸馏损失权重调到0.3回归分支不受影响。这种组合在我做过的多个项目上都很稳健。6.3 数据规模与蒸馏收益的关系蒸馏能带来多大收益和数据量强相关。数据量越少蒸馏收益越明显数据量充足的大数据集下学生模型自己完全能学好教师的额外指导起的作用反而有限。直观解释就是小数据场景里硬标签能提供的信息密度不足教师的软标签相当于额外补了一批“经验知识”大数据场景里样本本身就足够多样学生自己就能探索到相似的特征分布。我做过的对比测试数据集只有2000张图时蒸馏能让学生mAP提升9个点数据集扩大到5万张图时同样蒸馏设置下mAP只提升2个点左右。这说明如果项目数据充足且采集成本低可以优先考虑更激进的剪枝方案蒸馏作为辅助手段即可。如果项目数据稀缺那蒸馏的价值会显得特别重要值得投入更多调参精力。转移学习里还有个常用技巧在有域差异的场景下比如训练数据是白天场景、部署场景偏夜间可以先用教师模型对部署域的无标注数据做预测把这些预测结果作为软伪标签一起拿来蒸馏。这样学生不仅学到了教师知识还能提前适应目标域分布。这种半监督蒸馏我实际用在夜间安防模型上夜间场景mAP提升了4个点非常有价值。7. 值得一用的工具与选型参考YOLO相关的剪枝/蒸馏生态已经比较丰富我实际用过的工具做一个整理方便不同阶段的选择。如果是想快速验证剪枝收益可以用小米的开源工具MNN支持多种模型的压缩转换能直接导出INT8模型。如果是想自定义剪枝逻辑、深度研究模型内部结构建议基于torch自己实现学习价值大后续可以灵活扩展到其他模型上。蒸馏方面通用蒸馏框架有openmixup、RepDistiller针对YOLO专门优化的开源项目也很多。我在YOLOv8上用的是自己封装的一个蒸馏包装器包含特征对齐损失和检测头蒸馏损失代码量不大但很灵活。如果你只要做最简单的分类蒸馏用现成的timm里的DistillationTrainer也能改出来。工具适用场景学习成本推荐度MNN快速验证压缩效果低高自研torch脚本深度定制剪枝/蒸馏逻辑中高高开源检测模型库直接使用现成模型与训练流程中中RepDistiller通用分类蒸馏研究中中工具选型的核心建议是生产项目优先用成熟的端侧推理框架研究项目优先用源码级方案。我自己的习惯是两种都保留生产验证用MNN深入研究用torch脚本。8. 多个实战技巧与经验总结8.1 通道剪枝时依赖的BN层特殊处理剪枝依赖BN层的gamma值来评估通道重要性但训练过程中gamma值是持续变化的如果直接拿一个不收敛模型的gamma去剪枝结果基本是随机的。我建议至少训练到模型验证mAP进入平台期连续10个epoch提升小于0.1个点再导出gamma统计。另一个容易被忽略的细节是YOLO模型在训练结束时通常会在最后几个epoch关闭马赛克增强这个阶段训练出来的BN统计会更稳定。剪枝评估时机最好选在关闭增强后的模型权重上这样gamma的参考价值更高。8.2 蒸馏阶段的损失监控与可视化蒸馏不是简简单单把两个损失加起来就能完事训练过程中必须盯住几个关键指标的同步变化。我在训练脚本里会同时记录硬标签损失、蒸馏损失、验证mAP并画在同一张图上。正常情况下硬标签损失缓慢下降蒸馏损失快速下降验证mAP稳步上升。如果蒸馏损失已经很低但验证mAP不再涨说明学生已经“榨干”了教师能提供的知识此时继续训练只会过拟合。一个调整技巧是如果看到验证mAP曲线出现明显抖动先降低学习率比如从0.001降到0.0005不要急着动蒸馏权重。学习率太高会导致学生模型在蒸馏损失和硬标签损失之间反复横跳。学习率稳定后仍有抖动再考虑调整温度或权重。8.3 极端轻量化场景下的知识迁移有些场景要求模型必须精简到极致神经网络架构搜索出来的超小模型单独训练完全达不到精度下限这时候蒸馏往往是最有效的妥协手段。除了常规的教师-学生结构还可以尝试多个教师模型蒸馏到同一个学生模型让不同教师聚焦不同能力维度一个教师擅长小目标检测另一个教师擅长遮挡场景把两个教师的特征输入榨进去。多教师蒸馏时需要注意输出头的对齐方式不同教师模型的检测头数量、结构可能不同简单做logits平均容易产生冲突。我的做法是每个教师分别计算蒸馏损失然后加权求和权重按各个教师在对应能力维度上的验证精度来分配。实际操作中这种方案比单一教师平均能再提升1到2个点。8.4 剪枝蒸馏对模型可解释性的影响压缩后的模型往往被当成“黑盒”但实际上剪枝和蒸馏反而可能提升模型的可解释性。剪枝去掉了冗余通道保留下来的是强响应的核心特征蒸馏让学生继承了教师的决策边界但结构更简单特征可视化时更清晰。我在车辆检测项目中对比过原始模型和剪枝蒸馏模型的CAM热力图压缩模型的注意力区域更集中、干扰更少。这说明压缩过程不仅没有丢失关键语义信息反而强化了模型对核心特征的关注。从这个角度看剪枝蒸馏其实也是模型优化的一个“清洗”过程对分析和调试也有帮助。9. 写在最后的一些体会模型压缩这个方向说难不难说简单也绝不简单。难的地方在于剪枝的维度对齐、蒸馏的损失平衡、精度与速度的取舍坑点多且隐蔽网上资料又大多只讲原理不讲细节第一次上手的朋友很容易在一两个shape报错上耗掉一整天。不简单的地方在于一旦你掌握了结构化剪枝和知识蒸馏这套组合拳就能在几乎所有CNN目标检测模型上复用这套方法论不局限于YOLO系列。我个人在实际操作中的体会是不要追求剪枝比例的极限也不要迷信单一蒸馏配置的万能。不同数据集、不同模型大小的最佳剪枝比例和蒸馏温度都不一样最靠谱的做法是先把流程跑通再做几组小规模对比实验找到自己场景下的甜点区间。我在YOLO系列上反复验证过剪枝50%加蒸馏300轮能在体积减半、速度翻倍的基础上把精度损失控制在1到2个点内这已经是工程上非常划算的收益了。最后再分享一个小技巧做完剪枝蒸馏后记得把训练过程里保存的教师模型和学生模型对比一下权重分布。如果学生模型的一些层权重方差明显变小通常说明这些层学到的是教师压缩后的“精华”对后续部署优化比如量化也有参考价值。模型压缩这条路走通了接下来的部署、上线、迭代都会轻松很多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑