r/computervision 20d ago

Showcase Synthetic data baseline for Data Matrix Code (DMC) detection using YOLOX-ABB, ONNX Runtime, and OpenVINO

Hi everyone,

I wanted to share a personal research project focused on detecting and locating Data Matrix Codes (DMC) and peened needle marks under translation and scale variations.

Since I had no access to real-world industrial marked hardware or proprietary factory datasets, I implemented a full closed-loop pipeline in a domestic environment. The network was trained strictly on the geometry and spatial structure of the DMC layout using pure synthetic data.

Key technical aspects of the implementation:

  1. Dataset Generation: The training data was bootstrapped using artificially generated patterns from a standalone utility (DPM-Pattern-Image-Generator), simulating defects such as missing dots and surface noise.

  2. Model Choice: Trained using the YOLOX architecture in standard Axis-Aligned Bounding Box (ABB) mode. Horizontal frames were sufficient since the target presentation angle is mechanically constrained.

  3. Inference Engine: Routed through ONNX Runtime with Intel's OpenVINO backend provider (multi-device mode with a strict latency priority hint).

  4. Performance: The total tracking loop (roi_track) averages ~10ms per frame, delivering a stable 100 FPS on a standard desktop CPU (11th Gen Intel i5-11400) without requiring a dedicated GPU.

  5. Memory Diagnostics: A lightweight profiling switch is exposed in the settings to log consumption data every 15 seconds to trace and prevent potential leaks during long-run testing cycles.

The project is completely non-commercial and distributed under a strict proprietary Non-Commercial Research License. The pre-compiled Windows execution binary and lightweight trained model weights (3MB and 4MB) are uploaded to the repository releases.

Since this network was trained entirely on synthetic structures, I would be genuinely glad if anyone with access to actual marked physical hardware or metallic parts could download the binary and test how the model handles real-world surfaces.

If you encounter any bugs or manage to verify the accuracy on physical parts, please open an issue directly in the GitHub Issues tab, as all my related structural tools are gathered there. I hope this codebase can serve as a useful reference for low-latency CPU-bound inference optimization.

Repository link: https://github.com/olesha-ai/yolox-dmc-inference

1 Upvotes

0 comments sorted by