On the tablet the engine compiled arcface for the NPU: the routing compared the form a rung wants with the form on offer, and for the embedder both are f32, so nothing said no. A rung now says which roles it serves at all, and the Hexagon does not serve the embedder (§7 — its vectors must compare across devices). Tested at the routing seam. dr-segment's onnx_probe example still named ort-tract, which is what stopped the workspace test build.
61 lines
2.5 KiB
TOML
61 lines
2.5 KiB
TOML
[package]
|
|
name = "dr-segment"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
# Guards against a Git LFS pointer being embedded in place of the weights.
|
|
build = "build.rs"
|
|
|
|
[dependencies]
|
|
thiserror.workspace = true
|
|
log.workspace = true
|
|
|
|
# Inference. `ort` is the API; **what runs it is `dr-inference-engine`'s
|
|
# business** — tract, or an ONNX Runtime the app found on disk, on whichever
|
|
# provider the device has (docs/inference.md). This crate never names either.
|
|
ort = { workspace = true, optional = true }
|
|
dr-inference-engine = { workspace = true, optional = true }
|
|
ndarray = { workspace = true, optional = true }
|
|
|
|
[dev-dependencies]
|
|
# The example reads an ordinary JPEG, because the thing worth looking at is
|
|
# whether detections land on a real photograph. Pure Rust, and already in the
|
|
# tree for embedded previews.
|
|
zune-jpeg.workspace = true
|
|
env_logger.workspace = true
|
|
# The probe example drives `ort` directly to print the raw load error, and
|
|
# asks the engine for a runtime by name rather than naming one itself.
|
|
dr-inference-engine.workspace = true
|
|
|
|
[features]
|
|
# On by default: a local adjustment that cannot select a subject is half the
|
|
# feature, and the whole point of the tract backend is that enabling this costs
|
|
# no C dependency on any platform.
|
|
default = ["semantic", "embedded-model"]
|
|
|
|
# Arm B — the ONNX runtime and the instance decoder.
|
|
#
|
|
# Separable because the watershed half is genuinely independent of it: with
|
|
# this off, `dr-segment` is a pure-CPU graph algorithm crate with no model to
|
|
# carry, which is what the headless hierarchy tests want.
|
|
semantic = ["dep:ort", "dep:dr-inference-engine", "dep:ndarray"]
|
|
|
|
# Compile the weights into the binary.
|
|
#
|
|
# Separate from `semantic` because the two answer different questions. Android
|
|
# hands the app no filesystem path to read a model from (ARCH §6.9), so there
|
|
# it must be embedded; a desktop packager pointing at a system model directory,
|
|
# or a test that only needs the decoder, wants the runtime without the 11 MB.
|
|
embedded-model = ["semantic"]
|
|
|
|
# Compile the *scene* model in too, and off by default where `embedded-model`
|
|
# is on.
|
|
#
|
|
# The asymmetry is its size. At 24 MB it is more than twice the instance model,
|
|
# and Android reaches it the way it reaches the face weights — unpacked from
|
|
# APK assets at first launch — rather than by carrying it in the binary. This
|
|
# feature is for a desktop build with nowhere else to read it from, and for
|
|
# tests that want the real graph.
|
|
embedded-scene-model = ["semantic"]
|