Skip to content

PEACER-jh/ODPlatform

Repository files navigation

Python PyTorch YOLO macOS

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

ODPlatform

智能行车记录仪  ·  AI 工程平台

从数据治理、模型训练、实时推理、深度感知、风险预警到桌面交互的完整闭环

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


它是什么

ODPlatform 是一台智能行车记录仪的原型系统,也是一个可复用的目标检测工程平台。

接上摄像头,它能实时看懂路面发生了什么——识别车辆、行人、路牌,判断距离,在危险时给出预警,同时录像留证。底层是一套完整的 AI 工程管线:从原始数据转换、质量检查、模型训练,到推理引擎、深度估计、预警规则、桌面交互,每一步都有对应的命令行工具。

🎯 一句话:摄像头 → 看懂路面 → 判断危险 → 录像留证


快速开始

# 1. 安装平台包
pip install -e apps/platform

# 2. 初始化项目目录
odp-init

# 3. 转换数据集 (以 Cityscape 分割数据集为例)
odp-transform --dataset cityscape --format cityscape --task segment

# 4. 质检
odp-validate --dataset cityscape

# 5. 下载模型 + 训练
python scripts/download_yolomodel.py yolo26n-seg.pt
odp-train --data cityscape.yaml --model yolo26n-seg.pt --task segment --device mps

# 6. 启动行车记录仪
python apps/desktop/main.py

它能做什么

能力 说明
🔍 实例分割 YOLO-Seg 实时识别 40 类道路目标,输出 bbox + polygon mask
📏 深度估计 Depth Anything V2 单目测距,每个像素离摄像头多远
🏷️ 目标追踪 跨帧 IoU 匹配,同一物体保持一致的 track_id
⚠️ 碰撞预警 视觉尺度增长率 + 梯形前方走廊 + 状态机消抖
🚶 行人侵入 检测行人/两轮车是否进入车辆前方危险区域
📏 车距提醒 深度门控 + bbox 面积联合判断安全距离
📹 循环录像 60 秒分段 MP4,磁盘超限自动删旧,预警时锁定保护
🖥️ 桌面 GUI PySide6 界面,摄像头/视频/图片文件夹三种输入源

架构一览

                              ┌─────────────────────┐
                              │    apps/desktop/     │  ← 桌面 GUI
                              │   PySide6 · 5-Stage  │
                              └──────────┬──────────┘
                                         │ import
    ┌────────────────────────────────────┼────────────────────────────────────┐
    │                        apps/platform/                                   │
    │                     (odp_platform 可安装包)                               │
    │                                                                         │
    │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐ │
    │  │ pipeline │  │validation│  │ training │  │inference │  │  depth   │ │
    │  │ 4格式转换 │  │ 5项质检  │  │ YOLO编排 │  │ YOLO+追踪│  │ 深度+点云│ │
    │  └──────────┘  └──────────┘  └──────────┘  └──────────┘  └──────────┘ │
    │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐ │
    │  │  alert   │  │visualize │  │  frame   │  │ recorder │  │  config  │ │
    │  │ 驾驶预警 │  │ 渲染叠加 │  │ 统一取帧 │  │ 循环录像 │  │ Pydantic │ │
    │  └──────────┘  └──────────┘  └──────────┘  └──────────┘  └──────────┘ │
    └────────────────────────────────────────────────────────────────────────┘

    6 个 CLI 命令:  odp-init · odp-reset · odp-transform · odp-validate · odp-gen-config · odp-train

项目结构

ODPlatform/
├── apps/
│   ├── platform/                          ← AI 工程平台 (核心)
│   │   └── src/odp_platform/
│   │       ├── data_pipeline/             ← 数据管道 (4 种标注格式)
│   │       │   ├── core/                  ← VOC / COCO / YOLO / Cityscape 转换器
│   │       │   ├── split/                 ← 数据集划分 (random / stratified)
│   │       │   └── registry.py            ← @register 注册表
│   │       ├── data_validation/           ← 数据质检
│   │       │   ├── checks/                ← 5 项 check (yaml/label/format/split/stats)
│   │       │   ├── snapshot.py            ← 一次扫描 · 多次复用
│   │       │   └── registry.py            ← @check 注册表
│   │       ├── inference/                 ← 推理引擎
│   │       │   ├── engine.py              ← YOLO 加载 · 预热 · 推理
│   │       │   ├── tracker.py             ← 跨帧 IoU 追踪
│   │       │   └── types.py               ← DetectedObject / InferenceResult
│   │       ├── depth/                     ← 深度估计
│   │       │   ├── engine.py              ← Depth Anything V2 (离线可用)
│   │       │   ├── calibration.py         ← 地面平面校准
│   │       │   ├── pointcloud.py          ← RGB-D → 3D 点云
│   │       │   └── visualization.py       ← 深度热力图
│   │       ├── alert/                     ← 驾驶预警
│   │       │   ├── rules.py               ← 碰撞 · 侵入 · 车距
│   │       │   ├── state.py               ← 状态机消抖
│   │       │   ├── history.py             ← 时序历史
│   │       │   ├── roi.py                 ← 梯形前方走廊
│   │       │   └── recorder.py            ← 预警截图 + JSON
│   │       ├── visualization/            ← 可视化渲染
│   │       │   └── overlay.py             ← mask 后处理管线 (5 级)
│   │       ├── frame_source/             ← 统一取帧抽象
│   │       ├── recorder/                 ← 循环录像 + Session
│   │       ├── training/                 ← 训练编排 + 权重归档
│   │       └── cli/                      ← 6 个 CLI 命令
│   │
│   └── desktop/                           ← 桌面 GUI (PySide6)
│       ├── pipeline/                      ← 5 阶段并发流水线
│       ├── ui/                            ← QMainWindow
│       └── depth_trt/                     ← TensorRT 加速
│
├── scripts/                               ← CLI 快捷入口
├── docs/architecture/                     ← 7 份 ADR 架构决策记录
├── models/                                ← 预训练权重 + 检查点
└── data/                                  ← 数据集 (gitignored)

命令行工具链

命令 功能
odp-init 初始化项目目录结构
odp-reset 重置到初始状态 (保护源码和文档)
odp-transform 标注格式转换 + 数据集划分
odp-validate 5 项数据质检 + 统计报告
odp-gen-config 生成训练/验证/推理 YAML 模板
odp-train YOLO 训练 + 质检 + 权重归档

工程亮点

  • 注册表模式 — 3 个模块使用,新增 Converter/Check/Strategy 只加文件不改框架
  • DatasetSnapshot — 一次扫描全量数据,5 个 check 共享,10 万图只需 1 次 I/O
  • FrameSource 抽象 — 摄像头/视频/图片文件夹统一接口,推理引擎不感知帧来源
  • 5 级 mask 后处理 — 双核形态学 → 碎片过滤 → 高斯平滑 → 凸包补全 → EMA 时稳
  • 预警状态机 — 连续多帧确认才报警,连续多帧 clear 才解除,消除闪烁
  • Session 统一管理 — 一次运行 = 一个目录,录像+预警+元数据全部关联
  • 离线可用 — Depth Anything V2 纯本地加载,不依赖 GitHub / HuggingFace 网络

技术栈

领域 技术
目标检测 / 分割 YOLO-Seg (Ultralytics)
单目深度估计 Depth Anything V2 Small (24.8M)
桌面 GUI PySide6
数值计算 NumPy · PyTorch · OpenCV
配置管理 Pydantic v2
可视化 OpenCV · Matplotlib · Pillow
注册表模式 pkgutil.iter_modules 自动发现
构建系统 Hatchling (PEP 621)

文档

文档 路径
架构决策记录 (ADR) docs/architecture/
路演展示 docs/ODPlatform_路演展示.html
答辩演讲稿 docs/ODPlatform_答辩演讲稿.md
项目介绍书 docs/ODPlatform_项目介绍书.html

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Made with ❤️ by ODPlatform Team · XDU 生产实习 · 2026

About

XDU:人工智能-生产实习仓库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages