Supervision:一个Python库写尽所有视觉工具

你是否也经历过这些令人头疼的“造轮子”时刻:训练好了一个目标检测模型,却还要花半天写代码在图像上画框、标类别、调颜色;想统计视频里的人数或车辆,结果大部分时间都耗在了追踪算法的调试和区域计数逻辑上;换个模型试试效果,之前为标注和数据加载写的那套代码又得全部推倒重来。

这些计算机视觉领域的基础性、重复性工作,正是Supervision要彻底解决的问题。这个由Roboflow团队打造的开源Python库,将检测、分割、跟踪、标注、数据集管理等“必做但枯燥”的任务全部打包,让你能把精力集中在真正有价值的事情上——应用和模型本身。

https://static.xiongneng.me/supervision-20260925094712.webp

项目简介:计算机视觉的基础设施

Supervision定位清晰而务实:“We write your reusablecomputer visiontools.”(我们为你编写可复用的计算机视觉工具)。它是一个模型无关的Python工具包,提供从数据加载到实时区域计数的全套基础构件。

无论你用的是Ultralytics YOLO、Hugging Face Transformers、MMDetection还是Roboflow自家的Inference,Supervision都能无缝对接。

核心功能:四大模块,覆盖CV全流程

1. 模型连接器:一行代码适配主流框架

Supervision提供丰富的模型连接器,将不同框架的推理结果统一为sv.Detections标准格式:

1
2
3
4
5
6
7
8
9
import supervision as sv  
from rfdetr import RFDETRSmall  
from PIL import Image  
  
# RF-DETR模型直接返回sv.Detections  
image = Image.open("scene.jpg")  
model = RFDETRSmall()  
detections = model.predict(image, threshold=0.5)  
# detections可直接用于所有sv工具

对于Ultralytics、Transformers、MMDetection等框架,也有对应的连接器。这种设计让你可以在不同模型之间自由切换,而标注、评估、追踪的代码完全不用改。 https://static.xiongneng.me/supervision-20260925094912.webp

2. 标注器:专业级可视化,一行代码出图

标注是CV工作中最直观的需求,也是最容易写出“又长又丑”代码的地方。Supervision提供了高度可定制的标注器:

1
2
3
4
5
6
7
8
9
import cv2  
import supervision as sv  
  
image = cv2.imread("street.jpg")  
detections = sv.Detections(...)  
  
# 一行标注边界框  
box_annotator = sv.BoxAnnotator()  
annotated_frame = box_annotator.annotate(scene=image.copy(), detections=detections)

除了边界框,还支持掩膜标注、关键点标注、轨迹绘制、热力图等多种可视化方式,效果可直接用于演示和报告。

3. 数据集工具:加载、分割、合并、转换一键完成

处理数据集是CV项目的“脏活累活”。Supervision提供了完整的数据集管理管线:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 从COCO格式加载  
ds = sv.DetectionDataset.from_coco(  
    images_directory_path=f"{dataset.location}/train",  
    annotations_path=f"{dataset.location}/train/_annotations.coco.json",  
)  
  
# 分割训练/测试集  
train_ds, test_ds = ds.split(split_ratio=0.7)  
  
# 合并多个数据集  
merged_ds = sv.DetectionDataset.merge([ds_1, ds_2])  
  
# 格式转换:YOLO → COCO  
sv.DetectionDataset.from_yolo(...).as_coco(...)

支持 COCO、YOLO、Pascal****VOC 三种主流格式之间的互转,让不同来源的数据可以无缝整合。

4. 高级分析:跟踪、计数、速度估计

Supervision还内置了视频分析的高级工具:

  • 多目标跟踪:集成ByteTrack等追踪算法。
  • 区域计数:定义任意多边形区域,实时统计进入/离开的目标数量。
  • 速度估计:结合透视变换,估计车辆等目标的移动速度。
  • 停留时间分析:分析目标在特定区域内的驻留时长。

这些功能已经在官方教程中有了完整的落地案例,如车辆速度估计、零售场景的客流分析等。

30秒快速上手

安装(Python ≥ 3.9):

1
pip install supervision

第一个完整示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import supervision as sv  
from PIL import Image  
from rfdetr import RFDETRSmall  
  
# 1. 加载模型和图像  
image = Image.open("车辆.jpg")  
model = RFDETRSmall()  
  
# 2. 推理  
detections = model.predict(image, threshold=0.5)  
  
# 3. 标注并显示  
box_annotator = sv.BoxAnnotator()  
annotated = box_annotator.annotate(scene=image.copy(), detections=detections)  
annotated.show()

优势对比:为何选择Supervision?

对比维度Supervision自行编写工具函数单一框架内置工具
模型兼容性模型无关
支持所有主流框架
需为每个框架适配仅限特定框架
开发效率极高
核心功能一行代码
低,需从零实现中,但不可跨框架复用
功能覆盖全面
从数据到标注到分析
视开发者投入而定通常仅包含基础标注
维护成本社区持续维护
4500+提交
完全自负跟随框架更新

Supervision最大的价值在于解耦——它将标注、数据处理、分析这些“模型之外”的工作抽象出来,使你可以自由地选择、替换、升级模型,而不必每次都重写周边代码。这种设计理念,让它成为CV项目中“一次学习,长期受益”的基础投资。

写在最后

Supervision的出现,精准击中了计算机视觉领域一个长期存在的痛点:模型越来越易得,但让模型产生实际价值的基础工具却严重碎片化。它以一个统一、优雅、模型无关的Python库,将CV项目中最枯燥、最重复的部分标准化,让开发者能真正专注于创新和应用。

无论你是正在入门CV的学生、需要快速交付项目的工程师,还是管理着多个模型的生产团队,Supervision都是那个值得放进每个项目requirements.txt的必备库。

项目地址:https://github.com/roboflow/supervision