pub struct InputSpec {
pub shape: Vec<usize>,
pub dshape: Vec<(DimName, usize)>,
pub cameraadaptor: Option<String>,
pub preprocessing: Option<Preprocessing>,
}Expand description
Input tensor specification.
Fields§
§shape: Vec<usize>Input tensor shape in the model’s native layout (NCHW or NHWC).
dshape: Vec<(DimName, usize)>Named dimensions ordered to match shape. Empty means the layout
is unspecified and consumers must infer from the format.
cameraadaptor: Option<String>Camera adaptor input format (rgb, rgba, bgr, bgra, grey,
yuyv). Free-form string rather than an enum because new adaptor
formats can appear without breaking parsing.
preprocessing: Option<Preprocessing>Pre-processing the model expects: normalization, resize policy and
letterbox geometry. None means the producer did not declare it;
consumers fall back to validation.normalization /
validation.preprocessing, then to unsigned + centred letterbox.
Implementations§
Source§impl InputSpec
impl InputSpec
Sourcepub fn channels(&self) -> Option<usize>
pub fn channels(&self) -> Option<usize>
Channel count of the model input, when the layout can be resolved.
With a dshape, it is the size of the single axis not named
batch, height or width. Without one, a rank-4 shape resolves
only when exactly one of axis 1 (NCHW) and axis 3 (NHWC) holds 1 to
4 channels.
use edgefirst_decoder::schema::InputSpec;
let nchw: InputSpec = serde_json::from_str(r#"{"shape": [1, 3, 512, 512]}"#).unwrap();
assert_eq!(nchw.channels(), Some(3));
let ambiguous: InputSpec = serde_json::from_str(r#"{"shape": [1, 3, 4, 3]}"#).unwrap();
assert_eq!(ambiguous.channels(), None);Trait Implementations§
Source§impl<'de> Deserialize<'de> for InputSpec
impl<'de> Deserialize<'de> for InputSpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl StructuralPartialEq for InputSpec
Auto Trait Implementations§
impl Freeze for InputSpec
impl RefUnwindSafe for InputSpec
impl Send for InputSpec
impl Sync for InputSpec
impl Unpin for InputSpec
impl UnsafeUnpin for InputSpec
impl UnwindSafe for InputSpec
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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