GLASS for RDK S100/S100P β€” one-class industrial anomaly detection

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: GLASS (ECCV 2024), WideResNet-50 backbone, trained on MVTec-AD bottle

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
glass_bottle_int8_nashm_288x288.hbm int8, 288x288, one product β€” 92.1 MB

Measured on an S100P

stage latency throughput
anomaly map 72.6 ms 14 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("glass_bottle_int8_nashm_288x288.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

This detects defects in one kind of bottle. It is an example, not a general anomaly detector β€” and retraining it for your own part is a realistic ask, which is the interesting part. The backbone is a frozen ImageNet WideResNet-50; per product only two small heads are trained (about 16 MB), from defect-free images only, with no labelled defects at all. The recipe is public.

Image and pixel AUROC are both 0.9905, matching float β€” at an output cosine of 0.9409. That cosine is far below any usual gate and costs nothing here, because AUROC is rank-based: quantisation noise nudges every score slightly without reordering them. (The same project's optical-flow model is the mirror image β€” 0.9954 cosine on a build that was unusable. Score the task in its own units, in both directions.)

What the AUROC hides, and what you must decide: good and defective scores overlap β€” best normal 0.953 against worst defect 0.882. Zero misses costs about 50% false alarms; zero false alarms misses about 5% of defects, all of them small foreign objects. The threshold is a line-side decision, not a property of the model.

The image score is the map's maximum, not its mean β€” a part is as bad as its worst patch, and a mean lets a large clean region hide a small defect.

The licence does not reach your deployment. A deployed GLASS is retrained on your defect-free parts, so it derives from your data, not from MVTec's. What is encumbered is this example checkpoint.

Licence

MIT on the code and the released weights, but this checkpoint is trained on MVTec AD, which is CC BY-NC-SA 4.0 β€” attribution, no commercial use, and derivatives under the same terms. The share-alike is why this repo carries CC BY-NC-SA 4.0 rather than a plain non-commercial notice.

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.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support