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.

DEEPX DX-M1M / DX-M1ML .dxnn pre-compiled INT8 precision Vision tasks Fastest time-to-demo
Edge AI Expansion Board · Models & Deployment · Sixfab Model Zoo · Updated 2026-05-14 · Intelligented by DEEPX
What is the Sixfab Model Zoo?

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.

You are here Path 1, ready-made Sixfab Model Zoo Use a model that is already trained, already optimised, and ready to run. Best for first results, demos, and when one of the standard tasks (detect objects, find faces, estimate pose, segment images) is what you actually need.
Path 2, your own model Custom Models (DXNN SDK) Bring your own trained AI model and convert it to .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) →
You do not need the DXNN SDK to use the Model Zoo

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.

bash · pi@raspberrypi: ~
On Raspberry Pi 5
# Launch the bundled YOLOv8 object-detection demo on the NPU
run_hello_world
What does 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 Inference on NPU
         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
How to read this table

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:

bash · second terminal
On Raspberry Pi 5
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).

bash · pi@raspberrypi: ~
On Raspberry Pi 5
# 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.

Python or C++?

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.

Model Zoo demos and production deployments

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.]

Vision today INT8 quantised YOLOv8 / YOLOv9 / SCRFD Detection · Pose · Segmentation Up to 3 models in parallel
What does "PPU" mean on some of the models below?

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.

YoloV8S.dxnn
Same task as YOLOv8n (boxes around objects), but the "small" model is a step up in accuracy. Slower, fewer frames per second, but spots smaller and harder objects more reliably.
Detection FPS pending
YoloV8M.dxnn
The largest YOLOv8 model in the zoo (the "medium" size). Highest accuracy at the cost of frame rate. Good when you have time to process and want the best detections.
Detection FPS pending
YoloV9S.dxnn
Same idea as YOLOv8 (boxes around objects) using the newer YOLOv9 architecture. The "small" variant. Generally more accurate than YOLOv8s for a similar speed.
Detection FPS pending
YoloV9C.dxnn
The "compact" YOLOv9 build. Sits between YOLOv9s and the medium model: a bit more accurate than the small one, a bit faster than the medium one.
Detection FPS pending
SCRFD500M.dxnn
Finds faces specifically (not general objects). Lightweight and built to handle scenes with many faces at once, like a crowd or a classroom. Good for visitor counters and access control.
Face FPS pending
YoloV5Pose.dxnn
Detects people and pinpoints 17 body joints on each one (head, shoulders, elbows, wrists, knees, ankles, etc.). Useful for fitness apps, sport analytics, and any project that cares how a person is moving, not just where they are.
Pose FPS pending
YoloV26S-Seg.dxnn
Goes further than detection: instead of a rectangular box, it traces the exact outline of every object it finds. Pick this when you need the actual shape (background removal, robot grasping, precise area measurement).
Segmentation FPS pending
MobileNet / ResNet
Image-classification backbones (assign a single label per image rather than draw boxes). Lightweight and widely used as feature extractors. The DEEPX model zoo carries the full list of supported families; EfficientNet is also supported.
Classification FPS pending
Benchmark numbers in progress for this board

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.

Not sure which one to start with?

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.

1. USB webcam
--camera_index 0
What it is. Any standard USB camera, the same kind you would plug into a laptop for video calls. Logitech C270, Logitech C920, generic action cameras, almost anything with a USB plug.

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.
2. Video file
-v construction.mp4
What it is. Any video file already on the Raspberry Pi 5's SD card or attached storage (including the NVMe SSD inside the Edge AI Expansion Board if you have one installed). Common formats like .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.
3. Network (IP) camera
-v rtsp://<ip>/stream
What it is. A standalone camera that sits on your network instead of plugging into the Raspberry Pi 5. Most CCTV and security cameras work this way. They stream video over Wi-Fi, Ethernet, or LTE/5G using a protocol called RTSP (essentially "video over the network").

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.
4. Raspberry Pi Camera Module
picamera2 (Python)
What it is. The small camera that connects directly to the Raspberry Pi 5 with a flat ribbon cable instead of USB. Officially tested with the Edge AI Expansion Board: Camera Module 2 (IMX219, 8 MP), Camera Module 3 (IMX708, 12 MP, autofocus), HQ Camera (IMX477, 12.3 MP, interchangeable lens), and Global Shutter Camera (IMX296, high-speed motion).

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.
Where the work happens

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.

PPU vs. manual NMS

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.

python · overlay boxes on each frame
On Raspberry Pi 5
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,
    )
Sending the annotated video to another device

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.

sixfab/sixfab-dx-examples
Small, runnable projects covering object detection, face detection, pose estimation, instance segmentation, multi-camera streaming, GStreamer pipelines, and RTSP. Source code in both Python and C++. Includes the auto-install.sh and start.sh entry points shown above.
github.com/sixfab/sixfab-dx-examples →

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.

Nothing extra to install

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

Inference hardware
Sixfab Edge AI Expansion Board for Raspberry Pi 5 · DEEPX DX-M1M (25 TOPS at INT8) Confirmed
NPU memory
4 GB LPDDR5 @ 5600 MT/s (on the DX-M1 M.2 module)
Host platform
Raspberry Pi 5, 8 GB RAM · USB-C PD power supply (27 W minimum, 45 W recommended)
PCIe link
PCIe Gen 3 x1, enabled via dtparam=pciex1_gen=3 in /boot/firmware/config.txt Confirmed
Raspberry Pi OS
Raspberry Pi OS Bookworm, 64-bit (Trixie also supported)
dxrt-runtime version
Pinned version used to publish these numbers Need from Sixfab
NPU module firmware
Pinned NPU module FW version Need from Sixfab
Reference model
YOLOv8n at 640×640 · INT8 · PPU enabled Confirmed
Reference FPS for this board
YOLOv8n + PPU on the Edge AI Expansion Board Need from Sixfab
Camera input
USB webcam @ 640×640 · UVC-compatible
Async inference
Enabled via run_async (Python) / RunAsync (C++); overlaps capture, preprocess, and inference Confirmed
Concurrent subsystems
NVMe SSD writes + LTE/5G traffic active during measurement; no AI throughput degradation observed Confirmed
Other models
FPS for YOLOv8s/m, YOLOv9s/c, SCRFD500M, YOLOv5Pose, YOLOv26S-Seg, and MobileNet/ResNet Pending
DX-M1ML (13 TOPS at INT8)
Per-model FPS for the 13 TOPS variant on the Edge AI Expansion Board Pending
Command-validation policy

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.

Supported host platform

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.