MACOGA:面向动态栅格环境的鲁棒路径规划进化算法
1. 这不是又一个“改进GA”的噱头TEVC 2026录用的MACOGA到底在解决什么真问题你可能已经看过太多标题里带“改进”“优化”“新型”“自适应”的进化算法论文——点开一看不过是把交叉算子换个名字、把变异概率加个sigmoid函数再跑一遍标准测试函数就敢号称“显著提升收敛速度”。但这次不一样。我在去年参与一个城市地下管网巡检机器人路径规划项目时被真实场景狠狠上了一课仿真环境里跑得飞快的算法一放到现场就卡死。原因很朴素——地图不是静态PNG图而是由激光雷达实时拼接、每秒更新数次的动态栅格障碍物不是规则矩形而是堆叠的施工建材、临时架设的脚手架、甚至突然闯入的工人更关键的是我们根本不知道下一帧栅格里哪个格子会从“空闲”变成“不可通行”。传统遗传算法GA在这里失效不是因为种群多样性不够而是它的初始种群生成逻辑本身就有致命缺陷它默认所有个体都从“已知最优起点”出发用随机扰动生成初始路径。可现实里哪有什么“已知最优起点”你连下一个5米内会不会出现移动障碍都不知道。这就是MACOGA要啃的硬骨头。它不改交叉、不调变异而是从第一代个体诞生前就动手——用一套轻量级概率预测机制对栅格环境的不确定性建模再据此生成具备“抗干扰基因”的初始路径。USM团队这篇被TEVC 2026录用的工作核心价值不在“算法更快”而在于让进化过程从第一代起就具备环境鲁棒性。它解决的不是数学上的收敛速度问题而是工程落地中“算法不敢上线”的信任危机。关键词里的“概率预测机制”不是附加模块而是整个算法的前置引擎“复杂栅格环境”也不是测试集名称而是指代那些激光点云噪声大、动态障碍物轨迹不可预测、局部地图频繁重绘的真实工业场景。如果你正在做AGV调度、无人机编队或手术机器人导航且常被“仿真OK、实机翻车”困扰这篇工作值得你花30分钟真正吃透——它给出的不是又一个公式而是一套把不确定性从“待处理噪声”变成“可利用先验”的新思路。2. 初始路径生成为什么90%的路径规划算法输在起跑线上几乎所有基于进化计算的路径规划方法其初始种群生成都遵循同一范式在起点和终点之间用直线插值、随机采样或简单启发式如A*的粗略解生成N条路径再将其编码为染色体。这个看似无害的步骤恰恰是算法在复杂环境中失效的根源。我拿自己项目里的一组数据说话在某地铁站施工区的10×10米栅格地图上分辨率0.1m使用标准GA生成100个初始个体其中87个个体的路径在起点后3步内就与动态障碍物发生碰撞——不是因为算法没优化而是因为它们从诞生起就携带了“必然失败”的基因。这些个体在后续进化中要么被快速淘汰浪费计算资源要么通过剧烈变异勉强绕开但代价是收敛到局部最优解的概率飙升。MACOGA的破局点非常直接它不生成“路径”而是生成“抗扰动路径模板”。其核心是概率预测机制Probabilistic Prediction Mechanism, PPM的三阶段设计2.1 栅格状态转移建模把“不确定”变成“可计算”PPM的第一步不是预测障碍物位置而是建模每个栅格单元的状态转移概率。传统做法是给每个栅格打一个“当前是否被占据”的二值标签而PPM要求对每个栅格g计算三个概率值P(g→free)当前被占据的栅格在tΔt时间内变为空闲的概率P(g→occupied)当前空闲的栅格在tΔt时间内变为被占据的概率P(g→unknown)因传感器噪声导致该栅格状态无法确定的概率。这个建模过程不依赖高斯过程或LSTM等重型模型而是基于历史观测数据的滑动窗口统计。例如对施工区常见的“临时堆放区”系统会记录过去100帧中该区域栅格从free变为occupied的频次再结合当前帧的激光反射强度方差反映遮挡稳定性用一个加权指数衰减函数计算P(g→occupied)。实测表明这种轻量级建模在嵌入式设备上仅需23ms计算时间却将动态障碍物预测准确率从单纯阈值法的61.3%提升至89.7%。提示PPM的输入不是原始点云而是经过Voxel Grid滤波和地面分割后的语义栅格。我们曾尝试直接输入点云结果发现GPU显存暴涨且预测抖动严重——这是很多论文没提但工程中必须踩的坑。2.2 路径熵最小化让初始个体自带“避险本能”有了状态转移概率MACOGA不再随机生成路径而是求解一个“路径熵最小化”问题。定义一条路径π {g₁, g₂, ..., gₖ}的熵为 H(π) -Σᵢ₌₁ᵏ [P(gᵢ→occupied) × log₂P(gᵢ→occupied) P(gᵢ→unknown) × log₂P(gᵢ→unknown)] 注P(gᵢ→free)不计入熵因其不带来风险这个公式直白地解释就是一条好路径不是最短的而是沿途每个栅格的“危险信息量”总和最小的。P(gᵢ→occupied)高意味着此处易被堵死P(gᵢ→unknown)高意味着此处传感器不可靠——两者都会增加路径执行时的不确定性。MACOGA用改进的Dijkstra变体求解此问题将边权重设为H(gᵢ→gⱼ) H(gⱼ)并加入一个惩罚项α×length(π)其中α是可调参数默认0.3。这样生成的初始路径天然倾向于绕开高风险区域即使没有后续进化其可行性也远超随机路径。我们在某物流仓库实测对比标准GA初始种群中可行路径占比为12.4%而MACOGA初始种群中可行路径占比达68.9%。这意味着进化过程从第一代起就在“优质解空间”内搜索而非耗费大量代际在修复基础碰撞上。2.3 动态冗余注入给路径埋下“逃生预案”PPM的第三步是为每条初始路径注入动态冗余节点。这不是简单地在路径上多插几个点而是基于状态转移概率的时空耦合分析。具体操作是对路径π中的每个栅格gᵢ计算其“下游风险扩散半径”Rᵢ Σⱼ P(gⱼ→occupied | gᵢ) × d(gᵢ,gⱼ)其中d是曼哈顿距离求和范围限于gᵢ周围3×3邻域。若Rᵢ 阈值θ实验取0.45则在gᵢ之后插入一个备用转向点g其位置满足① g与gᵢ相邻② P(g→occupied) 0.15③ g到终点的预估风险熵低于原路径对应段落。这个设计让初始路径自带“微预案”当传感器检测到gᵢ即将被占据时控制器无需重新规划只需执行预置的转向指令即可切入备用路径。我们在四足机器人测试中验证面对突然出现的移动障碍物MACOGA规划路径的平均重规划延迟为17ms而标准GA为213ms——差距来自“预案是否已在初始种群中预埋”。3. MACOGA架构为什么混合结构比纯进化更适配实时控制MACOGA的全称是“Multi-Agent Cooperative Optimization with Genetic Algorithm”但它的混合性远不止字面意思。很多读者看到“混合”二字会下意识认为是GAPSO或GAACO的简单拼接但USM团队的设计哲学完全不同它把GA降级为“全局拓扑探索器”而将局部精细优化交给更轻量、更确定性的机制。这种分层设计正是它能在复杂栅格环境中实现“效率拉满”的底层原因。3.1 三层协同架构各司其职拒绝内耗MACOGA的架构分为三个逻辑层数据流严格单向顶层GA种群演化层负责宏观路径拓扑的探索与收敛。染色体编码不再是传统的位置序列而是“关键转向点坐标转向半径约束”的紧凑表示例如[x₁,y₁,r₁; x₂,y₂,r₂; ...]。这使种群规模可压缩至50-80远低于标准GA所需的200同时避免了路径编码过长导致的交叉失效问题。选择操作采用锦标赛制但适应度函数F(π) 1/(λ₁·length(π) λ₂·H(π) λ₃·smoothness(π))其中H(π)即前述路径熵smoothness(π)是路径曲率积分。关键创新在于λ参数的动态调整当连续5代种群熵H均值下降0.02则λ₂自动降低0.1迫使算法转向长度优化反之则提升λ₂强化抗扰动能力。中层多智能体协同层这是MACOGA区别于其他“混合GA”的核心。每个初始路径被分配一个轻量级Agent约3KB内存占用Agent不参与进化只负责① 实时监听本地栅格状态更新② 当检测到路径上某栅格状态突变如P(g→occupied)骤升时触发预置的局部重规划③ 将重规划结果反馈给GA层作为新个体的“种子”。我们实测发现83%的局部重规划可在2ms内完成且92%的结果能被GA层直接接纳为有效个体——这说明中层与顶层的接口设计极为高效。底层栅格状态同步层不是简单的ROS话题发布而是采用“状态变更事件驱动”的增量同步机制。每个栅格单元维护一个版本号v当P(g→occupied)变化超过阈值δ默认0.15时才广播(g, v, new_P)事件。这使通信负载降低76%在Wi-Fi带宽受限的工业现场尤为关键。我们曾用标准ROS发布全图栅格结果在10Hz更新频率下网络丢包率达34%而MACOGA的事件驱动机制同等条件下丢包率稳定在0.8%以下。注意三层间的数据传递必须通过共享内存如POSIX shm严禁跨进程RPC调用。我们在ARM Cortex-A53平台上测试RPC平均延迟达18ms而shm仅为0.3μs——这对实时性要求严苛的路径规划是生死线。3.2 交叉与变异的重构让进化“懂行规”MACOGA对GA核心算子做了针对性改造使其真正理解栅格环境的物理约束交叉算子拓扑保持交叉Topology-Preserving Crossover, TPC传统单点/均匀交叉会破坏路径的连通性。TPC首先识别两条父代路径的“公共骨架段”即连续重合的栅格序列然后仅在骨架段外的分支点进行交换。例如父代1路径为A→B→C→D→E父代2为A→B→F→G→E公共骨架为A→B→E则交叉点只能在C/D与F/G之间选择确保子代仍从A出发、以E结束。实测显示TPC使无效子代率从标准交叉的41%降至5.2%。变异算子风险导向变异Risk-Oriented Mutation, ROM变异不再随机扰动坐标而是聚焦于高风险栅格。对路径π计算每个点gᵢ的风险得分Sᵢ P(gᵢ→occupied) 0.5×P(gᵢ→unknown)然后按Sᵢ加权选择变异点。变异操作是在gᵢ的8邻域内选择P(g→free)最高的栅格g替换gᵢ并检查新路径是否仍连通。这种变异使算法主动“加固”薄弱环节而非盲目探索。我们在TEVC官方测试集包括Cityscape、Warehouse、Tunnel三类复杂栅格上运行对比MACOGA在相同迭代次数下成功规划率比标准GA高3.8倍平均路径长度仅增加4.2%证明其牺牲的“最优性”完全被鲁棒性提升所覆盖。4. 复杂栅格环境下的实测陷阱为什么你的复现总差那么一点MACOGA在TEVC 2026的实验结果非常亮眼但我在复现过程中踩了至少7个坑其中3个差点让我放弃。这些坑不会出现在论文的Algorithm 1里却是工程落地的生死线。下面我把血泪经验摊开说4.1 栅格分辨率悖论越细越好错细到失真才是灾难论文中所有实验用的是0.05m分辨率栅格我们初期也照搬结果在实际激光雷达数据上彻底失败。问题出在0.05m分辨率下单个栅格尺寸小于激光点间距典型TOF雷达点距约0.08m导致大量栅格状态为“unknown”——不是因为传感器不行而是物理采样不足造成的伪随机噪声。我们最终发现最优分辨率 1.2 × 激光雷达点云平均间距。对我们的Velodyne VLP-16点距约0.12m故采用0.15m栅格。此时P(g→unknown)从43%降至8.7%PPM预测质量跃升。经验永远用实际点云数据计算“有效分辨率”。方法很简单对一帧点云做Voxel Grid滤波观察不同voxel size下点云保真度用ICP匹配误差评估选误差拐点处的size。4.2 概率校准别信出厂P值你的传感器需要专属校准曲线论文附录提到P(g→occupied)用“经验公式”计算但没给参数。我们直接套用其公式结果在雨天场景下预测准确率暴跌至52%。后来发现不同品牌激光雷达的反射强度-距离关系曲线差异巨大。我们花了两周时间对同一场景在晴/雨/雾三种天气下采集数据拟合出自己的校准曲线P(g→occupied) 1 / (1 exp(-k₁·I k₂·d k₃))其中I是反射强度d是距离k₁,k₂,k₃为标定参数。这套曲线使雨天准确率回升至86.4%。4.3 实时性陷阱你以为的“毫秒级”可能是“秒级”幻觉MACOGA论文宣称“单次规划耗时50ms”但我们实测在Jetson AGX Orin上达120ms。排查发现瓶颈不在算法本身而在ROS2的QoS配置。默认reliable模式在丢包时会重传导致延迟尖峰。改为best_effort模式后耗时稳定在42ms。但这里有个隐藏条件必须确保底层网络丢包率0.5%否则best_effort会丢失关键状态事件。我们最终方案是在路由器端启用WMMWi-Fi Multimedia优先级标记将栅格状态事件标记为VOVoice队列实测使关键事件传输延迟标准差从18ms降至2.3ms。4.4 “复杂”二字的真义别只盯着障碍物密度很多复现者把“复杂栅格”理解为障碍物多于是用高密度随机障碍物测试。但真实复杂性来自三方面① 动态障碍物轨迹的不可预测性如工人行走路径② 传感器噪声的空间相关性如玻璃幕墙导致的大片unknown区域③ 地图更新的非均匀性如远处栅格更新慢、近处更新快。我们构建测试集时专门加入“玻璃幕墙走廊”“密集人流动线”“多源地图融合延迟”三类场景这才暴露出算法在论文未覆盖的边界问题。5. 从TEVC 2026到你的项目MACOGA的可移植性与改造指南MACOGA的价值不在于它是一个封闭的“黑盒算法”而在于它提供了一套可拆解、可移植的工程化思想。我在自己的AGV调度系统中没有全盘照搬而是提取其核心模块做了针对性改造5.1 模块化移植哪些能直接抄哪些必须重写模块可移植性改造建议我的实际做法PPM概率建模★★★★☆需适配你的传感器噪声模型保留状态转移框架但用卡尔曼滤波替代滑动窗口统计适配毫米波雷达路径熵计算★★★★★直接复用仅调整权重λ保持原公式但λ₂设为0.8因AGV载重高抗扰动优先级更高TPC交叉算子★★★☆☆需重写骨架识别逻辑改用Douglas-Peucker算法提取路径主干更鲁棒中层Agent★★☆☆☆必须重写依赖特定中间件改用ZeroMQ替代ROS2降低嵌入式端内存占用关键洞察PPM和路径熵是MACOGA的“灵魂”而GA框架只是“躯壳”。我们最终方案是用PPM生成初始路径熵图再输入到传统A*中作为启发式权重完全弃用GA层。结果在调度响应时间上比原MACOGA快2.3倍且代码量减少60%。5.2 硬件适配清单别让算力成为你的天花板MACOGA对硬件有隐性要求论文没明说但实测至关重要内存带宽PPM需频繁访问栅格状态矩阵实测DDR4-2400比DDR3-1600提速37%。在Jetson Nano上我们被迫关闭GUI以释放内存带宽。浮点精度概率计算涉及大量log运算FP32足够但FP16会导致P(g→unknown)溢出为NaN。务必在初始化时检查所有概率值是否在[0,1]区间。实时核隔离GA层必须绑定到独立CPU核并禁用该核的频率调节cpupower frequency-set -g performance。我们在i7-11800H上将GA绑定到core 7使规划抖动从±15ms降至±0.8ms。5.3 你的下一步三个低成本验证动作别急着跑完整代码先做这三件事验证MACOGA是否适合你熵热力图诊断用你现有地图运行PPM生成路径熵图。如果图中高熵区红色集中在你关心的作业区域如装卸区说明MACOGA能带来实质收益如果高熵区都在无人区则优化价值有限。初始种群可行性测试生成100条初始路径统计其中无碰撞路径占比。若30%MACOGA的初始优化将立竿见影若70%则重点应放在中层Agent的局部重规划上。状态事件压力测试模拟每秒100次栅格状态变更事件测量你的通信中间件延迟。若P99延迟5ms需先优化网络栈再谈算法。最后分享一个真实体会MACOGA最颠覆我的认知是它让我意识到在动态环境中“最优解”本身是个伪命题真正的目标是“最可靠解”。当你的机器人不再因为一次意外停摆而需要人工干预当调度系统能在突发状况下自主降级运行——这种可靠性带来的成本节约远超任何理论上的路径缩短百分比。TEVC 2026录用它不是因为它多“聪明”而是因为它足够“务实”。

相关新闻

Blender自动拓扑插件Quad Remesher:安装、参数与工作流指南

Blender自动拓扑插件Quad Remesher:安装、参数与工作流指南

简介:quad-remesher 1.23 自动拓扑工具面向 Blender 中高级建模用户,可针对雕刻高模、游戏资产与影视场景模型快速生成规整四边形布线,解决手工重拓扑耗时长、面数分布不均的问题,尤其适合角色、硬表面等复杂模型的快速重拓扑。压…

2026/10/16 20:26:55 阅读更多 →
Matlab2019b音频频谱分析:FFT与PSD实操指南

Matlab2019b音频频谱分析:FFT与PSD实操指南

1. 这不是教科书里的FFT:一个音频工程师日常怎么用Matlab2019b“听懂”信号在Matlab2019b里敲下fft(),不等于真正理解了音频信号。我带过三届某高校信号处理课程的实验课,也给某音频设备公司做过半年的算法验证支持,最常听到学生和…

2026/10/16 20:26:55 阅读更多 →
Doc2vec原理与实战:文档级语义向量建模技术详解

Doc2vec原理与实战:文档级语义向量建模技术详解

1. 这不是又一个“词向量”复读机:Doc2vec到底在解决什么真问题?你肯定见过这样的场景:某高校实验室里,A同学正对着几十篇PDF格式的课程论文发愁——导师要求他从这批材料里自动找出三类研究方向相近的论文群组,还要给…

2026/10/16 20:25:54 阅读更多 →

最新新闻

GAMES101笔记(06):光栅化、重心坐标插值与Z-Buffer深度缓冲

GAMES101笔记(06):光栅化、重心坐标插值与Z-Buffer深度缓冲

图形学自学路上,很多人前面几讲还能跟住,真正开始掉队通常就是从光栅化这一步开始的。前面把三维物体一路变换到 [-1,1] 的立方体里,看着还挺优雅;到了把三角形变成像素这一步,画风突然就变成了一堆边界函数、包围盒、…

2026/10/16 21:09:32 阅读更多 →
Linux双机共享存储挂载失败:dmsetup remove_all解决存储正忙与超级块错误

Linux双机共享存储挂载失败:dmsetup remove_all解决存储正忙与超级块错误

简介:这份资源围绕 Linux 存储管理中的典型故障展开,面向运维工程师、系统管理员及正在学习 Linux 存储机制的技术人员,重点解决同一存储设备挂载到两台服务器后,其中一台无法挂载或提示「存储正忙」的冲突问题。资源以 docx 文档…

2026/10/16 21:09:32 阅读更多 →
AI论文写作软件测评与推荐全攻略:从选题到终稿的完整指南

AI论文写作软件测评与推荐全攻略:从选题到终稿的完整指南

我上个月遇到一位刚开题的同学,抱着厚厚一摞草稿纸来找我,进门第一句就是:“市面上那些AI论文写作软件,到底能不能用?哪个最好用?”我没有直接回答,而是让他先坐下来,问了他三个问题…

2026/10/16 21:09:32 阅读更多 →
数据中台体系搭建实战:从接入到治理的完整指南

数据中台体系搭建实战:从接入到治理的完整指南

1. 数据中台到底在搭什么:先搞清楚数据体系的骨架很多人一听到“数据中台”四个字,脑子里第一反应就是上一套系统、买一堆服务器、接一堆数据源。我刚开始接触这块的时候也是这么想的,结果第一个项目就踩了大坑——花了三个月把数据接进来&am…

2026/10/16 21:09:32 阅读更多 →
深度解析CUA:AI从回答到上手操作电脑的完整技术拆解与实战避坑指南

深度解析CUA:AI从回答到上手操作电脑的完整技术拆解与实战避坑指南

你有没有试过这样的场景:坐在电脑前,看着一个AI聊天框,你打出"帮我把这个Excel里的数据整理一下,填到那个系统里",然后AI说"好的,已为您生成操作步骤"——但你还是得自己动手&#xff…

2026/10/16 21:09:32 阅读更多 →
从单值曲线到概率分布:条件扩散模型在充电负荷预测中的应用

从单值曲线到概率分布:条件扩散模型在充电负荷预测中的应用

充电负荷预测做了快五年,从传统时间序列到各种深度模型都折腾过,但真正让我觉得“换了个思路”的,还是最近这次尝试:用条件扩散模型做电动汽车充电负荷概率预测。项目做下来,最大的感受是,这个方向不只是换…

2026/10/16 21:08:32 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

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

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →