Skip to main content

INMSLayer

Struct INMSLayer 

Source
pub struct INMSLayer { /* private fields */ }
Expand description

! ! \class INMSLayer ! ! \brief A non-maximum suppression layer in a network definition. ! ! The NMS algorithm iterates through a set of bounding boxes and their confidence scores, in decreasing ! order of score. Boxes are selected if their score is above a given threshold, and their ! intersection-over-union (IoU) with previously selected boxes is less than or equal to a given threshold. ! This layer implements NMS per batch item and per class. ! ! Per batch item, boxes are initially sorted by their scores without regard to class. Only boxes up to a maximum of ! the TopK limit are considered for selection (per batch). During selection, only overlapping boxes of the same class ! are compared, so that overlapping boxes of different classes do not suppress each other. ! ! For each batch item, the ordering of candidate bounding boxes with the same score is unspecified, but the ordering ! will be consistent across different runs for the same inputs. ! ! The layer has the following inputs, in order of input index: ! ! * Boxes contains the input bounding boxes. It is a linear tensor of type kFLOAT or kHALF. It has ! shape [batchSize, numInputBoundingBoxes, numClasses, 4] if the boxes are per class, or ! [batchSize, numInputBoundingBoxes, 4] if the same boxes are to be used for each class. ! * Scores contains the per-box scores. It is a linear tensor of the same type as Boxes. It has shape ! [batchSize, numInputBoundingBoxes, numClasses]. ! * MaxOutputBoxesPerClass is the maximum number of output boxes per batch item per class. ! It is a scalar (0D tensor) of type kINT32. ! * IoUThreshold is the maximum IoU for selected boxes. It is a scalar (0D tensor) of type kFLOAT in the range ! [0.0f, 1.0f]. It is an optional input with default 0.0f. ! * ScoreThreshold is the value that a box score must exceed in order to be selected. It is a scalar (0D tensor) of ! type kFLOAT. It is an optional ! input with default 0.0f. ! ! The layer has the following outputs, in order of output index: ! ! * SelectedIndices contains the indices of the selected boxes. It is a linear tensor of type kINT32 or kINT64. It has ! shape ! [NumOutputBoxes, 3]. Each row contains a (batchIndex, classIndex, boxIndex) tuple. ! The output boxes are sorted in order of increasing batchIndex and then in order of decreasing score within each ! batchIndex. For each batchIndex, the ordering of output boxes with the same score is unspecified. If ! MaxOutputBoxesPerClass is a constant input, the maximum number of output boxes is batchSize * numClasses * ! min(numInputBoundingBoxes, MaxOutputBoxesPerClass). Otherwise, the maximum number of output boxes is batchSize * ! numClasses * numInputBoundingBoxes. The maximum number of output boxes is used to determine the upper-bound on ! allocated memory for this output tensor. ! * NumOutputBoxes is the number of output boxes in SelectedIndices. It is a scalar (0D tensor) of type kINT32. ! ! \warning There is a hardware-dependent limit K such that only the K highest scoring boxes in each batch item ! will be considered for selection. The value of K is 2000 for SM 5.3 and 6.2 devices, and 5000 otherwise. ! ! \warning Do not inherit from this class, as doing so will break forward-compatibility of the API and ABI. !

Trait Implementations§

Source§

impl ExternType for INMSLayer

Source§

type Id = (n, v, i, n, f, e, r, _1, (), I, N, M, S, L, a, y, e, r)

A type-level representation of the type’s C++ namespace and type name. Read more
Source§

type Kind = Opaque

Source§

impl MakeCppStorage for INMSLayer

Source§

unsafe fn allocate_uninitialized_cpp_storage() -> *mut INMSLayer

Allocates heap space for this type in C++ and return a pointer to that space, but do not initialize that space (i.e. do not yet call a constructor). Read more
Source§

unsafe fn free_uninitialized_cpp_storage(arg0: *mut INMSLayer)

Frees a C++ allocation which has not yet had a constructor called. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.