当前位置:首页>python>别再重复造轮子了!这个Python库,让你10分钟搞定CV视觉任务

别再重复造轮子了!这个Python库,让你10分钟搞定CV视觉任务

  • 2026-10-11 07:16:19
别再重复造轮子了!这个Python库,让你10分钟搞定CV视觉任务

数据加载、画框、统计人数、处理数据集…… 计算机视觉里那些又碎又烦的“脏活累活”, Supervision 全帮你干了。


🧠 一、小白入门:Supervision 是什么?

如果你写过计算机视觉(让计算机看懂图像/视频)的代码,你一定遇到过这些场景:

  • 模型输出了一堆坐标,你要自己写代码画框、标标签、统计数量

  • 训练数据要从一种格式转成另一种(COCO转YOLO、Pascal VOC转COCO……)

  • 要把数据集按7:2:1拆成训练集、测试集、验证集

  • 要统计一个人在一个区域里待了多长时间

这些事每个CV项目都会遇到,但每次都要重新写一遍,又碎又烦。

Supervision 就是来解决这个问题的。

🌟 一句话理解

Supervision = 计算机视觉的“瑞士军刀”不关心你用哪个模型(YOLO、Transformer、RF-DETR都行),只帮你搞定模型之后和之前的所有脏活累活。

📦 安装

pip install supervision

只需要 Python 3.9 以上,一行命令搞定。


🔥 二、核心功能:Supervision 能帮你做什么?

1️⃣ 模型对接:不管什么模型,都能用

Supervision 不挑模型。你用一个模型检测出物体(比如人、车、猫、狗),得到一堆坐标和置信度,Supervision 帮你**统一格式化成 sv.Detections对象**。

import supervision as svfrom PIL import Imagefrom rfdetr import RFDETRSmall   # 某个检测模型image = Image.open("图片路径")model = RFDETRSmall()detections = model.predict(image, threshold=0.5)print(len(detections))   # 检测到了几个物体?输出:5

💡 一句解释:sv.Detections是 Supervision 定义的一种标准格式,里面包含了检测框的坐标、置信度、类别ID等信息。不管你用什么模型,最后都转成这个格式,后面的所有工具就能通用了。

支持的主流模型对接方式:

  • Ultralytics YOLO(最常用的目标检测模型)

  • Hugging Face Transformers(各种Transformer模型)

  • MMDetection(商汤开源的检测工具箱)

  • Inference(Roboflow)

  • RF-DETR(直接返回 sv.Detections)


2️⃣ 标注器:画框、画标签、画遮罩,一行代码

模型检测出物体之后,你通常要把结果画在图片上看看效果。Supervision 提供了十几种标注器,最常用的是画框:

import cv2import supervision as svimage = cv2.imread("图片路径")detections = sv.Detections(...)   # 从模型得到的检测结果box_annotator = sv.BoxAnnotator()          # 画框的标注器annotated_frame = box_annotator.annotate(    scene=image.copy(),     detections=detections)

效果就是这样:

除了画框,还有:

  • 画圆点(CircleAnnotator)

  • 画椭圆(EllipseAnnotator)

  • 画多边形遮罩(MaskAnnotator,用于图像分割结果)

  • 画热力图(HeatmapAnnotator)

  • 画标签带背景框(LabelAnnotator)

你可以把这些标注器组合起来,比如:先画框,再在框上面画标签,再在图片角落画一个统计数字——全部支持。


3️⃣ 数据集工具:加载、拆分、合并、转换、保存

这是 Supervision 最实用的功能之一。你从网上下载的数据集可能是COCO格式,但你的训练代码要YOLO格式。以前你要写脚本转格式,现在一行代码搞定。

加载各种格式的数据集:

# 从YOLO格式加载dataset = sv.DetectionDataset.from_yolo(    images_directory_path="图片文件夹路径",    annotations_directory_path="标签文件夹路径",    data_yaml_path="data.yaml路径")# 从COCO格式加载dataset = sv.DetectionDataset.from_coco(    images_directory_path="图片文件夹路径",    annotations_path="annotations.json路径")# 从Pascal VOC格式加载dataset = sv.DetectionDataset.from_pascal_voc(    images_directory_path="图片文件夹路径",    annotations_directory_path="标签文件夹路径")

💡 一句解释:COCO、YOLO、Pascal VOC 是三种常见的数据集标注格式,区别在于标注文件的结构和存储方式不同。COCO用一个大JSON文件存所有标注,YOLO每个图片对应一个txt文件,Pascal VOC用XML文件。

拆分数据集(训练/测试/验证):

# 先拆成70%训练 + 30%测试train_dataset, test_dataset = dataset.split(split_ratio=0.7)# 再把测试集拆成50%测试 + 50%验证(即原来的15%测试 + 15%验证)test_dataset, valid_dataset = test_dataset.split(split_ratio=0.5)print(len(train_dataset))  # 700print(len(test_dataset))   # 150print(len(valid_dataset))  # 150合并多个数据集:ds_1 = sv.DetectionDataset(...)   # 有狗和人ds_2 = sv.DetectionDataset(...)   # 有猫ds_merged = sv.DetectionDataset.merge([ds_1, ds_2])print(ds_merged.classes)  # ['cat', 'dog', 'person'] —— 自动合并类别保存为任意格式:# 保存为YOLO格式dataset.as_yolo(    images_directory_path="输出图片文件夹",    annotations_directory_path="输出标签文件夹",    data_yaml_path="输出data.yaml路径")# 保存为Pascal VOCdataset.as_pascal_voc(    images_directory_path="输出图片文件夹",    annotations_directory_path="输出标签文件夹")# 保存为COCO格式dataset.as_coco(    images_directory_path="输出图片文件夹",    annotations_path="输出annotations.json路径")

格式转换一条龙:

# YOLO → Pascal VOC,一步到位sv.DetectionDataset.from_yolo(...).as_pascal_voc(...)

🎬 三、实战案例:Supervision 能做什么样的应用?

案例1:分析顾客停留时长(零售/商场)

你想知道顾客在某个货架前站了多久,Supervision 配合目标追踪可以实现:

  • 检测每个人

  • 追踪他们的移动轨迹

  • 计算每个人进入某个“兴趣区域”到离开的时间差

教程视频:Dwell Time Analysis with Computer Vision

案例2:车辆测速(交通监控)

你想知道视频里每辆车的速度,Supervision 提供:

  • 车辆检测 + 追踪

  • 透视变换(把倾斜的摄像头画面变成俯视平面)

  • 根据像素移动距离和实际距离换算速度

教程视频:Speed Estimation & Vehicle Tracking

案例3:实时人流统计(商场/场馆入口)

你想统计进出了多少人,Supervision 提供:

  • 在画面中画一条“线”

  • 当检测框穿过这条线时,计数+1

  • 区分进入和离开方向

案例4:安全帽/工服检测(工地/工厂)

你想知道谁没戴安全帽:

  • 检测“人”和“安全帽”

  • 用 sv.BoxAnnotator把没戴安全帽的人用红色框标出来

  • 发出告警

案例5:瑕疵检测(工业质检)

传送带上的产品,你要找出有瑕疵的那些:

  • 检测产品 + 检测瑕疵区域

  • 用 sv.MaskAnnotator画出瑕疵的精确形状

  • 统计不良品数量


📚 快速学习资源

资源

说明

官方文档

完整API参考和教程

How-to 指南

手把手教你用每个功能

速查表

常用代码片段一页纸

示例代码

真实项目的完整代码

视频教程

停留时长分析、车辆测速等

Colab Demo

在浏览器里直接试


✅ 总结

层次

核心内容

小白理解

Supervision 是计算机视觉的“工具箱”,帮你搞定模型前后的各种繁琐工作

三大核心

①统一模型输出格式 ②丰富标注器 ③数据集加载/拆分/合并/转换

典型应用

停留时长分析、车辆测速、人流统计、安全帽检测、工业质检


📦 立即开始

pip install supervisionimport supervision as sv# 你的模型检测结果 → sv.Detections# sv.Detections → 画框、统计、转换数据集、分析区域print("Supervision 版本:", sv.__version__)

🔗 GitHub:

github.com/roboflow/supervision

🔗 文档:

roboflow.github.io/supervision

Supervision—— 让你专注于模型和应用,而不是重复造轮子。

更多精彩:
穿墙透视、隔空测心跳:用WiFi就能“看见”一切的π RuView
🤖 Hermes Agent:你的自进化AI代理,从零基础到AI高手的完整指南
15岁花500块买了个域名,现在50万人白嫖免费用

全文完。既然已经看到这里,请随手点个“赞”和“在看”吧。

◆ 发愿:四十如年少◆


公众号:为郎

更多项目实战部署、问题答疑尽在知识星球:

最新文章

随机文章