A local object detection and counting pipeline for manufacturing and robotics use cases, built up in ten levels: from classical computer vision to deep learning, open-vocabulary detection, video tracking, and hardware-scaling analysis.
| Level | Approach |
|---|---|
| 1 | Haar Cascade — learned classifier (AdaBoost), hand-crafted features (faces) |
| 2 | HOG + SVM — learned classifier, hand-crafted features (pedestrians) |
| 3 | YOLOv8 — deep learning, general-purpose (COCO, 80 classes) |
| 4 | YOLOv8 on a real manufacturing scene — the vocabulary-gap pivot |
| 5 | YOLO-World — open-vocabulary detection, any object by text prompt |
| 6 | Grounding DINO — stronger open-vocabulary detection |
| 7 | Video object tracking + unique counting (BoT-SORT) |
| 8 | Video speed estimation + CSV data export |
| 9 | Writeup: scaling to the HP ZGX Nano AI Station |
| 10 | Writeup: scaling to the HP ZGX Fury AI Station |
Technical progression: hand-designed features + learned classifier (L1, L2) → fully learned features and classifier, end-to-end (L3) → open-vocabulary/zero-shot (L5, L6) → temporal/video (L7, L8) → hardware-scaling forward look (L9, L10).
Consistent theme: every level includes an honestly documented limitation or failure, not just wins — tilted faces missed in L1, a deliberately-kept zero-detection result in L2, a wrong-viewpoint failure in L3, COCO's missing industrial vocabulary in L4, imprecise language-matching in L5, heavy compute cost in L6, a motorcycle-filtering oversight in L7, explicitly-flagged approximate speed in L8.
torch==2.2.2 was the last compatible version,
which constrained every downstream package choice: numpy pinned
<2 to match torch 2.2.2's expected ABI,
opencv-python pinned <5 (v5 moved Haar cascades to
a contrib-only module), transformers pinned to
4.46.3 (newer versions require
torch>=2.5).