Roboflow 监督:Python 计算机视觉注释工具包
Roboflow的监督是全面的计算机视觉工具包,简化了CV标注、数据处理和模型评估。通过pip install supervision访问可重复使用的计算机视觉工具用于您的项目。
- 更新于 2026-06-10
## 介绍 计算机视觉已成为机器学习最有影响力的应用之一,为从自动驾驶汽车和质量检测系统到医学成像和零售分析的一切提供动力。 但构建生产级 CV 系统不仅需要训练模型,还需要强大的数据注释、评估、可视化和调试工具。 Roboflow 的 监督 就是对这一需求的答案。 它拥有 43,972 GitHub star,已成为需要可重用、设计良好的 Python 工具的计算机视觉从业者的首选工具包。 他们的口号说明了一切:“我们为您编写可重复使用的计算机视觉工具。” 披露: 本文可能包含附属链接。 如果您通过他们注册,我可能会赚取少量佣金,而无需您支付额外费用。 披露政策 DigitalOcean - 适用于 CV 部署的可靠云基础设施。 HTStack - 高性能服务器托管。 WebShare - 用于 AI 数据管道的高级代理服务。
架构概述(来源:dibi8.com) ## 什么是监督? Supervision 是一个 Python 库,为计算机视觉任务提供了一套全面的工具。 它涵盖了整个 CV 管道——从注释训练数据和评估模型输出到可视化检测结果和处理视频流。 该库围绕一个简单的理念构建:使最常见的 CV 操作变得非常简单,同时为自定义工作流程敞开大门。 无论您是注释图像以进行对象检测、评估分割模型输出,还是在视频中可视化跟踪结果,Supervision 都能满足您的需求。 **featureImage: **
## 核心特性 监督提供了贯穿整个计算机视觉生命周期的工具: # #


数据注释 Supervision 提供了用于创建、操作和转换注释格式的实用程序。 它支持 COCO、YOLO、Pascal VOC 和自定义格式,可以轻松使用不同的 ML 框架和管道。 ````蟒蛇 #
进口监管 #来自监管进口* # 加载已有的注释
注释= load_annotations(“注释/coco_format.json”) # 注释格式之间的转换
可可_到_yolo( input_path =“注释/coco_format.json”, 输出路径=“注释/yolo_format.txt”, class_map={“人”:0,“车”:1,“狗”:2}
) # 检查注释统计信息
统计数据 = get_annotation_stats(注释)
print(f"对象总数:{stats.total_objects}")
print(f"类:{stats.classes}")
print(f"图像:{stats.total_images}")
### 检测处理 监督为处理检测模型输出提供了强大的工具,包括置信度过滤、非极大值抑制和结果可视化。蟒蛇
进口监管作为SV
导入CV2 # 加载检测模型(与YOLO、Detectron等配合使用)
检测= sv.Detections.from_yolo_output( 预测, # 模型输出张量 Original_image_size, # 图像尺寸 置信度阈值=0.5, class_id=0 # 按类别过滤
) # 应用非极大值抑制
检测= sv.NMS(检测,iou_threshold = 0.45) # 按置信度过滤
检测=检测[检测.置信度> 0.6]
### 可视化和注释绘图 Supervision 的优势之一是其可视化工具包。 在图像和视频帧上绘制边界框、分割掩模、关键点和跟踪 ID 非常简单:蟒蛇
创建用于绘图的注释上下文 #
注释上下文 = sv.BoxAnnotator( 厚度=2, color_lookup=sv.ColorLookup.INDEX
) # 加载图像
image = cv2.imread(“场景.jpg”) # 绘制边界框
注释图像=注释上下文.注释( 场景=图像, 检测=检测
) # 绘制分割掩模
mask_annotator = sv.MaskAnnotator( 不透明度=0.5, color_lookup=sv.ColorLookup.INDEX
)
带注释的图像 = mask_annotator.annotate( 场景=带注释的图像, 检测=检测
) # 自信地绘制类标签
label_annotator = sv.LabelAnnotator( 文本比例=0.5, 文字粗细=1, color_lookup=sv.ColorLookup.INDEX
)
带注释的图像 = label_annotator.annotate( 场景=带注释的图像, 检测=检测
) # 保存结果
cv2.imwrite(“annotated_scene.jpg”, annotated_image)
### 跟踪支持 Supervision 对对象跟踪提供一流的支持,并内置集成流行的跟踪算法:蟒蛇
初始化一个跟踪器 #
跟踪器 = sv.Tracker( tracker_type=“ocsort”, # 或 “bytetrack” 最大年龄=30, 最小点击数=3, iou_阈值=0.3
) # 跨视频帧跟踪对象
video_path =“traffic_camera.mp4”
对于frame_number,枚举中的帧( sv.VideoInfo.from_video_path(video_path).iter_frames()
): detectors = detector_objects(frame) # 你的检测模型 检测= tracker.update_with_detections(检测) # 带跟踪 ID 的带注释的框架 annotated_frame = draw_tracking_ids(帧,检测)
### 度量计算 Supervision 提供了计算常见 CV 评估指标的工具:蟒蛇
计算混淆矩阵 #
fusion_matrix = sv.ConfusionMatrix( 类数=10, 任务=“多类”
)
混淆矩阵.计算( 预测=预测标签, 目标=ground_truth_labels
) # 显示混淆矩阵
fusion_matrix.plot(title=“模型性能”) # 获取每个类别的准确率、召回率和 F1
对于 class_name,confusion_matrix.class_metrics().items() 中的指标: print(f"{class_name}: 精度={metrics. precision: .3f}, 召回率={metrics.recall: .3f}, f1={metrics.f1: .3f}")
## 它是如何工作的 监督通过一个干净、一致的 API 进行操作,该 API 遵循一些核心设计模式: ### 检测作为数据结构 Supervision 的核心是"Detections"类,它为所有类型的对象检测输出提供统一的表示——边界框、分割掩模、关键点和方向角。蟒蛇
自监管进口检测 # 从头开始创建检测
检测=检测( xyxy=np.array([ # 边界框 [x1, y1, x2, y2] [100, 50, 300, 250], [400、100、600、300] ]), 置信度=np.array([0.95, 0.87]), class_id=np.array([0, 2]), mask=np.array([mask_1, mask_2]), # 可选的分割掩码 keypoints=np.array([keypoints_1, keypoints_2]) # 可选关键点
) # 过滤检测
person_detections = 检测[detections.class_id == 0]
high_confidence = 检测[检测.confidence > 0.8] # 计算两个检测集之间的 IoU
ious = sv.match_iou(检测_a,检测_b,iou_threshold = 0.5)
### 管道组成 监管鼓励将业务组合成管道。 每一步都会获取一个"Detections"对象并生成一个新对象:蟒蛇
构建检测管道 #
管道=[ {“操作”:“filter_confidence”,“阈值”:0.5}, {“操作”:“non_max_suppression”,“iou_threshold”:0.45}, {“操作”: “filter_class”, “class_ids”: [0, 1, 2]}, {“操作”:“compute_metrics”,“指标”:“ap50”}
] # 执行管道
结果= apply_pipeline(原始检测,管道)
## 安装 安装监督很简单:
bas
h
通过 pip 安装 #
pip 安装监督 # 验证安装
python -c"将监督导入为 sv; print(sv.version)" # 安装所有可选依赖项以获得最大兼容性
pip 安装监督[全部]
### 使用 PyTorch 安装 对于深度学习工作流程,请使用 PyTorch 进行安装:
bas
h
使用 PyTorch 安装(CPU) #
pip 安装监督 torch torchvision # 使用 PyTorch 安装 (CUDA 12.x)
pip 安装监督 torch torchvision –index-url https://download.pytorch.org/whl/cu121
### Colab 演示 Roboflow 提供了一个交互式 Colab 笔记本来探索 Supervision 的功能:
bas
h
打开交互式 Colab 演示 #
https://colab.research.google.com/github/roboflow/supervision/blob/main/demo.ipynb # 或者本地运行: #
克隆存储库以访问演示笔记本 #
git 克隆 https://github.com/roboflow/supervision.git
光盘监督
jupyter笔记本demo.ipynb
## 集成模式 ### YOLO 集成 Supervision 与 YOLO 模型具有一流的集成:蟒蛇
与 YOLOv8 (Ultralytics) 集成 #
从 ultralytics 导入 YOLO
进口监管作为SV # 加载YOLOv8模型
模型 = YOLO(“yolov8n.pt”) # 运行推理
结果 = model.predict(“image.jpg”, conf=0.25) # 将 YOLO 结果转换为监督检测
检测= sv.Detections.from_ultralytics(结果[0]) # 可视化
注释器 = sv.BoxAnnotator()
annotated_frame = annotator.annotate( 场景=结果[0].plot(), 检测=检测
)
### MediaPipe 集成 对于姿态估计和地标检测:蟒蛇
进口监管作为SV
从 mediapipe 导入解决方案 # 加载 MediaPipe 姿势模型
pose = solutions.pose.Pose(static_image_mode=True) # 运行姿势检测
结果=pose.process(图像) # 转换为监督关键点格式
如果结果.pose_landmarks: 关键点 = sv.KeyPoints.from_mediapipe(results.pose_landmarks)
### ONNX 运行时集成 为了优化推理:蟒蛇
进口监管作为SV
从 onnxruntime 导入 InferenceSession # 加载 ONNX 模型
会话 = InferenceSession(“model.onnx”) # 运行推理并转换为监督格式
outputs = session.run(None, {session.get_inputs()[0].name: input_tensor})
detections = sv.Detections.from_onnx(outputs)
|
💬 留言讨论