模型轻量化与高效部署实战:剪枝、量化、蒸馏全流程解析

写周报这件事,我不知不觉坚持到了第三十九期。从最开始记录一些基础论文的阅读笔记,到后来逐渐转向实验复现、工程踩坑、性能调优,这三十几周的内容基本就是我一个人从入门到能独立做一些模型落地工作的完整轨迹。这一期我不想写那种罗列了一堆论文标题的流水账,我想认真聊聊一个相对朴素但非常关键的问题:一个在实验环境里跑得不错的模型,到底要经过哪些折腾,才能真正落到产线设备上,跑得又快又稳还不出幺蛾子。这一期的主题就定为模型轻量化与高效部署实战,内容会包含完整的方案选型、实操记录、性能对比,以及这一周里我踩过的几个坑。

如果你正在做算法落地,或者手头有个模型因为体积太大、推理太慢被业务方反复打回,这篇周报应该能给你一些能直接抄作业的参考。本期所有实验都基于一个自建的小型视觉检测任务,场景不算复杂,但涉及的问题非常典型:模型太大、算力受限、环境苛刻,每一步都需要做取舍。

1. 本期主线:模型轻量化到底在解决什么问题

1.1 场景背景与约束条件

这周接到的需求是这样:产线上有一个外观检测点位,原来靠人工目检,现在想换成一个边缘盒子做实时自动检测。设备的规格很明确——没有独立显卡,CPU是四核的嵌入式平台,内存一共2GB,系统是裁剪过的Linux发行版。检测目标不算难,几类常见的表面缺陷,背景相对固定,光照变化也不剧烈。业务方给的关键指标只有三个:单帧推理耗时必须控制在50毫秒以内,模型文件不超过20MB,检测精度不能低于90%。

听起来指标不算苛刻,但我实际去跑才发现,组里之前那个已经训好的模型,本质上是拿深度残差网络当骨干做特征提取,加上一层特征融合结构,光权重文件就有42MB,参数量约1100万。在目标设备上实测单帧推理耗时120毫秒,GPU上用完全没问题,搬到这块板子上直接超了两倍多。如果只是做几个小改动,比如换输入分辨率,或者改一下后处理,顶多把120毫秒压到90毫秒左右,还是不达标。这种情况唯一的出路就是对模型本身动刀子——做压缩和加速,也就是所谓的模型轻量化。

1.2 三条主流技术路线的原理对比

面对模型体积大、算力需求高的问题,业界常见的思路无非三条:剪枝、量化、知识蒸馏。这三条路各管一段,但很多人容易搞混,我先把原理理顺。

剪枝做的事情是“拆结构”。模型里很多通道和权重对最终输出的贡献其实很小,训练完之后这些冗余几乎不会影响精度。剪枝就是把不重要的连接或者整个卷积核通道删掉,让网络变窄。这样计算量直接下降,模型体积也同步缩小。核心难点在于怎么判断一个通道“不重要”,以及剪完之后怎么恢复精度。

量化做的事情是“降精度”。模型训练和推理时默认用32位浮点数表示权重和激活值,但实际很多场景用8位整数就够了。把32位降到8位,模型体积直接缩到四分之一,推理时因为可以用整数运算,在支持相应指令集的CPU上速度提升非常明显。代价是数值精度损失,某些敏感层可能掉点严重,需要针对性处理。

知识蒸馏做的事情是“换骨干”。用一个又大又准的模型当老师,教一个小而快的模型当学生,让小模型去模仿大模型的输出分布,而不只是学习硬标签。这等于绕过结构搜索的麻烦,直接借老师的“经验”把小模型的精度往上拉。蒸馏不能直接减少计算量,但它能让你放心地换一个更小的网络结构,属于“间接压缩”。

三条路线不互斥,实际工程里通常是组合使用。我这次就是先剪枝,再量化,最后用蒸馏把精度拉回来,形成一套完整的处理流水线。

1.3 为什么这次要组合使用而不是单点突破

单用剪枝的话,虽然能把计算量压下来,但模型体积缩不到20MB以下。单用量化的话,体积能达标,但原来120毫秒的推理耗时主要在卷积层的计算上,量化对卷积算子密集的场景帮助有限,速度未必能腰斩。单用蒸馏的话就更不够了,它根本不直接改结构。

所以我的策略是分步走:第一步用结构化剪枝把卷积通道数量降下来,目标是把计算量从3.8GFLOPs压到1.2GFLOPs左右;第二步用后训练量化把权重从FP32压到INT8,把42MB的文件压到十几MB;第三步如果精度低于90%,就用知识蒸馏做一次“修复”,让压缩后的模型再跟原始大模型学一段。这个思路比较稳妥,每一步的效果都能单独量化评估,出问题时也好定位。

2. 实操过程:剪枝、量化、蒸馏的完整流水线

2.1 先从性能剖析开始,别急着动手

我之前在组里带过几个新人,发现一个普遍毛病:拿到慢模型第一反应就是上网搜“怎么加速”,然后乱调一气,最后也不知道是哪个改动起了作用。这周我自己动手前先做了一个标准动作——性能剖析。

我用了常见的性能分析工具跑了一遍原始模型在目标设备上的推理过程,按层统计耗时和访存量。结果非常清晰:模型里有大量卷积层,前几层分辨率高的卷积耗时尤其突出,整个推理过程中卷积操作约占总耗时的78%。这说明计算瓶颈集中在卷积算子,而不是全连接层,也不是数据预处理或后处理。因此剪枝的重点应该放在卷积层的通道数上,尤其是输入分辨率大的浅层,而不是平均用力。

这一步很多人会跳过,但我建议无论如何都要做。因为它直接决定你后续的优化方向,省下的时间远超剖析本身花掉的那一点点。

2.2 结构化剪枝:基于BN层稀疏化重新训练

确定方向后我开始做剪枝。我采用的是业界比较成熟的结构化剪枝方案——利用批归一化层的缩放因子作为通道重要性指标。基本原理是:BN层在训练时会学到每个通道的缩放系数,如果某个通道对应的缩放因子趋近于零,说明这个通道的输出几乎没有变化,对后续层的影响很小,这样的通道可以安全剪掉。

为了把更多通道的缩放因子往零推,我需要在正常训练loss之外加一个稀疏化惩罚项,公式是:

L = L_ce + λ * Σ|γ|

其中λ控制惩罚强度,γ就是BN层缩放因子。我实践中把λ设为1e-4,先用原有训练数据继续训练了20个epoch,让缩放因子分布逐步变得稀疏。这里有一个经验参数:λ太大会把模型精度直接搞崩,太小又压不出足够的稀疏度,我建议从1e-5开始尝试,每次翻10倍,观察缩放因子分布的变化,找到合适量级。

训练完成后,我开始统计所有BN层缩放因子的分布。我设定的目标是把通道数保留为原来的70%,也就是剪掉30%。方法不复杂:把所有缩放因子排序,取30%分位数作为阈值,低于阈值的通道删掉。关键是处理好残差连接——如果某条捷径分支的通道数和主分支对不上,会直接导致维度错误。我在代码里专门对残差结构做了对齐处理,保留同一残差块的输出通道一致性。剪完结构后我把模型保存下来,做了一次单独评估。精度从91.2%掉到了89.8%,符合预期。然后我用较小的学习率继续微调了30个epoch,精度回升到90.6%,虽然还没到位,但已经足够支撑后面继续压缩了。

2.3 后训练量化:PTQ才是工程首选

剪枝之后模型小了一圈,接下来处理体积问题。这里我选择的是后训练量化,而不是量化感知训练。原因很简单:后训练量化不需要重新训练模型,只需要准备少量校准数据,在推理引擎里跑一下统计数据分布,就能算出每层的量化参数。量化感知训练虽然精度通常更好,但需要改训练代码,还得重新训一轮,周期太长。对于已有模型的小步优化,PTQ往往是性价比最高的起点。

具体操作上,我用了对称量化和非对称量化做对比。针对我的模型,Conv层用per-tensor的对称量化,激活值用per-channel的不对称量化,整体效果最稳。校准数据集我从训练集里抽了500张有代表性的图片——注意这里一定要覆盖各种光照、角度和缺陷形态,不能只挑清晰的。如果校准集太单一,量化参数会偏向某一种分布,推理时就可能在真实数据上掉点。

量化完结果如下表:

方案体积单帧耗时精度
原始模型42MB120ms91.2%
剪枝后26MB68ms90.6%
剪枝+量化13MB33ms90.2%
剪枝+量化+蒸馏13MB28ms91.0%

你看,到“剪枝+量化”这一步,体积和速度都已经达标了,但精度还差一点点。如果业务方对精度要求不高,其实到这一步就可以收工。但我这次指标压着90%的线,90.2%太悬,所以决定再上一个蒸馏来兜底。

2.4 知识蒸馏:让大模型当老师,小模型当学生

蒸馏这一步,我没有重新训练一个学生网络,而是把剪枝量化后的模型本身当作学生,让原始大模型当老师。这里有一个容易忽略的前提:老师模型的输出要先做softmax温度缩放,而不是直接用概率分布。温度系数设为3,目的是让类别分布更平滑,小模型能学到类别之间的相似关系,而不是只盯着答案本身。

损失函数我用的是硬标签交叉熵和软标签KL散度的加权和:

L = α * CE(y_hard, p_student) + (1-α) * KL(softmax(logits_teacher / T), softmax(logits_student / T))

α我设为0.7,T设为3。训练时冻结老师模型,只更新学生模型,学习率设成正常训练的十分之一。总共训练了20个epoch,精度最终恢复到91.0%,比原始模型只低了0.2个百分点,算是非常理想的结果。

有一个细节我想单独提出来:蒸馏使用的是老师模型的纯logits,而不是推理引擎里量化后的输出。一开始我把老师也走了量化通道,结果软标签里夹杂了量化噪声,学生学得很别扭,精度反而下滑。改成用FP32的老师模型输出后,问题立刻消失。这个坑不算深,但很容易掉进去,值得标记一下。

3. 部署环节的工程细节:从PyTorch到边缘设备

3.1 模型导出与算子兼容性检查

模型调好之后,接下来的重头戏是把它导出并部署到目标设备上。我这里使用的流程是:先把PyTorch训练好的模型转成开放神经网络交换格式(ONNX),再用推理引擎做加载和优化。

导出这一步最需要注意的是动态维度设置。我的输入尺寸固定是320×320,不需要动态宽高,所以直接把动态轴关掉,这样后续推理引擎能做更多的静态优化。如果你需要支持任意分辨率输入,就得设置动态轴并接受一部分性能损失,这是个需要实际权衡的取舍。

导出后我顺手跑了一遍官方提供的算子兼容性检查工具,结果发现模型里有一个自定义的前处理算子不被推理引擎支持。这类问题非常常见,尤其是模型里有一些自己写的网络层时。解决方案不复杂:把这个算子的逻辑搬到CPU端,用Python或C++实现,模型里只保留标准卷积和激活算子。对前处理这种几乎不耗时的操作来说,搬到外部执行完全不影响性能。

3.2 推理引擎选型与线程参数配置

部署时我对比了手头两个候选推理引擎:一个是跨平台的开源运行时(下文简称运行时R),另一个是面向特定硬件做深度优化的商业引擎(引擎E)。在目标设备上实测,引擎E在INT8模型上能跑到28毫秒单帧,运行时R大约在35毫秒。说实话这个差距不算大,但引擎E多出来的优势主要集中在对特殊指令集的深度优化上。

这里我要多说一句:不要盲目追求所谓“性能最强”的引擎,还要考虑维护成本、部署体积、硬件适配范围。引擎E虽然快,但授权和平台绑定的限制比较死。如果后续要换硬件平台,代码改动量会大一些。运行时R胜在跨平台、完全开源,遇到问题社区里资料也多。最终我选择以运行时R为主,引擎E作为备选方案。

线程数配置上,最稳妥的做法是跑一个简单的线程扫描脚本:分别用1到8个线程测试推理延迟,画一条曲线找拐点。我实测下来4线程最优,线程数再往上加延迟几乎不变,反而因为系统调度开销导致偶尔出现尖刺。同时我把CPU亲和性设置为只绑定前四个物理核,避免推理任务在核心之间频繁切换,实测延迟稳定性有明显改善。

3.3 推理管线整体性能实测

为了确保单帧50毫秒的指标不是侥幸达标,我做了一个带真实数据输入的连续推理测试,模拟产线相机一秒拍10张图的实际频率。测试持续跑了一个小时,统计了每一帧的端到端耗时。最终平均耗时28毫秒,P99耗时32毫秒,没有出现超过40毫秒的帧。这个结果说明系统有充足余量,即使相机帧率偶尔提高或者CPU被其他进程抢占一部分,也不会直接导致超时。

除了延迟,我也监控了内存占用。模型本身13MB,推理引擎运行时的固定分配加上临时缓冲,峰值内存约320MB,离2GB的上限还有很大空间。稳定性方面我跑了72小时的压力测试,没有出现内存泄漏或崩溃。

4. 本周踩坑复盘:几个容易让人彻夜难眠的问题

4.1 剪枝后残差连接维度对不上

第一次跑剪枝脚本时,我剪到一半就报错,提示拼接时维度不匹配。当时我以为只是稀疏化训练没到位,后来逐层排查才发现是个很基础的认知问题:剪枝不只是删通道,还要同步调整后续所有依赖这个通道数的层。尤其是残差结构里的捷径分支,它的输出必须和主分支保持完全一致的通道数。如果只剪主分支不剪捷径,维度必然冲突。解决办法是把残差块内所有卷积层的剪枝索引做对齐,或者更简单——剪枝前先找出所有需要同步裁剪的层组,统一生成一份裁剪掩码,再按掩码逐层剪。

4.2 量化校准集太少的灾难性后果

一开始我图省事,从验证集里抽了100张图做量化校准,结果量化后的模型在真实测试集上精度直接掉了3个百分点,连86%都不到,我当时第一反应是量化方案有问题。后来仔细对比才发现,100张图里包含的缺陷类别不均匀,有几类缺陷一张都没出现,量化参数根本没有统计到那部分的激活值分布。校准集扩大到500张并做了类别均衡之后,精度损失降到了0.2个百分点。这个事让我长了个记性:量化校准不是过流程,数据分布不贴近真实场景,后面所有指标都会失真。

4.3 动态shape导致引擎端推理报错

导出模型时我偷懒没有关闭动态轴,结果在推理引擎里跑单帧没有任何问题,一旦把batch调成4就报错,提示某个算子的输入维度不合法。查了半天发现是动态维度在引擎优化时没法确定最优内存布局。最后的解决办法很简单:模型输入固定为单batch,动态轴全部关掉。代价是没法多帧并行推理,但我们的场景本身就是单路视频流,完全没有影响。

4.4 常见问题速查表

我把这一周遇到的其他小问题也整理成了一个表格,方便后面遇到类似情况快速定位:

问题现象根本原因处理方式
剪枝后推理结果全错shortcut通道未对齐使用统一的剪枝掩码,同步裁剪依赖层
PTQ后精度大幅下降校准集数量不足或分布偏斜扩大校准集并做类别均衡
引擎端动态shape报错动态轴导致内存布局不确定固定batch并关闭动态轴
自定义算子无法加载引擎不支持该算子将算子逻辑移到CPU端实现
蒸馏后精度不升反降老师模型混入了量化噪声使用FP32原始模型的logits做监督
帧延迟偶发尖刺线程绑定不充分,频繁迁移设置CPU亲和性和核心绑定

这些坑单看都不算复杂,但它们恰恰是部署过程中最消耗时间的部分。我建议每位准备做模型部署的同学,提前想清楚算子兼容性和数据分布这两件事,至少能少加一半的班。

5. 本周阅读推荐与信息流摘要

5.1 值得精读的两篇论文

这周虽然以实践为主,我还是抽空看了两篇和模型压缩相关的新文章,都很值得推荐。第一篇讨论的是自适应剪枝的新思路,核心观点是不再用一个全局阈值来删通道,而是让网络在训练过程中自己学出一种“剪辑策略”,每个样本可以动态跳过部分通道。和传统的静态剪枝相比,这种方法在推理时可以按输入难度调节计算量,简单样本甚至能跳过将近一半的卷积计算,而我这次用的静态阈值方案显然做不到这一点。如果后续场景里输入复杂度差异比较明显,我会认真考虑迁移这个方案。

第二篇是量化感知训练方面的改进研究。传统做法是让模型在训练时就模拟量化的舍入误差,这篇文章提出的方法核心是逐步从高精度过渡到低精度,让模型有一个“适应期”,而不是一步到位直接切到INT8。实验结果显示,在较大模型上的精度保持能力比现有方案强不少。虽然我这次的PTQ已经够用,但如果下次遇到一个对精度特别敏感、掉点完全不可接受的任务,这条路值得走。

5.2 一个复现笔记:轻量检测器在ARM平台上的优化

本周还花了一点时间复现了一个轻量级检测器在ARM平台上的优化案例。这个项目跟我做的场景很类似,也是视觉检测,但是跑在更低功耗的ARM开发板上。它让我看到一套完整的优化链路:模型选型时直接用MobileNetV3作为骨干,推理引擎选用带硬件加速的运行时,同时把图像预处理全部换成NEON向量化指令实现。

我复现后的结果是:输入224×224单帧推理耗时22毫秒,精度和原来大模型的差距在可接受范围内。这个结果说明,如果项目允许从头选择模型结构,直接选择一个轻量化骨干网络往往比做大模型再压缩更划算。道理很简单,从设计层面就已经为端侧环境考虑好了,省去后面大量补救工作。但现实情况往往是我们已有的模型已经训完,这时候再推倒重来时间成本太高,所以剪枝、量化和蒸馏这套组合方案依然是我认为最稳妥的解法。

6. 本周复盘:关于轻量化我个人的几点体会

连续做了两周的模型压缩和部署,我最大的感受是:轻量化从来不是某一个算法的功劳,而是一个围绕场景约束做系统权衡的过程。剪枝解决计算量,量化解决体积和访存量,蒸馏修正精度损失,推理引擎的配置决定最终能跑出多少性能——每一步都在为下一步铺路,任何一个环节偷懒,最终结果都会打折扣。

我最想给的建议是:动手之前,先花半天做性能剖析。搞清楚模型到底慢在哪、胖在哪,再决定用哪一招。绝大多数人上来就量化的习惯其实是有风险的,如果瓶颈是卷积计算本身,量化不一定能帮你达到延迟目标,反而可能白白损失0.5个点精度。

另外,校准数据这件事怎么强调都不为过。我这次的精度问题最后能解决,靠的不是更高级的算法,而是老老实实多抽了500张图,把分布弄均匀。工程里很多“玄学问题”,追根溯源都是数据分布没拿捏住。

这周的内容基本就是这样。下周我计划继续沿着这个方向深挖两个点:一是量化参数的硬件亲和性,也就是不同芯片对量化格式的支持差异到底怎么影响性能;二是蒸馏时教师logits标准化处理的改进方案。希望这篇周报对你手头的部署任务有一点点帮助。

相关新闻

从零开发网页版“大鱼吃小鱼”:玩法、AI与性能优化实战

从零开发网页版“大鱼吃小鱼”:玩法、AI与性能优化实战

如果你小时候在网页上玩过“大鱼吃小鱼”,应该还记得那种既紧张又爽快的体验:拼命寻找比自己小的鱼,又时不时瞥见一条大一圈的家伙缓缓游来,手心冒汗。这个经典玩法放到今天依然不过时,它天然具备快速反馈和成长快感&a…

2026/10/20 2:50:44 阅读更多 →
图片转Excel全流程拆解:OCR批量处理与表格结构还原实战

图片转Excel全流程拆解:OCR批量处理与表格结构还原实战

图片转Excel,真的能去掉“手敲键盘”的命吗?干了这么多年数据处理,我电脑里几乎每天都有人发来这种玩意儿:一张表格照片、一份截图、甚至是一整页扫描件,然后附一句——“帮我把这个弄成Excel呗”。搁几年前&#xff0…

2026/10/20 2:50:44 阅读更多 →
SpeedTree 10 + Nanite 植被工作流:告别纸片树冠,实现透射与季相重构

SpeedTree 10 + Nanite 植被工作流:告别纸片树冠,实现透射与季相重构

做场景美术这些年,每次听到“这棵树的树冠跟纸片似的”,心里都咯噔一下。传统游戏植被的做法大家心知肚明:树冠就是几张交叉的面片加Alpha Test贴图,远远近近的LOD一级比一级“扁”,最后几乎只能看到一个剪影。逆光的时…

2026/10/20 2:49:43 阅读更多 →

最新新闻

本地推理实战:用llama.cpp与ollama部署LFM2.5-1.2B小模型

本地推理实战:用llama.cpp与ollama部署LFM2.5-1.2B小模型

1. 上手前的心里话:为什么大家都盯着小模型本地推理最近圈子里聊本地大模型,基本绕不开两个东西:llama.cpp 和 ollama。而我这段时间一直在折腾的主角,是 LFM2.5-1.2B 这个模型。别看它只有 1.2B 参数,实测下来每秒能跑…

2026/10/20 3:51:14 阅读更多 →
CPU推理LFM2.5-1.2B:llama.cpp与ollama的15token/s实战

CPU推理LFM2.5-1.2B:llama.cpp与ollama的15token/s实战

). To avoid truncated thinking or repeated loops, set appropriate stop sequences; generate_enough tokens because thinking consumes budget; temperature lower (0.6-0.7); maybe set--no-cnv? Simpler: stop attags if present; handle "过度思考" issue b…

2026/10/20 3:51:14 阅读更多 →
PyTorch 2.1神经网络构建核心:计算图、编译与内存控制

PyTorch 2.1神经网络构建核心:计算图、编译与内存控制

1. 这不是“Hello World”式教学:为什么从PyTorch 2.1开始构建神经网络,必须绕开90%初学者踩过的坑你点进来的这个标题——“【PyTorch】2.1 使用Pytorch构建一个神经网络”——看起来平平无奇,甚至有点过时。毕竟PyTorch都出到2.3了&#xf…

2026/10/20 3:51:14 阅读更多 →
LiteLLM实战:统一大模型网关的部署与路由策略

LiteLLM实战:统一大模型网关的部署与路由策略

1. 项目概述:LiteLLM 到底是什么,凭什么值得关注干了这些年大模型应用开发,我最大的痛感就是“供应商锁定”和“接口碎片化”。今天调这家模型用一套参数,明天换那家模型又是另一套鉴权和超时策略,光适配层代码就写到手…

2026/10/20 3:51:14 阅读更多 →
OpenClaw Agent日均成本从50元到0.48元:AI工具调用优化实战

OpenClaw Agent日均成本从50元到0.48元:AI工具调用优化实战

1. 一天50块是怎么烧掉的:一次天气查询的完整计费分解先说个真实的场景。某位朋友在群里截图问我:他给OpenClaw配好了工具链,让它每天早上9点自动查一次当天的天气,顺便提醒要不要带伞。结果月底一看账单,光这一条自动…

2026/10/20 3:51:14 阅读更多 →
技能管理实战:识别、组合与迁移,打造个人核心竞争力

技能管理实战:识别、组合与迁移,打造个人核心竞争力

有一次帮一位朋友梳理简历,他接到一个面试问题——“你最擅长的三项技能是什么”。他愣了半天,最后写的是"Excel、PPT、沟通"。写完连他自己都不信,觉得这跟没说一样。那一刻我突然意识到一件事:我们几乎每天都在提&quo…

2026/10/20 3:50:14 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →