pub struct ProtoData {
pub mask_coefficients: TensorDyn,
pub protos: TensorDyn,
}Expand description
Raw prototype data for fused decode+render pipelines.
Holds post-NMS intermediate state before mask materialization, allowing the
renderer to compute mask_coeff @ protos directly (e.g. in a GPU fragment
shader) without materializing intermediate Array3<u8> masks.
Both fields are carried as [TensorDyn] so downstream consumers (Rust, C
API, Python) get zero-copy typed access through the HAL’s shared tensor
infrastructure. Dtype policy:
| Source model | protos dtype | mask_coefficients dtype | protos.quantization |
|---|---|---|---|
| int8 quantized | [TensorDyn::I8] | [TensorDyn::F32] (dequantized) | Some(q) |
| f32 | [TensorDyn::F32] | [TensorDyn::F32] | None |
| f16 (TensorRT fp16) | [TensorDyn::F16] | [TensorDyn::F16] | None |
| f64 (narrowed) | [TensorDyn::F32] | [TensorDyn::F32] | None |
Quantization metadata lives on the proto tensor itself via
edgefirst_tensor::Tensor::quantization — float tensors cannot carry
quantization (compile-time gated on the IntegerType sealed trait).
TensorDyn is not Clone, so neither is ProtoData. Consumers that need
to share the proto buffer across threads should use TensorDyn::clone_fd
/ dmabuf_clone to dup the backing fd.
Fields§
§mask_coefficients: TensorDynPer-detection mask coefficients, shape [num_detections, num_protos].
protos: TensorDynPrototype tensor, shape [proto_h, proto_w, num_protos].
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ProtoData
impl !RefUnwindSafe for ProtoData
impl Send for ProtoData
impl Sync for ProtoData
impl Unpin for ProtoData
impl UnsafeUnpin for ProtoData
impl !UnwindSafe for ProtoData
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more