Fruit Inspector 0.10.0:用 Nim 在老旧 CPU 上实现 40 FPS 实时 YOLO 跟踪
Show HN: Fruit Inspector – Real-time YOLO tracking at 40 FPS on old CPUs via Nim
Fruit Inspector 0.10.0 发布,这是一个用 Nim 编写、基于 ONNX Runtime 的传送带水果质检工具,在无独显的 Intel i5-11400 上推理循环可达约 100–130 fps,摄像头预览约 30 fps。
构建 0.10.0 · Windows x64 · Nim · ONNX Runtime(CPU / OpenVINO / CUDA 通过 settings.json)· 线体工位
Fruit Inspector 是传送带检测:水果在皮带上移动;质量仅在控制区内分级,而非画面中的任意位置。
EdgeInfer:https://github.com/olesha-ai/edgeinfer-eval
图片
测试平台:Intel i5-11400,32 GB RAM,无独立 GPU,USB 摄像头 1920×1080。
ORT CPU EP:推理循环约为 ~100–130 fps(见 speed.jpg)。
摄像头预览约 30 fps —— 这是摄像头限制,而非推理限制。
思路
在产线上,你不会在“苹果恰好出现在画面中的任何位置”对它分级。你是在控制区——皮带上一个固定位置——对它分级。
图像使用 3×3 网格。中心格 (C) 即控制区:
- 在产线上检测、跟踪并保持稳定 ID(目前最多两个苹果);
- 焦点——最靠近格 C 的苹果;它离开 C 后——对下一个 ID 保持粘性焦点;新检测不会抢走焦点;
- Cat (LightGBM)——仅在焦点苹果的中心位于 C 内时运行;
- 流水线:YOLOX (640) → ROI 精修 (256) → 44 个特征 (
fruit_features) → Cat → 屏幕上显示 GOOD / BAD。
工位行为
- 不沿皮带进行全画面追踪——我们只处理格 C 和一个 ID 队列;
- 当苹果朝 C 移动时——仅检测和跟踪,不运行 Cat;
- 在 C 内——收集特征并给出判定;
- 离开 C——粘性切换到下一个 ID,重复。
trig
在桌面上,苹果一进入 C,Cat 就启动。在真实皮带上这还不是最终方案:水果仍可能移动、滚动、弹跳——画面已在区域内,但物体尚未准备好分级。在工厂现场,时机不同:停止、静止、准备拍摄。
trig 是为此打下的基础。不是按坐标瞄准,而是一个工位信号:物体就绪——对它分级。检测器通过网络发送判定结果(GOOD / BAD 和 ID);trig 显示结果,并将逐步成为产线指令:停止该段 → 通知模型 → 获取等级。归档中已包含作为 LAN 客户端的 trig;完整链路“就绪 → 指令 → Cat”是下一步。
技术栈
- Nim、ImGui (GLFW)
- ONNX Runtime——提供程序在
settings.json中:cpu、openvino、cuda - YOLOX-nano + LightGBM(Cat ONNX)
fruit_features.dll+features.json紧邻 Cat- 苹果裁剪包:
model/apple/det.onnx、cat.onnx、features.json
zip 中包含的内容
Fruit_Inspector.exefruit_features.dlllib/cpu/、lib/openvino/(如包含则还有lib/cuda/)model/apple/settings.jsontrig.exe——LAN 客户端(见 trig)licenses/
settings.json
该文件位于 exe 旁边。归档中的值可能来自我的桌面——请使用你自己的值。
引擎:ort_provider、ort_intra_threads、ort_inter_threads、openvino_*(使用 OpenVINO 时)。
模型和摄像头:crop_pack、model、cat_model、camera_index、conf、iou、infer_main_tensor_size、infer_refine_tensor_size。
输出和日志:ip_addr、ip_port、memory_diag_enabled。
手动编辑该文件,或使用 Settings → Apply。
运行
- 在本地解压。
- 将
lib/、model/、fruit_features.dll和settings.json放在Fruit_Inspector.exe旁边。 - 设置
camera_index和ort_provider。 - 如果想在 stdout 上看到
[infer]fps 行,请从 cmd 运行。 - UI 中的 START / STOP;Esc 退出前会询问。
许可证
测试、教学、研究、反馈——可以。
本许可证下的商业生产——不可以。
全文:LICENSE.md、licenses/Fruit_Inspector_LICENSE.md。
第三方组件:licenses/THIRD_PARTY.md。请勿从 zip 中删除 licenses/ 文件夹。
商业联系:olesha-ai。
Intel、OpenVINO、Microsoft、Megvii 及其他名称均为其各自所有者的商标。
olesha-ai
来源:Hacker News · github.com


