10 分钟上手 supervision:把 YOLO 输出变成会数人头、画轨迹的成品应用
10 分钟上手 supervision把 YOLO 输出变成会数人头、画轨迹的成品应用【免费下载链接】supervisionWe write your reusable computer vision tools. 项目地址: https://gitcode.com/GitHub_Trending/su/supervision跑通一个 YOLO 检测模型只需几十行代码但真正把它变成能用的产品——给检测框上色、写类别标签、统计某块区域里进了几个人、画出每个人的运动轨迹、把结果存成带字幕的视频——这些推理之后的活往往比训练模型本身更让人头疼。每个项目都要重写一遍 OpenCV 绘图、计数、坐标转换的胶水代码换一个模型框架又得重来一次。这正是 Roboflow 开源的 supervision 想要解决的问题它定位在模型层与业务系统之间用统一的Detections数据结构把 YOLO、RT-DETR、SAM、Hugging Face Transformers 等异构输出翻译成一套标准接口再提供标注、追踪、区域计数、视频处理等即插即用的成品工具。这个库长期霸榜 GitHub 热门仓库社区热度同样可观一度登顶 GitHub 日榜、月下载量超过 110 万次也被 HelloGitHub 等开源社区持续收录。本文不聊理论直接带着源码证据从安装到跑通区域计数 轨迹绘制的完整应用全程控制在 10 分钟的量级。一、安装与最小示例从检测结果到可视化只差三行supervision 对运行环境的要求很低Python3.10即可见 README.md一条命令完成安装pip install supervision安装完成后核心用法就是把任意模型的输出转换成sv.Detections再交给标注器渲染。以最常见的 Ultralytics YOLO 为例官方教程 docs/how_to/detect_and_annotate.md 给出了标准流程——模型推理、结果转换、链式标注import cv2 import supervision as sv from ultralytics import YOLO model YOLO(yolov8n.pt) image cv2.imread(dog.jpeg) results model(image)[0] detections sv.Detections.from_ultralytics(results) box_annotator sv.BoxAnnotator() label_annotator sv.LabelAnnotator() annotated_image box_annotator.annotate(sceneimage, detectionsdetections) annotated_image label_annotator.annotate(sceneannotated_image, detectionsdetections)从模型输出到带框带标签的成品图真正的逻辑代码只有三行from_ultralytics负责转换BoxAnnotator画框LabelAnnotator写字。这也是 supervision 贯穿始终的设计哲学——Annotator 家族是可组合的积木。查看 src/supervision/init.py 的导出清单能看到 20 多个标注器MaskAnnotator掩膜、BoxCornerAnnotator角框、HaloAnnotator光晕、HeatMapAnnotator热力图、TraceAnnotator轨迹、PixelateAnnotator打码等等任意组合叠加到同一帧画面上即可互不干扰。为什么能这样统一关键在于Detections这个数据结构。在 src/supervision/detection/core.py 中它被定义为一个 dataclass固定承载六个字段xyxy边界框坐标、mask分割掩膜、confidence置信度、class_id类别编号、tracker_id追踪编号以及附加的data字典。无论你用的是 Ultralytics、Roboflow Inference、Detectron2 还是 Transformers最后都折叠进这一套字段下游所有工具只认这一种输入。文档中对应的方法有from_ultralytics、from_inference、from_transformers、from_detectron2、from_sam等多个适配器换模型只换一行转换代码其余管线原样复用。二、区域计数与行人轨迹一个场景跑通核心能力如果说标注可视化只是锦上添花那么区域计数和轨迹绘制才是 supervision 被大量工程落地方案选中的硬核能力——社区里已有人用它搭建了地铁环境和公路车流的行人计数与轨迹追踪系统。2.1 区域计数PolygonZone 的锚点判定区域计数的核心类在 src/supervision/detection/tools/polygon_zone.py。PolygonZone的判定逻辑很值得细读它默认取每个检测框的BOTTOM_CENTER底部中心作为触发锚点把多边形区域预先生成一张二值 mask每帧调用zone.trigger(detections)时只需做一次数组索引查表——锚点是否落在 mask 内命中数量即current_count。这种锚点 查表的设计避免了逐帧多边形裁剪的开销是它能跑实时视频的原因之一。官方教程 docs/how_to/count_in_zone.md 展示了完整用法先用多边形坐标构造多个PolygonZone配上各自颜色的PolygonZoneAnnotator渲染区域边框和计数文字与BoxAnnotator渲染框然后在逐帧回调里触发计数zones [sv.PolygonZone(polygonpolygon) for polygon in polygons] zone_annotators [ sv.PolygonZoneAnnotator( zonezone, colorcolors.by_idx(index), thickness4, text_thickness8, text_scale4, ) for index, zone in enumerate(zones) ] def process_frame(frame: np.ndarray, i) - np.ndarray: detections model.predict(frame[:, :, ::-1]) for zone, zone_annotator, box_annotator in zip(zones, zone_annotators, box_annotators): mask zone.trigger(detectionsdetections) detections_filtered detections[mask] frame box_annotator.annotate(sceneframe, detectionsdetections_filtered) frame zone_annotator.annotate(sceneframe) return frame sv.process_video(source_pathVIDEO, target_pathresult.mp4, callbackprocess_frame)注意sv.process_video这个封装传入一个回调函数supervision 自动完成逐帧读取、回调、写盘的全流程视频处理的样板代码同样被压缩成一行。仓库里还提供了可直接运行的多区域示例 examples/count_people_in_zone/inference_example.py配套了四种区域配置文件examples/count_people_in_zone/data/下的横向、纵向、多区域、四宫格 JSON并演示了两种输出方式用sv.VideoSink写出成品视频或用sv.ImageWindow弹窗实时预览——后者正是成品应用的雏形。2.2 越线计数LineZone 的方向判断与区域驻留统计互补的是越线计数。LineZonesrc/supervision/detection/line_zone.py统计穿越一条线的进出人数返回(crossed_in, crossed_out)两个布尔数组并维护in_count/out_count计数。它的内部实现比表面看起来严谨得多通过叉积判断检测框四个角相对直线的左右侧用连续minimum_crossing_threshold帧保持在新一侧才确认一次穿越从而过滤掉检测框抖动造成的误计对 ByteTrack 单帧丢帧的coasting间隙也会保留穿越状态不会过早重置。但LineZone有一个硬性前提必须传入tracker_id。同一物体在相邻帧之间是谁只有追踪器能回答。这也自然引出下一个能力。2.3 画轨迹追踪让检测拥有身份追踪的本质是把逐帧独立的检测结果关联成同一物体的时间序列。参考仓库示例 examples/tracking/inference_example.py集成 ByteTrack 的代码非常直观from trackers import ByteTrackTracker tracker ByteTrackTracker(track_activation_thresholdconfidence_threshold) ... detections sv.Detections.from_inference(results) detections tracker.update(detections) detections detections[detections.tracker_id ! -1] # 丢弃未确认的轨迹拿到稳定的tracker_id后轨迹可视化交给TraceAnnotatorsrc/supervision/annotators/core.py 中的实现。它以tracker_id为 key 维护每个目标的历史坐标点默认保留最近 30 帧位置并连成折线smoothTrue时还会用样条插值把折线磨成平滑曲线让轨迹不再是一根根生硬的线段。如果检测框本身抖动严重还可以叠加DetectionsSmoothersrc/supervision/detection/tools/smoother.py对每个 track 的历史做平滑先稳框、再画线、再计数一套流水线下来输出质量会明显提升。把区域计数和轨迹绘制拼到一起就是社区案例里客流量分析统计系统的完整骨架检测 → 追踪 → 区域计数 / 轨迹渲染 → 视频写出所有环节都由 supervision 的标准积木搭成。三、进阶钩子置信度过滤、颜色定制与实时性能3.1 置信度过滤与 NMS一行搞定后处理在 src/supervision/detection/core.py 的文档示例中Detections支持 NumPy 风格的布尔索引detections detections[detections.confidence 0.5] # 置信度过滤 detections detections[detections.class_id 0] # 类别过滤底层是__getitem__实现的select逻辑切片、列表、布尔数组都能直接索引xyxy、confidence、class_id等所有字段同步截取不会出现框和分数对不上的经典 bug。此外还有with_nms/with_soft_nms方法做非极大值抑制IoU 阈值与是否类别无关均可配置多模型叠加出框的脏活也被收编成方法调用。3.2 颜色定制从调色板到按轨迹着色supervision 的颜色体系在 src/supervision/draw/color.py 中定义Color是单一颜色ColorPalette.DEFAULT是默认多色调色板。区域计数示例里用colors.by_idx(index)给每个区域分配不同颜色实现一区一色。更精细的定制靠color_lookup参数它支持CLASS同类同色、INDEX按检测顺序循环取色和TRACK同一追踪目标恒为同一色。其中TRACK模式对轨迹应用尤其重要——只有按tracker_id恒定着色观众才能从颜色上直观分辨这条线是哪个人走的。3.3 实时性能自适应绘制与监控工具面向实时场景supervision 提供了几项实用设计分辨率自适应sv.calculate_optimal_line_thickness与sv.calculate_optimal_text_scale会根据视频分辨率自动计算合适的线宽和字号避免在高清视频里画出又细又小的标注见 examples/count_people_in_zone/inference_example.pyFPS 监控sv.FPSMonitor可以统计实际处理帧率判断你的管线是否达到实时要求定义于 src/supervision/utils/video.py视频 IO 全套封装get_video_frames_generator生成逐帧迭代器、VideoInfo读取元数据、VideoSink以上下文管理器写出成品视频配合ImageWindow弹窗预览一套完整的读取 → 处理 → 展示/落盘闭环不需要手写任何 OpenCV 样板代码。值得一提的是supervision 本身不做模型推理它只负责推理之后的一切因此天然与任何检测、分割、关键点乃至视觉语言模型VLM兼容——from_vlm甚至能把 Gemini、Qwen-VL 等大模型的文本输出解析回检测框。这意味着你当前使用的模型框架完全不影响迁移成本换模型只换一行转换代码。从三行出图到区域计数 轨迹绘制 视频落盘supervision 把 CV 工程里最高频、最重复的胶水逻辑全部标准化了。如果你正在为检测结果的可视化、统计和追踪重复造轮子与其继续手写 OpenCV 循环不如把它加进依赖清单——它很可能就是你下一套 CV 应用的最后一公里。【免费下载链接】supervisionWe write your reusable computer vision tools. 项目地址: https://gitcode.com/GitHub_Trending/su/supervision创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026 内丘汽车贴膜哪家靠谱?高性价比隐形车衣窗膜门店推荐,这家威固授权门店值得邢台内丘车主关注

2026 内丘汽车贴膜哪家靠谱?高性价比隐形车衣窗膜门店推荐,这家威固授权门店值得邢台内丘车主关注

易行威固 5V 旗舰店(内丘县易行汽车养护中心)—— 内丘本地威固官方 5V 授权门店,高端窗膜、隐形车衣、改色膜一站式施工标杆门店邢台内丘车主挑选汽车贴膜,不能只简单对比报价单。北方夏季强光暴晒、冬天低温,昼夜温差…

2026/10/10 22:28:15 阅读更多 →
客户要来验厂看车看仓,准备什么?合格现场与易扣分项对照

客户要来验厂看车看仓,准备什么?合格现场与易扣分项对照

客户要来验厂看车看仓,准备什么?合格现场与易扣分项对照冷链合作谈到深处,客户多半要来现场看仓看车,尤其做餐饮连锁、食品厂的客户,验厂是合作的前置门槛。现场不会临时变好,靠的是平时管理和提前自查。这…

2026/10/10 22:28:15 阅读更多 →
用NGO北方苍鹰优化算法自动调优SVM关键参数实战

用NGO北方苍鹰优化算法自动调优SVM关键参数实战

每次拿到一个分类任务,SVM那两个超参数——C和gamma——总是让我头疼的源头。默认参数C1、gammascale确实能跑,但结果通常只能在"还能看"的边缘徘徊,离真正榨干模型性能差着十万八千里。手动试参数吧,一次次训练等比盲人…

2026/10/10 22:28:15 阅读更多 →

最新新闻

涉密内网办公系统CKEditor格式保留插件选型与落地配置

涉密内网办公系统CKEditor格式保留插件选型与落地配置

接手过这类涉密内网办公系统改造的人,大概率都经历过相似的"至暗时刻":文印室老师傅把Word红头文件直接CtrlC进浏览器,排版全散;科研人员从内部资料站复制一段带公式的内容,粘进去全是乱码;最麻烦…

2026/10/10 23:47:19 阅读更多 →
SQL注入原理讲解

SQL注入原理讲解

SQL 注入是什么 SQL(Structured Query Language,结构化查询语言)是用于操作关系型数据库的语言。网站通常通过 SQL 完成用户登录、查询信息、修改数据等操作。 例如,一个网站要查询用户编号为 1 的信息: …

2026/10/10 23:47:19 阅读更多 →
以 Gradio 破局,让 MCP 服务触达云端:TaoToken 统一 Key 通道实战

以 Gradio 破局,让 MCP 服务触达云端:TaoToken 统一 Key 通道实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 23:46:18 阅读更多 →
GitHub热点项目精选:从信息过载到高效筛选的实操方法论

GitHub热点项目精选:从信息过载到高效筛选的实操方法论

1. 从一份空白输入说起:为什么"热点精选"类内容值得认真做拿到这个标题的时候,我第一反应是愣了一下——项目正文是空的,关键词是空的,摘要描述也是空的,只有一行"2026-10-02 GitHub 热点项目精选"…

2026/10/10 23:46:18 阅读更多 →
药丸缺陷检测数据集:VOC与YOLO格式转换及YOLOv8训练实战指南

药丸缺陷检测数据集:VOC与YOLO格式转换及YOLOv8训练实战指南

简介:这份药丸表面缺陷检测数据集以Pascal VOC和YOLO两种主流格式整理,覆盖污染、裂纹、合格品三个类别,共2759张真实图片与2798个标注框,类别分布均衡,适合入门目标检测或构建药品质检视觉模型时直接训练、验证与迁移…

2026/10/10 23:46:18 阅读更多 →
Transformer时间序列预测实战:数据预处理与模型改造指南

Transformer时间序列预测实战:数据预处理与模型改造指南

简介:本资源是一份面向深度学习初学者与时间序列建模实践者的Transformer实战项目,聚焦将NLP领域里程碑模型迁移应用于天气预报、电力负荷预测、金融时序分析等典型场景。项目完整复现了Transformer编码器-解码器架构,涵盖位置编码、多头自注…

2026/10/10 23:46:18 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →