SpringBoot集成BPMN流程设计器:从零构建可视化工作流设计中心
上周接手了一个内部审批系统的改造原本以为只是简单的CRUD增删改查结果发现核心逻辑全卡在“流程”上。一个请假申请从提交到审批通过中间要经过组长、经理、HR等多个节点每个节点都可能通过、驳回或转交。更麻烦的是不同的申请类型如报销、采购流程还不一样。如果全靠硬编码if-else来串联状态代码很快就会变成一团乱麻而且每次业务调整流程开发都要跟着改代码、发版本。这就是工作流引擎要解决的问题把“业务流程”从具体的业务代码中抽离出来变成一个可以独立设计、可视化配置、动态调整的“引擎”。而bpmn-js作为基于 BPMN 2.0 标准的 Web 流程编辑器则是连接业务人员和开发者的桥梁——让非技术人员也能通过拖拽画出流程图并直接生成引擎可执行的流程定义文件。很多人一听到“集成工作流引擎”就觉得是架构升级的大工程下意识想找现成的 SaaS 或低代码平台。但对于很多已有成熟业务系统、只是需要将部分模块流程化的团队来说在 Spring Boot 项目中嵌入一个轻量级引擎如 Flowable、Activiti并搭配前端编辑器往往是更可控、成本也更低的方案。今天我们就来彻底拆解这个方案的“上集”如何将一个可视化的流程设计器bpmn-js无缝集成到你的 Spring Boot 后台服务中并为后续的引擎驱动打下坚实基础。1. 为什么是“流程编辑器”先行而不是先写后端逻辑在集成工作流时一个常见的误区是先埋头研究 Flowable 或 Activiti 的 Java API写一堆RuntimeService、TaskService的调用代码试图用程序逻辑去“拼凑”出一个流程。这相当于还没画图纸就开始砌墙很容易导致前后端认知不一致流程逻辑散落在代码各处难以维护。更合理的路径是“设计驱动开发”先定义流程业务方、产品经理和开发一起使用可视化工具明确流程的节点、路径、审批人、表单和规则。再实现引擎将设计好的流程定义文件部署到引擎中引擎负责驱动流程实例的流转。最后对接业务开发具体的业务接口如提交申请、审批任务这些接口内部调用引擎的 API。bpmn-js扮演的就是第一步中的“设计工具”角色。它是一个基于 BPMN 2.0 标准的 JavaScript 库能让你在浏览器里画出专业的流程图就像 Visio 或 ProcessOn并且这个图背后是标准的 XML 文件.bpmn 或 .bpmn20.xml。这个 XML 文件就是工作流引擎如 Flowable能直接“读懂”并执行的“源代码”。所以集成 bpmn-js 的本质是为你的 Spring Boot 应用添加一个“流程设计中心”。这个中心负责流程的创建、编辑、保存和版本管理。后续引擎集成时只需要从这个中心获取流程定义文件进行部署即可。2. 理解核心BPMN 2.0 标准与 bpmn-js 的定位在动手之前需要先建立两个关键认知BPMN 2.0 (Business Process Model and Notation)这是一套由 OMG 组织维护的、描述业务流程的全球通用标准。它定义了一套丰富的图形元素如事件、活动、网关、顺序流和对应的 XML 模式XSD。它的最大价值在于“可视化与可执行性统一”。你用 BPMN 画出的图不仅能给人看还能被符合标准的引擎Flowable, Activiti, Camunda等直接解析和执行。这就消除了流程图和实际代码之间的“翻译”成本。bpmn-js它是 Camunda 公司也是 Flowable 项目的重要贡献者开源的一个工具包用于在 Web 应用中渲染和编辑 BPMN 2.0 图表。你可以把它理解为一个“BPMN 的富文本编辑器”。它不关心你的后端是 Java 还是 Python也不关心你用哪个工作流引擎。它只负责两件事将 BPMN XML 渲染成可交互的流程图。将用户在界面上的拖拽操作同步更新到底层的 BPMN XML。因此我们的集成目标非常清晰在 Spring Boot 后端提供一个文件存储和管理的服务在前端 Vue/React 页面中嵌入 bpmn-js 编辑器并实现前后端关于 BPMN XML 文件的增删改查同步。3. 环境搭建与基础集成从前端编辑器到后端文件服务假设我们有一个基础的 Spring Boot 2.7 Vue 3 的前后端分离项目。集成 bpmn-js 主要在前端完成后端主要负责模型文件的持久化。3.1 前端嵌入 bpmn-js 编辑器首先在前端项目中安装 bpmn-js 及其相关依赖# 在你的 Vue/React 项目目录下 npm install bpmn-js bpmn-js-properties-panel camunda-bpmn-moddle --savebpmn-js: 核心编辑器库。bpmn-js-properties-panel: 右侧属性面板用于编辑选中元素的属性如任务名称、办理人表达式。camunda-bpmn-moddle: 扩展包使编辑器支持 Flowable/Activiti/Camunda 等引擎的扩展属性如flowable:assignee,flowable:candidateUsers。接下来创建一个流程设计器组件如BpmnModeler.vuetemplate div classcontainer div classheader el-button clickhandleCreateNew新建/el-button el-button clickhandleSave保存/el-button el-button clickhandleDeploy部署/el-button el-select v-modelcurrentModelId placeholder选择流程模型 changeloadModel el-option v-formodel in modelList :keymodel.id :labelmodel.name :valuemodel.id / /el-select /div div classcontent div classcanvas refcanvas/div div classproperties-panel idjs-properties-panel/div /div /div /template script setup import { ref, onMounted, onBeforeUnmount } from vue; import BpmnModeler from bpmn-js/lib/Modeler; import propertiesPanelModule from bpmn-js-properties-panel; import propertiesProviderModule from bpmn-js-properties-panel/lib/provider/camunda; import camundaModdleDescriptor from camunda-bpmn-moddle/resources/camunda.json; import axios from axios; const canvas ref(null); const currentModelId ref(); const modelList ref([]); let bpmnModeler null; // 初始化编辑器 const initBpmnModeler () { bpmnModeler new BpmnModeler({ container: canvas.value, propertiesPanel: { parent: #js-properties-panel }, additionalModules: [ propertiesPanelModule, propertiesProviderModule ], moddleExtensions: { camunda: camundaModdleDescriptor } }); // 加载一个空的默认流程图 createNewDiagram(); }; // 创建一个空的、带基本结构的BPMN图 const createNewDiagram async () { const xml ?xml version1.0 encodingUTF-8? bpmn2:definitions xmlns:bpmn2http://www.omg.org/spec/BPMN/20100524/MODEL xmlns:bpmndihttp://www.omg.org/spec/BPMN/20100524/DI xmlns:dchttp://www.omg.org/spec/DD/20100524/DC xmlns:dihttp://www.omg.org/spec/DD/20100524/DI xmlns:flowablehttp://flowable.org/bpmn idsample-diagram targetNamespacehttp://flowable.org/bpmn bpmn2:process idProcess_1 isExecutabletrue bpmn2:startEvent idStartEvent_1 / /bpmn2:process bpmndi:BPMNDiagram idBPMNDiagram_1 bpmndi:BPMNPlane idBPMNPlane_1 bpmnElementProcess_1 bpmndi:BPMNShape idStartEvent_1_di bpmnElementStartEvent_1 dc:Bounds x150 y100 width36 height36 / /bpmndi:BPMNShape /bpmndi:BPMNPlane /bpmndi:BPMNDiagram /bpmn2:definitions; await bpmnModeler.importXML(xml); }; // 从后端加载模型列表 const loadModelList async () { const response await axios.get(/api/bpmn/models); modelList.value response.data; }; // 加载指定模型的XML const loadModel async (modelId) { if (!modelId) return; const response await axios.get(/api/bpmn/model/${modelId}/xml); await bpmnModeler.importXML(response.data.xml); }; // 保存当前模型到后端 const handleSave async () { const { xml } await bpmnModeler.saveXML({ format: true }); const modelName 流程模型_${new Date().getTime()}; await axios.post(/api/bpmn/model, { name: modelName, xml: xml }); // 保存后刷新列表 await loadModelList(); }; // 部署流程这里只是触发后端部署下篇详述 const handleDeploy async () { const { xml } await bpmnModeler.saveXML({ format: true }); await axios.post(/api/bpmn/deploy, { xml: xml }); }; onMounted(() { initBpmnModeler(); loadModelList(); }); onBeforeUnmount(() { if (bpmnModeler) { bpmnModeler.destroy(); } }); /script style scoped .container { height: 100vh; display: flex; flex-direction: column; } .header { padding: 10px; border-bottom: 1px solid #eee; } .content { flex: 1; display: flex; overflow: hidden; } .canvas { flex: 1; border-right: 1px solid #eee; } .properties-panel { width: 300px; overflow-y: auto; } /style这个组件完成了编辑器初始化、创建空白图、从后端加载已有模型、保存模型XML等核心功能。属性面板允许你编辑任务节点的详细信息。3.2 后端提供模型管理的 REST API前端编辑器需要和后端交互进行模型的增删改查。我们在 Spring Boot 中创建相应的控制器和实体。首先定义一个流程模型实体用于在数据库中存储模型的基本信息和XML内容// BpmnModel.java Data Entity Table(name bpmn_model) public class BpmnModel { Id GeneratedValue(strategy GenerationType.IDENTITY) private Long id; private String name; // 模型名称 private String key; // 模型Key通常与流程定义Key一致 private String description; Lob // 大文本字段用于存储XML Column(columnDefinition LONGTEXT) private String xmlContent; private String version; // 模型版本 private Long createUserId; private String createUserName; private LocalDateTime createTime; private LocalDateTime updateTime; private Boolean deployed false; // 是否已部署到引擎 }然后创建对应的 Repository 和 Service 层。这里提供一个简单的控制器示例// BpmnModelController.java RestController RequestMapping(/api/bpmn) public class BpmnModelController { Autowired private BpmnModelService bpmnModelService; // 获取模型列表 GetMapping(/models) public ResultListBpmnModelVO listModels() { ListBpmnModel models bpmnModelService.listAll(); ListBpmnModelVO vos models.stream().map(this::convertToVO).collect(Collectors.toList()); return Result.success(vos); } // 根据ID获取模型详情含XML GetMapping(/model/{id}/xml) public ResultBpmnModelXmlVO getModelXml(PathVariable Long id) { BpmnModel model bpmnModelService.getById(id); if (model null) { return Result.error(模型不存在); } BpmnModelXmlVO vo new BpmnModelXmlVO(); vo.setId(model.getId()); vo.setName(model.getName()); vo.setXml(model.getXmlContent()); return Result.success(vo); } // 创建或更新模型 PostMapping(/model) public ResultLong saveModel(RequestBody SaveModelRequest request) { BpmnModel model new BpmnModel(); model.setName(request.getName()); model.setXmlContent(request.getXml()); model.setCreateTime(LocalDateTime.now()); model.setUpdateTime(LocalDateTime.now()); // 可以从XML中解析出key和版本等信息 // String processId parseProcessIdFromXml(request.getXml()); // model.setKey(processId); Long savedId bpmnModelService.saveOrUpdate(model); return Result.success(savedId); } // 触发部署此处预留接口实际部署逻辑在下篇与引擎集成时实现 PostMapping(/deploy) public ResultString deployModel(RequestBody DeployRequest request) { // 1. 将XML保存为临时文件或直接传入引擎 // 2. 调用 Flowable 的 RepositoryService 进行部署 // 3. 更新模型状态为已部署 // 具体实现见下篇 return Result.success(部署请求已接收具体实现需集成Flowable引擎); } // 省略 VO 和 Request 类定义... }至此一个最基础的“流程设计中心”骨架就搭建完成了。前端可以画图、保存、加载后端负责存储。但这只是万里长征第一步一个可用于生产环境的设计器还需要解决一系列工程化问题。4. 从“能用”到“好用”编辑器集成的关键细节与避坑指南如果只是把 bpmn-js 的官方示例跑通你会觉得集成很简单。但一旦投入实际项目以下几个问题会立刻浮现4.1 自定义 Palette工具栏只留下业务需要的元素默认的 bpmn-js 工具栏包含了 BPMN 2.0 全量的元素如各种事件、网关、活动。但对于大多数审批流场景业务人员可能只需要“开始事件”、“结束事件”、“用户任务”、“并行网关”、“排他网关”等少数几个。过多的选项反而会造成困惑。你需要自定义 Palette隐藏不必要的元素// 自定义Palette模块 const customPaletteModule { paletteProvider: [type, function(palette, create, elementFactory, globalConnect) { // 创建一个“仅包含必要元素”的分组 palette.registerProvider(custom-palette, function() { return { getPaletteEntries: function(element) { return { // 隐藏默认的“工具”分组 tool-separator: { group: tools, separator: true }, // 创建我们自己的分组 custom-start-event: { group: custom, className: bpmn-icon-start-event-none, title: 创建开始节点, action: { dragstart: createStart, click: createStart } }, custom-user-task: { group: custom, className: bpmn-icon-user-task, title: 创建用户任务, action: { dragstart: createUserTask, click: createUserTask } }, custom-exclusive-gateway: { group: custom, className: bpmn-icon-gateway-xor, title: 创建排他网关, action: { dragstart: createExclusiveGateway, click: createExclusiveGateway } }, custom-end-event: { group: custom, className: bpmn-icon-end-event-none, title: 创建结束节点, action: { dragstart: createEnd, click: createEnd } } }; } }; }); }] }; // 在初始化Modeler时加入自定义模块 bpmnModeler new BpmnModeler({ container: canvas.value, propertiesPanel: { parent: #js-properties-panel }, additionalModules: [ propertiesPanelModule, propertiesProviderModule, customPaletteModule // 加入自定义模块 ], moddleExtensions: { camunda: camundaModdleDescriptor } });4.2 属性面板的深度定制绑定业务数据默认的属性面板只能编辑 BPMN 标准属性。但在实际业务中我们需要为“用户任务”节点设置审批人flowable:assignee、候选组flowable:candidateGroups、表单Keyflowable:formKey等引擎扩展属性。更进一步的我们可能希望直接在下拉框中选择系统中的角色或用户而不是手动输入表达式。这需要对属性面板的 Provider 进行扩展。以下是一个简化示例展示如何添加一个“审批人”自定义字段// 自定义属性提供者 import { is } from bpmn-js/lib/util/ModelUtil; function CustomPropertiesProvider(propertiesPanel, translate) { // 调用父类构造函数 propertiesPanel.BaseProvider.call(this); // 为“用户任务”提供额外的属性组 this.getGroups function(element) { return function(groups) { // 只针对 UserTask 类型 if (is(element, flowable:UserTask)) { // 添加一个“审批设置”分组 groups.push(createApprovalGroup(element, translate)); } return groups; }; }; } // 创建“审批设置”属性组 function createApprovalGroup(element, translate) { return { id: approval, label: translate(审批设置), entries: [ { id: assignee, label: translate(指定审批人), modelProperty: assignee, widget: textField, // 可以改为 select 并绑定用户列表 get: function(element) { const bo getBusinessObject(element); return { assignee: bo.get(flowable:assignee) }; }, set: function(element, values) { const bo getBusinessObject(element); return bo.set(flowable:assignee, values.assignee || ); } }, { id: candidateGroups, label: translate(候选组), modelProperty: candidateGroups, widget: textField, get: function(element) { const bo getBusinessObject(element); return { candidateGroups: bo.get(flowable:candidateGroups) }; }, set: function(element, values) { const bo getBusinessObject(element); return bo.set(flowable:candidateGroups, values.candidateGroups || ); } } ] }; } // 注册自定义属性提供者 propertiesPanelModule.__init__ [ propertiesProvider, CustomPropertiesProvider ];在实际项目中widget: select的数据源需要从后端 API 动态获取角色和用户列表这需要更复杂的前后端交互。4.3 流程图的导出与导入版本管理与协作导出bpmnModeler.saveXML({ format: true })可以获取格式化后的 XML 字符串。你可以将其提供为.bpmn文件下载方便离线存档或与其他工具交换。导入除了从后端数据库加载还应支持用户直接上传本地的.bpmn或.bpmn20.xml文件通过bpmnModeler.importXML()加载到编辑器中。这是实现流程版本迭代和跨团队协作的基础。图片导出bpmnModeler.saveSVG()可以导出当前流程图的 SVG 格式用于生成审批单上的流程图或在流程监控界面显示。注意 SVG 可能包含大量细节需要后端进行压缩或转换为 PNG。4.4 后端存储的优化不仅仅是存 XML元数据分离不要只存一个巨大的 XML 字段。应将流程的key,name,version等元数据单独存储并建立索引方便快速检索和列表展示。版本控制每次保存应生成新版本而不是覆盖旧版本。可以借鉴 Git 的思想记录版本号、创建人和备注支持回滚到历史版本。模型解析与校验在后端保存 XML 前应尝试用引擎的BpmnXMLConverter进行解析校验确保 XML 语法正确且符合引擎要求。避免存储无法部署的无效流程。大字段处理对于超大的流程图 XML考虑使用对象存储如 MinIO、OSS存储文件数据库中只存文件地址。5. 集成不是终点为后续引擎驱动铺平道路集成 bpmn-js 编辑器看似只是一个前端功能实则是在为整个工作流体系搭建“设计层”。这个设计层的质量直接决定了后续引擎集成的顺畅度。在完成本部分集成后你应该能清晰地回答以下问题这也是为下一篇《SpringBoot集成工作流引擎Flowable/Activiti驱动下》做的准备流程定义从哪里来- 从我们刚建好的“流程设计中心”来通过部署接口下发。流程图的节点属性审批人、表单如何与业务系统关联- 在属性面板定制时我们已经将flowable:assignee等表达式与编辑器绑定这些表达式会在引擎运行时被解析。如何保证设计出的流程一定能被引擎执行- 通过后端的 XML 校验和引擎的部署前检查。流程变更后如何平滑升级- 依靠我们设计的版本管理机制新部署的流程定义会自动作用于新的流程实例旧的实例通常继续按原定义走取决于引擎配置。当你拥有了一个稳定、易用、可定制的流程设计器后工作流项目最难的部分——“如何将业务需求可视化、结构化地定义出来”——就已经解决了大半。剩下的引擎集成、任务查询、审批接口开发更像是按照设计好的“图纸”BPMN XML去组装“机器”流程实例虽然也有不少细节但路径是清晰的。在下一篇文章中我们将把这张“图纸”交给 Flowable 引擎让它真正运转起来并实现启动流程、查询待办、完成任务、追踪进度等核心业务接口。你会发现前期的编辑器集成工作越扎实后面的引擎驱动开发就越像是一场按图索骥的愉快旅程。

相关新闻

生命涌现的小龙虾技能之【Pet Eye Anomaly Detection (Redness / Tearing / Cataract) | 宠物眼睛异常识别(红肿/流泪/白内障)】简介

生命涌现的小龙虾技能之【Pet Eye Anomaly Detection (Redness / Tearing / Cataract) | 宠物眼睛异常识别(红肿/流泪/白内障)】简介

👁️ Pet Eye Anomaly Detection (Redness / Tearing / Cataract) | 宠物眼睛异常识别(红肿/流泪/白内障) 智能分析中枢 图片/视频智能分析 结构化报告 历史报告云端查询 🧭 技能概览 | Overview 模块内容🏷️ 技能…

2026/7/26 13:20:36 阅读更多 →
Ubuntu 26.04软件安装:Snap与Tar.gz对比指南

Ubuntu 26.04软件安装:Snap与Tar.gz对比指南

1. Ubuntu 26.04 安装方式全景解读作为长期使用Ubuntu的开发者,我经历过无数次软件安装的"选择困难症"。Ubuntu 26.04作为即将发布的LTS版本,其软件安装方式的选择尤为重要。目前主流的两种安装方式——Snap和Tar.gz,各有其适用场景…

2026/7/29 10:41:18 阅读更多 →
Spring Boot 3 HTTP客户端替代Feign的实践指南

Spring Boot 3 HTTP客户端替代Feign的实践指南

1. Feign的现状与Spring Boot 3的替代方案Feign作为Spring Cloud生态中广泛使用的声明式HTTP客户端,长期以来一直是微服务间远程调用的首选方案。但近年来随着Spring Boot 3的发布,官方开始推荐使用内置的HTTP接口客户端作为替代方案。这并非意味着Feign…

2026/7/28 7:21:24 阅读更多 →

最新新闻

免费开源!支持 Markdown 和 HTML 的最佳记事本 Hubble.md 来袭

免费开源!支持 Markdown 和 HTML 的最佳记事本 Hubble.md 来袭

【导语:Hubble.md 是一款免费开源的记事本,支持 Markdown 和 HTML,为用户和助手提供了便捷的笔记记录方式。它具有丰富的功能和良好的用户体验,在笔记应用领域具有一定的竞争力。】免费开源的多功能记事本Hubble.md 是一款免费且开…

2026/7/30 8:30:30 阅读更多 →
生物样本检测中QC样本的制备、分析与质控管理全流程详解

生物样本检测中QC样本的制备、分析与质控管理全流程详解

1. 项目概述:从“样品”到“标尺”的质控核心 在任何一个涉及生物样本检测的实验室里,无论是做基因组测序、蛋白质组学分析,还是临床生化检验,你总会听到一个词——“QC样本”。QC,即Quality Control,质量控…

2026/7/30 8:30:30 阅读更多 →
一种FreeSWITCH流量镜像WebSocket音频推流方案

一种FreeSWITCH流量镜像WebSocket音频推流方案

一种FreeSWITCH流量镜像WebSocket音频推流方案 引言嘿,各位音频流媒体开发的小伙伴们!今天我们来聊一个有点硬核但非常实用的话题——如何在FreeSWITCH中实现流量镜像,并通过WebSocket实时推送音频流。想象一下,你正在做一个智能语…

2026/7/30 8:30:30 阅读更多 →
Kimi K3全面开源:中国大模型叩开全球顶尖AI之门

Kimi K3全面开源:中国大模型叩开全球顶尖AI之门

2026年7月27日深夜,一个足以载入AI发展史册的时刻悄然降临。月之暗面正式向全球开放Kimi K3的完整模型权重、47页技术报告,以及支撑其训练的三项关键基础设施技术。这一消息在开发者社区引发核爆级反响,Hugging Face CEO发文确认Kimi K3在30分…

2026/7/30 8:30:30 阅读更多 →
Vue 3 极速上手:从环境搭建到实战应用的全流程指南

Vue 3 极速上手:从环境搭建到实战应用的全流程指南

1. 项目概述:为什么你需要这份“极速上手手册”?如果你正在看这篇文章,大概率是带着一个明确的目标来的:用最快的时间,把 Vue 3 用起来,做出点东西。你不是来听我长篇大论讲哲学、对比框架发展史的&#xf…

2026/7/30 8:30:30 阅读更多 →
AI助力毕业答辩PPT制作:从耗时到高效的智能解决方案

AI助力毕业答辩PPT制作:从耗时到高效的智能解决方案

1. 答辩PPT高效通关手册:从熬夜赶稿到智能生成的蜕变之路 本科毕业答辩季,图书馆通宵的灯光下总能看到一群学生对着电脑屏幕抓耳挠腮。PPT排版混乱、内容逻辑不清、设计审美掉线——这些痛点每年都在重复上演。直到我发现了Paperzz这个AI工具&#xff0c…

2026/7/30 8:29:30 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻