Sixfab Model Zoo
Sixfab Model Zoo
Pre-compiled .dxnn vision models for the Sixfab Edge AI Expansion Board
on Raspberry Pi 5. Download, deploy, and benchmark in minutes, with no compiler
workflow and no training pipeline.
The Sixfab Model Zoo is a ready-to-run library of AI vision models for the Sixfab
Edge AI Expansion Board on Raspberry Pi 5.
Each file in the zoo (extension .dxnn) is already converted, optimised, and
packaged to run on the DEEPX NPU, so you do not need to train or compile anything. Pick
a task (detect objects, find faces, estimate human pose, or segment images), pull the
sixfab-dx-examples
repository, run auto-install.sh, and launch a demo with the
dxrt-runtime you installed in Quickstart. No DXNN SDK, no Ubuntu compile
host, no training pipeline.
Overview
The Model Zoo is the quickest way to get the Sixfab Edge AI Expansion Board doing real
AI work on a Raspberry Pi 5. Each entry in the zoo is a single file with a
.dxnn ending: a finished AI vision model that has already been optimised to
run on the DEEPX NPU. You download it, point the runtime at it, and it works. There is
no AI training to do, no model conversion, and no extra computer to set up.
The Model Zoo is one of two ways to get a model onto the Edge AI Expansion Board. Pick
the path that matches your goal; both run on the same dxrt-runtime you
installed in
Quickstart,
and you can switch between them later.
.dxnn on a Linux PC,
then deploy it to the Edge AI Expansion Board. Best when the zoo doesn't cover your
task or you've trained on your own data. Includes the Sixfab × Ultralytics
acceleration path.
Custom Models (DXNN SDK) →
Model Zoo files run on just the DEEPX runtime (dxrt-runtime) installed
by the sixfab-dx APT package from Quickstart. There is no separate
compiler, no Linux build host, and no training pipeline. The same files are also
production-ready for simple applications; the
Custom Models (DXNN SDK)
path is the recommended route once you need a model that is not in the zoo or want
to retrain on your own data.
Quick demo
The sixfab-dx package you installed in Quickstart already includes a
working object-detection demo and a sample video, so you can see your first AI result
in a few seconds without plugging in a camera.
# Launch the bundled YOLOv8 object-detection demo on the NPU run_hello_world
run_hello_world do?
It opens the sample video and runs a YOLOv8 model on every frame. YOLOv8 is one of the most popular AI models for spotting objects in pictures: it draws coloured boxes around things it recognises (cars, people, traffic signs, and more) and labels them. Because the sample video is bundled in, no camera or internet connection is needed to confirm everything is working.
Expected terminal output
PERFORMANCE SUMMARY ================================================ Pipeline Step Avg Latency Throughput ------------------------------------------------ Read 21.45 ms 46.6 FPS Preprocess 14.11 ms 70.9 FPS Inference 399.69 ms 16.0 FPS* Postprocess 2.23 ms 449.0 FPS Display 32.47 ms 30.8 FPS ------------------------------------------------ * Effective throughput via async inference Overall FPS : 16.0 FPS
Each row is a step in the pipeline that runs on every frame. Read grabs the frame from the video, Preprocess resizes and reshapes it for the AI model on the Raspberry Pi 5's CPU, Inference is the AI part that runs on the DEEPX NPU, Postprocess turns the model's output into bounding boxes, and Display draws those boxes on screen. FPS means "frames per second", how many images each step handles in one second. Higher is better. The Overall FPS at the bottom is what you'll actually see on screen.
Watch the NPU work while the demo is running
To see the NPU light up in real time, open a second terminal window on
the same Raspberry Pi 5 (leave the demo running in the first one) and start the
dxtop live monitor:
dxtop
The NPU usage number should climb to 80, 90 % while the demo is
running. If it stays at 0 %, something is making the model run on the Raspberry Pi 5's
CPU instead of on the NPU; head to
Troubleshooting.
dxtop also shows NPU temperature; the DEEPX silicon throttles at
approximately 90 °C.
Run the example catalogue from GitHub
The bundled run_hello_world is the first taste; the full catalogue lives
in the public
sixfab/sixfab-dx-examples
repository. A single auto-install.sh script lays out the Python and C++
example trees, and from there a terminal menu (start.sh) lets you pick a
model and see it run.
The four-step sequence below pulls the repository, installs its example dependencies,
and launches the interactive picker. It assumes you already finished
Quickstart
(the sixfab-dx APT package is installed and dxrt-cli -s
reports the DEEPX NPU).
# 1. Clone the Sixfab examples repository git clone https://github.com/sixfab/sixfab-dx-examples.git cd sixfab-dx-examples # 2. Set up the Python and C++ example trees plus their dependencies ./auto-install.sh # 3. Choose your language cd python_examples # or: cd cpp_examples # 4. Open the terminal menu and pick a model to run ./start.sh
start.sh prints a numbered menu listing every available model
(YOLOv8/v9 detection, SCRFD face, YOLOv5 pose, YOLOv26S-Seg segmentation, and others).
Pick a number, choose a video source when prompted, and inference begins on the NPU.
Each example folder contains its own README with command-line flags if you want to
bypass the menu and launch directly.
The DXNN runtime exposes both a Python API (dx_engine) and a C++ API
(dxrt). Python examples are easier to read and modify; C++ examples
squeeze a bit more headroom out of the Raspberry Pi 5's CPU and are closer to a
production deployment. Either path runs the same .dxnn file on the
same DEEPX NPU.
Pre-compiled Model Zoo demos can run in small-scale production deployments (for example, a single-stream security camera). For larger fleets and application-specific accuracy targets the recommended path is to train and compile your own model via the Custom Models (DXNN SDK) flow, which gives you control over the input resolution, the class list, and the quantization calibration set.
Available models
The zoo covers the four most common AI vision tasks. Each card below is a single
.dxnn file you can drop in and run. The four tasks are:
object detection (find and label things in an image),
face detection (find faces specifically),
pose estimation (find the joints of a person's body), and
instance segmentation (find each object and outline its exact shape,
not just a box).
The frame-rate (FPS) figures below are measured on the 25 TOPS DX-M1M variant of the
Edge AI Expansion Board at default input resolution. Numbers for the 13 TOPS DX-M1ML
variant will land before launch.
[NEED FROM SIXFAB: per-model FPS measurements on the Edge AI Expansion
Board hardware. The reference card below uses the same DX-M1 silicon as AI HAT+ but
figures must be re-measured on this board's PCIe path (Gen 2 default / Gen 3 opt-in
via config.txt) before publication.]
After the AI model finds objects, there is a clean-up step called non-maximum suppression that removes duplicate boxes around the same object. Normally this clean-up runs on the Raspberry Pi 5's CPU, which slows things down. A PPU (Post-Processing Unit) version of a model does that clean-up directly on the NPU instead, keeping the CPU free and giving you a higher frame rate. Whenever a PPU version of a model exists, prefer it.
Per-model FPS for the Edge AI Expansion Board is being re-measured separately from
the AI HAT+ figures because the PCIe path (Gen 2 default, Gen 3 opt-in via
dtparam=pciex1_gen=3) and overall board-level characteristics differ
between the two products. FPS for both the DX-M1M (25 TOPS at INT8) and DX-M1ML
(13 TOPS at INT8) variants will be added before launch.
[NEED FROM SIXFAB: per-model FPS measured on the Edge AI Expansion
Board, with PCIe Gen, input resolution, and runtime version disclosed.]
Where the video comes from
Every model in the zoo needs frames to look at. The Edge AI Expansion Board itself does not have a camera connector — frames come through the Raspberry Pi 5 on top (CSI, USB, or network). The four options below all work with the bundled demo and with your own Python or C++ code; you only need to pick one.
If you just want to see the Edge AI Expansion Board work, start with the bundled video file (option 2). It runs without any camera plugged in and without a network. Once you're happy the hardware works, switch to a real camera that fits how you plan to deploy.
When to pick it. Easiest way to get a real, live image into the demo. Plug it into one of the Raspberry Pi 5's USB ports and you're done. (The Edge AI Expansion Board sits underneath the Pi 5 and does not consume any of the Pi's USB ports.)
How to point the demo at it. Use
--camera_index 0 for
the first USB camera. If you have more than one plugged in, try 1,
2, and so on.
.mp4, .avi,
and .mkv all work.
When to pick it. No camera yet, or you want a repeatable test you can run again and again with the exact same input. The demo bundle includes a sample file called
construction.mp4, so this option works straight
after Quickstart with nothing extra connected.
How to point the demo at it. Pass the file path with
-v, for example -v construction.mp4 or
-v /mnt/nvme/my-video.mp4.
When to pick it. The camera is far away from the Raspberry Pi 5, you already have CCTV gear, or you need to pull from several cameras at once. With the cellular slot populated, the Edge AI Expansion Board can even pull frames over an LTE/5G uplink.
How to point the demo at it. Pass the camera's RTSP address with
-v, for example
-v rtsp://192.168.1.20:554/stream. Check your camera's manual for the
exact URL. Multi-camera setups are covered in the
GitHub examples.
When to pick it. You're building a compact device (smart camera, robot, drone) and want minimum cabling and the highest frame rate.
How to point the demo at it. Use the official Raspberry Pi camera software:
picamera2 in Python or libcamera in C++. Both
capture frames and pass them to the Edge AI Expansion Board for inference. The
Quickstart and
GitHub examples
show full code.
Whichever source you pick, the same thing happens behind the scenes: the
Raspberry Pi 5 reads the picture and resizes it to whatever the model expects (for
example 640×640) on its CPU, then sends it down the PCIe FFC cable to
the DEEPX NPU on the Edge AI Expansion Board underneath. The NPU runs the AI part.
The Raspberry Pi 5 then takes the result back and draws boxes, labels, or masks on
top of the picture for you to see.
Performance reference
Headline performance figures for the Sixfab Model Zoo on the 25 TOPS DX-M1M variant of the Edge AI Expansion Board. Treat the FPS column as illustrative until per-model benchmarks ship for this board; see Methodology below for the test setup.
| What | Number | What it means in plain English |
|---|---|---|
| YOLOv8n + PPU | FPS pending | The smallest YOLOv8 object-detection model, with the post-processing trick
(PPU) turned on. Per-model FPS is being re-measured on the Edge AI Expansion
Board with PCIe Gen 3 enabled in config.txt. [NEED FROM
SIXFAB.] |
| Up to 4 cameras at 720p | 4 channels | You can run inference on roughly four 1280×720 video streams at the same time before the Raspberry Pi 5's CPU starts to become the bottleneck. The DEEPX NPU is not the limit here. |
| Concurrent models | Up to 3 | The NPU has been verified running up to three models at the same time without issue (detection + face + pose, for example). Beyond three is untested. |
| NVMe writes + LTE/5G + AI together | No degradation | Logging frames to the on-board NVMe SSD and forwarding alerts over the on-board LTE/5G modem at the same time does not measurably reduce AI inference throughput. The three subsystems are decoupled. |
| Single 4K stream | Supported | One 4K stream runs in real time, as long as your USB camera, network camera, or file source can deliver frames fast enough. |
| Model precision | INT8 |
Models in the zoo use 8-bit integer numbers internally instead of 32-bit floats. That's how the NPU runs them so quickly. Accuracy drops by roughly 2 % compared to full-precision FP32, and the DXNN compiler handles the quantization automatically. |
| Async inference | Supported | "Async" means the runtime can prepare the next frame while the current one is
still being processed by the NPU. Use run_async in the dx_engine
Python API (or RunAsync in the C++ dxrt API) to enable it; it
significantly raises overall FPS. |
| Unsupported layers | CPU fallback | If a model contains a layer the DEEPX NPU cannot run natively but ONNX can execute, that layer falls back to the Raspberry Pi 5's CPU. Inference still works, but FPS drops sharply. Check the compiler report when adding custom models. |
Drawing on the picture and sharing the result
The NPU returns plain numbers (the position of each box, how confident the model is, what label to use). Turning those numbers into something you can see (rectangles, labels, coloured masks) happens in your own Python or C++ code on the Raspberry Pi 5. The runtime deliberately stays out of this step so you can use any drawing library you like.
For PPU-supported YOLO models, the runtime returns clean bounding boxes ready to draw — non-maximum suppression has already happened on the NPU. For non-PPU models, you have to apply NMS yourself in CPU code before drawing. The example scripts in the GitHub repository handle both cases.
Draw bounding boxes with OpenCV
OpenCV is the most common image-handling library in Python. The snippet below loops over the boxes the model returned and draws a green rectangle plus a label on each one. Drop it into your existing inference loop right after you read the model's output.
import cv2 # `boxes` comes from the model. Each row: x1, y1, x2, y2, confidence, class_id for box in boxes: x1, y1, x2, y2, conf, cls = box cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.putText( frame, f"{cls} {conf:.2f}", (x1, y1 - 8), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1, )
If you want the result to show up on a different machine (a phone, a browser, a
Network Video Recorder), the easiest path is to re-broadcast the video over RTSP.
A small, free RTSP server called
mediamtx
runs alongside your inference script and re-publishes the annotated frames on a
URL like rtsp://<raspberry-pi-ip>:8554/live. If your stack
includes the LTE/5G modem, the same approach forwards inference results from
remote, off-grid deployments. The
sixfab/sixfab-dx-examples
repository includes ready-to-run GStreamer scripts for this.
Log inference results to NVMe
The Edge AI Expansion Board carries its own NVMe SSD slot for on-device buffering.
Once the SSD is mounted (see
NVMe Storage),
point your inference code's log path or output path at the mount location — for
example /mnt/nvme/inference-logs/. The runtime does not write to disk by
itself; your application owns the storage policy.
More examples on GitHub
The bundled demo is the simplest possible starting point. When you want to go further, build multi-camera apps, integrate with GStreamer, run face detection, pose estimation, and so on, the Sixfab examples repository has small, focused projects you can clone, read, and run.
auto-install.sh and start.sh entry points shown above.
The DEEPX-AI organisation also publishes a lower-level reference application,
DEEPX-AI/dx_app,
which shows the C++ dxrt runtime API in isolation. Useful when you want to
see exactly what the runtime exposes, without the example scaffolding.
Every example in the sixfab-dx-examples repository runs on the same
sixfab-dx APT package you already installed in Quickstart. Clone the
repo, run auto-install.sh for the example-specific Python and C++
dependencies, open the folder for the example you want, follow its README, and run.
Methodology disclosure
Frame-rate (FPS) figures used elsewhere on this page will be captured on the exact
setup listed below. Treat them as a healthy first-run baseline once published; your
own numbers will move with the model you choose, the input resolution, the camera you
use, the PCIe generation enabled in config.txt, and how warm the
Raspberry Pi 5 is.
Test configuration
dtparam=pciex1_gen=3 in
/boot/firmware/config.txt
Confirmed
dxrt-runtime versionrun_async (Python) / RunAsync (C++);
overlaps capture, preprocess, and inference
Confirmed
Per Sixfab's content cornerstone, every command sequence on this page is re-run on the listed hardware within the 30 days preceding publication. If a runtime, compiler, or operating-system update lands inside that window, this page is reverified before the change is shipped.
Edge AI Expansion Board is supported on Raspberry Pi 5 only. The Raspberry Pi Compute Module 5 + Raspberry Pi CM5 IO Board path is not supported on this product, and neither are Pi 4, CM4, or non-Raspberry Pi SBCs.
Updated 6 days ago
