news 2026/7/6 2:41:50

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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-Seg)
      • 7.3 视频任务进度
      • 7.4 下载结果视频
      • 7.5 拉取模型权重
    • 8. 权限说明
    • 9. 关键代码索引
    • 10. 常见问题
      • Q1:页面提示「暂无 RF-DETR-Seg / MobileSAM 模型」
      • Q2:MobileSAM 点击分割按钮灰色
      • Q3:视频分割很慢
      • Q4:能否用 YOLO-Seg?
      • Q5:mask 数据如何使用?
    • 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.jsmodelApi.segment/segmentVideo/videoProgress
  • frontend/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 / CPU)
imageio + libx264视频分割结果 H.264 编码输出
后台线程 + 内存 JobRF-DETR 视频异步任务与进度查询

主要源文件:

  • backend/inference.pysegment_image_rfdetr/segment_video_rfdetr/segment_image_mobilesam
  • backend/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 mask(Base64)
  • 可视化:半透明 mask + 检测框 + 类别标签(supervision标注器)

3.2 MobileSAM 交互分割

SAM 模式交互方式说明
点击分割(prompt)左键前景点、Shift+左键背景点至少 1 个前景点;支持滚轮缩放与全屏
全自动(auto)仅上传图片全图自动生成最多 40 个区域(按面积排序)
  • 点击模式在 Canvas 上标注,绿色 = 前景,红色 = 背景
  • 后端另支持box框选参数,前端 UI 暂未暴露
  • 推理进度为时间估算进度条(首次加载模型较慢)




4. 依赖与环境

4.1 Python 依赖(分割相关)

backend/requirements.txt中,与图像分割直接相关的包:

rfdetr>=1.8.0 mobile-sam @ git+https://github.com/ChaoningZhang/MobileSAM.git torch==2.11.0 torchvision==0.26.0 transformers>=5.1.0,<6.0.0 # RF-DETR 内部依赖 BackboneConfigMixin imageio==2.37.3 imageio-ffmpeg==0.6.0 requests==2.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:5001
cdfrontendnpminstallnpmrun dev# 默认 http://127.0.0.1:5173

4.3 硬件建议

引擎CPUGPU
RF-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 个分割模型,启用状态status=0

model_key显示名称librarytask来源
rf-detr-seg-mediumRF-DETR Seg Medium 实例分割rfdetrinstance-segmentationHuggingFace Roboflow/rf-detr-seg-medium
mobile-samMobileSAM 交互分割mobilesaminteractive-segmentationMobileSAM GitHub

5.2 权重拉取方式

模型管理中对对应模型点击拉取权重POST /api/ai/model/<id>/fetch,需ai:model:add权限):

模型实际下载文件下载来源
RF-DETR-Seg Mediumrf-detr-seg-medium.ptRoboflow CDN(rfdetr.assets.model_weights.download_pretrain_weights
MobileSAMmobile_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.pt

5.3 RF-DETR-Seg 可选规格(代码支持,未全部预置)

inference.py_RFDETR_SEG_CLASS映射支持以下model_key,可在模型管理中手动新增同 library/task 的模型条目后拉取对应权重:

model_keyrfdetr 类名权重文件名
rf-detr-seg-nanoRFDETRSegNanorf-detr-seg-nano.pt
rf-detr-seg-smallRFDETRSegSmallrf-detr-seg-small.pt
rf-detr-seg-mediumRFDETRSegMediumrf-detr-seg-medium.pt
rf-detr-seg-largeRFDETRSegLargerf-detr-seg-large.pt
rf-detr-seg-xl/rf-detr-seg-xlargeRFDETRSegXLargerf-detr-seg-xlarge.pt
rf-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 首次准备

  1. 启动后端与前端(见 §4.2)
  2. 使用管理员账号登录(默认admin / admin123
  3. 进入模型管理,对RF-DETR Seg MediumMobileSAM分别拉取权重
  4. 侧栏进入视觉识别 → 图像分割

6.2 RF-DETR 图片分割

  1. Tab 选择RF-DETR 实例分割
  2. 模式选图片
  3. 选择已拉取权重的 RF-DETR-Seg 模型,调整置信度(默认 0.25)
  4. 上传图片 → 点击开始分割
  5. 查看原图/结果并排、下方检测表格;可下载结果 JPG

6.3 RF-DETR 视频分割

  1. 模式选视频
  2. 上传视频 →开始分割
  3. 等待进度条(processed / total帧)
  4. 完成后播放/下载结果 MP4

6.4 MobileSAM 点击分割

  1. Tab 选择MobileSAM 交互分割
  2. SAM 模式选点击分割
  3. 上传图片,在原图上:
    • 左键— 前景点(保留区域)
    • Shift + 左键— 背景点(排除区域)
  4. 点击开始分割;可用「清除标点」重新标注

6.5 MobileSAM 全自动分割

  1. SAM 模式选全自动
  2. 上传图片 →开始分割
  3. 返回最多 40 个区域(region_1region_N),按面积降序

7. API 接口

基础路径:/api/ai/model(需 JWT,Authorization: Bearer <token>

7.1 图片分割

POST /api/ai/model/{modelId}/segment Content-Type: multipart/form-data 权限: ai:model:query

通用字段:

字段类型必填说明
fileFile图片文件
conffloat置信度阈值,默认0.25(RF-DETR)
drawstring"1"返回标注图(默认),"0"仅返回检测数据

MobileSAM 额外字段:

字段类型说明
modestringprompt(默认)或auto
pointsJSON 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-Seg)

POST /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/videoProgress
frontend/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 模型」

  • 确认模型管理中已存在tasklibrary匹配的记录
  • 确认已拉取权重filePath非空)
  • 确认模型状态为启用status=0

Q2:MobileSAM 点击分割按钮灰色

  • 「点击分割」模式需至少1 个前景点且已上传图片
  • 「全自动」模式仅需上传图片

Q3:视频分割很慢

  • RF-DETR 逐帧推理,时长与分辨率、帧数、硬件正相关
  • 建议使用 GPU;降低输入视频分辨率可显著提速

Q4:能否用 YOLO-Seg?

  • 当前不支持。实例分割仅实现 RF-DETR-Seg;交互分割仅实现 MobileSAM。

Q5:mask 数据如何使用?

  • 图片接口每个 detection 含maskBase64(PNG 二值图)
  • 视频逐帧统计中省略 maskinclude_mask=False)以提升速度,但输出视频仍带 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-DETR:Roboflow RF-DETR
  • MobileSAM:ChaoningZhang/MobileSAM
  • Supervision 可视化:supervision

文档随项目代码维护;若接口或预置模型有变更,以backend/seed.pybackend/routes/ai_model.py为准。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 2:40:50

从选型到落地:2026年值得关注的AI知识库系统

​——聚焦智能知识管理新范式&#xff0c;解析企业级AI知识库选型与实施路径引言&#xff1a;AI知识库的时代价值与2026趋势前瞻在数字化转型持续深化的背景下&#xff0c;企业对知识资产的管理和利用正经历从“被动存储”向“主动赋能”的跃迁。AI知识库作为融合自然语言处理…

作者头像 李华
网站建设 2026/7/6 2:39:17

闲谈《道德经》001|上德不德

大家好&#xff0c;我是道影子。 我年届五十&#xff0c;少时二十余年潜心修佛&#xff0c;而立之年舍佛归道&#xff0c;机缘入山拜隐世高人为关门弟子&#xff0c;亲传正统道家导引、龟息古法&#xff0c;半生贯通释道双宗实修&#xff0c;结合数十年亲身行气印证&#xff0c…

作者头像 李华
网站建设 2026/7/6 2:38:57

MDIO总线驱动开发实战:基于Linux内核4.19的PHY寄存器读写与调试

MDIO总线驱动开发实战&#xff1a;基于Linux内核4.19的PHY寄存器读写与调试在嵌入式Linux开发中&#xff0c;网络设备的稳定性和性能往往取决于底层驱动的质量。MDIO总线作为MAC与PHY芯片之间的管理通道&#xff0c;其驱动实现直接影响着网络接口的配置、状态监控和故障排查效率…

作者头像 李华
网站建设 2026/7/6 2:34:11

借助零代码助睿平台的自媒体运营数据分析——作品特征构建环节

一、实验背景1.1 实验目标本实验以已完成清洗的自媒体明细数据为基础&#xff0c;利用助睿 ETL 计算标题衍生特征与关键词汇总指标&#xff0c;生成明细更新数据及关键词统计表&#xff0c;为后续的深度特征分析提供数据支撑。通过本次实验&#xff0c;学生应能达到以下要求&am…

作者头像 李华
网站建设 2026/7/6 2:32:54

【嵌入式C语言】07.二级指针+函数

一、二级指针1.概念概念&#xff1a;二级指针也是个指针&#xff0c;该指针用来存放另外一个一级指针在内存中的地址(指向指针的指针)二级指针解引用一次&#xff0c;变成一级指针2.定义二级指针int a88;int *p&a;int **q&p;3.使用二级指针*q --》二级指针解引用一次&a…

作者头像 李华