Skip to content

About

No description, website, or topics provided.

Resources

Stars

395 stars

Watchers

5 watching

Forks

Latest commit

 

History

817 Commits

Folders and files

Repository files navigation

RDK Model Zoo Logo

RDK Model Zoo

Out-of-the-Box AI Model Deployment Pipelines and Full-Link Conversion Tutorials Based on D-Robotics BPU

English | 简体中文

Stars Forks PRs Welcome License Community

Introduction

This repository is the official collection of BPU model examples and tools (Model Zoo) provided by D-Robotics. It is oriented towards AI model deployment and application development on BPU (Brain Processing Unit), helping developers to quickly get started with BPU and fast-track model inference workflows.

The samples provide model preparation, conversion guides and board-side inference programs, with preprocessing, BPU execution, postprocessing and result output. Each sample documents its supported boards and available conversion steps.

Core Value

  • 🚀 Quick BPU Adoption: Provides inference programs with model download and run commands.
  • 🧩 Complete End-to-End Examples: Covers the entire process from algorithm export and fixed-point quantization to efficient on-board execution (.bin / .hbm). Includes model loading, preprocessing, BPU inference execution, post-processing, and result visualization.
  • 📐 Standardized Design & Documentation: Provides unified directory structures and sample code specifications, supporting Python (hbm_runtime) and C/C++ interfaces for easy understanding, secondary development, and reduced integration/maintenance costs.
  • 🌐 Full Scenario Coverage: Covers classification, detection, segmentation, depth estimation, OCR, speech, and multi-modal models.

Hardware & System Support

The samples/ tree is the unified source for all maintained boards. Choose the runtime and model for your board inside each sample: Python entries select the target with the --target or --platform option their README documents, native C++ entries take the arguments their README documents, and each README states which boards its published artifacts support. Platform artifacts are recorded in the manifests under docs/release/x5/ and docs/release/s/. The default branch main is the delivery line and develop is the unified development branch; the preserved rdk_x5 and rdk_s branches are historical per-board delivery lines, and RDK X3 material is archived on rdk_x3.

Target Hardware Where Description
RDK X5 samples/ tree, model target x5 Recommended system version: RDK OS >= 3.5.0, based on Ubuntu 22.04 aarch64 and TROS-Humble.
RDK S100 samples/ tree, model target s100 Nash-E artifacts published under docs/release/s/.
RDK S100P samples/ tree, model target s100p Nash-M artifacts published under docs/release/s/.
RDK S600 samples/ tree, model target s600 Nash-P artifacts published under docs/release/s/.
Delivery / development main (default) / develop Delivery branch and unified development branch.
Historical per-board delivery lines rdk_x5 / rdk_s Preserved board-specific release branches.
RDK X3 (archive) rdk_x3 Historical archive only, not an adaptation target.

Browse the online model catalog →

The online catalog presents released models as searchable cards with model assets, measured performance and accuracy results, and their measurement conditions.


Directory Structure

Click to expand project directory architecture
rdk_model_zoo/
|-- samples/
|   |-- llm/                 # On-device text generation (native C++)
|   |   |-- gemma4-e2b/      # VLM chat runtime (native C++)
|   |   `-- minicpm5-2b/     # Text generation (native C++)
|   |-- robotics/
|   |   `-- himloco/         # Unitree Go2 locomotion policy
|   |-- speech/
|   |   |-- asr/             # Speech recognition
|   |   |-- kws/             # Keyword spotting
|   |   |-- paraformer/      # Paraformer speech recognition
|   |-- vla/                 # Upstream VLA integrations (ACT / Pi0, pinned submodules)
|   |-- vision/
|   |   |-- 3dresnet/              # Video action classification
|   |   |-- bytetrack/             # Multi-object tracking
|   |   |-- clip/                  # Image-text multimodal matching
|   |   |-- convnext/              # Image classification
|   |   |-- depth_anything_v2/     # Monocular depth estimation
|   |   |-- diffusiondrive/        # End-to-end driving planning
|   |   |-- dinov2/                # Vision feature encoder
|   |   |-- edgenext/              # Image classification
|   |   |-- efficient_sam/         # Promptable image segmentation
|   |   |-- efficientformer/       # Image classification
|   |   |-- efficientformerv2/     # Image classification
|   |   |-- efficientnet/          # Image classification
|   |   |-- efficientvit/          # Image classification
|   |   |-- fasterrcnn/            # COCO detection and person tracking
|   |   |-- fasternet/             # Image classification
|   |   |-- fastvit/               # Image classification
|   |   |-- fcos/                  # Object detection
|   |   |-- googlenet/             # Image classification
|   |   |-- hgnetv2/               # Image classification
|   |   |-- hobot_mot/             # Multi-object tracking (CPU IOU 2.0)
|   |   |-- lanenet/               # Lane detection
|   |   |-- lite_avatar/           # Audio-driven talking avatar
|   |   |-- lprnet/                # License plate recognition
|   |   |-- mobile_sam/            # Promptable image segmentation
|   |   |-- mobilenetv1/           # Image classification
|   |   |-- mobilenetv2/           # Image classification
|   |   |-- mobilenetv3/           # Image classification
|   |   |-- mobilenetv4/           # Image classification
|   |   |-- mobileone/             # Image classification
|   |   |-- modnet/                # Image matting
|   |   |-- paddle_ocr/            # OCR text detection and recognition
|   |   |-- pointnet/              # Point cloud part segmentation
|   |   |-- pp_liteseg/            # Semantic segmentation
|   |   |-- repghost/              # Image classification
|   |   |-- repvgg/                # Image classification
|   |   |-- repvit/                # Image classification
|   |   |-- resnet/                # Image classification
|   |   |-- resnext/               # Image classification
|   |   |-- siglip/                # Vision-language encoder
|   |   |-- ultralytics_yolo/      # Detection, segmentation, pose, classification (YOLOv5u-YOLO26)
|   |   |-- unet/                  # Semantic segmentation
|   |   |-- unetmobilenet/         # Semantic segmentation
|   |   |-- vargconvnet/           # Image classification
|   |   |-- vit/                   # Image classification
|   |   |-- yolo26_depth/          # Monocular depth estimation
|   |   |-- yoloe/                 # Prompt-free instance segmentation
|   |   |-- yolov5/                # Object detection
|   `-- yoloworld/             # Open-vocabulary object detection
|-- datasets/              # Sample datasets and download scripts
|-- docs/                  # Project guidelines and reference documentation
|-- skills/                # RDK Model Zoo Agent Skills
`-- utils/                 # Shared C++ / Python utilities

Quick Start

  1. Check system version: Ensure the target board is running RDK OS >= 3.5.0.
  2. Connect hardware: Ensure your RDK board is powered and network-connected. SSH or VSCode Remote SSH is recommended.
  3. Read the model README first: Always open the target directory README.md before running commands.
  4. Run the Ultralytics YOLO11x detection sample:
cd samples/vision/ultralytics_yolo/model
bash download_model.sh --platform x5 --family yolo11 --task detect --model-size x

cd ../runtime/python
python3 main.py \
  --task detect \
  --platform x5 \
  --family yolo11 \
  --model-size x \
  --test-img ../../test_data/bus.jpg \
  --img-save-path ../../test_data/inference_yolo11x.jpg

Inference Result:

Ultralytics YOLO detection result

Model List

The table lists each model family with its platforms and available models; choose the Python or C++ runtime and a compatible model artifact in each sample's support table.

Category Model Name Model Path Supported Platform Details
Video Action Classification 3D ResNet samples/vision/3dresnet RDK S100 Details
Image Classification ConvNeXt samples/vision/convnext RDK X5 Details
Image Classification EdgeNeXt samples/vision/edgenext RDK X5 Details
Image Classification EfficientFormer samples/vision/efficientformer RDK X5 Details
Image Classification EfficientFormerV2 samples/vision/efficientformerv2 RDK X5 Details
Image Classification EfficientNet samples/vision/efficientnet RDK X5 / RDK S100 / RDK S600 Details
Image Classification EfficientViT samples/vision/efficientvit RDK X5 Details
Image Classification FasterNet samples/vision/fasternet RDK X5 Details
Image Classification FastViT samples/vision/fastvit RDK X5 Details
Image Classification GoogLeNet samples/vision/googlenet RDK X5 Details
Image Classification HGNetV2 samples/vision/hgnetv2 RDK X5 Details
Image Classification MobileNetV1 samples/vision/mobilenetv1 RDK X5 / RDK S100 / RDK S100P / RDK S600 Details
Image Classification MobileNetV2 samples/vision/mobilenetv2 RDK X5 / RDK S100 / RDK S100P / RDK S600 Details
Image Classification MobileNetV3 samples/vision/mobilenetv3 RDK S100 / RDK S100P / RDK S600 Details
Image Classification MobileNetV4 samples/vision/mobilenetv4 RDK X5 / RDK S100 / RDK S100P / RDK S600 Details
Image Classification MobileOne samples/vision/mobileone RDK X5 Details
Image Classification RepGhost samples/vision/repghost RDK X5 Details
Image Classification RepVGG samples/vision/repvgg RDK X5 Details
Image Classification RepViT samples/vision/repvit RDK X5 Details
Image Classification ResNet samples/vision/resnet RDK X5 / RDK S100 / RDK S100P / RDK S600 Details
Image Classification ResNeXt samples/vision/resnext RDK X5 Details
Image Classification VargConvNet samples/vision/vargconvnet RDK X5 Details
Image Classification ViT samples/vision/vit RDK S100 Details
Multi-Object Tracking ByteTrack samples/vision/bytetrack RDK X5 / RDK S100 / RDK S100P (local detector model) / RDK S600 Details
Multi-Object Tracking HobotMot (IOU 2.0) samples/vision/hobot_mot RDK X5 / RDK S100 / RDK S100P / RDK S600 (CPU tracker over detector results) Details
Object Detection / Person Tracking Faster R-CNN MobileNetV3-Large-320-FPN samples/vision/fasterrcnn RDK X5 / RDK S100 / RDK S100P / RDK S600 Details
Promptable Image Segmentation EfficientSAM-Tiny samples/vision/efficient_sam RDK X5 / RDK S100 / RDK S100P / RDK S600 Details
Promptable Image Segmentation MobileSAM samples/vision/mobile_sam RDK X5 / RDK S100 / RDK S100P / RDK S600 Details
Monocular Depth Estimation Depth Anything V2 samples/vision/depth_anything_v2 RDK S100 Details
Monocular Depth Estimation YOLO26 Depth samples/vision/yolo26_depth RDK X5 / RDK S100 / RDK S100P / RDK S600 Details
Semantic Segmentation PP-LiteSeg samples/vision/pp_liteseg RDK X5 Details
Semantic Segmentation UNet ResNet Family samples/vision/unet RDK X5 Details
Semantic Segmentation UNetMobileNet samples/vision/unetmobilenet RDK S100 / RDK S600 Details
Lane Detection LaneNet samples/vision/lanenet RDK S100 Details
Object Detection FCOS samples/vision/fcos RDK X5 Details
Object Detection YOLOv5 samples/vision/yolov5 RDK X5 / RDK S100 / RDK S600 Details
Object Detection / Instance Segmentation / Pose Estimation / Image Classification / Oriented Bounding Boxes Ultralytics YOLO (YOLOv5u / YOLOv8 / YOLOv9 / YOLOv10 / YOLO11 / YOLO12 / YOLO13 / YOLO26) samples/vision/ultralytics_yolo RDK X5 / RDK S100 / RDK S100P / RDK S600 Details
Prompt-Free Instance Segmentation YOLOE samples/vision/yoloe RDK X5 / RDK S100 / RDK S100P Details
Open-Vocabulary Object Detection YOLOWorld samples/vision/yoloworld RDK X5 Details
Point Cloud Segmentation PointNet samples/vision/pointnet RDK S100 Details
Image Matting MODNet samples/vision/modnet RDK X5 Details
OCR Text Detection and Recognition PaddleOCR samples/vision/paddle_ocr RDK X5 / RDK S100 / RDK S600 (C++; matching models required) Details
License Plate Recognition LPRNet samples/vision/lprnet RDK X5 Details
Image-Text Multimodal Matching CLIP samples/vision/clip RDK X5 Details
Vision Feature Encoder DINOv2 samples/vision/dinov2 RDK S100 / RDK S100P / RDK S600 Details
Vision-Language Encoder SigLIP samples/vision/siglip RDK S100 / RDK S100P Details
Audio-Driven Talking Avatar LiteAvatar samples/vision/lite_avatar RDK S100 / RDK S100P / RDK S600 Details
Speech Recognition ASR (Wav2Vec2) samples/speech/asr RDK S100 / RDK S600 Details
Keyword Spotting KWS samples/speech/kws RDK S100 Details
Speech Recognition Paraformer samples/speech/paraformer RDK S100 Details
Planning / End-to-End Driving DiffusionDrive samples/vision/diffusiondrive RDK S100P / RDK S600 Details
Legged Locomotion HIMLoco (Unitree Go2) samples/robotics/himloco RDK X5 Details
Vision-Language Model Gemma4-E2B (native C++) samples/llm/gemma4-e2b RDK S100 (user-supplied models) / RDK S100P / RDK S600 Details
Text Generation MiniCPM5-2B (native C++) samples/llm/minicpm5-2b RDK S100 / RDK S100P / RDK S600 Details

Upstream VLA integrations (ACT and Pi0) are additionally available under samples/vla/ as pinned Git submodules; see the VLA overview for their integration scope.

Documentation & Resources


FAQ

1. Model accuracy doesn't meet expectations?
  • Ensure OpenExplorer Docker and board-side libdnn.so versions are up-to-date.
  • Check if model export followed the structure adjustments/operator replacements required in the model's README.
  • Verify cosine similarity of each output node is >= 0.999 (minimum 0.99) during quantization validation.
2. Inference speed doesn't meet expectations?
  • Python API performance is lower than C/C++. For maximum performance, use C/C++.
  • Benchmark data (pure forward) excludes pre/post-processing. Models with NV12 input usually achieve peak BPU throughput.
  • Ensure CPU/BPU frequency is locked to maximum.
  • Check for other resource-heavy processes.
3. How to fix quantization precision loss?
  • Refer to the PTQ accuracy debugging section in the platform documentation.
  • If INT8 loss is severe due to model characteristics, consider Mixed Precision or QAT (Quantization-Aware Training).
4. Error "Can't reshape 1354752 in (1,3,640,640)"?

The conversion settings no longer match the ONNX input size. Update the input resolution in the sample's conversion/ guide settings to match your ONNX model, delete old calibration data and re-run the calibration script.

5. mAP accuracy is lower than official results (e.g., Ultralytics)?

Compare results with the same dataset, input resolution, preprocessing, thresholds and evaluation script. Check the floating-point model first, then compare the quantized model using the same inputs. Include RGB/NV12 conversion in the preprocessing comparison.

6. Does the model use CPU during inference?

Yes. Non-quantizable or BPU-unsupported operators fallback to CPU. Even for pure BPU models, input/output quantization/dequantization nodes are executed by the CPU.


Community & Contribution

Star History

Star History Chart

We warmly welcome contributions! Please raise an issue on GitHub Issues or discuss on the Developer Community.

License

This project is licensed under the Apache License 2.0 agreement.

About

No description, website, or topics provided.

Resources

Stars

395 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages