Generates detected boxes with scores and classes for one-stage detector.
tfm.vision.layers.MultilevelDetectionGenerator(
apply_nms: bool = True,
pre_nms_top_k: int = 5000,
pre_nms_score_threshold: float = 0.05,
nms_iou_threshold: float = 0.5,
max_num_detections: int = 100,
nms_version: str = 'v1',
use_cpu_nms: bool = False,
soft_nms_sigma: Optional[float] = None,
tflite_post_processing_config: Optional[Dict[str, Any]] = None,
pre_nms_top_k_sharding_block: Optional[int] = None,
nms_v3_refinements: Optional[int] = None,
return_decoded: Optional[bool] = None,
use_class_agnostic_nms: Optional[bool] = None,
box_coder_weights: Optional[list[float]] = None,
**kwargs
)
Args |
apply_nms
|
A bool of whether or not apply non maximum suppression. If
False, the decoded boxes and their scores are returned.
|
pre_nms_top_k
|
An int of the number of top scores proposals to be kept
before applying NMS.
|
pre_nms_score_threshold
|
A float of the score threshold to apply before
applying NMS. Proposals whose scores are below this threshold are thrown
away.
|
nms_iou_threshold
|
A float in [0, 1], the NMS IoU threshold.
|
max_num_detections
|
An int of the final number of total detections to
generate.
|
nms_version
|
A string of batched , v1 or v2 specifies NMS version
|
use_cpu_nms
|
A bool of whether or not enforce NMS to run on CPU.
|
soft_nms_sigma
|
A float representing the sigma parameter for Soft NMS.
When soft_nms_sigma=0.0, we fall back to standard NMS.
|
tflite_post_processing_config
|
An optional dictionary containing
post-processing parameters used for TFLite custom NMS op.
|
pre_nms_top_k_sharding_block
|
For v3 (edge tpu friendly) NMS, avoids
creating long axis for pre_nms_top_k. Will do top_k in shards of size
[num_classes, pre_nms_top_k_sharding_block * boxes_per_location]
|
nms_v3_refinements
|
For v3 (edge tpu friendly) NMS, sets how close result
should be to standard NMS. When None, 2 is used. Here is some
experimental deviations for different refinement values:
if == 0, AP is reduced 1.0%, AR is reduced 5% on COCO
if == 1, AP is reduced 0.2%, AR is reduced 2% on COCO
if == 2, AP is reduced <0.1%, AR is reduced <1% on COCO
|
return_decoded
|
A bool of whether to return decoded boxes before NMS
regardless of whether apply_nms is True or not.
|
use_class_agnostic_nms
|
A bool of whether non max suppression is
operated on all the boxes using max scores across all classes.
|
box_coder_weights
|
An optional list of 4 positive floats to scale y, x,
h, and w when encoding box coordinates. If set to None, does not perform
scaling. For Faster RCNN, the open-source implementation recommends
using [10.0, 10.0, 5.0, 5.0].
|
**kwargs
|
Additional keyword arguments passed to Layer.
|
Raises |
ValueError
|
If use_class_agnostic_nms is required by nms_version is
not specified as v2 .
|
Methods
call
call(
inputs, *args, **kwargs
)
This is where the layer's logic lives.
The call()
method may not create state (except in its first
invocation, wrapping the creation of variables or other resources in
tf.init_scope()
). It is recommended to create state, including
tf.Variable
instances and nested Layer
instances,
in __init__()
, or in the build()
method that is
called automatically before call()
executes for the first time.
Args |
inputs
|
Input tensor, or dict/list/tuple of input tensors.
The first positional inputs argument is subject to special rules:
inputs must be explicitly passed. A layer cannot have zero
arguments, and inputs cannot be provided via the default value
of a keyword argument.
- NumPy array or Python scalar values in
inputs get cast as
tensors.
- Keras mask metadata is only collected from
inputs .
- Layers are built (
build(input_shape) method)
using shape info from inputs only.
input_spec compatibility is only checked against inputs .
- Mixed precision input casting is only applied to
inputs .
If a layer has tensor arguments in *args or **kwargs , their
casting behavior in mixed precision should be handled manually.
- The SavedModel input specification is generated using
inputs
only.
- Integration with various ecosystem packages like TFMOT, TFLite,
TF.js, etc is only supported for
inputs and not for tensors in
positional and keyword arguments.
|
*args
|
Additional positional arguments. May contain tensors, although
this is not recommended, for the reasons above.
|
**kwargs
|
Additional keyword arguments. May contain tensors, although
this is not recommended, for the reasons above.
The following optional keyword arguments are reserved:
training : Boolean scalar tensor of Python boolean indicating
whether the call is meant for training or inference.
mask : Boolean input mask. If the layer's call() method takes a
mask argument, its default value will be set to the mask
generated for inputs by the previous layer (if input did come
from a layer that generated a corresponding mask, i.e. if it came
from a Keras layer with masking support).
|
Returns |
A tensor or list/tuple of tensors.
|