inteintegrity2026-09-22

Three accelerators on one RK3576: built-in NPU vs Hailo-8 vs RK182x

The same YOLO26n on the reComputer RK3576's built-in NPU, on a Hailo-8 module and on an RK182x module, compared on single-stream and 8-stream FPS: Hailo-8 is the fastest on a single stream, RK182x is the best at 8 streams.

CVBenchmarkEdge AIGitHub

The reComputer RK3576 carries its own NPU and has one M.2 slot for an accelerator module. We ran the same YOLO26n (80 COCO classes, 640×640, INT8) on all three — the built-in NPU, a Hailo-8 module and an RK182x module — and compared single-stream against 8-stream FPS. All three see the same 394-frame 640×640 clip, and decode plus NMS run in one shared host implementation.

Quick deployment

What you need: a reComputer RK3576 (or a sibling board). Hailo-8 and RK182x share the same M.2 slot, so one module at a time; the built-in NPU needs no extra hardware. The install scripts create separate offline Python environments from the bundled dependencies without installing or replacing kernel drivers. Hailo-8 and RK182x still require their matching host driver and hardware module.

1. Get the code

All three models ship with the repository, so nothing has to be converted:

bash
git clone https://github.com/inteintegrity/rk3576-hailo8-vs-rk182x
cd rk3576-hailo8-vs-rk182x

2. One stream

Hailo-8 (module in the M.2 slot):

bash
bash scripts/install-hailo8.sh
bash scripts/run-hailo8.sh

RK3576 built-in NPU:

bash
bash scripts/install-rk3576.sh
bash scripts/run-rk3576.sh

RK182x (module in the M.2 slot):

bash
bash scripts/install-rk182x.sh
bash scripts/run-rk182x.sh

Install once. To run another clip, append its path to the run command, for example bash scripts/run-rk3576.sh /path/to/clip.mp4.

3. Eight streams

Hailo-8:

bash
.venvs/hailo8/bin/python Hailo/Hailo8/run_streams_aggregate.py \
    --hef model/Hailo/yolo26n_hailo8_official.hef \
    --video video/test.mp4 --streams 8 --frames 200 --json out/hailo8_8stream.json

RK3576 built-in NPU:

bash
.venvs/rk3576/bin/python common/run_video_streams_benchmark.py \
    --backend rk3576 --model model/rk3576/yolo26n_rk3576_int8.rknn \
    --video video/test.mp4 --instances 1,2,4,8 --frames 200 --json out/rk3576_multi.json

RK182x:

bash
.venvs/rk182x/bin/python common/run_video_streams_benchmark.py \
    --backend rk1820 --model model/rk1820/yolo26n_rk1820_int8.rknn \
    --weight model/rk1820/yolo26n_rk1820_int8.weight \
    --video video/test.mp4 --instances 1,2,4,8 --frames 200 --json out/rk1820_multi.json

4. Where the results land

One stream writes an annotated out/<backend>/annotated.mp4 plus a JSON with the per-frame detections and the FPS of each stage; eight streams writes a JSON whose aggregate_fps is the total throughput shown in the tables above. The terminal prints the live FPS while it runs.

Any clip works - any resolution, the scripts letterbox to 640x640 themselves. The measurements here used a 394-frame 640x640 traffic clip.

One stream: Hailo-8 leads

AcceleratorWhere it livesSingle-stream FPS
Hailo-8M.2 module49.2
RK3576 built-in NPUon-die23.5
RK182xM.2 module17.5

On a single stream the Hailo-8 is 2.1× the built-in NPU, and it also has the lowest latency at 13.9 ms per inference.

Eight streams: RK182x takes the lead

Concurrent streamsHailo-8RK3576 built-in NPURK182x
150.321.216.2
251.343.234.4
451.652.357.0
851.669.788.6
  • Hailo-8 is flat: 1 stream or 8 streams, the total stays around 50 FPS, so at 8 streams each stream gets 6.4 FPS.
  • The built-in NPU grows with concurrency: 21.2 → 69.7 FPS (8.7 FPS per stream at 8 streams).
  • RK182x climbs to 88.6 FPS: 11.1 FPS per stream at 8 streams — 1.27× the built-in NPU and 1.7× the Hailo-8.

The three, on screen

The same frame of the same clip, from each accelerator:

Left to right: Hailo-8, RK3576 built-in NPU, RK182x.

Which one to pick

Use caseChoiceWhy
One camera / one streamHailo-849.2 FPS, 13.9 ms per inference
One stream, no module wantedRK3576 built-in NPU23.5 FPS, free, keeps the slot empty
Multi-camera, 4+ streamsRK182x88.6 FPS at 8 streams vs 69.7 (NPU) and 51.6 (Hailo-8)
Lowest single-frame latencyHailo-813.9 ms per inference

In one line: Hailo-8 for one stream, RK182x for many, and the built-in NPU as the free fallback. At 8 streams the on-die NPU already matches a Hailo-8 module (69.7 against 51.6); the module earns its slot when you need more than that and want to keep the SoC's own NPU free.

Source and data