
介绍解决方案——把检测框变成业务动作0.1 Solutions 是什么一句话Solutions 预装好的视觉应用。上一篇《一条龙实战》的 track 模式给你逐帧带 ID 的框——那是零件Solutions 在零件之上装好了计数线、热区、速度标尺、告警邮件——是整车。所有方案共享同一个调用形态importcv2fromultralyticsimportsolutions solversolutions.ObjectCounter(modelyolo26n.pt,region[...],showFalse)ressolver(frame)# 每帧一调cv2.imwrite(out.jpg,res.plot_im)# plot_im 永远是带叠加层的标注帧三条整体认知先立住内部全是 track 模式每个方案都在内部跑 YOLO26 检测 多目标追踪tracker 可换默认 botsort.yaml所以《一条龙实战》4.4 的追踪器调参经验在这里全部适用返回值统一为 SolutionResultsplot_im之外各方案暴露自己的业务字段in_count、queue_count、speed_dict……——业务逻辑挂在返回值上不靠读屏CLI 与 Python 双形态yolo solutions count sourcevideo.mp4 showTrue一条命令出效果15 个方案有 CLI 名Python 形态才拿得到结构化返回值。CLI 名方案CLI 名方案count目标计数queue排队管理region区域计数speed速度估计trackzone区域追踪heatmap热力图analytics数据分析visioneye视角映射blur目标模糊crop目标裁剪isegment实例分割追踪workout锻炼监控parking停车管理security安防警报inferenceStreamlit 实时推理距离计算、相似度搜索仅 Python第一章 通用机制一套参数、一个返回值、一个绘图器1.1 参数三组所有方案的构造参数分三组全表见《一条龙实战》3.4方案专属region区域点列表或多区域字典、analytics_type、colormap、blur_ratio、crop_dir、records、vision_point、fps/meter_per_pixel/max_speed、json_file、kpts/up_angle/down_angle——本篇逐方案讲追踪直传tracker/conf/iou/classes/device/imgsz/max_det原样传给内部model.track()可视化show弹窗、show_labels/show_conf/show_boxes、line_width、verbose。一个省心设计需要区域而没传region时方案回退到内置默认区域——第一次跑通不卡在画框上正式使用再换成现场标定的坐标。1.2 SolutionResults业务字段一览字段所属方案含义in_count/out_count/classwise_count计数、热力图越线进/出累计、按类别分组的进出数region_counts区域计数区域名 → 当前占用量字典total_tracks区域追踪区域内实时追踪数queue_count排队管理队列区当前长度speed_dict速度估计轨迹 → 速度字典pixels_distance距离计算点选两框的像素距离available_slots/filled_slots停车管理空闲 / 已占用车位workout_count/workout_angle/workout_stage锻炼监控每人重复次数 / 关节角 / 当前阶段total_crop_objects目标裁剪累计裁剪目标数email_sent安防警报告警邮件是否已发plot_im全部带叠加层的标注帧写视频就用它1.3 SolutionAnnotator方案背后的绘图器所有方案共用一个SolutionAnnotator《一条龙实战》7.2 提过的Annotator的方案版扩展画区域、画队列表、画距离线、visioneye()射线、sweep_annotator()扫描线、adaptive_label()圆形标签等方法都是它的成员——想自定义叠加效果时直接拿它当画笔不必从 OpenCV 画起。第二章 计数与区域三兄弟计数是 Solutions 使用率最高的一族三个方案的分工要先分清方案回答的问题输出ObjectCounter越过这条线/这个区域的有多少累计in / out 总数RegionCounter此刻每个区域里有多少占用可多区域区域名 → 数量TrackZone只跟踪这个区域里的目标聚焦单凸区域区域内追踪 ID 与数量2.1 目标计数ObjectCounterregion传两点即直线计数典型闸口/越线场景传三点以上即多边形区域进出计数计数沿目标轨迹方向判定 IN/OUTshow_in/show_out可分别隐藏两侧数字。类别级计数classwise_count直接给出进 person 几、出 car 几。典型应用门店入口客流进出来量、路口/收费站车辆流量统计、展厅与场馆人次盘点、仓库出入口的货物进出台账——所有数一数今天过了多少人/车的需求第一站都是它。countersolutions.ObjectCounter(modelyolo26n.pt,region[(20,400),(1080,400)],# 两点直线3 点多边形showFalse,)rescounter(frame)print(res.in_count,res.out_count,res.classwise_count)专属参数追踪/可视化通用参数见 1.1下同参数默认说明regionNone→内置默认区域计数区域两点直线、3 点多边形按点的连接顺序定义进出方向show_in/show_outTrue / True画面上进/出两个计数数字的显隐line_width2框、计数线与数字的线宽实测yolo26n 1080p 行人视频全片 341 帧越线计数稳定输出 in/out 累计收帧 in6 / out4行人双向穿越识别正确——计数的准确率上限由追踪器决定4.4 的经验同量级选 ID 稳定的。2.2 区域内目标计数RegionCounterregion换成字典就能一次监控多个命名区域每区域独立颜色、独立实时计数区域支持任意多边形含非凸。关键口径区域上显示的数字是当前占用量每帧重置——要累计进出请用 ObjectCounter。典型应用车间/仓库分区人数管控超员即预警、危险作业区限 N 人看板、食堂与办公区密度监测、展厅各展区的实时驻留人数——凡是这块区域此刻能待几个人的合规问题都归它。region_points{zone-A:[(80,80),(920,80),(920,560),(80,560)],zone-B:[(1000,80),(1840,80),(1840,560),(1000,560)],}rcsolutions.RegionCounter(modelyolo26n.pt,regionregion_points,showFalse)resrc(frame)print(res.region_counts)# {zone-A: 2, zone-B: 5}专属参数参数默认说明regionNone→内置默认区域唯一支持字典的方案区域名 → 点列表一次监控多个命名区域普通 list 视为单区域自动命名Region#01line_width2区域边框与计数数字线宽实测全片内两区域占用量随行人进出实时变化收帧时 zone-A 6 人、zone-B 5 人region_counts字典直接可接仪表盘。2.3 区域内目标追踪TrackZone三兄弟里最特别的一个它不改计数语义而是把追踪范围裁进区域——区域外的目标直接从结果里剔除上层逻辑只处理区域内目标。三个独有口径① 区域取凸包凹多边形会被简化非凸/多区域需求走 RegionCounter② 检测仍在整幅画面上跑收益是下游更干净而不是推理更快③region不传时有内置默认区域别忘了换。典型应用球场/赛场划定区域的球员监控、单向通行通道的逆行盯防、泳池泳道内人数看护、装卸区车辆与人员的只看这一块聚焦分析——下游算法只想吃一个干净区域的输入时用它先裁一刀。tzsolutions.TrackZone(modelyolo26n.pt,region[(150,150),(1130,150),(1130,570),(150,570)],showFalse)restz(frame)print(res.total_tracks)# 区域内实时占用全片实测收帧 5专属参数参数默认说明region默认[(75,75),(565,75),(565,285),(75,285)]追踪区域按凸包处理凹多边形被简化为最小凸多边形坐标与画面分辨率绑定showTrue核对对齐line_width2区域边框与目标框线宽无其他专属参数——它不改计数语义只裁追踪范围。第三章 空间度量速度、距离、队列3.1 速度估计SpeedEstimator把目标像素位移按fps与meter_per_pixel换算成现实速度。结果从speed_dict轨迹 → 速度取。官方口径诚实速度是估算值跨相机不可直接比。典型应用路段车辆测速与超速抓拍、厂区内部道路限速监督、物流分拣线传送带物速核对、隧道/桥面通行速度监测——凡是这个东西跑多快的问题先试它。专属参数参数默认说明fps30.0视频帧率参与位移→速度换算与源视频实际帧率不一致速度就错meter_per_pixel0.05像素→米的标定系数必须按相机实拍测量——不标定速度就是玄学max_hist5每个目标保留的历史轨迹点数参与速度/方向计算max_speed120叠加显示的速度上限兼作跟踪噪声的限幅3.2 距离计算DistanceCalculation家族里唯一的交互式方案鼠标左键点选任意两个目标框方案画出质心连线并显示像素欧氏距离右键清除重选。它没有专属参数model/line_width/ 通用追踪参数之外一片空白——选谁测由人当场决定适合事故复核、间距排查这类看画面说话的场景。注意像素距离无深度信息跨相机不可比。典型应用复工/疫情期间的人群社交距离核查、车间人机安全间距巡检、货架与堆垛的间距复核、事故现场复盘量距——人工拿尺量的场景先换成点两下鼠标。两个实战细节① 点选必须命中当前帧检测框内部点到背景不登记、同一框点两次只算一个② 官方的距离数字画在左上角小徽标里1080p 下字号小到看不清——示例脚本改成了暂停首帧从容点选 大字横幅显示距离量距后继续播放时连线随轨迹实时更新。数字之外别忘了换算meter_per_pixel标定一次像素距离立刻变现实距离。3.3 排队管理QueueManager语义极简等待区多边形内的当前目标数 队列长度。区域画在收银台/安检口/取号机前queue_count逐帧可读——接数字标牌、呼叫下一组、超长队列提醒都只是在这一个数字上加 if。典型应用超市收银台开台决策排队超 N 人加开通道、机场安检/银行取号的队列调度、医院挂号窗口分流、园区班车点候车人数播报。专属参数参数默认说明regionNone→内置默认区域等待区多边形3 点区域内目标数即queue_countline_width2区域边框与队列表线宽第四章 可视化与洞察热力图、图表、视角4.1 热力图Heatmap把目标移动强度逐帧累积每个被跟踪目标的框中心区域叠加一层热度帧帧归一化着色后混回原画面——繁忙通道发光、安静角落保持冷色。三个要点①colormap吃全部 OpenCV 色图INFERNO/JET…② 没有目标的帧不叠加③传region可同时做进出计数——一次运行两份产出。它直接继承自 ObjectCounter等于计数 活动密度二合一。典型应用零售卖场动线分析哪些货架被走过、哪些被冷落、门店布局优化前后对比、展馆热点展项统计、路口交通流量热区、体育场馆人流聚集监测。专属参数参数默认说明colormapcv2.COLORMAP_DEEPGREEN热度色图任意 OpenCV 常量INFERNO / JET / TURBO / VIRIDIS…regionNone→默认区域传入即在热力图之外同步输出进出计数in/out/classwiseshow_in/show_outTrue / True计数数字显隐有 region 时生效4.2 数据分析Analytics把逐帧检测/追踪计数画成实时图表视频analytics_type一参切换 line / bar / area / pie图表固定 1280×720写视频时注意输出尺寸用图表尺寸而不是原视频。折线看趋势、柱状比类别、饼图看占比、面积图填色更醒目——接监控大屏时这一个是统计科室。典型应用交通流量随时间趋势大屏、厂区人车流量时段报表、展会各时段到访曲线、需要画面 图表同屏汇报的安防总结视频——一切要把计数结果变成可放映图表的场合。专属参数参数默认说明analytics_type‘line’图表类型line / bar / area / pie 四选一figsize(12.8, 7.2)图表画布尺寸——输出视频按此尺寸写1280×720 像素别再用原视频宽高4.3 VisionEye 视角映射VisionEye画面里固定一个观察点vision_point默认 (20, 20)从该点向每个被跟踪目标画射线——模拟从这个位置看出去谁在哪。本质是把空间关系可视化安防上给固定枪机标注关注对象、自动驾驶演示车辆眼中的世界都用它。典型应用安防监控的哨位视角标注枪机盯上了哪几个目标、自动驾驶/机器人的感知可视化演示、无人机航拍画面的关注目标映射——更多是给演示与汇报加上帝视角的表现力。专属参数参数默认说明vision_point(20, 20)观察点像素坐标射线从它画向每个目标的质心line_width2射线与框线宽第五章 取材与隐私裁剪、模糊、检索5.1 目标裁剪ObjectCropper把每个检出目标抠成小图存进crop_dir默认 cropped-detectionstotal_crop_objects汇报总数。三个典型用途给二级模型攒训练/推理素材检测切图 → 分类/属性模型、事件取证存档、压缩数据量。配classes/conf过滤只留值得存的。典型应用给二级模型攒数据检测切人/切车 → 属性分类、工装检测、车型识别、安防事件的人员车辆取证归档、电商商品图自动截取——一切先检测、再对小图做下一步的流水线第一环。专属参数参数默认说明crop_dir‘cropped-detections’裁剪小图的输出目录相对工作目录建议传绝对路径一个实战提醒它对每帧每个检出目标都落一张图——行人视频全片跑下来会产出上万张小图磁盘和训练配对都得心里有数。演示脚本里设了MAX_CROPS上限攒够即停不再裁剪正式使用则靠classes/conf过滤只留值得存的。5.2 目标模糊处理ObjectBlurrer对指定classes的检出框做平均模糊blur_ratio0.1–1.0控制强度——GDPR/人脸车牌脱敏的最短实现路径。注意它按检测框模糊而非实例轮廓密集小目标场景要么调高 imgsz、要么上分割模型。典型应用监控视频对外发布前的人脸车牌脱敏、行车记录仪/执法记录仪素材合规化、数据集脱敏原画面留用、隐私抹掉、直播里路人隐私保护。专属参数参数默认说明blur_ratio0.5模糊强度 0.1–1.0越大越糊classesNone→全部类别只糊指定类别通用 track 参数但这里是本方案的主战场——例如classes[0]只糊人5.3 相似度搜索VisualAISearch / SearchApp家族里的另类不跑检测用OpenAI CLIP把图像目录整体嵌入余弦相似度对自然语言查询排序——“俯卧撑的人”夜晚的工地这样的自由文本直接搜图零标注零训练。两个形态VisualAISearch纯后端返回按相似度排序的文件名SearchApp自带 Flask 网页。首跑需下载 CLIP 权重自己的图集给data传绝对路径。典型应用监控录像/裁剪图库的以文搜图夜里翻几万帧找可疑画面、目标裁剪方案的天然下游crop 出的小图 → 文本检索归档、质检样本库与素材库的语义检索——没有标注体系时先拿它顶。专属参数参数默认说明data‘images’建索引的图像目录——换成自己的图集建议绝对路径Flask 静态服务限制device‘cpu’CLIP 编码器推理设备requirements:Ultralytics requirement[githttps://github.com/ultralytics/CLIP.git]notfound,attempting AutoUpdate...第六章 垂直场景停车、锻炼、安防6.1 停车管理ParkingManagement两段式工作流先用官方车位标注工具solutions.ParkingPtsSelection()GUI 框选车位多边形生成bounding_boxes.json再让 ParkingManagement 加载 json 车辆检测实时输出available_slots/filled_slots。车位 json 就是现场标定换停车场 重新框选一遍。典型应用停车场空闲车位实时统计与引导屏、园区/商场车位利用率报表、路侧泊位的占位监测——还剩几个空位是它唯一但足够高频的问题。专属参数参数默认说明json_fileNone车位坐标 json 路径——没有它方案起不来标注工具生成后传进来6.2 锻炼监控AIGym姿态估计的垂直应用kpts选三个关节默认 [6, 8, 10] 肩-肘-腕肢体夹角在up_angle145与down_angle90之间往返即计一次重复——俯卧撑、引体向上、深蹲换关键点组合即可适配。返回值按人分组workout_count/workout_angle/workout_stage每个追踪目标各一份多人同练互不干扰。典型应用健身 App 的自动计次与动作阶段提示、康复训练的动作完成度记录、运动员训练量统计与姿态矫正参考——数次数、辨阶段两类需求都覆盖。专属参数model 必须是-pose姿态权重参数默认说明kpts[6, 8, 10]三个关键点索引COCO 序6 肩 / 8 肘 / 10 腕深蹲换 [11, 13, 15] 髋-膝-踝up_angle145.0/down_angle90向上 / 向下两个阶段的关节夹角阈值夹角在两者间往返计一次line_width2骨架与角度标注线宽6.3 安防警报SecurityAlarm区域检测数超过records默认 5阈值 → 自动发送带标注画面的告警邮件email_sent汇报发送状态。邮件走 Gmail 应用专用密码authenticate()一次认证告警不重复发送——同批目标只报一次避免邮件轰炸。企业内落地时把 Gmail 换成内部 SMTP 只需改认证段。典型应用夜间周界入侵值守闭园后区域出现人即报、危险区域闯入告警配电房/基坑边缘滞留超限、无人值守仓库的异常驻留通报——给人在画面里出现这件事接一条自动通知链路。专属参数参数默认说明records5触发告警邮件的检出数阈值——命中即发、同批不重复authenticate(from_email, password, to_email)认证方法非构造参数Gmail 需应用专用密码普通密码会被拒alarmsolutions.SecurityAlarm(modelWEIGHTS,records999999ifDRY_RUNelse5,# 演练模式永不触发邮件showFalse,)ifnotDRY_RUN:alarm.authenticate(FROM_EMAIL,PASSWORD,TO_EMAIL)第七章 交付形态分割追踪与网页交付7.1 实例分割追踪InstanceSegmentation《一条龙实战》的掩码 ID组合装进方案壳-seg模型逐帧出实例掩码、按实例独立着色类别着色或轨迹着色两种视觉模式plot_im直接可写视频。专属参数无——它就是把《一条龙实战》4.4 的 track 与第五章视觉任务的分割模型焊在一起的现成品model换成-seg权重即可。典型应用需要精确轮廓而非外接框的场景——车间工件/缺陷区域的分割追踪、人流密集处的贴边统计框重叠时掩码更准、绿植/水域等不规则目标的面积估算、演示视频的抠像级标注效果。实测yolo26n-seg 1080p 行人视频全片 341 帧行人掩码贴合、按实例着色区分清晰全程无掉帧。7.2 Streamlit 实时推理Inference一行yolo solutions inference或 Python 里solutions.Inference().inference()streamlit run启动浏览器应用摄像头/上传视频二选一Start/Stop 按钮控制——给非技术同事演示、现场验收的最快交付形态。典型应用给业务方/客户做零代码效果演示、现场验收时的即开即用比对、自己的笔记本摄像头快速试模型——原型期让看不见的人看见就靠它。专属参数构造时只有modelconf、iou、推理开关都在网页侧边栏里调——这是它与其他方案最大的不同配置不在代码里而在界面上。streamlit run sol_7_2_inference.py http://localhost:85017.3 Gradio 交互演示交付形态的另一半Streamlit7.2零代码但界面写死Gradio 走代码定制路线——官方示例三十行上下核心就是把一个预测函数接进gr.Interface图像上传 conf/IoU 两个滑条 结果图launch()起本地网页滑条一动阈值实时生效。pip install gradio即装无账号无云依赖。importgradioasgrfromultralyticsimportYOLO modelYOLO(yolo26n.pt)defpredict_image(img,conf_threshold,iou_threshold):resultsmodel.predict(sourceimg,confconf_threshold,iouiou_threshold,show_labelsTrue,show_confTrue,imgsz640)returnresults[0].plot()[...,::-1]# BGR 转 RGB 给网页显示ifacegr.Interface(fnpredict_image,inputs[gr.Image(typepil,label上传图像),gr.Slider(0,1,value0.25,labelConfidence),gr.Slider(0,1,value0.45,labelIoU)],outputsgr.Image(typepil,label检测结果),)iface.launch()典型应用给业务方一个阈值自己动手调的体验页——比 Streamlit 的侧边栏更直观地讲清 conf 和 iou 各自管什么把本篇裁剪5.1、模糊5.2等方案的结果做成网页版交互教学演示阈值怎么影响检出。换model权重即变分割/姿态/分类演示——预测函数一行不用改。二选一口径要快、要零维护用 Streamlit要把界面做成自己的自定义控件、讲参数、带品牌感用 Gradio。两者都是十几分钟的事按场合挑。参考链接Ultralytics 官方仓库GitHubhttps://github.com/ultralytics/ultralytics关于 Ultralytics 仓库本文 17 个解决方案的源码都在仓库的 solutions 目录下——每个方案一个文件参数默认值、内部调用链与 SolutionResults 的产生逻辑一目了然是正文第一章通用机制的原始出处。协议 AGPL-3.0商用需满足开源义务或购买商业授权CLI 的yolo solutions入口、方案参数与本文各章一一对应方案行为与文档描述不符时直接读对应源文件最快。本文实测环境为 ultralytics 8.4.144。YOLO27 模型页官方文档预览版https://docs.ultralytics.com/zh/models/yolo27关于 YOLO27官方尚未发布的下一代模型预览页继承 YOLO26规划 N/S/M/L 四档N/S 档双尺度检测头加前景对齐监督M/L 档转向基于查询的无 NMS 架构初步数据显示 YOLO27l 有望成为官方首个在 COCO 上突破 60 mAP 的模型。截至本文定稿权重与代码均未放出当前各方案的默认权重仍以 YOLO26 系为准——方案层不挑模型版本等 YOLO27 发布后换权重文件即可平滑升级。