面向台球俱乐部和斯诺克爱好者的一套智能计分系统。系统部署在 RK3588 边缘计算设备(OrangePi 5B)上,搭配固定俯拍摄像头,对球台进行实时视频分析,自动完成台球识别、进球判定与计分,无需人工干预。
核心业务:
1. 实时球体检测:识别球台上红、黄、绿、棕、蓝、粉、黑、白 8 种台球以及球员、球袋共 11 类目标,置信度 0.9+;
2. 自动计分:基于检测结果与球袋几何关系判定进球,自动累加红球与彩球分值;
3. 轨迹预测与追踪:多目标跟踪、击球轨迹预测,辅助判犯规(未碰红球、白球落袋等);
4. 视频能力:支持本地视频回放与摄像头实时流两种输入,内置 H.264 硬编码输出,可留档复盘。
界面基于 Qt6 QML,包含实时视频画布、比分面板、球类清单、帧率/延迟调试栏等组件,支持暂停、单步、编码开关等交互。
系统在 1080p 输入下稳定运行 110fps,int8 量化后在端侧保持高帧率与低功耗,适合 24 小时不间断的球房场景。
硬件平台:Rockchip RK3588(OrangePi 5B),8 核 A76/A55,内置 6 TOPS NPU,搭载 vendor 内核提供 mpp_service/RGA/NPU 驱动。
视频链路(零拷贝):摄像头/视频源 → MPP 硬解码 → dma-buf 直接传给 RGA → 缩放至模型输入 640x640 → RKNN NPU 推理。全链路通过 dma-buf fd 传递,无需 CPU 拷贝,最大化吞吐。
AI 模型:基于 YOLOv8n 对自采数据微调(11 类,imgsz=640),mAP50≈0.95。针对 NPU 部署做了 int8 量化,并通过"输出张量拆分"(坐标与分类分分成两个张量)解决了 int8 量化下分类分塌陷的问题,量化后 110fps 且精度不损。
推理加速:3 核 NPU 并行,帧按核轮转分配,异步流水线;解码线程与推理线程双线程生产者-消费者模型,配合帧率/延迟统计调优。
软件架构:C++20 + Qt6/QML,分层为 core(视频源/管线/推理/编码)、logic(追踪/计分/轨迹)、ui(QML 界面)三层;V4L2 采集支持 MIPI/USB 摄像头,内置配置切换。
后处理:置信度阈值 + NMS 去重 → 卡尔曼滤波目标追踪 → 计分引擎按斯诺克规则判定得分与犯规。