企业级AI视频管理平台源码级重构与低代码交付实战

1. 项目背景与整体方案拆解

1.1 先看清楚这是一个什么体量的项目

这个项目不是从零开始搭一套视频平台,而是在一套已经跑了一年多的企业级 AI 视频管理平台上做二次开发。原平台本身已经具备基础能力:视频上传、转码、切片、基础检索、人员管理,以及简单的人工审核流程。但它的痛点也很明显:AI 能力只是简单接了几个接口,识别结果和视频本身没有形成结构化关联,检索基本上是标签匹配,视频编目靠人工整理,整个链路在数据量上来之后越来越撑不住。

客户找到我们的时候,平台管理着的视频数量已经超过六十万条,每天新增视频大约三千条,存储占用超过八十 TB。这个体量下,原来单体架构的调度缺陷被放大得很厉害:转码任务堆积、AI 分析任务和转码任务抢资源、数据库读性能下降。客户的核心诉求并不是推翻重来,而是“在现有系统上改造,费用和周期可控”。这就奠定了整个项目的最大约束:不是从零建设的自由发挥,而是带着历史包袱做精准手术。

首批核心改造范围确定在三个方向:第一,源码级重构原有的任务调度和视频处理链路,解决并发瓶颈;第二,将 AI 识别能力深度集成到视频帧、片段、时间轴上,形成结构化数据;第三,交付层采用低代码方式,让客户业务人员能够自行配置审核规则和展示面板,而不是每次需求变更都来找开发改代码。

1.2 二次开发为什么必须走到“源码级”

很多人一听到“二次开发”,第一反应是在原系统上写几个扩展接口,或者做配置修改。但对于这套系统,表面加接口根本解决不了问题。举个例子,原平台的 AI 分析是同步调用的:视频上传完成后,转码进程直接调 AI 识别接口,等结果返回再继续下一步。单条视频这么跑没问题,并发上来以后就成了灾难。转码进程被 AI 接口的响应时间卡死,AI 服务自己也被海量请求打满,整个管线互相拖累。

要动这个链路,就必须深入源码层改调用方式、改数据结构、改任务状态机。这不是加一个中间件就能绕过去的,因为问题出在系统骨架本身。所以我们在项目启动时就跟客户达成共识:这是一个源码级重构项目,不是配置级集成项目。后续所有的工作计划、排期、验收标准,都是围绕这个共识来制定的。

重构行为本身有一个边界原则:能保留的接口不删除,能兼容的数据结构不变更,能通过新增参数解决的旧逻辑不重写。我们的目标是换掉“骨架”而不是“砍掉重练”,这样既控制风险,也能在出现问题时快速回退。实际上在重构过程中,老版本的服务一直保持在线,新链路在旁路验证通过后才切流量,整个过程客户业务没有任何中断。

2. 源码级重构的技术路线设计

2.1 重构的目标与边界划定

重构前我们做了一次完整的代码走查和链路压测,画出了三个核心调用链:上传转码链、AI 分析链、检索服务链。每条链路的瓶颈点都很典型:上传转码链的问题是同步阻塞,AI 分析链的问题是任务无优先级、无队列,检索服务链的问题是没有利用 AI 生成的结构化数据,纯粹靠 ES 文本匹配。

这次改造没有把三大链路全部推翻,而是抓住一个主线:把“串行阻塞”改成“事件驱动 + 异步编排 + 并行处理”。基于这个主线,我又把改造范围细化成五个模块,每个模块都有明确的验收指标:

  • 视频上传后触发元数据解析,异步进入转码队列和 AI 分析队列,互不阻塞;
  • AI 分析结果按视频 ID + 时间戳维度落库,形成帧级结构化数据;
  • 转码任务按档位拆分执行,每档位独立资源配额,不挤占在线服务;
  • 检索服务从“标签匹配”升级到“标签 + 向量 + 结构化条件”混合查询;
  • 管理层通过低代码配置面板调整分析策略和展示字段,不写代码。

范围定清楚以后,我们做了一件事:冻结需求。这个项目最大的风险不是技术难,而是需求蔓延。客户在实施过程中经常提出新想法,比如“顺便加一个自动横幅功能”“能不能把识别到的车牌也一起处理”。这些想法不是不好,但如果每个都接进来,重构周期会被无限拉长。我们统一记到需求池,按项目阶段排期处理,坚决不中途改架构。

2.2 底层视频处理模块的语言级替换

原平台的视频处理核心模块是用 Python 写的,走的是进程内调 FFmpeg 命令的方式。单看功能没有问题,但 Python 在大并发场景下做帧级处理和流式回调确实不合适:GIL 限制多线程效率,进程内调用 FFmpeg 导致 CPU 资源无法精细管控,异常处理也不够稳定,动不动就整个 worker 挂掉。

通过实测压测数据来看,Python 版本的处理模块在 200 路并发转码时,CPU 利用率峰值到 78%,但有效转码吞吐量只有预期值的 60%,大量资源消耗在进程切换和 GIL 等待上。这个数据坚定了我们做语言级替换的决心。

我们用 Go 重写了视频处理核心模块,保留原有 FFmpeg 命令行调用逻辑,但外层包了一层 goroutine 协程池和任务队列,单机并发能力直接翻了三倍。同时把 FFmpeg 调用从“一次性 exec 整个转码流程”拆成“分段调用”:先解析容器格式,再逐段做解码、过滤、编码,每段之间通过管道传递数据。这样转码过程可以被监控、中断和恢复,不再是一个黑盒。

语言级替换不是把代码翻译一遍,而是把代码的组织方式都换掉。Python 版本的代码结构是按“模块”组织的,Go 版本按“管道 + 处理函数”组织。每个视频帧的处理逻辑被抽象成独立函数,比如ExtractFrame()用于关键帧抽取,AnalyzeSegment()用于片段 AI 分析,这些函数可以被任务编排器自由组合。后续加新的 AI 能力时,只需要注册一个新的处理函数,不需要动主流程。

提示:做语言级替换时,最容易翻车的点在于“看起来能跑,但边界行为不同”。Go 处理二进制缓冲区的方式和 Python 差异很大,尤其是涉及到音视频封装格式的边界字节处理时,需要逐字节比对输出。我们当时用一组原始视频样本跑回归测试,把转码输出的 MD5 值做了前后对比,确保像素级一致。

2.3 异步化改造与消息链路设计

改造的核心是把原来的同步调用改成异步事件流。事件流设计我直接借鉴了消息队列的经典模式,用 RabbitMQ 做事件总线,每个视频在系统里对应一个唯一的video_id,围绕这个 ID 生成一系列事件:video.uploaded、video.analysis.required、video.transcode.required、video.transcode.completed、video.analysis.completed。

每个事件携带最小必要数据,不直接传递大对象。比如video.uploaded事件只传递视频 ID、文件路径、文件大小、MD5 值,具体的内容读取由消费者自行完成。这样设计的好处是消息体小、传递快,同时降低 MQ 的压力。

为了让消息链路不至于无序堆积,我们给任务定义了优先级。转码任务分三档:高优先级(用户实时上传)、中优先级(批量迁移)、低优先级(历史数据补齐)。AI 分析任务也分三档:必须实时分析、可延迟分析、后台批量补分析。两个队列互不干扰,各自有独立的消费者组和资源配额。

这里有一个细节值得拿出来说一下:事件消费必须具备幂等性。也就是说同一个事件被消费两次,系统状态不能变化两次。我们用一个 Redis 记录每个事件的消费状态,key 是event:{video_id}:{event_type}:{action},消费前先检查状态,处理完再更新状态。这个机制成本很低,但避免了各种消息重复投递导致的脏数据。

重构前后的核心链路对比

环节重构前重构后
视频上传同步等待转码完成上传即返回,异步处理
转码调度进程内 FIFO 队列多级优先队列 + 协程池
AI 调用转码进程同步调用独立消息驱动消费者
失败处理任务直接失败,人工重跑自动重试 + 死信队列告警
资源隔离无隔离,互相抢占转码/分析/在线服务独立配额

3. 低代码交付层如何与重构后的源码协同

3.1 后端能力配置化:API 网关与规则引擎

源码重构解决了底层能力问题,但客户业务人员要的其实不是底层 API,而是“我的审核流程能不能自己改”。以前每次加一个审核规则,要专门写一个判断函数,走一次开发测试发布流程,成本很高。交付层改成低代码之后,后端把各种能力抽象成可配置的服务端 API,前端则用可视化组件去编排这些 API。

后端配置化的核心是引入规则引擎,我们把审核规则做成 JSON 结构存储,运行时动态加载。比如客户要求“当视频标题提及某品牌并且 AI 识别结果包含该品牌 LOGO 时,自动标记为需人工复核”,这条规则在规则引擎里就是一个 JSON 节点,包含条件组、运算符、阈值和对应的动作。规则变更后,业务人员在配置面板直接编辑规则内容,系统实时刷新,完全不需要重新部署服务。

规则引擎和源码重构并不是两套割裂的系统。规则引擎本身是基于重构后的事件流做扩展的:事件在 pipeline 里流转时,规则引擎处于“聆听”模式,匹配到关键事件就触发对应动作。这样低代码配置层本质上是源码层的能力消费者,两者通过一致的接口协议协作。

3.2 前端低代码渲染与业务编排

前端这层,我们选了一套成熟的低代码渲染引擎做二次封装,配合内部设计好的物料库。业务人员可以在画布上拖拽表格、筛选器、视频预览组件、统计图表,配置绑定后端 API 的字段和筛选条件。配置完成后自动生成页面路由和数据请求逻辑,不用写一行前端代码。

前端低代码层和源码层之间的关系,是我在整个项目里比较得意的一块设计。低代码层并不直接调用底层微服务 API,而是调用一个统一的 BFF 层(Backend For Frontend)。BFF 层专门负责把底层多服务的数据聚合为前端可用的视图模型。业务人员在低代码面板上配置的字段映射,全部映射到 BFF 的数据模型上。这样前端再怎么配置,也不会直接打穿到底层服务,安全性和稳定性都有保障。

客户那边的运营团队在实际使用中,自己配了两个业务面板:一个是“临时抽查面板”,只看最近上传视频里 AI 置信度低于 0.8 的疑似问题项;一个是“版权风险面板”,按视频来源、标题关键词、时长、发布时间做组合筛选。这两个面板从配置到上线,总共花了半天时间,放在以前要排一个开发周期。

注意:低代码不是“零代码”。凡是涉及复杂业务逻辑的链路,底层还是要有代码兜底。我们给客户定的原则是:表单、列表、展示类需求,业务人员自己配置;涉及数据一致性、金额计算、状态流转的需求,必须走开发流程。这个边界划分清楚了,后面合作会顺畅很多。

4. 核心模块的二次开发实战记录

4.1 AI 分析管道的接入与参数调优

AI 分析模块是我们二次开发里花时间比较长的部分。原平台的 AI 接入方式非常粗暴:在每个视频转码完成后,截取开头一帧图片,送去识别一次,识别结果存成一个 JSON 文件。这样做的结果是识别覆盖率极低,大约只有 12% 的视频有有效标签,而且标签完全无法定位到时间点。

重构后,我们把 AI 分析拆成三个独立的子步骤:场景分段、关键帧抽取、目标识别。场景分段是指通过镜头切换检测,把视频切分成若干语义片段;关键帧抽取是指每个片段内抽取一个或多个代表性帧;目标识别是指对这些关键帧做多类型目标检测。这三个步骤之间的数据流是:视频文件 → 分段器 → 帧采样器 → 识别器 → 结构化结果存储器。

参数调优是整个 AI 管道里最磨人的地方。比如分段器的镜头切换阈值,设置得太敏感会把一个连续演讲视频切成几十段,设置得太迟钝又无法区分不同场景。我用了客户提供的 1000 条覆盖不同场景类型的视频做回归测试,通过对比人工标注的“真实切点”和算法输出,最终确定了一个在“敏感度”和“准确性”之间的平衡值。阈值参数做成可配置项,后续客户可以根据自己的内容类型自行调整。

识别器这里用了一个小技巧:不是每一帧都送识别,而是关键帧加前后相邻帧做微调。这样既保证帧级标注的密度,又控制计算成本。实测下来,AI 分析从每个视频平均 45 秒降到 18 秒,识别服务吞吐量提升一倍半,还不够满意,但已经跨过了业务可用的门槛。

AI 管道调优后的关键参数

  • 分段阈值:0.48(区间 0~1,越高越敏感),均衡场景;
  • 关键帧抽取:每段最多 5 帧,按内容差异度排序;
  • 识别置信度门限:0.6 入门级标签,0.8 以上作为高置信标签;
  • 单视频最大处理时长:60 秒,超时进入人工复核队列。

4.2 视频检索与标签体系重构

检索模块的改造是客户感知最强的部分。原来的检索方式是打标签,视频上传后人工给它打几个标签,比如“培训”“会议”“产品介绍”,检索时按标签过滤。这种方式在视频量少的时候还可以接受,六十万条视频的时候,人工打标签的质量和覆盖率已经完全失控。

我们做了两件事来重构检索体系。第一,标签从“人工录入”改为“AI 识别 + 人工补充”:AI 识别标签作为基础标签,人工只需在复核界面对 AI 标签进行修正。第二,引入向量检索:将视频关键帧提取特征向量,存到向量检索库里,用户检索时用文字描述生成向量,寻找“语义接近”的视频。这样用户搜索“会议室里有人讲解 PPT”的时候,即使视频没有打任何文字标签,系统也能根据视觉语义找到它。

检索服务本身实现了“多路召回”:文字标签路、向量路、结构化条件路(时长、时间范围、清晰度、来源渠道等),各路召回结果做汇总去重,再按相关性打分排序。实测下来,检索准确率从原来的 34% 提升到约 71%,其中向量路贡献了最主要的提升。

这里有一个踩坑记录:向量检索的召回方式对中文长文本描述支持不够稳定,搜索词一长,语义就飘。后来我们调整了策略:用户输入搜索词之后,先提取关键词组合,再生成多个短查询向量做并行召回,最后统一融合排序。这个改动让长描述搜索的效果稳了很多。

4.3 存储与转码链路的性能优化

存储层的问题是典型的海量小文件问题:视频转码后生成多种码率的切片文件,以及对应的描述文件,数量从原来的几万级飙升到百万级。原来的存储直接把所有文件平铺在同一个桶里,导致元数据查询越来越慢。

我们引入了一个分层存储策略:热数据(最近 7 天上传的视频和对应切片)放在高速存储区,温数据(7 天到 90 天)放在标准存储区,冷数据(90 天以前)放到廉价归档区。转码完成后生成一张文件映射表,记录每个文件所在的实际存储位置。查询文件时先查映射表再取数据,大幅减少了存储层的访问风暴。

转码链路的优化重点在“分档分片”。原来的做法是上传一个视频立即转出全部档位,这种方案在高峰期会造成资源浪费。我们改成:上传后优先转出“预览档”和“标清档”,让客户能快速预览和审核;高码率档位在低峰期异步补齐。客户体验上几乎无感,但转码集群的资源利用率提升了约 40%。

5. 交付阶段的部署、验证与经验沉淀

5.1 灰度发布与数据迁移

整个重构链路在开发环境跑通后,进入生产环境之前,我们做了灰度发布方案。灰度策略按“视频来源”维度切分:先接入一个次要视频源的流量,观察两周,确认转码成功率、AI 分析覆盖率、检索延迟和任务堆积情况全部正常后,再按 20%、50%、100% 逐步切流量。灰度期间老服务和新服务并存,共用同一个消息队列,但通过事件路由规则把不同来源的视频分流到不同消费者组。

这个阶段最需要注意的一个问题是“双写一致性”。新旧两套链路分别写各自的数据库和存储,我们在灰度期间设置了数据比对任务:每日比对新旧链路对同一批视频的处理结果,字段包括转码格式、识别标签数、结构化结果数量等。比对差异一旦超过阈值,立即触发告警通知开发人员排查。这套机制保证了灰度过程没有出现脏数据覆盖。

数据迁移方面,我们把原有视频的元数据做了一次全面的“清洗 + 重建”。清洗是指根据文件路径重新扫描视频信息,补齐缺失的时长、分辨率、编码格式;重建是指重新生成 AI 标签和结构化索引,这一步靠后台批量分析任务完成。六十万条历史视频的迁移一共花了一周时间,全程在后台运行,不影响在线新增视频的处理。

5.2 实际踩坑记录与排查思路

这个项目里踩过的坑值得单独记录一下,都是真实环境里才看得出问题的场景。

第一个坑是事件总线消费者的“假死”现象。某个消费者节点因为长时间处理一条大视频分析任务,导致心跳超时,被 MQ 判定为失联,但它自己还活着,只是不能再消费新消息。结果就是整个消费者组的处理能力慢慢下降,直到任务堆积告警。解决思路是给消费者加一个“独立心跳线程”,心跳检测单独走通道,不跟业务处理线程绑定,同时设定单条消息的最大处理时长,超时就自动进入重试队列。

第二个坑是 AI 识别服务的 GPU 显存泄漏。识别服务每处理一批视频,显存占用就升高一点,大约处理两万条视频后彻底 OOM。排查到最后发现是模型推理时创建的上下文没有显式释放,而是依赖 Python 的垃圾回收。修复方法是在推理结束后,显式清除显存缓存并调用资源回收接口。修复后服务连续跑了两周,显存曲线平稳,再没出现 OOM。

第三个坑是低代码配置面板的缓存问题。业务人员在面板上修改了规则,但测试时发现没有生效,排查了一天半,最后发现是 BFF 层对配置数据做了三层缓存,规则引擎每次从缓存读取旧值。解决方式是把规则变更做成消息事件,主动刷新各层缓存,而不是依赖缓存过期。这个坑让我意识到:低代码平台“配置即时生效”这个承诺,需要在架构设计时就用事件机制去保障,不能想当然。

5.3 几个值得保留的实操习惯

整个项目做下来,有几个习惯我觉得不管以后做什么项目都用得上。

第一,开工前一定先做链路压测和代码走查,把瓶颈量化出来,用数据说话。这次项目启动时如果没做压测,光凭“感觉”去找优化点,绝对会被隐藏得更深的瓶颈带偏。

第二,大改动必须有一个可以随时回退的方案。我们的做法是把所有核心服务都保留旧版本,通过消息路由和开关控制切换。宁可多花几天做兼容层,也不能拿线上稳定性冒险。

第三,对客户的需求变更,要建立“记录但暂缓”的机制。不是所有需求都要立即响应,但所有需求都要被记录、被评估、被排期。这个机制让我们避开了很多因为沟通不清导致的项目延期。

写在最后

这套企业级 AI 视频管理平台的二次开发,从启动到核心功能上线,总共用了四个月出头的时间。源码重构解决了底层的并发和稳定性问题,低代码交付让业务人员获得了自主配置能力,这两条线最终汇合成了一个完整的交付物。我个人的体会是,这类项目最难的其实不是技术选型本身,而是在“保留存量、重构核心、解锁新能力”这三个目标之间找到平衡。每次修改一行代码前都要问自己:这行改动会不会影响已有的稳定功能?值不值得这个风险?想清楚再动手,项目成功率会高很多。

相关新闻

Atlas:Rust编写的本地代码语义查询工具

Atlas:Rust编写的本地代码语义查询工具

1. 项目概述:Atlas 不是地图集,而是 Rust 生态里悄然崛起的「源码智能中枢」最近在 macOS 开发者圈子里,“atlas”这个词出现频率陡增——它既不是地理信息系统里的传统 Atlas 图谱,也不是某款新出的 macOS 系统镜像代号&#xff…

2026/10/19 16:50:35 阅读更多 →
ECLUT图像超分:纯CPU查表实现毫秒级4×超分辨率

ECLUT图像超分:纯CPU查表实现毫秒级4×超分辨率

简介:本资源是一份面向图像处理开发者与计算机视觉初学者的ECLUT(高效颜色查找表)图像超分辨率算法代码实现,聚焦轻量级、快速部署场景,解决低算力设备下实时超分的质量与速度平衡难题,适用于医疗影像预处理…

2026/10/19 16:50:35 阅读更多 →
元宝    LeetCode 675. Cut Off Trees for Golf Event Java Implement

元宝 LeetCode 675. Cut Off Trees for Golf Event Java Implement

/* 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 16:50:35 阅读更多 →

最新新闻

RGAT+GRU融合模型解决APT溯源图稀疏漏报问题

RGAT+GRU融合模型解决APT溯源图稀疏漏报问题

简介:本资源是华中科技大学2023届计算机相关专业(如计科、人工智能、网络安全等)优秀毕业设计成果,聚焦APT攻击检测这一前沿安全问题,提出并实现了一种基于溯源图建模与RGATGRU融合架构的检测方法优化方案。面向在校本…

2026/10/19 17:38:44 阅读更多 →
文件格式伪装揭秘:从魔数原理到apate工具实战

文件格式伪装揭秘:从魔数原理到apate工具实战

很多人在第一次听说“文件格式伪装”时,第一反应都是:这玩意儿真的能实现吗?改个扩展名谁不会,把.txt改成.exe,文件不照样打不开?如果你也这么想,说明你还没真正理解文件识别的底层逻辑。文件格…

2026/10/19 17:38:44 阅读更多 →
Source Map泄露实战:从检测还原到构建防御的完整指南

Source Map泄露实战:从检测还原到构建防御的完整指南

接手一个站点做安全评估的时候,我习惯先打开开发者工具的 Sources 面板,随手翻一下静态资源目录。很多时候问题就藏在那些不起眼的*.js.map文件里——Webpack 构建后遗留的 Source Map,一旦暴露在生产环境,等于把源码打包好递到别…

2026/10/19 17:38:44 阅读更多 →
MySQL存储过程实战:语法、游标、动态SQL与性能优化全解析

MySQL存储过程实战:语法、游标、动态SQL与性能优化全解析

这年头一说起MySQL存储过程,不少开发者的第一反应就是“能不用就不用”、“业务逻辑别放进数据库”。我早些年也是这个态度,直到接手了几个数据清洗、批量报表、复杂统计类的项目,被接口超时和网络往返折腾得没脾气,才老老实实回头…

2026/10/19 17:38:44 阅读更多 →
Spark性能优化实战:从数据倾斜到资源配置的完整调优指南

Spark性能优化实战:从数据倾斜到资源配置的完整调优指南

1. 为什么 Spark 性能优化是个绕不开的坎干过大数据的人都有一个共识:Spark 作业能跑起来不难,难的是跑得又快又稳。我见过太多团队,集群规模不小,机器配置也不差,但一个 ETL 任务动辄跑两三个小时,资源利用…

2026/10/19 17:38:44 阅读更多 →
open-code-review实战:从零搭建开放可持续的代码审查机制

open-code-review实战:从零搭建开放可持续的代码审查机制

1. 为什么“open-code-review”值得单独拿出来聊第一次听到“open-code-review”这个词,很多人会下意识觉得它只是“代码审查”换了个英文壳子。但真在团队里推过代码审查的人都知道,代码审查这件事,做一次两次不难,难的是把它做成…

2026/10/19 17:37:42 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于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/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →