项目
这里放项目介绍、代码仓库和相关笔记。
01
VisionTrack / YOLO Tracking
将 YOLO26 道路目标检测与 ByteTrack 跟踪部署到视美泰 RK3588。用 PTQ 混合精度缩小模型,通过 DMA-BUF 在采集、硬件解码、图像预处理和 NPU 之间共享缓冲,完成摄像头到轨迹输出的 C++ 流水线。
- PTQ INT8 + 部分 FP16:先建立 INT8 基线,再按逐层分析将敏感位置保留为 FP16,使用 RKNN-Toolkit2 导出固定混合精度模型。
- DMA-BUF 零拷贝路径:YUYV 采集直接交给 RGA / RKNN,稳态应用层上传为 0 字节;MJPEG 保留一次压缩包复制,解码后由 MPP / RGA / RKNN 共享图像缓冲。帧租约与 RAII 管理缓冲归还和资源释放。
- 3 个 Worker 并发:启动时初始化三个推理 Worker,各自持有独立的 RKNN Context、RGA 预处理目标和输入输出缓冲,分别绑定 NPU Core0 / 1 / 2,并发处理单路视频的不同帧。
- 采集、推理与输出使用有界队列,等待槽保留最新帧;ByteTrack 校正轨迹,按序号和时间水位拒绝迟到结果,JSONL 记录检测、轨迹和运行资源。
有效检测 30.11 FPS
模型 12.17 MiB
平均 RSS 146.17 MiB
2026-10-19,Hybrid 模型、单路交通 JPEG 回放、800×608 输入、三 Context split、关闭预览并保留画框与跟踪,连续运行 10 分钟,完成 18,066 / 18,066 帧检测。FPS 与 RSS 排除前 30 秒及末尾 30 帧;检测速度受约 30 FPS 的输入速率限制。模型比 FP16 缩小 42.62%。
02
RAG Gateway Stack
导入文件和网页后,可以检索文档、提问,并查看回答引用和工具调用记录。C++ 网关负责对外接口,Python 服务处理文档、检索和回答生成。
- 文件和网页共用文档解析与索引流程,Celery 后台处理任务,前端可以查看进度。
- LanceDB 检索相关片段,MySQL 提供正文,CrossEncoder 对结果重排后交给模型回答。
- Agent 结合用户记忆、会话摘要和近期消息调用只读工具,工作台展示调用记录与引用。
- SSE 逐步返回回答,支持断线续传;回答与引用保存到数据库,方便之后回查。
03
Libevent Chat Server
用 libevent 写的 TCP 聊天服务器,支持房间消息和私信,处理多线程连接分发与慢客户端积压。一个 Acceptor 接受连接,再把连接分给多个 Worker 处理。
- 通过 socketpair 分发连接,每个 Worker 使用独立的 event_base 处理读写和连接清理。
- 一行 JSON 对应一条消息,支持设置昵称、加入或离开房间、广播和私信。
- 共享用户和房间数据使用互斥锁,广播时先取快照,再释放锁发送消息。
- 发送缓冲超过上限时暂停写入并排队,缓冲回落后继续发送,持续积压的慢连接会被断开。
04
Fighting Netcode
C++20 动作游戏同步 Demo,客户端先响应输入,再根据服务器状态修正预测。用它查看网络延迟、丢包和预测偏差怎样影响游戏状态。
- 服务器以 60Hz 推进模拟,并定期广播输入确认和游戏状态。
- 客户端收到服务器状态后恢复快照,重放本地输入,追到当前逻辑帧。
- 使用 UDP 传输,每个包重复携带最近几帧输入,减少丢包带来的输入缺失。
- 用量化后的状态哈希检查客户端与服务器是否一致,测试覆盖编解码、延迟状态和大量回滚。
05
ScrewMetrology
用 OpenCV 定位离线图片中的螺钉,测量长度、头宽和杆宽。使用 C++17 实现,结果包括工件轮廓、测量叠加图和尺寸记录。
- 用阈值、Lab 颜色和形态学处理分割工件,筛选轮廓并检查粘连、碎裂与背景误检。
- 比较旋转框、PCA 和拟合直线得到的主轴,沿工件方向测量长度、头宽和杆宽。
- 在原始灰度图上采样边缘,通过梯度峰拟合细化尺寸,保留像素与亚像素测量结果。
- 按配置的尺度和公差配方进行判定,输出掩膜、叠加图、JSON 与报告。
检出率 84.55%精确率 83.31%
2026-10-03 固定配置评估:384 张 MVTec 图像(含调参样例),按旋转框 IoU≥0.5 一对一匹配。