YOLOP for RDK S100/S100P β panoptic driving perception
Compiled BPU models (.hbm) for the D-Robotics RDK S100 / S100P, ready to
load β no ONNX export, no calibration, no hb_compile. Built and measured with
BCDL, a C++17 inference and media library
for the RDK S-series with Python bindings.
Upstream: YOLOP, BDD100K
Non-commercial. These weights carry a restriction the upstream code licence never mentions β see Licence at the bottom. Redistribution is permitted; commercial use is not. If you need a commercial build, the recipe is public and you can retrain or substitute the backbone.
Files
| file | what it is |
|---|---|
yolop_cut_nashm_640x640_nv12.hbm |
640x640 NV12, 3 raw heads β 11.3 MB |
Measured on an S100P
| stage | latency | throughput |
|---|---|---|
| all three heads | 2.75 ms | 364 FPS |
hrt_model_exec perf, one thread, minimum of three runs, on a board first gated
against its own previously recorded numbers. BPU time only β CPU
pre/post-processing is on top and is listed per task in BCDL's
benchmark results.
Use it
conda install -c https://mirrors.ruis.ai/conda -c conda-forge bcdl
import bcdl
engine = bcdl.Engine("yolop_cut_nashm_640x640_nv12.hbm")
print(engine.input_shape(0), engine.output_shape(0))
Each task has a decoder in BCDL that turns those raw outputs into boxes, keypoints, masks, disparity or text β see the Python API (δΈζ).
What to know before deploying
One pass gives three outputs: vehicle detection, drivable area and lane lines.
The _cut suffix is the whole story. The published export bakes its
anchor decode into the graph with ScatterND. That compiles without a single
warning into a model whose objectness and class columns are never written β
zero detections at any threshold, and nothing anywhere says why. This build is
cut before the decode and emits the three raw heads
([1,18,80,80], [1,18,40,40], [1,18,20,20]); BCDL decodes them on the CPU.
Cutting it also made it 10x faster (28.33 ms to 2.75 ms) β that construct is
extremely expensive on this part.
The decode is anchor-based, and the anchors are in pixels, not stride units:
xy = (2*sigmoid - 0.5 + grid) * stride, wh = (2*sigmoid)^2 * anchor.
Non-commercial. See the licence note above.
Licence
MIT on the code and the weights are committed in the repository, but they are trained on BDD100K, which limits commercial use to member organizations.
BCDL itself is Apache-2.0 and is unrelated to these terms β it is a
general-purpose runtime that loads any .hbm. The licence above constrains
these weights and this compiled artefact.
The conversion recipe β ONNX export, calibration, hb_compile config and the
acceptance numbers β is public in
bcdl-model-zoo, so this build can
be reproduced or retargeted rather than taken on trust.