轻量级深度学习模型实现COVID-19检测:从数据到部署全流程解析
本来想把这套东西留到自己正式答辩完再整理但前两天整理代码仓库时翻到当时的训练日志和一堆实验记录觉得如果毕业后再写很多细节肯定就忘了。趁现在脑子里的坑还热着我把这个“COVID-19检测轻量级深度学习模型”毕设项目从数据准备、模型选型、训练调参到部署实测的完整过程捋一遍给后面选类似题目的同学做个参考。先说清楚这不是什么高深的前沿研究就是一个目标非常实在的工程型毕业设计在尽可能小的模型体积和推理开销下把胸部X光影像中的COVID-19相关特征检测出来。之所以强调“轻量级”是因为我复盘了整个技术背景后发现这个方向最大的现实矛盾并不在模型精度本身而在模型能不能在普通设备上跑起来。后文会具体聊。这篇内容适合谁看如果你准备做医学影像深度学习的毕设或者正在纠结“轻量级模型到底怎么做到又小又不掉点”又或者你只是想了解一个完整深度学习项目从数据到部署的实操链路这篇都能给你一些直接能抄作业的东西。1. 为什么这个课题的答案必须落在“轻量级”1.1 检测场景的真实约束算力、时延与数据量做毕设选题的时候我最初的想法其实很朴素拿一个经典的深度卷积网络比如当时主流的ResNet或者DenseNet在公开的胸部X光数据集上做一个二分类任务把COVID-19影像和其他类型影像区分开。但真正把需求往前推一步问题就来了——这个模型做完之后给谁用、在什么设备上跑医学影像辅助筛查的真实场景里基层卫生机构的设备条件远没有想象中那么好一台性能普通的电脑甚至移动端设备往往是常态GPU资源稀缺存储和网络带宽也有限。如果模型有几百MB的参数文件单张图片推理要好几秒那它再好用也只存在于演示PPT里落不了地。这就是我当时决定把“轻量级”作为项目核心指标的直接原因。另外一个约束来自数据本身。医学影像数据集的数量级和一众互联网图像数据集完全没法比动辄要求几百万张图去训练一个超大模型根本不现实。小数据集配上大模型结果基本就是过拟合或者训练发散。与其硬撑一个复杂的大网络不如仔细设计一个小而精的网络把每一层参数都用在刀刃上。这是我做技术选型时反复权衡后得出的结论。1.2 轻量级模型的技术路线重组卷积与骨架选择具体到模型结构现在业界主流做法无非两条路线一是直接使用已有的轻量化网络结构比如MobileNet系列、ShuffleNet、EfficientNet-Lite这一类二是在常规卷积网络上做结构压缩比如用深度可分离卷积替换标准卷积、减少通道数、缩小输入分辨率。我最后选择了“对比实验”的路线——既用一个成熟的轻量化主干做迁移学习也自己搭了一个更小的卷积网络做从零训练两套方案都跑用数据说话。这么做的好处是毕设答辩的时候有横向对比能讲清楚“为什么选取这个结构”而不仅仅是“我用了某个现成模型”。这里要展开说一个核心原理深度可分离卷积。常规卷积在对输入特征图做滤波时是同时考虑所有输入通道的空间信息和通道间信息计算量很大。而深度可分离卷积把它拆成两步——先对每个输入通道单独做空间卷积再用1×1卷积做通道间的线性组合。这样算下来计算量可以减少到原来的几分之一甚至十几分之一精度损失却很小。我当时自己搭的轻量网络就大量使用了这个结构配合倒残差模块整个模型的参数规模压缩到了很小的量级。所以我的经验是所谓“轻量级”不只是一个形容词它是一套非常具体的结构选型和工程权衡用更小的卷积核、更少的通道数、更深的分离式特征提取去换取更低的推理开销和更小的模型体积。2. 数据准备这个环节比模型设计更容易翻车2.1 公开数据集筛选与隐私边界讲数据之前必须强调一个原则医学影像相关的数据涉及患者隐私绝对不能自己随便找渠道收集必须要用公开的、经过脱敏处理的数据集并且在论文里注明数据来源和版本。我当时使用的是几个公开的胸部X光影像数据集的整合版本主要包含三类影像COVID-19相关影像、正常影像以及其他类型的肺部感染影像。有的同学可能会问为什么不能只用“肺炎”和“正常”二分类因为实际筛查场景里COVID-19与其他肺炎的影像特征非常接近如果模型只能分清“肺炎”和“正常”那在临床上帮助极为有限。所以我做了三分类正常、COVID-19、其他肺炎。这样任务难度更大但项目的实际参考价值高出很多。数据集规模不大总计约两万多张X光影像其中COVID-19类别的原始样本最少。这直接导致了后面要重点处理的类别不平衡问题也让我在划分训练集、验证集、测试集时格外小心。这里我先提一个我踩过的坑——如果你不加干预直接按文件夹顺序划分数据同一个患者的多张影像很可能同时出现在训练集和测试集里造成数据泄漏最后评估指标虚高。正确的做法是按照患者维度去划分也就是说同一个患者的全部影像必须放到同一个集合中。另外影像来源不一致带来的分布偏移也很头疼。不同设备、不同机构拍摄的X光片在亮度、对比度、分辨率上差异很大。我的处理方案是拿到数据后先做统一重采样到固定尺寸再逐张做归一化必要时针对对比度差的样本做自适应直方图均衡化。这里要注意的是数据增强和归一化的统计量只能在训练集上计算不能引入验证集和测试集的信息。2.2 预处理管线与类别不平衡的应对我的预处理管线分成几个固定步骤写成一个Python脚本一次性跑完避免每次实验都在这些琐碎操作上浪费时间和踩重复的坑。图像读取后先做灰度转换因为X光影像本质是灰度图直接转成三通道RGB会让网络浪费大量参数去学习没有意义的色彩分布。然后resize到224×224这是MobileNet系列的标准输入尺寸。像素值除以255归一化到0-1区间。最后按通道计算训练集的均值和标准差做标准化。类别不平衡的应对上我同时用了两招一是在数据加载器里对样本数少的类别做过采样也就是说每个训练epoch里COVID-19类别的样本会通过随机增强多生成几次让模型每个epoch都见到足够多的该类样本二是在损失函数里加了类别权重计算交叉熵时给少数类的损失乘以一个更大的系数。这两个手段配合使用比单靠其中一种稳定得多。数据增强方面我用了随机水平翻转、随机旋转±10度以内、随机缩放、轻微平移和亮度扰动。这里要特别提醒医学影像的增强幅度要比自然图像小得多。比如旋转角度如果过大产生的影像在解剖学上就不合理了水平翻转倒是安全的因为人体左右对称。对比度扰动也要控制在较小范围不然会把正常的组织纹理扭曲成病灶特征。3. 模型骨架设计迁移学习与自建小网络的双线对比3.1 主干网络的轻量化原理与输入尺寸选择我最终确定的两个方案第一个是迁移学习方案主干使用MobileNetV3的小版本加载在ImageNet上预训练好的权重替换掉最后的分类层接一个全局平均池化和新的全连接分类头。第二个是自建方案一个完全自己设计的轻量化卷积网络整体结构围绕深度可分离卷积构建。先解释为什么选择MobileNetV3而不是其他模型。当时对比的几个候选项里ResNet18虽然结构经典、收敛容易但参数体积对它来说还是偏大而且在只有X光影像这种单通道灰度数据上结构优势并不明显。EfficientNet的精度确实高但它的Compound Scaling机制让它在推理时需要更精细的工程适配对一个毕设项目来说复杂度有点超纲。MobileNetV3在ImageNet分类上的精度比V1、V2更好同时引入了轻量级注意力模块在同样精度下参数更少部署也成熟所以我最后选了它。输入尺寸我是从计算量倒推的。X光影像的病灶区域往往集中在中下肺野尺寸如果太小会丢失细节但224×224对于MobileNetV3来说每张图的推理计算量大约能控制在六十到八十MFLOPs量级。再往上调到320×320计算量几乎翻倍而精度提升非常有限。最终我保留了224×224作为主干输入。3.2 自建轻量网络的层次结构与参数配置自己搭的网络则纯粹为了回答一个问题不依赖任何预训练权重纯从零训练一个极小的模型能做到什么程度。结构上参考了倒残差模块的经典设计思路整体结构一共六层卷积组合前两层用普通卷积快速下采样中间四层换深度可分离卷积和1×1卷积交替每层后面都接BatchNorm和ReLU激活在最后一个卷积层后接全局平均池化然后是一个128维的全连接层最后接三分类输出。这个网络的设计逻辑其实很直白先用较少通道数快速把输入分辨率降下来减少后续特征图的计算量然后用深度可分离卷积在低分辨率特征图上提取更深层语义。通道数从32逐步增加到128没有做得更宽是因为训练数据只有两万张通道数太宽会带来大量冗余参数对泛化没有帮助反而容易过拟合。我列出了两个方案的参数规模对比方案参数量模型文件大小单张推理耗时CPUMobileNetV3迁移约1.8M约7.2MB约45ms自建轻量网络约0.4M约1.6MB约18ms从参数数量看自建网络显然更“轻”但它的精度最终只能作为对照组真实效果要靠实测数据说了算。这里我还做了一件很重要的事情在迁移学习方案中把主干的前若干层冻结住只训练后半部分和分类头。理由是医学影像的底层特征边缘、纹理、形状与自然图像有相通之处预训练权重已经可以很好地提取这些通用特征微调全部层反而容易在医学小数据集上把预训练学到的好东西破坏掉。4. 训练细节与调参记录每个参数背后都有原因4.1 优化器、学习率策略与损失函数设计训练参数的选择听起来像流水账但实际上整个项目的成败往往就藏在这些看起来不起眼的数字里。优化器我选了AdamW而不是很多人默认的Adam。原因是Adam对权重衰减的处理方式和AdamW不同AdamW把权重衰减直接施加在参数更新中而非梯度中能更有效地抑制过拟合在训练小型医学数据集时这个细节还挺重要。初始学习率设成0.001配合Cosine Annealing的退火策略让学习率随着训练进程从0.001平滑降到非常接近0。这个策略比固定学习率更好用因为在训练后期模型已经靠近局部最优点降低学习率有助于精细收敛而不是在最小值附近震荡。损失函数用的就是常规交叉熵损失但加上了前面提到的类别权重。损失权重具体设置为正常类1.0其他肺炎类1.2COVID-19类2.0。这里的逻辑是让模型把“预测错了COVID-19类别的样本”看作更严重的错误从而在训练过程中更倾向于把少数的COVID-19样本学对。代价是模型可能把一些模棱两可的正常样本误判为COVID-19也就是召回率和精确率之间的取舍。对于辅助筛查场景两者价值并不对称——漏掉一个阳性病例的后果远比把正常影像标记为待复查严重所以我会让模型在评估时更看重召回率。训练过程采用早停机制监控验证集损失如果连续十个epoch没有改善就停止训练并恢复最佳权重。我自己实测发现不加早停训练到后面验证集指标的波动会变得很大特别是数据量有限的三分类任务上模型在某个类别上反复摇摆是常态。早停加上学习率退火训练过程稳定了很多。4.2 训练曲线与典型调参教训第一次跑训练的时候我犯过一个非常典型的错误把Batch Size设成了64导致连续好几个epoch验证集准确率卡在某个值附近完全不动。后来排查发现小数据集配合大Batch Size梯度更新次数太少模型根本没有足够的迭代机会去拟合数据分布。把Batch Size降到16之后训练曲线才恢复正常。这里有个直观的理解方式Batch Size越大每个Batch的梯度方向越平滑但更新次数越少对于只有两万张图的小数据集来说需要更多的更新步数来让损失充分下降。另一个教训是关于学习率的。有一次我把初始学习率调到了0.005相当于比默认值大了五倍训练直接出现损失震荡。特别是在迁移学习阶段主干里的BatchNorm统计量在预训练模型上已经稳定大学习率会把这些统计量瞬间打乱导致整个网络进入一种“失稳”状态很难恢复。后来我干脆在代码里加入了学习率预热机制——前几个epoch用很小的学习率让模型缓冲一下再切到正常的学习率去训练。关于训练轮数我这里给出我的最终配置作为参考迁移学习方案训练了40个epoch自建网络训练了60个epoch。自建网络需要更多轮数是因为它没有预训练初始化需要从头拟合特征。5. 评估指标选择只会看准确率的话你会被模型骗5.1 医疗场景下的指标优先级排序很多初学者拿到模型第一反应就是看Accuracy但在医学影像三分类这个场景里准确率很有欺骗性。原因是数据类别高度不平衡如果正常类占了绝大多数模型只要把大部分样本都预测成正常类准确率也能轻松超过百分之七八十看起来好像“还不错”实际上对COVID-19类别的检测完全没有价值。所以我重点关注的是每类别的精确率、召回率、F1值以及整体的混淆矩阵。对COVID-19类别而言召回率又是最重要的指标——它衡量模型在所有真实阳性样本中成功找回了多少。我最后得到的三个类别宏平均F1大约在0.86左右其中COVID-19类别的召回率达到0.9以上这个结果达到了项目设定的基本目标。为了直观展示评估维度我给答辩准备了三张图混淆矩阵、ROC曲线和PR曲线。ROC曲线能反应模型在不同阈值下的综合表现AUC值在三个类别的两两组合中都保持在0.95以上说明模型对类别的区分能力是稳定存在的。PR曲线在小样本类别上的意义比ROC更大因为PR曲线对类别不平衡更敏感能直观看到少数类在低阈值下被大量误报的程度。5.2 错例分析模型到底在什么情况下会翻车做错例分析是我在整个项目中收获最大的一步。我把测试集里被预测错误的样本全部输出成一张大图旁边标注真实标签和预测概率然后逐张去看。看完之后得出了很清晰的结论第一类常见的错误样本是影像质量很差的片子。有的X光片亮度极高、对比度极低肺野纹理几乎完全看不清模型在这种输入上只能靠猜。这说明预处理环节只做了一个全局归一化还不够强对这类极端样本需要在增强阶段增加亮度扰动提高模型对亮度变化的鲁棒性。第二类容易混淆的是早期病灶非常轻微的COVID-19病例和正常影像。特征太微弱肉眼都很难区分模型自然也没有办法。这类样本其实严格来说连经验丰富的影像科医生也会犹豫期望模型一出手就精准命中是不现实的。第三类则是其他肺炎与COVID-19的混淆。两者的影像学表现在大片磨玻璃影区域非常相似全靠细节纹理进行区分。这类错误让我意识到单纯靠2D单张影像做检测是有上限的如果想进一步降低混淆率可能需要多视角影像或者引入临床文本信息但这已经超出这个毕业设计的范围。作为工程师知道能力边界在哪里本身就是一种重要的评估结论。6. 模型量化的坑与部署实测轻量级不只是训练时的事6.1 从FP32到INT8量化后的精度损失没有想象中大模型训练完成后参数文件大小对迁移学习方案来说是7.2MB感觉上已经很小了但实际部署时还想更进一步优化特别是在边缘设备上推理速度和内存占用都希望压到最低。我尝试了对模型做INT8量化这也是很多现成推理框架自带的一键操作。量化的原理简单地讲就是把训练时使用的32位浮点数权重映射到8位整数表示。这个过程必然带来精度损失但工程实践里的关键问题是这个损失到底能不能接受我在CPU上分别测了量化前后模型的推理速度和精度结果发现一个反直觉的现象——精度几乎没有下降三个类别的宏平均F1只降低了零点零几个百分点但推理速度提升了两到三倍模型体积也从7.2MB压缩到了不到2MB。后来想明白了为什么精度损失这么小模型本身的冗余度很高量化的过程等价于对权重信息做了一次有损压缩在压缩率不是特别激进的情况下冗余信息被丢掉对预测结果影响不大。不过这里要注意不是所有模型都适合直接量化。我自建的那个小网络量化后精度就掉得更明显一些因为它的参数冗余度本来就低权重里几乎每一点信息都在起作用压缩时没有太多可损失的冗余。6.2 CPU推理时长到底意味着什么我在部署实测里记录了具体的推理时长数据。使用一台性能中等的笔记本CPU单张224×224图片在迁移学习模型上推理一次约45毫秒自建小网络约18毫秒。如果批量预测平均每张耗时还能更低。换句话说这个模型在完全没有GPU的情况下也足以支持实时或者准实时的辅助筛查流程。这在答辩的时候比任何理论分析都有说服力。部署形式上我最终提供了一个极简的推理接口输入一张X光影像的路径输出三个类别的概率并且把类别名、概率值和是否建议复查的标志一并返回。整个交互做成命令行工具没有刻意做GUI主要原因是毕设核心在模型本身接口越简单越不容易在演示环节出问题。这里给一个建议部署阶段不要追求花哨的界面或复杂的服务架构把模型推理的流程跑通、延迟数据记录清楚、接口设计得干净已经足够体现工程能力了。有富余时间再去考虑服务化封装。7. 复盘整个项目几个差点让我重头再来的教训7.1 最大的坑数据泄漏来得悄无声息前面提过数据泄漏是我这次项目中踩得最深的坑。最初几版实验结果漂亮得让我自己都怀疑验证集准确率直奔90%以上而训练集表现反而一般。后来仔细检查才发现划分数据集时代码用了简单的目录按比例抽样同一患者随访拍摄的多张X光影像被拆散到了训练集和测试集两个集合中。模型相当于在做开卷考试——测试集里的一部分内容和训练集高度雷同不费力气就能“记住”答案。这个问题的可怕之处在于如果不细想几乎所有指标看起来都正常AUC高、收敛稳定、混淆矩阵也分布合理完全不会让人觉得有问题。但这种情况下的模型到了真实世界的数据上表现很可能断崖式下跌。修正数据划分方式后评估指标明显回落但也更真实可信了。所以奉劝所有做医学影像方向的同学拿到数据集第一步先搞清楚样本里的患者标识、影像序列关系再动手划分。数据准备阶段多花一天后面对抗答辩质疑时会省很多力气。7.2 过拟合的两个隐蔽信号另一个印象深刻的问题是过拟合的隐蔽信号。我一开始看训练集上的准确率发现很快就能趋近于1.0而验证集准确率大概在88%左右徘徊。当时觉得这个差距不算大就没在意。后来查看了每个类别单独的召回率才发现那几个最难分辨的少数类样本正在被模型逐步“放弃”——模型学会了把硬样本判断成大类换取总体的高准确率。解决这类问题需要从训练手段和模型结构两头同时下手。训练端的思路是更强的正则化——把全连接层换成Dropout并在增强策略里加入更大的随机扰动。结构端的思路则是放弃过大的分类头因为分类头参数量在整个模型中占比不小但又承担着最直接的决策压力一旦它过拟合整个模型都会跟着跑偏。7.3 如果重新做一遍我会在哪些地方做得不一样假设现在让我重新再做一遍这个项目有三件事我一定从一开始就调整第一数据维度上尝试更大胆的MAE式自监督预训练。当时数据集还是从零训练的自建网络效果偏弱主要问题不在于结构而在于初始化。如果先用未标注的医学影像数据做一轮自监督预训练再在带标签数据上微调自建小网络的效果大概率能再上一个台阶。第二会留出更多时间去调研Transformer在医学影像上的应用。不是说要换成Transformer而是想做一下ViT系列轻量变体和小型CNN的对比让实验结论更有说服力。第三更早把模型交给别人去测试。一个人长时间面对同一批数据会产生严重的视觉盲区让朋友在不知道答案的情况下去跑一批新样本、描述他们对结果的感受能发现很多我自己根本不会去检查的细节问题。做这个项目的过程中我最大的体会是深度学习模型的“轻量级”从来不是一个筛选模型的静态属性而是一整套从数据规模反推结构设计的工程决策。医学影像小数据本身就不允许你堆大模型能跑的设备和能用的标注都在给模型体积划出硬边界边界之内的模型再小只要部署得动、指标可控就是好模型。哪怕没有拿到特别顶尖的精度数据这个从需求约束出发、环环扣紧的工程链路本身就已经是毕业设计最扎实的成果了。如果你也准备走类似的路线建议从第一天起就把“部署到普通CPU”当作一个硬指标所有结构选择和训练决策都围绕这个目标展开做完你会发现轻量级不是妥协而是另一种更难的打磨方式。

相关新闻

AI搜索优化实战:从语义理解到结构化数据提升引用率

AI搜索优化实战:从语义理解到结构化数据提升引用率

1. 算法流转弯了:为什么传统SEO打法在AI搜索里集体失灵先说一个我近期印象特别深的场景。某电商平台的运营同学跑来问我:他们有一批核心产品词,之前在某搜索引擎里稳稳占着首页前三,点击稳定得能当日报表看。可这两三个月&#xf…

2026/10/18 19:06:12 阅读更多 →
开源智能体OpenClaw落地物业:从AI客服到自动化工单处理

开源智能体OpenClaw落地物业:从AI客服到自动化工单处理

如果去年有人跟我说,程序员圈子里的开源AI智能体能被物业行业叫成“龙虾”,我肯定当段子听。但2026年开年,我在好几个物业项目的交流群里频繁看到同一个词:OpenClaw。这名字直译过来是“张开的钳子”,中文社区叫顺口了…

2026/10/18 19:06:12 阅读更多 →
元学习实战:提升模型迁移能力的架构设计与优化全记录

元学习实战:提升模型迁移能力的架构设计与优化全记录

不少做AI架构的朋友都会遇到同一个尴尬局面:模型在训练集上表现惊艳,一换到新的业务场景、新的数据分布,效果立刻跳水。调参数、加数据、换网络结构,折腾一圈下来,迁移效果还是不理想。我在多个项目里反复踩过这个坑之…

2026/10/18 19:06:12 阅读更多 →

最新新闻

Cursor Agent 文件写入频繁要求确认 — 排查记录与 TaoToken 配置实践

Cursor Agent 文件写入频繁要求确认 — 排查记录与 TaoToken 配置实践

/* 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 19:42:30 阅读更多 →
告别Python!Spring Boot 3集成GPT-5.4,Java后端10分钟接入原生计算机操作

告别Python!Spring Boot 3集成GPT-5.4,Java后端10分钟接入原生计算机操作

/* 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 19:42:30 阅读更多 →
工程资料员必备:四川建龙软件全套表格Word模板处理与批量生成指南

工程资料员必备:四川建龙软件全套表格Word模板处理与批量生成指南

简介:这份资源是四川建龙软件的全套工程管理表格文档,面向土建、安装、监理三大领域的施工管理人员、监理工程师及建设单位项目负责人,用于规范工程质量事故报告、开工报告、施工日志、技术核定单等环节的标准化填报流程。压缩包内共1个doc文…

2026/10/18 19:42:30 阅读更多 →
security-audit-skill 实战:Agent 安全审计技能与 findings.json 报告契约设计

security-audit-skill 实战:Agent 安全审计技能与 findings.json 报告契约设计

1. 从"security-audit-skill"这个名字说起:它到底在解决什么问题第一次看到security-audit-skill这个命名,我的直觉是:这不是一个普通的脚本,而是一个被封装成"技能"的安全审计能力单元。关键词里同时出现了s…

2026/10/18 19:42:30 阅读更多 →
Octop:面向PostgreSQL的SQL即代码工程化实践

Octop:面向PostgreSQL的SQL即代码工程化实践

1. 项目概述:Octop不是拼写错误,而是一个被严重低估的Python工程化实践样本你搜“Octop”时,大概率会撞上一堆零散的GitHub仓库、MIT学位论文附录里的脚注,或者PostgreSQL扩展文档里一闪而过的引用。它不像Django或FastAPI那样自带…

2026/10/18 19:42:30 阅读更多 →
Canvas游戏开发实战:用JS实现大鱼吃小鱼与碰撞检测

Canvas游戏开发实战:用JS实现大鱼吃小鱼与碰撞检测

1. 内容整体设计与思路拆解1.1 这个项目为什么值得做“大鱼吃小鱼”在游戏产品里算是家喻户晓的休闲玩法,看起来简单,但它其实把游戏开发中最核心的“循环”完整地串起来了:玩家输入、帧循环、碰撞检测、状态更新、画面渲染、游戏结束判定。一…

2026/10/18 19:41:29 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →