Independent developer project · not affiliated with, endorsed by, or sponsored by BrainChip Holdings Ltd. Akida and AKD1500 are their trademarks.

Methods — how we measure, and what a reproduction needs

Definitions of the terms behind our numbers, the bench set-up, and the reproducibility statement.

OUR OBSERVATIONEvent 2026-09-27Published 2026-09-27SE Inspect build 1.9.37

Definitions

Chip time. time.perf_counter() around model.forward() on one card, one input tensor. The silhouette preparation on the Pi (segmentation, uprighting, 48 × 48 binarisation) is excluded. Since build 1.9.36 the per-card value is shown live in Status → Hardware ("last compute time").

Camera → verdict latency. From the frame the recognition loop received to the verdict written into the state, one frame. Includes capture hand-over, segmentation, geometry and all card calls of that frame. The 22.7 ms figure was read from the UI at build 1.2.6, where that field measured the whole path. Later builds show chip time separately; the whole-path figure has not been re-measured with the current pipeline.

Learning time per example. Wall time of the fit calls over all examples of a chip-learning run, divided by the number of examples (ms_je_beispiel in the learning report).

Session naming rate. Share of frames in which the part in the window received a name (not "unknown"), over one recognition session, from the recognition log. n is small (tens of frames).

IoU (bench). Intersection over union between the produced foreground mask and the known rectangle of the synthetic part.

Single-pass core goal. A variant passes if len(akida.devices()) used = 1, model.map(device, hw_only=True) raises no exception, len(model.sequences) == 1, the sequence backend is hardware, NPs used ≤ 32, and one hardware pass per frame. Random weights; negatives that must fail are part of the check.

Bench set-up (synthetic)

Scenes are generated in the test scripts: dark-green belt (BGR ≈ 40/95/25) with additive Gaussian noise σ = 3; vignetting profiles parabolic, clipped, cos⁴ and flat; parts as filled rectangles (black card 200 × 220 px with a bright label and a red label; white 240 × 180 px part); glare as saturated discs with a soft halo and 25 % flicker; 640 × 480 px. Scripts print ok/FEHLT per check and FEHLER: 0 on success; they run on any machine with numpy and OpenCV.

Reproducibility statement

A reproduction needs these six facts recorded: OS image (Raspberry Pi OS Bookworm 64-bit), uname -r (6.12.x), driver commit of akida_dw_edma plus the two patches, akida.__version__ (2.19.3), card firmware (BC.A1.003.009), and the SE Inspect build string from the footer. All measurements on this site carry the last two; the first four are in the guide.

What we did not do: independent repetition by a second lab; more than one physical set-up; statistical treatment beyond medians on the synthetic benches. See Limitations.

How to reproduce the bench figures

git clone https://github.com/<org>/vorsa-inspect && cd vorsa-inspect
python3 tools/test_farbmaske.py      # belt model
python3 tools/test_glanz.py          # glare
python3 tools/test_m3_head.py        # M3 head logic
python3 tools/test_linie_fluss.py    # line state machine
python3 tools/test_karten_waechter.py
python3 tools/run_selftest.py --use-background --out selftest_out

Expected: FEHLER: 0, WAECHTER_OK, FLUSS_OK, all [OK], GESAMT: OK.

Hardware figures need a Pi 5 with at least one AKD1500 and chapters 04–07 of the guide; tools/check_single_pass.py reproduces the mapping table.