YOLO26改进:并行子网络与注意力机制提升相似目标检测精度
三周前我在调一个细小零件质检模型目标是让模型在流水线上把叠在一起的螺丝垫片逐个精确框出来。基线用的是YOLO26精度一直卡在mAP50约78上下小目标漏检还能忍最烦人的是两类外观极像的垫片经常互相误判。我当时的第一反应是继续加深度把骨干再堆两层结果算力涨了12%精度只动了0.3个点。方案思路陷入停滞我不得不重新审视一个被我忽略了很久的问题YOLO26的深层特征到底在表达什么答案是它学到的信息太“同质化”了。串行卷积一层层往下传递到了最深层绝大多数通道都在响应相似的模式真正能区分两个相似类别的细节早就被平均掉了。这就是我后来把ParNet并行子网络和注意力机制一起引入YOLO26的起因。这篇博文会把完整的改进思路、模块设计、消融实验和训练时踩的坑都交代一遍适合正在做检测模型精度调优的同行参考。1. 串行特征提取的失效模型“看不见”相似类别的差异1.1 深层网络的通道冗余问题大多数YOLO系列变体在骨干上做的改进本质上都是在同一个串行路径上堆更多的卷积层。这么做的好处是感受野变大坏处是特征图的空间分辨率持续下降而且越接近输出层通道之间就越“像”。我做过一个很直观的小实验把YOLO26最后一个阶段重复两次然后可视化中间特征图的平均激活强度发现两轮输出的激活模式几乎一模一样。这说明新增的计算量并没有带来新的语义信息只是在重复响应已经学到的模式。通道冗余带来的后果很直接对“长得很像但其实是两个类”的物体深层特征缺乏足够敏感的判别维度。比如我质检项目里的两种垫片外观差异只在边缘倒角和内孔螺纹的细微不同这些信息主要存在于浅层的高频纹理里。串行网络把这些高频信息逐层传递、不断与上下文混叠等到分类头看到特征时两种垫片对应的特征向量已经几乎重合了。1.2 为什么单靠注意力机制救不回来遇到判别力不足大家最先想到的往往是加注意力。我一开始也是这么干的在C2f后面挂了SENet式的通道注意力效果有但很有限。原因并不复杂注意力机制的本质是“重加权”它能在已有特征里把更重要的通道挑出来但它不能凭空生成那些已经被串行结构弄丢的细节。打个比方一个团队里所有人都只擅长同一件事你无论怎么调整分工和优先级都不可能突然冒出另一个人来做完全不同的事。注意力就是那个“调整优先级”的管理者而模型缺少的是真正能提供不同视角的小组。想通这一点后我就不再纠结于往网络里塞更多注意力模块了而是先把特征提取路径改成多分支并行让不同的分支各自负责不同尺度和不同粒度的信息注意力再去做融合后的筛选。这就是ParNet并行子网络介入YOLO26的动机。2. ParNet并行子网络的设计拆解多视角并行提取特征2.1 并行子网络为什么能提供互补信息ParNet的核心思想很反直觉模型精度不一定靠“更深”来堆出来用一组并行且相对较浅的子网络也能达到接近深度网络的表达力。我自己的理解是串行结构像一条只有单人的流水线每个工位都要处理全部信息并行结构则是开了三条流水线每条只专注于一种粒度的信息处理最后再合流。放在目标检测里最自然的做法就是让不同分支聚焦不同感受野和不同下采样率。高分辨率分支负责保留边缘、纹理等细节中分辨率分支负责组合局部语义比如“垫片的边缘内孔”这种结构低分辨率或大感受野分支负责全局上下文比如“该物体周围是否有其他零件遮挡”。三条分支各说各话最后融合时检测头拿到的就是一个多维度的特征表达而不是被串行网络平均过一遍的混合体。2.2 分支配置的参数取舍具体到YOLO26的骨干结构我最终采用的是三分支方案但实际调试是从两分支起步的因为每多一个分支显存占用和调参复杂度都会明显上升。三分支的配置是这样的分支A保持输入分辨率使用常规3x3卷积1x1卷积组合负责高频细节。这个分支的输出尺寸和输入完全一致计算量相对可控。分支Bstride为2的下采样分支使用带步长的3x3卷积负责中尺度语义。它把特征图缩小一半通道数翻倍相当于在较低分辨率上做一次局部结构组合。分支C保持输入分辨率但使用膨胀系数为2的空洞卷积负责在不降低分辨率的前提下扩大感受野捕捉周围上下文。三条分支最终在通道维度上对齐后做逐元素相加再经过一个1x1卷积做通道混洗和压缩。这里有个细节逐元素相加要求各分支输出形状一致所以需要用上采样、下采样或调整膨胀率来对齐。我试过用拼接concat代替相加特征多样性略好一点但计算量和后续融合卷积的参数都上去了速度和收益不成比例最终选择相加加1x1卷积。2.3 一个可直接参考的并行子网模块实现下面给出我在YOLO26骨干中实际使用的模块代码用PyTorch风格的写法逻辑可以直接平移。需要注意这里的分支卷积都保留了一个1x1旁路分支训练时等价于多分支结构导出部署时可以折叠成单个3x3卷积速度会快很多。import torch import torch.nn as nn class ConvBnAct(nn.Module): def __init__(self, in_ch, out_ch, k3, s1, d1): super().__init__() self.conv nn.Conv2d(in_ch, out_ch, k, s, paddingd * (k // 2), dilationd, biasFalse) self.bn nn.BatchNorm2d(out_ch) self.act nn.SiLU(inplaceTrue) def forward(self, x): return self.act(self.bn(self.conv(x))) class ParNetBlock(nn.Module): def __init__(self, in_ch, out_ch, branch_channels64): super().__init__() # 分支A保留分辨率提取高频细节 self.branch_a nn.Sequential( ConvBnAct(in_ch, branch_channels, 3, 1, 1), ConvBnAct(branch_channels, out_ch, 1, 1, 1), ) # 分支Bstride2下采样提取中尺度语义 self.branch_b nn.Sequential( ConvBnAct(in_ch, branch_channels, 3, 2, 1), ConvBnAct(branch_channels, out_ch, 1, 1, 1), ) # 分支C膨胀卷积保持分辨率但扩大感受野 self.branch_c nn.Sequential( ConvBnAct(in_ch, branch_channels, 3, 1, 2), ConvBnAct(branch_channels, out_ch, 1, 1, 1), ) self.fuse nn.Conv2d(out_ch * 3, out_ch, 1, biasFalse) self.bn nn.BatchNorm2d(out_ch) self.act nn.SiLU(inplaceTrue) def forward(self, x): h, w x.shape[2:] a self.branch_a(x) b self.branch_b(x) # 把下采样分支上采样回原分辨率 b nn.functional.interpolate(b, size(h, w), modebilinear, align_cornersFalse) c self.branch_c(x) out torch.cat([a, b, c], dim1) out self.fuse(out) return self.act(self.bn(out))这个模块单独看并不复杂但有几个细节值得展开。第一个是分支B的上采样我故意用双线性插值而不是转置卷积原因是转置卷积会增加可训练参数而且容易出现棋盘效应双线性插值虽然不可学习但在特征融合任务上非常稳实测掉点风险最低。第二个是三个分支的起始通道数不要盲目设成和输入通道一样大我遇到过参数爆炸导致训练变慢的情况先压到输入的1/4再逐步扩展到目标通道数性价比最高。3. 注意力机制在并行结构中的嵌入方式从“各自干活”到“协同决策”3.1 融合后加注意力是一个分水岭如果只是把ParNetBlock替换进骨干而不做任何注意力处理效果已经比基线好但分支之间仍然是“僵硬”地相加每个分支的贡献比例是固定的不会因为输入图像内容不同而动态调整。比如一张纹理极少的图像分支A提供的高频细节几乎全是噪声此时如果还按固定比例参与融合反而会干扰检测。所以我在并行融合之后、进入下一阶段之前加了一个轻量级双注意力模块。这个模块的位置很讲究不能放在分支内部否则每个分支都只依自己的信息做筛选仍然缺少跨分支的协同必须放在融合之后让注意力看到所有分支提供的完整信息再决定哪些通道、哪些空间位置值得突出。3.2 通道注意力与空间注意力的组合方式我采用的方案是先做通道注意力再做空间注意力顺序和你常见的倒置瓶颈块类似。通道注意力用全局平均池化压缩空间信息经过两个全连接层输出一组通道权重把最有判别力的通道放大。随即做空间注意力用3x3卷积在通道维度上压缩出空间权重图告诉模型“图像左上角这片区域更重要”。这里有一个实战经验通道注意力的压缩倍数不要设得太狠我一开始设成16倍压缩信息丢失明显后来改成8倍mAP50涨了0.4。空间注意力后面跟的3x3卷积padding要设成1否则边缘区域权重会偏低对小目标不友好。这个双注意力模块本身不复杂代码我就不放完整版了结构就是“GAP→FC→ReLU→FC→Sigmoid”接“通道压缩卷积→Sigmoid”加起来不足20行。3.3 跨分支注意力让深感知分支指导浅层细节分支双注意力解决的是“融合后如何筛选”但还有一个更激进的问题分支A的高频细节在融合前是否需要参考分支C的全局上下文比如大目标和小目标同时存在时分支A不知道图像里到底什么尺度占主导它只能无差别地放大所有边缘。跨分支注意力正是为了解决这个问题设计的。我的做法是把分支C的输出做全局平均池化得到一个描述“全局上下文”的向量然后用这个向量对分支A和分支B的输出做逐通道缩放。这样全局感知强的分支可以直接影响细节分支细节分支就不再是盲目提取纹理了。这个操作本质上是在并行结构里加入了注意力信息流而整个过程中增加的计算量几乎可以忽略。从实验结果看跨分支注意力单独拉高了mAP50约0.6叠加在双注意力之后又能再涨0.2说明它捕捉到了另一类不一样的判别信息。4. YOLO26整体改装落地骨干、颈部、检测头各改在哪4.1 骨干中的并行模块替换位置选择不是所有的骨干阶段都适合替换成ParNetBlock。我测试过从P2阶段就全部替换的方案精度提升没有显著增加但FPS掉了将近15%属于典型的高投入低回报。最后稳定的方案只替换P4和P5两个阶段的最后两个Block这两个位置的特征图尺寸相对小并行分支带来的计算增量可控而且它们恰好对应后续检测头需要的语义抽象层级。从输入到P3阶段保留原有的串行C2f结构因为浅层更依赖局部边缘和颜色这些信息用普通卷积已经足够。到了P4和P5阶段再切换到并行模块网络就具备了“对抽象语义进行多方验证”的能力。这样分层设计的好处是前面的浅层负责把底层特征稳定输出后面的并行层负责把这批特征解析成不同的语义视角分工明确。4.2 特征金字塔如何处理多分支特征我现在用的YOLO26颈部还是经典的特征金字塔加PAN结构。并行Block替换骨干后neck收到的输入已经是被融合过的多分支特征所以不需要改动neck的路径设计。但我在PAN的两个concat节点后面各加了一个轻量注意力模块让自顶向上和自底向上的特征传递在融合时能对来源做加权。这里有个特别容易忽略的细节自顶向下路径里来自深层P5的信息通过上采样后和P4的信息concat此时P5特征尺寸很小如果权重过高会直接把浅层细节“稀释”掉。所以在concat完的1x1卷积之前我先对两路输入做了一次平均池化并计算出通道级权重相当于给注意力机制提供了显式的“来源比例”先验训练收敛明显更快。4.3 检测头与损失函数的配套微调检测头上的改动很小但是很关键。我在分类分支第一个卷积之后插入了一个和3.2节相同的通道注意力模块只对分类分支生效回归分支不做任何改动。原因是回归分支负责边框坐标特征被通道注意力压缩后对边框定位精度没有明显帮助但分类分支很需要这种重定向。损失函数方面我保留了CIoU损失和DFL分布损失把分类部分换成了带Focal的BCE损失焦点参数alpha设为0.25。这个alpha值是我反复试出来的调成0.5会过度衰减易分样本的梯度导致训练后期收敛速度变慢调成0.1又几乎等于没用Focal。另外在训练的中间阶段我在并行Block的融合输出上临时接了一个辅助检测头只在训练时计算辅助损失推理时删除。这个辅助损失会让并行分支在早期就收到梯度信号而不是等到主检测头反传时梯度已经衰减到很弱实测能提升小目标AP约1.2。5. 消融实验与成本核算数据比感觉诚实5.1 数据集与训练设置实验用的是某制造场景的质检数据集内部代号ID-8864包含4类形状相似的五金件总共12800张训练图和1250张验证图。图像分辨率1280x1280目标尺寸差异很大从几十像素的细小零件到几乎占满整图的铸件都有。训练设置统一为输入尺寸640x640batch size 64初始学习率0.001SGD优化器配合余弦退火训练250个epoch前5个epoch做warmupEMA衰减系数0.9998。所有对比实验都在同一张24G显存显卡上完成FPS用TensorRT FP16精度在单卡上测。5.2 最终消融结果对比我把关键几组实验列在下表数值是多次运行后取平均的结果配置mAP50mAP50-95Params(M)GFLOPsFPSYOLO26基线78.255.432.5105.3121基线 SENet式通道注意力79.156.632.7106.1117基线 两分支ParNet81.058.834.1110.4112基线 三分支ParNet 通道注意力82.460.135.8114.9106基线 三分支ParNet 双注意力 跨分支注意力82.660.236.2115.7103从数据里能读出几件事。第一单独加注意力只提升0.9个点单独加两分支ParNet却提升了2.8个点说明补充新视角确实比强化旧特征更关键。第二三分支叠加注意力之后相对两分支版本又涨了1.6个点说明分支规模扩大和注意力机制之间存在协同。第三跨分支注意力加上去后mAP50只涨了0.2但它主要贡献是大幅降低了两类相似件之间的混淆这在质检场景里的价值比单纯mAP数字高得多。5.3 算这笔账值不值参数从32.5M涨到36.2M大约多11%GFLOPs多10%FPS从121降到103大概损失15%的推理速度。对比换来的4.4个mAP50提升我觉得非常值。尤其是FPS的损失并不完全是白丢的三分支的并行结构在部署时可以像RepVGG那样重参数化折叠成单分支推理时GFLOPs能回落到接近基线水平FPS损失可以挽回大半。这一点后面会细讲。6. 训练和部署中踩过的坑以及最终建议6.1 BN统计量漂移并行结构的隐形杀手第一次把三分支ParNetBlock接进YOLO26后出现了一个非常典型的诡异现象训练集尾巴上mAP一路走高验证集却在中段开始掉点最多掉了1.7。逐层排查后发现是融合层BN的统计量出了问题。并行分支相加后进入BN层这个BN的均值方差统计的是“融合后特征”的分布但各分支单独训练过程中分布变化剧烈融合层的统计量始终追赶不上导致验证时BN用的是明显滞后的running statistics。我的解决方案有两步。第一步是把融合层的权重初始化调小让融合输出在初期更接近各分支的均值减小统计量震荡幅度第二步更简单粗暴训练最后一个epoch之后用训练集前2000张图像重新跑一遍前向用实际计算出的均值方差替换BN里的running statistics。只做第二步mAP50就能回升0.4到0.7。如果你不想动训练逻辑也可以用GroupNorm替换融合层的BN但GPU推理速度会略降需要根据自己的部署环境权衡。6.2 融合层的梯度不平衡问题并行分支还会带来一个梯度问题分支B带了stride2下采样梯度在反传时经过的空间路径更短收敛速度明显快于分支A和分支C。这导致训练到中后期分支B已经完全稳定分支A和分支C还在小幅波动融合层的参数一直在被“拉锯”。我尝试过给每个分支单独配不同的学习率但很难找到稳定的一组系数。最后采用的是更工程化的做法在每个分支输出到融合层之前乘上一个可学习的缩放系数初始值设为1。训练时让网络自己学习各分支的贡献比例而不是由融合卷积的权重隐式决定。这个改动只多了一行代码效果却非常显著训练损失曲线变得更加平滑也没有再出现中后期验证集波动。6.3 推理部署时的结构合并与实测体会训练时多分支结构是性能保障但导出到TensorRT之后多分支结构会带来额外的kernel调度开销实测FPS会继续掉到90左右。解决办法是借鉴重参数化思想既然每个分支最后都是3x3或1x1卷积加BN那么可以把分支内的卷积和BN先融合成单个卷积再将三个分支的卷积核权重相加合并成一个3x3卷积。折叠的关键公式很简单两个卷积分支如果输入输出尺寸一致它们对同一输入的输出之和等于把卷积核在对应位置相加后的单个卷积的输出。分支B因为存在stride2需要先用转置卷积或者插值把特征图尺寸对齐后才能加和这里需要写一个专门的转换函数。折叠之后网络在推理时就是一条流畅的单路结构我实测FPS从103回升到119几乎不输原版YOLO26。要注意的是折叠过程需要确保BN层的均值和方差一起跟着卷积权重走否则会出现推理结果和训练结果不一致的现象。最后再分享一个个人体会每次只引入一个变量。我先用两分支ParNet把基线跑稳再加通道注意力然后扩到三分支最后才上跨分支注意力。每一步都单独记录数据出了问题也能立刻定位到是哪个结构引起的。如果一上来就组合全部改动一旦效果不理想你根本不知道是哪个模块在拖后腿。这种“多分支并行特征提取融合后注意力筛选”的组合核心价值就是让不同粒度的信息先独立表达、再协同决策希望这套思路对正在折腾YOLO26或者其他检测模型的同行能有点帮助。

相关新闻

LangChain RAG检索器实战:从向量检索到混合检索与重排序优化

LangChain RAG检索器实战:从向量检索到混合检索与重排序优化

我接触LangChain做RAG相关项目已经快两年了。从最开始用向量数据库加个embedding模型,稀里糊涂跑通一个“会聊天的PDF问答机器人”,到后来真正在生产环境里处理几十万级文档的检索,一个很深的感触是:**绝大多数RAG项目效果翻车&am…

2026/10/19 11:53:04 阅读更多 →
AI助手开发指南:从裸奔到装备齐全的六层升级路径

AI助手开发指南:从裸奔到装备齐全的六层升级路径

1. 先把话说清楚:裸奔是什么状态,装备齐全又是什么状态我在不少团队里见过同一个现象:同样接一个大模型API,A组做出的东西像个只会接话的聊天机器人,B组做出的东西却像团队里的半个成员,能查资料、能改文件…

2026/10/19 11:53:03 阅读更多 →
基于以太坊的Dapp众筹项目实战:从Solidity合约到Truffle部署与前端交互

基于以太坊的Dapp众筹项目实战:从Solidity合约到Truffle部署与前端交互

简介:这是一份基于以太坊的Dapp众筹项目设计与实现完整资料,面向计算机相关专业学生、教师及企业开发者,可用于毕业设计、课程设计或期末大作业,项目经本地编译可运行,评审分达95分以上。资料共37个文件,以…

2026/10/19 11:52:17 阅读更多 →

最新新闻

VS2019快速集成wxWidgets二进制包实战指南

VS2019快速集成wxWidgets二进制包实战指南

1. 项目概述:为什么“直接使用二进制文件”是wxWidgets开发中最常被卡住的第一关 在Visual Studio 2019环境下配置wxWidgets,绝大多数人踩进的第一个坑,不是代码写错,也不是逻辑出问题,而是——连编译都过不去。你下载…

2026/10/20 11:33:30 阅读更多 →
AI芯片设计黑盒困局:从不可解释到可控黑盒的工程实践

AI芯片设计黑盒困局:从不可解释到可控黑盒的工程实践

“AI 在芯片领域依然是个黑盒。”这句话不是我从某篇报告里抄来的,是我在上一个流片项目的复盘会上,被自己的算法同事一句一句追问出来的。当时我们上线了一个辅助布局优化的AI模型,指标提升很漂亮,可一旦被问到“为什么这几百个标…

2026/10/20 11:33:30 阅读更多 →
HTC Vive OpenVR 配置避坑指南:SDK 1.25.4 + SteamVR 1.26.4 黄金组合

HTC Vive OpenVR 配置避坑指南:SDK 1.25.4 + SteamVR 1.26.4 黄金组合

简介:本资源是面向VR开发初学者与进阶者的OpenVR实战入门项目,聚焦HTC Vive设备的API调用与Tracker扩展应用,解决开发者在跨平台VR交互开发中接口适配难、追踪数据解析复杂等实际问题。压缩包共9个文件,含4个核心Python脚本&#…

2026/10/20 11:33:30 阅读更多 →
Llama 3 精读:FP8 量化与长上下文实测经验分享

Llama 3 精读:FP8 量化与长上下文实测经验分享

1. 为什么值得花时间精读 Llama 3Llama 3 发布之后,我身边不少做推理部署和模型微调的朋友都在第一时间拉取了权重做实测。大家最关心的其实不是榜单上的分数,而是两个非常实际的问题:第一,这个模型在FP8 量化之后精度到底掉多少&…

2026/10/20 11:33:30 阅读更多 →
腾讯广告回收业务推广类目梳理:可投品类、禁投品类及资质要点

腾讯广告回收业务推广类目梳理:可投品类、禁投品类及资质要点

前言很多再生资源、回收行业的从业者,会选择腾讯广告(朋友圈、视频号、腾讯新闻等流量位)来收集 B 端企业或 C 端散户的业务咨询信息。但回收类目细分多、监管差异大,不少商家开户后遇到广告拒审、计划下架、账户限流等问题。多数…

2026/10/20 11:33:30 阅读更多 →
专科生论文降AI率实战指南:九款降AIGC工具测评与避坑要点

专科生论文降AI率实战指南:九款降AIGC工具测评与避坑要点

最近后台问得最多的不是论文怎么写,而是“论文写完了AI率太高怎么办”。很多专科生现在交课程论文、毕业设计、实习报告之前,都要先跑一遍AIGC检测,结果一出来就慌了:明明是自己查阅资料写的初稿,只是用AI帮忙润了润色…

2026/10/20 11:32:30 阅读更多 →

日新闻

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/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →