昇腾CANN+MindSpore端侧部署实战:从模型转换到智慧家居安全防线
要是有人问昇腾这条技术栈到底怎么落地我一般不会先搬概念而是拿一个具体的端侧项目当靶子拆。昇腾CANN与MindSpore这套组合很多人的第一反应是“这玩意儿是不是只有大厂才用得起”实际上把场景压缩到智慧家居安全这个规模它反而比想象中更适合当入门实战的练功房。这篇东西就是把我自己跑通的一条完整链路复盘出来从模型选型、数据准备到CANN的模型转换、MindSpore端侧推理再到框子里那个“安全防线”功能真正亮起来前后踩过的坑和绕过的路都记在下面。这活儿适合谁两类人。一类是做AI应用开发、想把模型真正布到端侧而不是永远停在notebook里的工程师另一类是做智能硬件或智慧社区方案的集成商想评估昇腾这条路能不能在自己的产品里落地。两个角色我都短暂扮演过所以文章里会同时照顾到“算法怎么调”和“工程怎么稳”这两条线。直接回答一个很多人会问的问题昇腾CANN和MindSpore到底能不能扛住智慧家居这种轻量级业务能而且我建议所有第一次碰昇腾生态的人都用这种“先跑通一个闭环再回头补理论”的方式入场。后面所有内容都是这个闭环的实拍记录。1. 一条流水线三段式架构为什么是CANNMindSpore组合先说我最初的设计思路。智慧家居安全这个命题看上去是个单点功能拆开之后其实是三层端侧数据接入、边缘侧推理决策、云端或本地的告警响应。标题里的“防线”不是一个算法模型的事而是一条完整的业务链路。昇腾生态在这条链路里的位置恰好卡在“边缘侧推理决策”这一层。做了这么多年端侧部署我的体感是很多团队死磕模型精度最后却挂在推理性能上。模型在GPU上跑得飞快一到端侧芯片上要么算子不支持要么时延翻倍。昇腾这套体系的优势在于它从芯片到工具链是垂直打通的CANN层把算子调度、内存管理、图优化这些事情都包掉了你用MindSpore训练出来的模型经过CANN的转换和编译在昇腾上跑的效率和稳定性比其他“先训练再拿通用工具链硬转”的路线要舒服很多。那为什么选MindSpore而不选PyTorch或者TensorFlow老实说纯粹从模型训练角度PyTorch的生态确实更丰富。但昇腾这套体系里MindSpore和CANN的配合是最顺的尤其是在静态图编译、算子映射、混合精度控制这些环节原生支持意味着你少踩很多“框架对不齐”的坑。如果你已经有训练好的PyTorch模型也不是不能用ONNX中转导入CANN这个我后面会讲但新项目直接走MindSpore链路最短、变量最少对一个想快速验证业务的团队来说省下的调试时间很可观。再说场景需求。智慧家居安全的核心不是“识别出这是个人”而是“在正确的时间点给出正确的告警”。错误率一高用户就把设备关了整个防线形同虚设。所以整个方案设计里我把“低误报”和“低时延”放在了比“高精度”更优先的位置这也是后面一系列选型决策的总纲。比如输入分辨率宁可选小一点也要把帧率稳住模型结构宁可选经典一些的也要保证算子能稳定映射到昇腾上。先求稳再求好这是端侧项目最基本的生存法则。2. 数据与模型从零搭一个可用的安全检测模型2.1 识别什么三种典型场景的取舍智慧家居里“安全”这个词太宽了摄像头、门窗磁、烟雾报警器都能沾边。但我做的是纯视觉方案所以第一件事就是收敛任务范围。最终我圈定了三个子任务陌生人出现在门口、独居老人摔倒、以及厨房区域的火焰烟雾苗头。这三个场景有一个共同点都属于“小概率但高后果”事件。这给算法带了一个很现实的挑战——正样本极度稀缺。你不可能让用户家里真的天天出现陌生人闯入更不可能为了采集数据让人真摔几次。所以数据策略上我的做法是公开数据集打底自己做数据增强弥补场景偏差。陌生人检测直接用现成的人脸检测数据集做初始化训练然后把负样本重点扩充——穿着各种衣服、各种光线条件下走来走去的正常家庭成员这样模型才不会“见人就报”。摔倒检测相对麻烦一点公开的摔倒数据集非常少我用姿态估计的思路做了一些合成数据把正常行走、弯腰、坐下的姿态样本通过几何变换拼成疑似摔倒的姿态配合少量真值数据微调。火焰烟雾检测相对好办公开数据集不少但要注意的是家居厨房的灯光和油烟很容易误报所以负样本里必须大量加入“开着锅、冒着热气、但一切正常”的画面。这三个任务我没有做成一个大模型而是拆成三个小模型。原因很朴素端侧算力有限单个模型跑一遍全图推理三个任务顺序执行会拖慢时延并行执行又会把内存顶爆。三个小模型分开部署还可以按业务需求单独开关比如用户没在家时只开陌生人检测夜间只开摔倒检测灵活性高很多。代价是三份推理开销不过在昇腾这种端侧推理芯片上小模型的并发推理能力很强这个代价完全可接受。2.2 模型选型与训练要点模型结构上我刻意选择了经典但不老旧的组合主干用轻量化的卷积网络检测头用带注意力机制的浅层结构。选这个组合的原因不是它最先进而是它“耳熟能详”——昇腾的工具链对主流算子的支持度最好转换时候出幺蛾子的概率最低。用那种特别新、特别花哨的算子训练时候一切正常一到ATC转换阶段就报算子不支持这种事我见过太多次了。输入尺寸我统一压到288x288。这个分辨率对人脸识别和摔倒姿态够用对火焰烟雾检测稍微紧张一点但因为火焰的颜色纹理特征非常明显CNN在中层特征图上就能抓得住所以影响不大。关键是288这个尺寸能让推理模型在保持精度的同时单帧处理时间稳定在几十毫秒级别实测用户体验是完全无感的。训练时的两个细节值得提一下。第一个是数据增强策略。我不堆随机裁剪和旋转而是针对性做“光照扰动”和“模糊模拟”。智慧家居场景里的设备大多是固定机位画面抖动少但一天之内的光线变化非常剧烈所以光照扰动是必须的。模糊模拟则是为了防摄像头镜头起雾、指纹油污这些真实痛点模型在轻度模糊下还能保持一定识别能力对实际用户体验的提升很直接。第二个是损失函数和阈值控制。异常检测天然的样本不均衡决定了不能用纯粹的交叉熵去压我用了focal loss的变体让模型把注意力放在那些“像异常但又不是异常”的难分类样本上大幅降低了误报率。阈值这块则是在验证集上做了细致的网格搜索用“误报率不超过每天一次”作为硬约束倒推出来的而不是凭感觉定一个0.5拉倒。还有一个提点技巧值得说我用了知识蒸馏的思路先把一个参数量大不少的老师模型练到收敛再让端侧的小模型去蒸馏学习老师模型的输出分布最终精度比小模型单独从零训练高了接近两个点推理开销却一点没增加。这个技巧的实现成本很低效果却非常稳定强烈建议所有做端侧部署的同学都试一下。3. 端侧推理核心链路MindSpore训练到CANN部署全流程3.1 环境准备一个干净可复现的起点先交代我整个实验的基础环境。训练在一台x86的开发机上完成系统是Ubuntu显卡用的是普通消费级显卡够用就行。真正部署推理的环境是一套昇腾边缘推理设备跑的是CANN工具包和MindSpore的推理运行时。如果你是从零开始我建议第一步先把环境理清楚不要跳过。昇腾这套东西对版本一致性非常敏感CANN版本、MindSpore版本、固件版本三者之间有着严格的配套关系装的时候必须用官方发布的配套表逐项核对。我在这上面吃过一个大亏CANN升了一个小版本结果MindSpore的推理包不兼容模型全部加载失败最后只能整体回退。所以务实的做法是一开始就锁定一个经过验证的版本组合整个项目周期内不轻易升级。除非你遇到某个必须靠新版本解决的算子问题否则版本追新在端侧项目里是纯粹的负收益。另外有条件的话准备一块独立的系统盘专门跑环境避免和日常开发环境混在一起排查问题时能少掉一半的干扰项。3.2 模型导出ONNX的兼容性控制模型训练完成后接下来的关键动作是把训练好的权重导出成CANN能吃的格式。MindSpore导出的模型格式默认是MindIR也可以导出ONNX。CANN的模型转换工具ATC支持直接读取多种框架的模型格式。在我的实际项目里我尽量优先用ONNX作为中间表示。原因有两方面一方面ONNX的算子规范和跨框架兼容性更好如果后续你想把同一个模型迁移到其他推理平台ONNX是通用语言另一方面ONNX在前期的结构可视化、节点级调试上比MindIR更顺手报错时定位问题更快。MindIR作为昇腾生态的原生格式当然也能走通但在我用到的几个版本上对复杂算子的兼容性明显不如ONNX成熟所以我把MindIR作为正式定稿后的优化路径而把ONNX作为日常迭代的调试路径。导出时有几个参数必须填对否则后面会踩坑。输入维度信息里虽然只做静态推理但ONNX导出时建议固定batch为1省掉动态shape在转换阶段带来的额外复杂性。同时要注意输出的数据精度和归一化方式必须和训练时完全一致否则模型输出分布会发生偏移推理结果自然也就偏了。3.3 ATC转换OM模型才是真正的部署形态拿到ONNX文件之后就要用ATC工具把它转换成昇腾的离线模型文件OM。这一步是整个CANN工具链里最核心也最容易出问题的一环。我做转换时用的命令结构大致是这样# 伪代码不同版本ATC参数略有差异 atc --modelhomeguard.onnx \ --framework5 \ --outputhomeguard \ --soc_versionAscend310 \ --input_shapeinput:1,3,288,288 \ --output_typeFP16几个关键参数说一下我踩过的坑。--framework5对应的是ONNX格式这个数字一定要查手册确认写错了转换会直接失败。--soc_version必须填成你手里那颗昇腾芯片的具体型号填错了虽然能转换成功但生成的OM模型加载到设备上会因为指令集不匹配直接跑不起来这种错最坑因为它藏得深。--output_typeFP16是个值得细说的参数。FP16也就是半精度对大多数视觉模型来说精度损失微乎其微但推理速度和内存带宽的收益非常明显。我一开始不敢用怕精度掉太多后来做了对比实验发现最终推理结果和FP32差异在可接受范围内果断全项目切到FP16。如果模型里有特殊算子转换不过去不要慌。优先检查ATC报错日志里指出的算子类型看是精度模式的问题还是算子本身就不支持。很多时候加一个--precision_mode参数把某个算子强制指定成FP32就能解决。实在不支持的算子就要回训练阶段改结构把它替换成等价的经典算子组合。为了避免这种返工最好在训练时就养成习惯模型里尽量只用经典卷积、池化、归一化算子。3.4 推理代码MindSpore Lite在昇腾上的使用模式OM模型转换完之后就到推理环节了。在昇腾设备上MindSpore Lite是加载和运行OM模型的运行时库。它的用法比很多人想象中简单核心就三步加载模型、准备输入数据、执行推理拿到输出。MindSpore Lite的接口设计得很克制重要的事情都在初始化阶段做完了运行阶段就是纯粹的吞吐。我写推理代码时用伪代码记录一下核心结构# MindSpore Lite推理关键步骤伪代码示意 import mindspore_lite as ms # 指定设备类型和模型路径 model ms.Model() model.load_model(./homeguard.om, ms.DeviceType.kAscend) # 构建输入Tensor并执行推理 input_tensor ms.Tensor(input_data, ms.DataType.FP32) outputs model.predict([input_tensor])在工程实现上有几个比API本身更重要的点。第一是输入数据的预处理不能省。模型输入需要的是经过归一化的、通道顺序正确的张量而你从摄像头拿到的是一帧一帧的BGR图像中间这层转换如果每帧在Python层做性能一定拉胯。我的做法是把缩放、减均值、通道转换这些操作全部下沉到C层用opencv的基础算子和内存拷贝来完成这样能把单帧预处理耗时压到极低。第二是内存复用。推理代码里最忌讳每帧都重新分配输入输出内存要及时把输入Tensor的内存池在init阶段一次性分配好整个运行周期内反复复用。昇腾设备上的内存管理如果频繁申请释放会带来不可忽视的额外开销。第三是推理结果的后处理。跟训练时的阈值不同部署时我重新校准了一次阈值因为FP16推理的输出分布和FP32训练时比会有微小的偏移这个偏移在多数样本上无感但落在临界值附近的样本就可能改变最终判定。所以部署前务必拿一批真实场景的数据重新跑一遍根据实际结果微调后处理逻辑和阈值。3.5 端到端联调从USB摄像头到告警推送模型能单帧推理之后还要把它嵌入到真实业务流程里这一步才是“智慧家居安全防线”从Demo变成产品的地方。我的整体联调方案是一个普通的USB摄像头接在边缘设备上视频流用GStreamer管道拉取经过画面裁剪和缩放后送入推理模块做检测检测结果交给一个决策模块做事件判定判定命中后再触发告警推送整个过程全部在本地完成不需要外部服务器。事件判定是整个系统里价值含量最高的一环。我做了两层防误报机制第一层是连续帧确认单帧命中不算数连续5帧中至少3帧命中才认为是有效事件这个机制能挡掉大量摄像头瞬时闪烁造成的假阳性第二层是冷却时间窗口同一个事件源触发的告警在5分钟内不允许重复推送防的是人一直在画面里时系统反复轰炸用户手机。这两层机制加完之后告警体验才真正达到可用的状态。联调时我用了一个很笨但很有效的验证方法连续播放2小时的日常家庭生活录像统计系统产生了多少次误告警把每条误告警对应的视频片段截出来逐帧分析看是模型的问题还是后处理的逻辑问题然后挨个修。这个循环反复做了三轮误报率才压到满意的水平。4. 三类异常排查与经验沉淀4.1 问题一ATC转换阶段频繁报算子不支持这可能是昇腾部署路上最让人崩溃的坑。我转换过程中遇到过一个深度可分离卷积相关的算子死活过不去查日志发现是某些具体参数组合下的算子匹配不上。无奈之下回去改了模型结构把深度可分离卷积替换成普通卷积加1x1卷积的组合虽然参数量稍微涨了一点但换来的是整条链路的顺利通过。经验是一旦决定走昇腾部署这条路训练前就要潜意识里给自己“画一条算子安全线”能不用偏门算子就不用创新留给算法设计阶段工程落地阶段做个保守派能省下大量时间。4.2 问题二推理结果与训练时不一致模型在OCM上跑出来的结果跟离线测试时对不上这类问题排查起来特别迷惑。我遇到过一次现象是特定光照环境下检测率莫名下跌一开始以为是量化精度问题后来调查半天发现是输入图像的预处理细节不一致某个缩放算法在训练时用的是双三次插值部署时偷懒用了线性插值导致图像细节有细微损失累积到特定场景下就暴露了。所以部署代码里的预处理参数必须跟训练脚本完全对齐并且要把这份参数固化到代码里加上注释说明来源防止后续接手的人顺手一改就引入了偏差。4.3 问题三功耗和发热导致稳定性问题边缘设备长期通电运行功耗和散热是绕不开的话题。昇腾盒子跑推理时整机功耗不低放机房没事放到家庭环境里如果散热设计不好设备长时间满负载跑是会过热降频的。降频最直接的影响就是推理时延抖动严重的时候会直接超时导致告警不及时。我的解决办法是在调度层做了任务分级白天只跑帧率要求不高的火焰烟雾检测夜间或者无人在家时才拉高帧率跑陌生人检测。这样利用业务场景的天然错峰把设备的平均负载压下去温度始终稳定在安全区间。很多朋友上来就问怎么优化算法让设备跑得更快我反而觉得先想想怎么让设备不要一直满负荷跑性价比更高。4.4 一张异常问题速查表把我在这个项目里遇到过的典型问题整理成一张速查表方便后来人自查现象常归因排查路径模型加载直接失败版本配套不一致核对CANN/MindSpore/固件配套表转换成功但推理失败soc型号填错核对芯片具体型号重新转换精度离线测试正常部署崩预处理不一致逐帧对比预处理中间结果特定光照场景检测下降数据增强不足补充该光照下的训练样本推理时延偶发抖动设备过热降频检查散热和整体负载曲线这张表肯定覆盖不了所有问题但覆盖了攀登昇腾这座山时最常绊脚的那几块石头。写在最后的一点体会这套项目做下来我最大的收获倒不是把模型跑通了而是对“端侧AI”和“数据中心AI”的差别有了更深的体感。在数据中心的GPU上做实验算力过剩、内存管够你可以尽情折腾到了端侧设备上每一毫秒的时延、每一兆的内存都要精打细算这就逼着你从“性能优先”转变成“体验优先”。还有一个很实用的心得想分享给所有即将入坑的同路人第一次跑端侧项目一定要把“能跑起来”作为第一优先级而不是“跑得最好”。先把整条链路用最笨的方式打通让你亲手写的模型真正在设备上亮出结果再去谈优化精度、降低功耗、压缩时延这些进阶话题。我见过太多团队卡在“准备充分”这个环节太久迟迟没有勇气把模型布到真实设备上。其实端侧部署这件事动手跑一次比看一百篇文档都管用踩过的坑会变成你最扎实的经验资产。这次先分享到这里后面我会把告警推送模块如何做本地优先、云端兜底的具体工程细节单独写一篇如果大家还想看到摔倒检测模型在姿态估计上的详细调参过程也欢迎在评论区催稿。

相关新闻

仓库架构风格:共享数据治理与微服务迁移的权衡之道

仓库架构风格:共享数据治理与微服务迁移的权衡之道

有时候技术选型往往被一两句话带过去,但背后隐藏的胜负手却很少有人讲透。前阵子我们在评审一套订单系统的重构方案,两个方向争得不可开交:一方认为所有服务必须共享一个核心数据库,省事、一致性好;另一方坚持每个服务…

2026/10/19 13:48:31 阅读更多 →
AI角色一键生成怎么用?从3D流程到引擎落地的完整拆解

AI角色一键生成怎么用?从3D流程到引擎落地的完整拆解

这两年做3D角色资产,我最大的感受是:真正吃掉项目排期的往往不是创意环节,而是从概念图到可绑定角色之间那段冗长的重复劳动。雕刻、拓扑、拆UV、烘贴图、蒙皮绑定,每一步都熟门熟路,每一步也都在反复消耗时间。最近我…

2026/10/19 13:48:31 阅读更多 →
上下文工程:从记忆存储到智能决策的Agent全栈实践

上下文工程:从记忆存储到智能决策的Agent全栈实践

这两年做 Agent 项目,最深的体感是:模型能力本身已经不是主要瓶颈,真正拉开差距的是上下文工程。同一个底座模型,有人搭出来的 Agent 像个靠谱的实习生,有人搭出来的就是个复读机。差别不在 prompt 写得多花哨&#xf…

2026/10/19 13:48:31 阅读更多 →

最新新闻

VLAN间通信详解:单臂路由、三层交换机SVI与ACL配置实战

VLAN间通信详解:单臂路由、三层交换机SVI与ACL配置实战

1. 先搞清楚:VLAN为什么天生“老死不相往来”很多人刚接触网络时会有个直觉疑问:既然VLAN能把一台物理交换机切成好几台“虚拟交换机”,那为什么不同VLAN之间默认就是不通的?ping不通,ARP也学不到,数据包仿…

2026/10/19 14:28:19 阅读更多 →
本科毕业论文用这8个AI论文平台,从开题到定稿效率翻倍

本科毕业论文用这8个AI论文平台,从开题到定稿效率翻倍

说句实话,本科毕业论文这件事,绝大多数麻烦不是“研究有多深”,而是“流程有多散”。从确定题目、收集文献、整理综述,到搭出提纲、写满字数、反复降重、调整格式,任何一个环节卡住,都能把人逼到凌晨两点还…

2026/10/19 14:28:19 阅读更多 →
MS7210驱动开发实战:寄存器配置、时序验证与调试避坑指南

MS7210驱动开发实战:寄存器配置、时序验证与调试避坑指南

简介:ms7210是宏晶微电子推出的一款高清视频解码芯片,支持H.264、MPEG2、VC-1等主流编码及3D视频解码,常用于视频输入输出处理、音频控制、嵌入式驱动开发等场景。压缩包内共22个文件,以C源码和头文件为主体,覆盖驱动框…

2026/10/19 14:28:19 阅读更多 →
TensorFlow底层API手写神经网络:从GradientTape到训练循环实战

TensorFlow底层API手写神经网络:从GradientTape到训练循环实战

1. 为什么我劝你别急着调库,先手写一遍神经网络很多人第一次接触深度学习,路径都差不多:装好框架,复制一段官方示例,跑通MNIST,看到准确率往上跳,就觉得自己"会了"。可真到了要改结构…

2026/10/19 14:28:19 阅读更多 →
文本转3D:从语义描述到可交互三维模型的技术解剖

文本转3D:从语义描述到可交互三维模型的技术解剖

1. 这不是“AI画图”,而是一次三维语义空间的具象化实验“Google 文本转 3D 生成蝴蝶博物馆”——这个标题刚出现时,我第一反应是点开看是不是又一个带滤镜的宣传动图。结果在某实验室的内部演示视频里,看到输入“iridescent blue morpho but…

2026/10/19 14:28:19 阅读更多 →
行为多样性MoB:四足机器人地形泛化的新路径

行为多样性MoB:四足机器人地形泛化的新路径

读到 walk_these_ways 这个项目名的时候,我脑子里其实先跳出来的是那首老歌,但在机器人运动学习这个语境里,它讲的是一个特别现实的问题:怎么让四足机器人不只在某个特定地形上走得有模有样,而是换到碎石、草地、斜坡甚…

2026/10/19 14:27:07 阅读更多 →

日新闻

频率跟踪型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/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

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

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在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 阅读更多 →