Tiger AI Plateform项目中图像分割功能的技术实现、依赖环境、模型权重、API 接口与使用流程

发布时间:2026/7/6 2:41:51
Tiger AI Plateform项目中图像分割功能的技术实现、依赖环境、模型权重、API 接口与使用流程 文章目录1. 模块概述2. 技术栈2.1 前端2.2 后端2.3 架构示意3. 功能模式3.1 RF-DETR 实例分割3.2 MobileSAM 交互分割4. 依赖与环境4.1 Python 依赖分割相关4.2 安装与启动4.3 硬件建议4.4 存储与上传限制5. 模型与权重5.1 系统预置模型5.2 权重拉取方式5.3 RF-DETR-Seg 可选规格代码支持未全部预置5.4 MobileSAM 模型结构6. 使用流程6.1 首次准备6.2 RF-DETR 图片分割6.3 RF-DETR 视频分割6.4 MobileSAM 点击分割6.5 MobileSAM 全自动分割7. API 接口7.1 图片分割7.2 视频分割仅 RF-DETR-Seg7.3 视频任务进度7.4 下载结果视频7.5 拉取模型权重8. 权限说明9. 关键代码索引10. 常见问题Q1页面提示「暂无 RF-DETR-Seg / MobileSAM 模型」Q2MobileSAM 点击分割按钮灰色Q3视频分割很慢Q4能否用 YOLO-SegQ5mask 数据如何使用11. 实测截图清单待补充12. 版本与参考本文档说明 CV Python Tigerpro 项目中图像分割功能的技术实现、依赖环境、模型权重、API 接口与使用流程。1. 模块概述图像分割模块位于前端菜单视觉识别 → 图像分割路由/ai/segment提供双引擎分割能力引擎库标识任务类型适用场景RF-DETR-Segrfdetrinstance-segmentationCOCO 80 类实例分割支持图片同步推理与视频异步逐帧分割MobileSAMmobilesaminteractive-segmentation轻量 SAM支持点击交互分割与全自动区域分割说明当前模块未集成Ultralytics YOLO-Seg、Meta 原版 SAM 等其他分割后端所有推理统一走backend/inference.py路由挂载于backend/routes/ai_model.py。2. 技术栈2.1 前端技术用途Vue 3 Composition API页面逻辑Element PlusTab、表单、进度条、表格、全屏预览Axios调用/api/ai/model/*分割接口Canvas 叠加层MobileSAM 点击标注前景/背景点自定义缩放 composable原图/结果图滚轮缩放、适应窗口、全屏主要源文件frontend/src/views/ai/segment/index.vue— 分割页面frontend/src/api/ai.js—modelApi.segment/segmentVideo/videoProgressfrontend/src/composables/useInferProgress.js— MobileSAM 推理进度估算2.2 后端技术用途Flask BlueprintREST API/api/ai/model/id/segment等OpenCV (cv2)图像/视频读写、mask 编解码RF-DETR (rfdetr)实例分割推理 supervision可视化MobileSAM (mobile_sam)ViT-T 轻量 SAM交互/自动 mask 生成PyTorchMobileSAM 推理自动选择 CUDA / CPUimageio libx264视频分割结果 H.264 编码输出后台线程 内存 JobRF-DETR 视频异步任务与进度查询主要源文件backend/inference.py—segment_image_rfdetr/segment_video_rfdetr/segment_image_mobilesambackend/routes/ai_model.py— 分割路由、权重拉取、视频任务backend/seed.py— 预置分割模型与菜单权限2.3 架构示意┌─────────────────┐ multipart/form-data ┌──────────────────────┐ │ segment/index │ ───────────────────────────► │ ai_model.py │ │ (Vue 前端) │ ◄── JSON {detections, image} │ segment_route │ └─────────────────┘ └──────────┬───────────┘ │ ┌───────────────────────────────┴───────────────────────────────┐ │ inference.py │ │ rfdetr → segment_image_rfdetr / segment_video_rfdetr │ │ mobilesam → segment_image_mobilesam (prompt / auto) │ └───────────────────────────────────────────────────────────────┘3. 功能模式3.1 RF-DETR 实例分割模式输入推理方式进度展示图片单张图片同步POST /segment按钮 Loading视频MP4 等异步POST /segment-video 轮询进度真实帧进度条输出 COCO 80 类实例每实例含类别名、置信度、边界框、PNG maskBase64可视化半透明 mask 检测框 类别标签supervision标注器3.2 MobileSAM 交互分割SAM 模式交互方式说明点击分割(prompt)左键前景点、Shift左键背景点至少 1 个前景点支持滚轮缩放与全屏全自动(auto)仅上传图片全图自动生成最多 40 个区域按面积排序点击模式在 Canvas 上标注绿色 前景红色 背景后端另支持box框选参数前端 UI 暂未暴露推理进度为时间估算进度条首次加载模型较慢4. 依赖与环境4.1 Python 依赖分割相关在backend/requirements.txt中与图像分割直接相关的包rfdetr1.8.0 mobile-sam githttps://github.com/ChaoningZhang/MobileSAM.git torch2.11.0 torchvision0.26.0 transformers5.1.0,6.0.0 # RF-DETR 内部依赖 BackboneConfigMixin imageio2.37.3 imageio-ffmpeg0.6.0 requests2.32.3 # MobileSAM 权重下载间接依赖由 rfdetr / 推理链路使用包作用supervisionRF-DETR mask / box / label 可视化opencv-python经 ultralytics 等引入图像解码、mask PNG 编码numpy数组与 mask 运算4.2 安装与启动conda activate cv_python_tigerprocdbackend pipinstall-rrequirements.txt python app.py# 默认 http://127.0.0.1:5001cdfrontendnpminstallnpmrun dev# 默认 http://127.0.0.1:51734.3 硬件建议引擎CPUGPURF-DETR-Seg Medium可用图片较快、长视频较慢推荐视频分割明显加速MobileSAM (ViT-T)可用约 40MB 权重可选首次加载后推理更快4.4 存储与上传限制来自backend/config.py配置项默认值说明MODEL_FOLDERuploads/models模型权重存储VIDEO_FOLDERuploads/videos视频分割临时上传OUTPUT_FOLDERuploads/outputs分割结果 MP4 输出VIDEO_ALLOWED_EXT.mp4 .avi .mov .mkv .flv .wmv .webm允许的视频格式MAX_CONTENT_LENGTH500 MB单次上传大小上限5. 模型与权重5.1 系统预置模型种子数据backend/seed.py预置2 个分割模型启用状态status0model_key显示名称librarytask来源rf-detr-seg-mediumRF-DETR Seg Medium 实例分割rfdetrinstance-segmentationHuggingFace Roboflow/rf-detr-seg-mediummobile-samMobileSAM 交互分割mobilesaminteractive-segmentationMobileSAM GitHub5.2 权重拉取方式在模型管理中对对应模型点击拉取权重POST /api/ai/model/id/fetch需ai:model:add权限模型实际下载文件下载来源RF-DETR-Seg Mediumrf-detr-seg-medium.ptRoboflow CDNrfdetr.assets.model_weights.download_pretrain_weightsMobileSAMmobile_sam.pthttps://github.com/ChaoningZhang/MobileSAM/raw/master/weights/mobile_sam.pt本地存储路径示例backend/uploads/models/rf-detr-seg-medium/rf-detr-seg-medium.pt backend/uploads/models/mobile-sam/mobile_sam.pt5.3 RF-DETR-Seg 可选规格代码支持未全部预置inference.py中_RFDETR_SEG_CLASS映射支持以下model_key可在模型管理中手动新增同 library/task 的模型条目后拉取对应权重model_keyrfdetr 类名权重文件名rf-detr-seg-nanoRFDETRSegNanorf-detr-seg-nano.ptrf-detr-seg-smallRFDETRSegSmallrf-detr-seg-small.ptrf-detr-seg-mediumRFDETRSegMediumrf-detr-seg-medium.ptrf-detr-seg-largeRFDETRSegLargerf-detr-seg-large.ptrf-detr-seg-xl/rf-detr-seg-xlargeRFDETRSegXLargerf-detr-seg-xlarge.ptrf-detr-seg-2xl/rf-detr-seg-xxlargeRFDETRSeg2XLargerf-detr-seg-xxlarge.pt类别名解析使用 COCO 80 类rfdetr.assets.coco_classes。5.4 MobileSAM 模型结构架构sam_model_registry[vit_t]ViT-Tiny约 40MB设备有 CUDA 时用 GPU否则 CPU模型缓存按权重路径 文件修改时间缓存SamPredictor避免重复加载6. 使用流程6.1 首次准备启动后端与前端见 §4.2使用管理员账号登录默认admin / admin123进入模型管理对RF-DETR Seg Medium与MobileSAM分别拉取权重侧栏进入视觉识别 → 图像分割6.2 RF-DETR 图片分割Tab 选择RF-DETR 实例分割模式选图片选择已拉取权重的 RF-DETR-Seg 模型调整置信度默认 0.25上传图片 → 点击开始分割查看原图/结果并排、下方检测表格可下载结果 JPG6.3 RF-DETR 视频分割模式选视频上传视频 →开始分割等待进度条processed / total帧完成后播放/下载结果 MP46.4 MobileSAM 点击分割Tab 选择MobileSAM 交互分割SAM 模式选点击分割上传图片在原图上左键— 前景点保留区域Shift 左键— 背景点排除区域点击开始分割可用「清除标点」重新标注6.5 MobileSAM 全自动分割SAM 模式选全自动上传图片 →开始分割返回最多 40 个区域region_1…region_N按面积降序7. API 接口基础路径/api/ai/model需 JWTAuthorization: Bearer token7.1 图片分割POST /api/ai/model/{modelId}/segment Content-Type: multipart/form-data 权限: ai:model:query通用字段字段类型必填说明fileFile是图片文件conffloat否置信度阈值默认0.25RF-DETRdrawstring否1返回标注图默认0仅返回检测数据MobileSAM 额外字段字段类型说明modestringprompt默认或autopointsJSON string[[x,y],...]像素坐标pointLabelsJSON string[1,0,...]1前景0背景boxJSON string[x1,y1,x2,y2]框选API 支持UI 未用响应示例{code:0,message:分割完成,data:{detections:[{className:person,classId:0,confidence:0.9234,bbox:[120.5,80.2,340.1,520.8],maskBase64:PNG Base64}],count:1,imageBase64:JPEG Base64 标注图,width:640,height:480}}7.2 视频分割仅 RF-DETR-SegPOST /api/ai/model/{modelId}/segment-video Content-Type: multipart/form-data 权限: ai:model:query字段说明file视频文件conf置信度默认 0.25响应{code:0,message:任务已启动,data:{jobId:a1b2c3...}}7.3 视频任务进度GET /api/ai/model/{modelId}/video-progress/{jobId}进行中{code:0,data:{status:running,processed:120,total:500,stats:null,error:null}}完成{code:0,data:{status:done,processed:500,total:500,stats:{frames:500,totalFrames:500,totalDetections:1234,classCounts:{person:400,chair:120},fps:25.0,width:1920,height:1080,output:match_1710000000_seg.mp4}}}7.4 下载结果视频GET /api/ai/model/output/{outputFileName}返回video/mp4二进制流路径穿越已防护。7.5 拉取模型权重POST /api/ai/model/{modelId}/fetch 权限: ai:model:add按模型library自动分流至 RF-DETR 或 MobileSAM 下载逻辑。8. 权限说明标识类型说明ai:segment:list菜单侧栏「图像分割」入口ai:segment:query按钮页面查询种子菜单ai:model:queryAPI实际分割推理接口校验ai:model:addAPI模型权重拉取9. 关键代码索引文件说明frontend/src/views/ai/segment/index.vue分割 UI、双引擎切换、Canvas 交互frontend/src/api/ai.jssegment/segmentVideo/videoProgressfrontend/src/composables/useInferProgress.jsMobileSAM 估算进度backend/routes/ai_model.py分割路由、视频 Worker、权重拉取backend/inference.pyRF-DETR / MobileSAM 推理与可视化backend/seed.py菜单 272、预置模型backend/config.py上传目录与大小限制10. 常见问题Q1页面提示「暂无 RF-DETR-Seg / MobileSAM 模型」确认模型管理中已存在task与library匹配的记录确认已拉取权重filePath非空确认模型状态为启用status0Q2MobileSAM 点击分割按钮灰色「点击分割」模式需至少1 个前景点且已上传图片「全自动」模式仅需上传图片Q3视频分割很慢RF-DETR 逐帧推理时长与分辨率、帧数、硬件正相关建议使用 GPU降低输入视频分辨率可显著提速Q4能否用 YOLO-Seg当前不支持。实例分割仅实现 RF-DETR-Seg交互分割仅实现 MobileSAM。Q5mask 数据如何使用图片接口每个 detection 含maskBase64PNG 二值图视频逐帧统计中省略 maskinclude_maskFalse以提升速度但输出视频仍带 mask 可视化11. 实测截图清单待补充以下截图建议在本地跑通流程后补充到docs/images/segment/目录并在上文对应占位处替换为 Markdown 图片链接序号文件名内容0101-page-overview.png页面总览0202-rfdetr-image-result.pngRF-DETR 图片分割结果0303-rfdetr-video-progress.pngRF-DETR 视频进度与结果0404-mobilesam-prompt-points.pngMobileSAM 点击标注0505-mobilesam-prompt-result.pngMobileSAM 点击分割结果0606-mobilesam-auto-result.pngMobileSAM 全自动分割0707-mobilesam-progress-bar.pngMobileSAM 进度条0808-model-management.png模型管理预置模型0909-weight-fetched.png权重拉取成功替换示例![RF-DETR 图片分割结果](images/segment/02-rfdetr-image-result.png)12. 版本与参考RF-DETRRoboflow RF-DETRMobileSAMChaoningZhang/MobileSAMSupervision 可视化supervision文档随项目代码维护若接口或预置模型有变更以backend/seed.py与backend/routes/ai_model.py为准。