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

09 — Train the SE-M3 detector (optional, experimental)

The detector finds several, possibly overlapping parts in one hardware pass. Training runs in the second environment; the server loads the result onto card 3.

EXPERIMENTALEvent 2026-09-07Published 2026-09-27SE Inspect build 1.9.37

What it is: a compact detector for the AKD1500 whose head emits three equal object slots per grid cell (rotated box, angle as sin 2θ/cos 2θ, visibility, class) plus per-cell overlap/overflow signals. Variant V6 (256 px input, 32 × 32 grid, 8-px cells) maps to one sequence, one pass, 18 of 32 NPs (measured 2026-08-26, firmware BC.A1.003.009).

What it is not yet: evaluated on real images. Mapping success is a fit result, not accuracy. Treat this chapter as the path to a first model, not as a promise.

Prerequisites

Chapter 06 step 4 (training environment) and a learned object set from chapter 08 — the training scenes are composed from your own freed-up photos (vorsa/dataset_build.py), placed several times, rotated and partially overlapping, so that the labels are exact by construction.

1. Which path is open

~/m3-train-env/bin/python tools/check_training_env.py

Expected: the four imports succeed and the script names the open path (train on the Pi, or train elsewhere and map here).

2. Close the chain once (smoke run)

~/m3-train-env/bin/python tools/train_smoke.py --steps 60 --batch 4

Expected: 60 steps on synthetic data with a falling loss, quantisation, .fbz written, mapped with one sequence / one pass. Step 2 aborts if the Keras output shape differs from the verified Akida variant.

Without a card (laptop): add --skip-map.

3. Real training from the UI

Set up → Objects & learning → Train → M3 training. Choose the number of steps (slider, default 300). The server starts the training environment as a subprocess and reports phase, step and messages live in the dialog; Close — keeps running lets you continue working. On success the .fbz is placed at ~/vorsa-m3/vorsa_m3.fbz, the server reserves card 3 for it (the ensemble then uses cards 0–2) and loads it on the next start — the console prints M3-Detektor: … auf Karte 3.

What to expect on the Pi: minutes to hours depending on steps and photo count. The training uses focal objectness (the slot imbalance is ~1:500), and the scene generator deliberately produces near-coincident centres (p_koinzident) so that slots 2 and 3 are ever trained. Control:

~/m3-train-env/bin/python -c "from vorsa import synth_objects as s; b,l=s.make_batch(40, cell_px=8.0); print(s.statistik(l, grid=32, image_px=256))"

Expected: felder_2_objekte and felder_3_objekte clearly above zero.

4. In operation: find and confirm

The detector proposes candidates (boxes, angle, occlusion); the ensemble names them. Only unnamed remainders may be replaced by detector boxes; named parts from the geometric path keep priority. Diagnostics: the segment line in the footer shows D<n> for detector boxes, and a failed detector appears in the attention block instead of failing silently.

Checkpoint: check_training_env and the smoke run pass; a first .fbz is loaded on card 3 and the footer shows D counts.