Tiger AI Platform平台中的实战:车辆追踪与区域计数,从部署到统计一条龙

Tiger AI Platform平台中的实战:车辆追踪与区域计数,从部署到统计一条龙 文章目录导读一、背景与痛点1.1 为什么需要车辆追踪与计数1.2 核心能力一览二、技术架构2.1 系统架构2.2 关键代码位置2.3 会话状态 VehicleSession三、模型配置与推荐3.1 模型角色3.2 推荐组合行驶场景四、操作实战视频文件追踪4.1 页面布局4.2 通用参数配置4.3 视频文件操作步骤4.4 实时摄像头操作五、区域进出计数规则核心5.1 计数逻辑5.2 计数与类别参数六、车牌 OCR 与测速6.1 车牌识别流程6.2 测速公式6.3 拥堵阈值可配置七、HTTP 接口调用指南7.1 接口一览7.2 图片识别示例7.3 视频追踪示例7.4 实时帧追踪示例八、常见问题与排障❌ 错误 1提示无检测模型❌ 错误 2OCR 警告❌ 错误 3区域模式无法开始❌ 错误 4人计数始终为 0❌ 错误 5进出计数偏多❌ 错误 6测速不准九、与「目标追踪」模块的关系十、总结与最佳实践参考链接导读核心摘要本文基于 Tiger AI Platform 平台手把手教你配置车辆检测、多目标追踪、车牌OCR识别、区域进出计数、测速与拥堵分析。从模型选型到前端操作从接口调用到排障指南完整覆盖车辆追踪业务闭环。一、背景与痛点1.1 为什么需要车辆追踪与计数在道路监控、停车场管理、卡口交通等场景中实时统计车辆数量、识别车牌号牌、分析拥堵程度是刚需。传统方案要么依赖昂贵的专用硬件要么需要手动数车——效率低、误差大。Tiger AI Platform 的「车辆追踪」模块整合了 YOLO 目标检测、ByteTrack 多目标追踪、RapidOCR 车牌识别三大核心能力一条命令就能完成从视频输入到统计报表输出的完整链路。1.2 核心能力一览能力说明车辆检测与追踪YOLO ByteTrack稳定 Track ID遮挡不丢目标车牌定位与 OCR四点 pose 透视矫正 RapidOCR号牌识别准确率 95%标定测速按「米/像素」换算轨迹速度km/h拥堵估计按画面内车辆数自动分级畅通/缓行/拥堵/严重拥堵计数线越线两点计数线统计进出方向多边形区域进出自定义多边形人/车分组双向进出统计过车记录导出CSV 格式含号牌、速度、置信度等字段告警联动可选启用检测告警规则视频烧录/实时弹窗支持四种输入图片识别、视频文件、本地摄像头、网络摄像头。二、技术架构2.1 系统架构Tiger AI Platform 车辆追踪模块采用前后端分离架构前端 Vue 3 负责交互与可视化后端 Python 负责推理与业务逻辑┌─────────────────┐ multipart / JSON ┌──────────────────────┐ │ Vue 车辆追踪页 │ ─────────────────────────► │ /api/ai/vehicle/* │ │ vehicle/index │ ◄───────────────────────── │ routes/vehicle.py │ └────────┬────────┘ progress / blob └──────────┬───────────┘ │ │ │ cameraApi / alertApi ▼ │ ┌──────────────────────┐ │ │ vehicle_track.py │ │ │ · ByteTrack 结果增强 │ │ │ · 车牌 OCR / 测速 │ │ │ · 拥堵 / 越线 │ │ │ · ZoneFlowCounter │ │ └──────────┬───────────┘ │ │ │ ▼ │ ┌──────────────────────┐ │ │ track_zone.py │ │ │ · 区域几何 / 进出 │ │ │ · 叠加绘制 │ │ └──────────────────────┘ ▼ 检测告警 evaluate实时2.2 关键代码位置层级路径前端页面frontend/src/views/ai/vehicle/index.vue前端 APIfrontend/src/api/ai.js→vehicleApi路由frontend/src/router/index.js→ai/vehicle后端路由backend/routes/vehicle.py业务服务backend/services/vehicle_track.py区域计数backend/services/track_zone.py单测backend/unittests/test_vehicle_zone.py2.3 会话状态 VehicleSession每路视频/摄像头用sessionId维护独立会话包含轨迹历史用于测速、越线判断车牌投票与冷却时间多帧择优避免跳动越线计数crossing或区域计数器zone_counter过车记录records含号牌、速度、置信度视频任务由服务端生成sessionId实时流由前端生成 UUID 并在首帧标记reset1。三、模型配置与推荐3.1 模型角色角色librarytask是否必选说明车辆检测ultralyticsobject-detection必选如 YOLO26 / YOLO11需本地权重车牌检测ultralyticsobject-detection / obb / pose可选优先四点 pose 透视矫正OCR 检测rapidocrtext-detection可选与识别成对配置OCR 识别rapidocrtext-recognition可选如 PP-OCRv6 small3.2 推荐组合行驶场景# 检测YOLO26s 或 YOLO26n轻量快速# 车牌YOLO26s 四点 pose → YOLO26n bbox → OBB自动降级# OCRPP-OCRv6 small det rec重要车牌模型与 OCR 需成对配置才启用识别。未配置 OCR 或关闭「号牌 OCR」开关时系统跳过识别车牌模型失败时视频任务会自动降级为车身框中下部启发式 ROI并在进度中给出 warning。四、操作实战视频文件追踪4.1 页面布局页面分两个 Tab任务配置选择模型、输入源、计数方式、画区域/线、启动任务追踪结果查看标注图、结果视频、实时画面与过车表格4.2 通用参数配置参数默认值说明车辆检测模型自动优选必选ultralytics 目标检测车牌检测模型自动优选可清空可选OCR 检测 / 识别自动优选成对配置才启用置信度0.250.050.95分辨率 imgsz640640 / 480 / 320号牌 OCR开关闭则跳过车牌识别测速开非图片需配置「米/像素」米/像素0.05现场标定地面实距 ÷ 对应像素启用告警关视频/实时需「检测告警」页已有启用规则4.3 视频文件操作步骤Step 1选择模式与模型模式选择「视频文件」→ 上传视频选择车辆检测模型自动优选或手动指定可选选择车牌检测模型 OCR 模型对Step 2设置计数区域在首帧画布上设置几何多边形区域依次点击 ≥3 个顶点 →「闭合区域」必须闭合后才能开始计数线点击两点成线不计数可直接开始Step 3启动追踪可选启用告警 → 点击「开始追踪」系统自动跳转到「追踪结果」TabStep 4查看结果实时进度条processed / total播放带标注的 MP4 视频人/车进出统计过车记录表号牌、速度、置信度拥堵等级分析Step 5导出数据下载标注视频{原文件名}_{unix时间戳}_vehicle.mp4导出过车 CSVtime, trackId, className, plate, plateScore, speedKmh, confidence4.4 实时摄像头操作选择本地摄像头或管理端已配置的网络摄像头配置模型、计数方式、类别、颜色等点击「开始」画面实时显示FPS、目标数、进出统计人/车分组计数拥堵等级HUD 左上角可「导出 CSV」「停止」结束会话小技巧网络摄像头循环约 80ms/帧本地摄像头尽量紧凑取流。抓帧宽度上限约 640pxJPEG 质量约 0.6。五、区域进出计数规则核心5.1 计数逻辑与「目标追踪」模块共用ZoneFlowCounter规则严谨有效进入判定检测框与多边形交集面积 ÷ 检测框面积≥ 30%擦边不计数稳态确认区外稳态约 2 帧 区内确认约 2 帧后记一次 ENTEREXIT 同理去重短时近距离 ID 切换抑制默认距离阈值约 90px丢失退出目标连续缺失约 20 帧可触发 EXIT分组统计personCOCO 0与vehicleCOCO 1/2/3/5/7分别累计进/出框内文案「车n」「人m」来自累计进入数非瞬时在区人数为 0 的项不显示区域优先同时传 region 与 line 时仅使用区域计数5.2 计数与类别参数参数默认值说明计数方式多边形区域zone区域 /line计数线 /none不计数统计类别人车vehicle/person_vehicle/person/all边框色#2196f3仅区域模式填充色rgba(33,150,243,0.12)支持透明度注意图片模式另提供「仅车辆类」勾选COCO 车辆 ID1,2,3,5,7。视频/实时以「统计类别」为准。六、车牌 OCR 与测速6.1 车牌识别流程有车牌模型在车辆 ROI 内定位pose 四点 → OBB → bbox自动降级无车牌模型取车身框中下部启发式区域透视/裁剪后 RapidOCRplate_mode默认 rec_only中国大陆号牌格式打分 多帧投票择优更新OCR 冷却默认约 0.50.6s无牌或大目标时自动缩短仅对 vehicle 类别做 OCR 与测速行人只参与区域/检测统计。6.2 测速公式[v_{\mathrm{km/h}} \frac{\Delta s_{\mathrm{pixel}} \times \mathrm{metersPerPixel}}{\Delta t} \times 3.6]关键需正确标定「米/像素」地面实距 ÷ 对应像素否则速度仅作相对参考。6.3 拥堵阈值可配置画面车辆数等级中文≤ 3smooth畅通≤ 8moderate缓行≤ 15busy拥堵 15severe严重拥堵七、HTTP 接口调用指南7.1 接口一览权限所有接口需ai:vehicle:list权限。Base/api/ai/vehicle接口方法说明/detect-imagePOST图片识别返回标注图 base64 detections/track-framePOST实时单帧追踪返回检测结果 进出统计/track-videoPOST视频异步追踪返回{ jobId, sessionId }/video-progress/jobIdGET查询视频进度返回statusprocessed/total/output/nameGET下载 MP4文件名须以_vehicle.mp4结尾/reset-sessionPOST按 sessionId 清空会话/export-recordsPOST按 sessionId 返回 CSV 文本7.2 图片识别示例importrequests urlhttp://your-server/api/ai/vehicle/detect-imagefiles{file:open(car.jpg,rb)}data{detectId:1,# 车辆检测模型 IDplateId:2,# 车牌检测模型 ID可选detId:3,# OCR 检测模型 ID可选recId:4,# OCR 识别模型 ID可选conf:0.25,imgsz:640,enableOcr:1,vehicleOnly:0}resprequests.post(url,filesfiles,datadata)print(resp.json())# 返回标注图 base64、detections、拥堵等级等7.3 视频追踪示例importrequestsimporttime urlhttp://your-server/api/ai/vehicle/track-videofiles{file:open(road.mp4,rb)}data{detectId:1,conf:0.25,imgsz:640,region:[[0.1,0.1],[0.9,0.1],[0.9,0.9],[0.1,0.9]],# 归一化多边形classPreset:person_vehicle,enableOcr:1,enableSpeed:1,metersPerPixel:0.05}resprequests.post(url,filesfiles,datadata)resultresp.json()job_idresult[jobId]session_idresult[sessionId]# 轮询进度whileTrue:progressrequests.get(f{url.replace(track-video,video-progress)}/{job_id}).json()ifprogress[status]done:print(f完成记录数{progress[stats][recordCount]})print(f拥堵占比{progress[stats][congestionSummary]})breakelifprogress[status]error:print(追踪失败)breakprint(f进度{progress[processed]}/{progress[total]})time.sleep(2)7.4 实时帧追踪示例importcv2importrequestsimportuuidimportbase64 session_idstr(uuid.uuid4())capcv2.VideoCapture(0)frame_count0whilecap.isOpened():ret,framecap.read()ifnotret:break# 编码为 JPEG_,buffercv2.imencode(.jpg,frame,[cv2.IMWRITE_JPEG_QUALITY,60])data{detectId:1,conf:0.25,imgsz:640,classPreset:person_vehicle,region:[[0.1,0.1],[0.9,0.1],[0.9,0.9],[0.1,0.9]],sessionId:session_id,reset:1ifframe_count0else0,enableOcr:1,enableSpeed:1,metersPerPixel:0.05}files{file:(frame.jpg,buffer.tobytes(),image/jpeg)}resprequests.post(http://your-server/api/ai/vehicle/track-frame,filesfiles,datadata).json()print(f帧{frame_count}: 检测{len(resp.get(detections,[]))}个目标, f拥堵:{resp.get(congestion)}, f车进入: {resp.get(crossing,{}).get(vehicle_in,0)})frame_count1cap.release()八、常见问题与排障❌ 错误 1提示无检测模型现象启动任务时报错「无可用检测模型」原因未拉取或未启用 ultralytics OD 权重解决进入「模型管理」页面上传或拉取 YOLO 权重文件确保状态为「已启用」。❌ 错误 2OCR 警告现象日志中出现 OCR 相关 warning车牌识别失败原因缺少 RapidOCR det/rec 模型或未成对配置解决拉取 PP-OCR 模型并在配置中成对选择 det rec。❌ 错误 3区域模式无法开始现象点击「开始追踪」无反应原因多边形未闭合解决在画布上点击 3 个以上顶点后务必点击「闭合区域」按钮。❌ 错误 4人计数始终为 0现象只统计到车辆行人计数为 0原因统计类别选的是「仅车」或检测模型未包含 person 类别解决将统计类别改为「人车」并使用通用 COCO 检测模型。❌ 错误 5进出计数偏多现象明明没几辆车进出统计数字却很大原因擦边触发、ID 切换导致重复计数解决系统已启用 30% 面积阈值与去重机制可适当调大区域范围或提高置信度。❌ 错误 6测速不准现象显示车速 200km/h明显不现实原因「米/像素」参数未标定解决用已知长度地面标尺重算米/像素 地面实距 ÷ 对应像素数。九、与「目标追踪」模块的关系对比项目标追踪车辆追踪定位通用人/车追踪与进出道路车辆业务闭环模型单一 YOLO OD检测 车牌 OCR 栈区域进出✅ ZoneFlowCounter✅ 同源集成车牌 / 测速 / CSV❌✅告警联动✅✅额外叠加车牌字段API/api/ai/model/.../track-*/api/ai/vehicle/...人车区域统计能力两边一致车辆追踪额外提供号牌与过车业务闭环。十、总结与最佳实践本文从技术架构到实际操作完整介绍了 Tiger AI Platform 车辆追踪模块的使用方法。核心要点模型选型YOLO26 ByteTrack 做检测追踪YOLO26s 四点 pose 做车牌定位PP-OCRv6 做字符识别区域计数ZoneFlowCounter 提供严谨的进出判定逻辑30% 面积 稳态确认 去重不是简单越线就 1车牌 OCR多帧投票 格式打分 冷却机制保证号牌不跳动业务闭环从视频输入 → 检测追踪 → 车牌识别 → 进出统计 → CSV 导出一条龙打通下一篇预告基于 Tiger AI Platform 的检测告警联动——如何配置越线/区域越界告警规则实现主动预警与自动截图。参考链接Ultralytics YOLO 官方文档ByteTrack 多目标追踪论文RapidOCR 开源项目OpenCV Python 教程