AMD Ross FPGA Agent 深度解析:MCP 架构与 Vivado 自动化实战
1. 从一条官方动态说起AMD 为什么要自己做一个 FPGA AgentAMD 在开发者生态上一直有个尴尬Vivado 这套工具链功能极其强大但学习曲线陡峭得离谱。一个刚入行的 FPGA 工程师光是搞清楚工程结构、约束文件、综合实现流程、时序报告怎么看就得脱一层皮。更别提日常开发里那些重复度极高的操作——建工程、加 IP、跑综合、看时序、改约束、重新跑、生成比特流一轮下来少则十几分钟多则半小时以上而工程师真正花在设计上的时间可能只占三成。Ross 就是在这个背景下出现的。它是 AMD 官方推出的一个 FPGA 开发 Agent核心定位很明确把 Vivado 的日常操作流程交给一个能理解自然语言、能调用工具、能自主决策的智能体来驱动。你不再需要记住create_project后面跟哪一串参数也不用翻半天 Tcl 手册去查某个 IP 的配置命令直接用自然语言描述你的意图Ross 负责把它翻译成对 Vivado 的操作序列执行、观察结果、根据反馈调整直到任务完成。这件事的意义不在于又一个 AI 助手而在于 AMD 作为 FPGA 工具链的官方方亲自下场把 Agent 和自家 EDA 工具做了深度打通。它用的是 MCPModel Context Protocol这套协议来连接大模型和工具能力这意味着 Ross 不是简单的对话框套壳而是真正具备工具调用、上下文管理、多步推理能力的 Agent 架构。适合谁来关注这个内容三类人最该认真看一是正在用 Vivado 做 FPGA 开发、想提升效率的一线工程师二是对 AI Agent 架构感兴趣、想了解 MCP 在 EDA 领域怎么落地的开发者三是正在做 FPGA 项目实战、被工具链折腾得够呛的学生和转行者。下面我会从架构设计、核心机制、实操流程、踩坑经验几个维度把 Ross 这套东西拆开讲清楚。2. Ross 的整体架构设计Agent 和 EDA 工具是怎么接上的2.1 为什么是 MCP而不是直接写死一套 API要理解 Ross 的设计先得理解它为什么选 MCP 作为连接层。传统做法是给大模型写一套专用的函数调用接口比如定义create_vivado_project()、run_synthesis()这些函数模型输出 JSON 来触发。这种做法能用但扩展性差——每加一个新工具能力就得改一遍接口定义、重新训练或调整提示词、重新测试。MCP 的思路不一样。它把工具能力抽象成一个标准化的协议层工具方只需要按照 MCP 规范暴露自己的能力叫 toolAgent 方通过协议去发现、调用这些工具。这就像 USB 接口——你不需要为每个设备单独设计一个插槽只要设备符合 USB 规范插上就能用。Ross 用 MCP 带来的直接好处是Vivado 的各种操作被封装成一个个 MCP toolAgent 在运行时动态发现这些工具根据任务需要组合调用。今天你加了一个时序分析工具明天加了一个功耗估算工具Agent 不需要重新训练就能用上。这对 EDA 这种工具链极其庞大、能力不断扩展的场景来说是刚需。提示MCP 本质上是一套工具描述 调用约定的协议模型看到的是工具的名称、参数说明、返回值格式它据此决定调哪个工具、传什么参数。理解这一点后面看 Ross 的行为逻辑就顺了。2.2 Ross 的三层结构对话层、决策层、执行层把 Ross 拆开看它大致分三层。最上面是对话层负责接收用户的自然语言输入维护多轮对话的上下文。这一层的关键是意图理解——用户说帮我把这个工程的时序收敛一下Agent 得知道这背后涉及读时序报告、找关键路径、调整约束或综合策略、重新实现、再验证这一整套流程。中间是决策层也就是大模型本身。它根据当前上下文和可用工具列表决定下一步做什么。这里有个很重要的设计Agent 不是一次性规划出所有步骤然后闷头执行而是执行一步、观察结果、再决定下一步。这种 ReAct 式的循环让它在遇到综合失败、时序不收敛这类需要根据实际反馈调整的场景时能做出更合理的应对。最下面是执行层通过 MCP 连接到 Vivado。这一层负责把决策层的意图翻译成具体的 Tcl 命令或工具调用执行后把结果成功/失败、日志、报告数据回传给决策层。执行层还负责一些工程化的细节比如超时控制、错误捕获、日志落盘。2.3 和普通AI 写 Tcl的本质区别很多人第一反应是这不就是让 AI 帮我写 Tcl 脚本吗区别很大。普通 AI 写 Tcl是你描述需求它生成一段脚本你自己去跑。问题在于脚本能不能跑通、跑出来结果对不对、报错了怎么办全靠你自己。而且 Vivado 的很多操作是强上下文依赖的——当前工程状态、已加载的 IP、约束文件的写法都会影响命令的正确性。AI 在不知道这些上下文的情况下生成的脚本经常是看起来对一跑就错。Ross 是你描述需求它自己跑根据跑的结果决定下一步。它能读到真实的工程状态、真实的报错信息、真实的时序报告然后基于这些真实反馈做决策。这是 Agent 和代码生成器的根本分野——前者有闭环后者是开环。3. 核心机制拆解Ross 到底怎么用 Vivado3.1 工具能力的封装粒度Ross 把 Vivado 的能力封装成 MCP tool 时粒度选择很讲究。太粗比如一个 tool 叫完成整个综合实现流程那 Agent 就没法在中途干预遇到问题也没法细调太细比如每个 Tcl 命令都封一个 tool那工具列表会长到模型看不过来而且很多命令单独调用没有意义。从实际使用来看Ross 的封装粒度大致落在任务级——比如创建工程添加源文件配置 IP运行综合运行实现生成比特流读取时序报告修改约束这些。每个 tool 对应一个相对完整、有明确输入输出的操作单元。这个粒度让 Agent 既能灵活组合又不会陷入命令细节的泥潭。3.2 上下文管理Agent 怎么记住工程状态FPGA 开发有个特点状态多且相互依赖。当前打开的是哪个工程、综合跑没跑过、用的是哪个器件、约束文件里有哪些时钟定义——这些信息决定了下一步操作是否合法。Ross 在上下文管理上做了两件事。一是显式状态跟踪把工程的关键状态工程路径、器件型号、当前流程阶段、最近一次综合/实现的结果维护在一个结构化的上下文里每次决策时都带上。二是按需读取不是把所有信息一股脑塞给模型而是在需要时通过工具去读比如要看时序就调读取时序报告工具要确认约束就调读取约束文件工具。这样既控制了上下文长度又保证了信息的准确性。3.3 错误处理与自愈逻辑这是 Ross 最有价值的部分之一。Vivado 的报错信息经常又长又晦涩一个综合失败可能抛出几十行日志关键信息藏在中间。Ross 的处理逻辑是捕获错误 → 提取关键信息 → 判断错误类型 → 决定是重试、调整参数还是回退。举个典型场景综合时报某个模块的时序约束缺失。Ross 会识别出这是约束问题然后去检查约束文件发现确实少了对应的时钟定义于是补上约束再重新综合。整个过程不需要人工介入。当然不是所有错误都能自愈遇到它判断不了的问题它会停下来把错误信息整理好反馈给用户而不是瞎试。注意Agent 的自愈能力有边界。涉及设计逻辑本身的错误比如 RTL 写错了它一般不会去改你的源代码而是提示你问题所在。指望它全自动修 bug 是不现实的。3.4 和 Vivado 版本、License 的关系热词里出现了 vivado 2026.1 license 和 vivado 安装教程说明版本和授权是大家关心的点。Ross 作为官方 Agent对 Vivado 版本是有要求的——它依赖的工具接口在不同版本间可能有差异。实际使用中建议用较新的稳定版本太老的版本可能缺少某些 MCP 工具支持。License 方面Ross 本身不改变 Vivado 的授权逻辑它调用的还是你本机已授权的 Vivado。也就是说你原本能跑综合实现Ross 就能帮你跑你原本没授权某个器件Ross 也变不出来。这一点要清楚别指望 Agent 能绕过授权限制。4. 实操流程从零跑通一个 Ross 驱动的 FPGA 工程4.1 环境准备与前置检查动手之前先把环境理清楚。这一步做扎实后面能省很多事。Vivado 安装与授权确保 Vivado 能正常启动、能创建工程、能跑通一次完整的综合实现流程。如果 Vivado 本身有问题Ross 也救不了。器件支持包确认你要用的 FPGA 器件比如 Artix、Zynq、Versal 系列的支持包已安装。热词里提到的 fpga 项目实战 和 vivado 环境配置核心就是这一步别漏。MCP 运行环境Ross 通过 MCP 连接需要确保 MCP 服务能正常启动、能被 Agent 发现。这一步的具体配置方式随版本变化以官方文档为准。网络与依赖如果 Agent 的模型推理在远端确保网络通畅如果是本地模型确认显存和算力够用。提示我个人的习惯是在让 Agent 接手之前先手动跑通一个最小工程比如一个点灯或计数器确认工具链本身没问题。这样一旦 Agent 出问题能快速判断是环境问题还是 Agent 问题。4.2 用自然语言描述任务提示词怎么写才有效Ross 的输入是自然语言但会说话和说得好差别很大。有效的任务描述应该包含几个要素目标、约束、验收标准。比如你想做一个频率测量模块差的描述是帮我做个频率测量。好的描述是在当前工程里新增一个频率测量模块输入是待测信号和参考时钟100MHz输出是测得的频率值要求测量范围 1kHz 到 10MHz误差小于 0.1%用 Verilog 实现综合后资源占用尽量小。后一种描述给了 Agent 明确的输入输出、性能指标、实现语言、优化目标它就能据此规划出合理的实现路径——选什么测量方法等精度测量还是直接计数、怎么处理跨时钟域、怎么优化资源。热词里 fpga 实现频率测量 和 使用 fpga 进位链 tdc 测量时间 这类需求描述得越具体Agent 给出的方案越靠谱。4.3 观察 Agent 的执行过程它在做什么任务提交后Ross 会开始它的循环。你能看到它一步步的动作先读工程状态然后创建源文件写 RTL 代码加约束跑综合看结果可能还要跑实现和时序分析。这个过程里有几个观察点值得留意。一是它选的实现方案是否合理——比如频率测量它选了直接计数法还是等精度法这直接影响精度和资源。二是它怎么处理约束——时钟约束、IO 约束有没有正确添加。三是它遇到问题时的反应——是重试、调整还是停下来问你。我实测下来Ross 在流程性任务建工程、加文件、跑流程上表现很稳在设计决策类任务选架构、定参数上则需要你把需求描述清楚否则它可能选一个能用但不是最优的方案。4.4 关键环节综合、实现、时序收敛这三个环节是 FPGA 开发的核心也是 Ross 最能体现价值的地方。综合阶段Ross 会根据你的 RTL 和约束跑综合然后读综合报告。如果资源占用超预期它会提示你甚至尝试调整综合策略比如换 area 优化还是 speed 优化。实现阶段布局布线跑完后关键是看时序。Ross 会读时序报告找出关键路径critical path判断是否满足时序。如果时序不收敛negative slack它会分析原因——是逻辑级数太深、是布线拥塞、还是约束太紧——然后给出调整建议或直接尝试优化。时序收敛这块热词里 vivado 生成比特流失败 很多时候就是时序没过。Ross 的价值在于它能把时序报告里那些晦涩的 slack 数字和路径信息翻译成哪条路径有问题、为什么有问题、可以怎么改这样的可操作建议。4.5 生成比特流与验证时序收敛后生成比特流就是水到渠成的事。Ross 会调用相应工具完成这一步并确认生成成功。之后如果你有板子可以下载验证如果是纯仿真验证它会帮你跑仿真、看波形。这里有个实操心得别跳过仿真直接上板。Agent 再聪明也不能保证 RTL 逻辑完全符合你的预期。让 Ross 帮你跑一遍 testbench 仿真看波形对不对比上板后发现功能不对再回头查要高效得多。5. 常见问题与排查技巧实录5.1 Agent 卡住不动或反复重试这是最常见的问题。表现是 Ross 在某个步骤上循环比如反复跑综合、反复改约束但问题始终没解决。排查思路先看它卡在哪个环节。如果是综合反复失败多半是 RTL 有语法或逻辑问题Agent 改不动源码只能反复试。这时候你应该介入手动检查 RTL。如果是时序反复不收敛可能是约束本身有问题或者设计对时序要求过高需要你调整架构。注意Agent 不是万能的遇到它反复试同一个方向时及时打断、人工介入比让它空转更省时间。5.2 工具调用失败MCP 连接问题如果 Ross 报工具不可用或连接失败问题多半在 MCP 层。检查顺序MCP 服务是否启动 → 端口是否被占用 → 版本是否匹配 → 权限是否足够。热词里 vivado winpcap 安装失败 这类环境问题本质都是依赖没装全MCP 环境也一样缺依赖就会连不上。5.3 时序报告看不懂Agent 的解释也不对有时候 Ross 对时序问题的解释会跑偏比如把布线拥塞导致的时序问题误判为逻辑级数问题。这时候别盲信自己去看时序报告里的关键路径详情。判断方法看路径的 logic delay 和 net delay 占比。logic delay 高说明逻辑级数深net delay 高说明布线拥塞或布局差。这个判断能力是 FPGA 工程师的基本功Agent 可以辅助但不能替代。5.4 资源占用异常偏高如果综合后资源占用远超预期常见原因有几个一是代码风格问题比如该用块 RAM 的地方用了分布式 RAM该复用的逻辑没复用二是综合策略选错了三是约束没加好导致工具没法优化。热词里 fpga case 用独热码和不用独热码区别 就是典型的代码风格影响资源占用的例子。独热码状态机译码快但占寄存器多二进制编码省寄存器但译码逻辑复杂选哪种要看具体场景。Ross 一般会按默认策略来你需要根据实际需求告诉它偏好。5.5 常见问题速查表问题现象可能原因排查方向处理建议Agent 反复重试同一操作RTL 逻辑错误或约束冲突检查综合日志和约束文件人工介入修正源码或约束工具调用失败MCP 服务未启动或版本不匹配检查 MCP 运行状态和版本重启服务对齐版本时序不收敛逻辑级数深或布线拥塞看关键路径 logic/net delay 占比优化 RTL 或调整综合策略资源占用偏高代码风格或综合策略问题看综合报告的资源明细调整编码风格或换策略比特流生成失败时序未过或 DRC 错误看实现日志和 DRC 报告先解决时序和 DRC 问题仿真结果不符预期testbench 或 RTL 逻辑问题看波形对比预期修正 testbench 或 RTL6. 我对 Ross 这类 FPGA Agent 的实际体会用下来最大的感受是它把 FPGA 开发里流程性的部分接管了让你能把精力集中在设计性的部分。建工程、跑流程、看报告、改约束这些事以前要占掉大量时间现在可以交给 Agent。但设计的核心——架构怎么选、算法怎么实现、时序怎么权衡——还是得靠人。另一个体会是提示词的质量直接决定 Agent 的输出质量。你描述得越具体、约束给得越明确它干得越好。含糊的需求只会得到含糊的结果。这一点和带新人很像——你把任务交代清楚他才能做好。还有个坑要提醒别把 Agent 当黑盒。它做的每一步你最好都看一眼尤其是涉及约束修改和综合策略调整的地方。Agent 可能会为了让流程跑通而做一些你不想要的妥协比如放宽约束。这些改动如果不检查可能会埋下隐患。热词里 agent 安全 和 agent 架构 是很多人关心的方向。从 Ross 这个案例看Agent 在 EDA 这种专业工具领域的落地关键不在于模型多强而在于工具能力的封装质量、上下文管理的精细度、以及错误处理逻辑的健壮性。这三点做好了Agent 才真正可用而不只是个演示品。最后分享一个实用技巧把 Ross 当成一个能执行 Tcl 的助手来用而不是能替你做设计的专家。你负责想清楚要什么它负责高效地执行和反馈。这个定位摆正了用起来会顺手很多。至于它后续能扩展到什么程度比如支持更复杂的设计空间探索、自动做架构权衡那就要看 AMD 后续怎么迭代这套工具链了。

相关新闻

基于TPS25948 eFuse与STM32的嵌入式电源保护方案设计

基于TPS25948 eFuse与STM32的嵌入式电源保护方案设计

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

2026/10/11 10:39:55 阅读更多 →
工业级嵌入式电源路径保护:TPS259483AYWPR与RA6M4协同设计实战

工业级嵌入式电源路径保护:TPS259483AYWPR与RA6M4协同设计实战

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

2026/10/11 7:09:57 阅读更多 →
自助购药小程序源码部署与二次开发指南:从数据库到前端全链路跑通

自助购药小程序源码部署与二次开发指南:从数据库到前端全链路跑通

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

2026/10/11 10:34:48 阅读更多 →

最新新闻

边界值分析法:从线上事故到测试用例设计的完整实战指南

边界值分析法:从线上事故到测试用例设计的完整实战指南

1. 从一次线上事故说起:你确定真的测过“边界”吗做软件测试这行,时间久了都会有一种感觉:用户永远比你更会“找茬”。前阵子我们上线了一个活动页面,里面有个优惠券金额输入框,需求文档写得清清楚楚:金额范…

2026/10/12 8:25:00 阅读更多 →
导演思维:AI视频创作的景别运镜光线色彩实战指南

导演思维:AI视频创作的景别运镜光线色彩实战指南

1. 为什么“导演思维”是AI视频创作者的必修课这两年AI视频工具迭代得飞快,从文生视频到图生视频,再到视频续写和风格迁移,几乎每隔几个月就有一批新工具冒出来。但我在社群里观察到一个很有意思的现象:同样是用AI生成视频&#x…

2026/10/12 8:25:00 阅读更多 →
地图投影选型指南:从墨卡托到UTM的实战避坑

地图投影选型指南:从墨卡托到UTM的实战避坑

1. 从一张“变形”的世界地图说起如果你手头有一张世界地图,不妨拿起来仔细看看。格陵兰岛的面积看起来是不是跟整个非洲差不多大?实际上,非洲的面积是格陵兰岛的十四倍还多。再瞅瞅俄罗斯,它在地图上横跨东西的宽度简直夸张到离谱…

2026/10/12 8:25:00 阅读更多 →
JDK 13核心新特性:文本块与Switch表达式实战解析

JDK 13核心新特性:文本块与Switch表达式实战解析

JDK 13 是 2019 年 9 月发布的版本,放在 Java 整个演进史里算不上主角——它不是 LTS,生命周期只有半年左右,很多人甚至直接跳过了它。但如果你把视野稍微拉长一点,会发现 JDK 13 其实是 Java 语法变革里非常关键的一站&#xff1…

2026/10/12 8:25:00 阅读更多 →
短视频广告批量裂变:开头钩子、字幕策略与画幅适配实战

短视频广告批量裂变:开头钩子、字幕策略与画幅适配实战

1. 为什么一条广告片要拆成十几个版本做过投放的人都有体会:同一条视频广告,跑了一周之后数据开始疲软,CPM涨、转化掉,这时候你换一版开头,数据可能又活过来了。问题在于,一条片子从脚本到成片,…

2026/10/12 8:25:00 阅读更多 →
本地ComfyUI生成AI漫剧:从整合包安装到批量出片的完整方案

本地ComfyUI生成AI漫剧:从整合包安装到批量出片的完整方案

前两天一个做短视频的朋友跑来问我:网上那些AI漫剧到底是怎么做出来的?他试了好几个能生成视频的网页,几分钟就烧掉几十块,充值按钮还老在眼前晃,生成次数也卡得死死的。我直接把我自己在用的一套本地方案丢给了他&…

2026/10/12 8:24:00 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →