首页
/
Supervision
基本信息
- 工具类别: 开源&免费
- 收录时间: 2026-08-04
- 访问次数: 37
- 评分: 4.2
- 官网: https://supervision.roboflow.com/
工具详情
Roboflow Supervision:使用指南
一、平台/库介绍
- 定位:Roboflow Supervision是由 Roboflow 开发并开源的 Python 计算机视觉后处理工具库。
- 核心价值:解决模型预测后的“最后一步”。它抹平了不同模型(如 YOLOv8/v10/v11、Detectron2、SAM、Transformers、PaddleDet 等)的输出差异,统一抽象为
Detections对象,提供即插即用的可视化、追踪、区域统计和数据集转换能力。 - 开源协议:MIT 许可证。代码完全开源且免费商用。
二、主要功能模块
- 统一模型后处理:将各种推理框架输出统一转换为
sv.Detections,支持方便的过滤、NMS(非极大值抑制)与IoU计算。 - 丰富且高端的标注器:提供一键绘制边界框 (Bounding Box)、分割掩码 (Mask)、多边形、关键点 (Keypoints)、虚线轨迹及中心点标注等功能。
- 目标追踪(Tracking):无缝对接 ByteTrack 等追踪算法,实现跨帧目标的持久化 ID 追踪。
- 区域与跨线统计:
PolygonZone:检测目标是否落入自定义多边形区域,支持区域内计数。LineZone:检测目标穿越指定线条的方向与数量(如车流/人流双向统计)。
- 切片推理(Slicing Inference):内置
InferenceSlicer模块,轻松应对大图中的微小目标检测 (SAHI机制)。 - 数据集处理与转换:支持在 COCO、YOLO、Pascal VOC 等格式间自由加载、转换与保存数据集,以及计算 mAP/混淆矩阵评估指标。
三、适用人群定位
- AI/计算机视觉工程师:快速构建可交互的项目 Demo,生成高清推理结果视频或图像汇报文件。
- 应用开发者:用于开发工业检测、人流车流统计、安防监控等实际落地方案。
- 科研人员/学生:进行算法对比评估、快速可视化论文测试结果及数据集格式转换工作。
四、免费与付费情况说明
- Supervision 代码库本身:100% 免费开源。在 GitHub 上直接
pip install,可用于个人、学术或商业项目,无任何费用壁垒。 - Roboflow 平台服务(云端功能):如需使用其云端标注、训练和 API 部署功能,需订阅相应服务额度:
- 免费版(Public):提供公开数据空间及免费 AI 标注配额(每月限制)。
- 付费版(Core / Enterprise):支持私有数据管理及更高级算力与 API 额度。起步价约为**$79/月**(按年付),建议查阅官网最新资费标准 https://roboflow.com/pricing。
五、快速上手使用流程
- 安装依赖库:
- bash
pip install supervision
- 标准工作流演示(以 YOLOv8 结合 Supervision 为例):
- 第一步:加载模型与图像数据。
- 第二步:推理并将结果转换为
Detections对象,统一格式处理。 - 第三步:创建标注器(如框、标签)并生成对应的文本标签信息。
- 第四步:将生成的标注叠加到原始图像副本上,避免污染原数据。
- 第五步:保存最终结果文件或直接在终端显示输出图片。
- python
import cv2
import ultralytics
import supervision as sv
# 1. 加载模型与图像
model = ultralytics.YOLO('yolov8n.pt')
image = cv2.imread('image.jpg')
# 2. 推理并转换为 Supervision 的 Detections 对象
results = model(image)[0]
detections = sv.Detections.from_ultralytics(results)
# 3. 创建标注器(如:框标注器 + 文本标签标注器)
box_annotator = sv.BoxAnnotator()
label_annotator = sv.LabelAnnotator()
# 生成标签文本
labels = [f"{class_name} {confidence:.2f}"
for class_name, confidence in zip(detections.class_name, detections.confidence)]
# 4. 叠加标注到图像上(务必使用.copy()避免内存污染)
annotated_image = box_annotator.annotate(scene=image.copy(), detections=detections)
annotated_image = label_annotator.annotate(scene=annotated_image, detections=detections, labels=labels)
# 5. 保存或显示结果
cv2.imwrite('result.jpg', annotated_image)
六、注意事项与避坑指南
- 版本更新频繁:Supervision 迭代迅速,API(如
BoxAnnotator的参数或方法名)在不同主版本间可能有所微调。建议查阅对应的文档版本(通常为/latest/)。 - 深拷贝机制要求:向
.annotate(scene=...)参数传递图像时,务必使用image.copy()生成副本。避免因直接引用导致原图矩阵被绘制覆盖而污染原始数据。 - 视频处理性能优化:对视频逐帧处理和追踪操作时,频繁的图像绘制会消耗 CPU 资源。生产环境中如果仅做数据统计(如计数),建议跳过渲染 (Annotator)环节以提升 FPS 流畅度。
- 坐标格式规范:使用
PolygonZone或LineZone定义区域与线条时,输入的坐标点必须严格符合 numpy数组格式(例如np.array([[x1, y1], [x2, y2], ...])),避免因数据类型不匹配导致报错。
暂无评论