create_dl_layer_anchorsT_create_dl_layer_anchorsCreateDlLayerAnchorsCreateDlLayerAnchorscreate_dl_layer_anchors (Operator)

Name

create_dl_layer_anchorsT_create_dl_layer_anchorsCreateDlLayerAnchorsCreateDlLayerAnchorscreate_dl_layer_anchors — Erstellen eines Layer zur Generierung von Anchor-Boxes.

Signatur

create_dl_layer_anchors( : : DLLayerInput, DLLayerInputImage, LayerName, AspectRatios, NumSubscales, Angles, GenParamName, GenParamValue : DLLayerAnchors)

Herror T_create_dl_layer_anchors(const Htuple DLLayerInput, const Htuple DLLayerInputImage, const Htuple LayerName, const Htuple AspectRatios, const Htuple NumSubscales, const Htuple Angles, const Htuple GenParamName, const Htuple GenParamValue, Htuple* DLLayerAnchors)

void CreateDlLayerAnchors(const HTuple& DLLayerInput, const HTuple& DLLayerInputImage, const HTuple& LayerName, const HTuple& AspectRatios, const HTuple& NumSubscales, const HTuple& Angles, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* DLLayerAnchors)

HDlLayer HDlLayer::CreateDlLayerAnchors(const HDlLayer& DLLayerInputImage, const HString& LayerName, const HTuple& AspectRatios, Hlong NumSubscales, const HTuple& Angles, const HTuple& GenParamName, const HTuple& GenParamValue) const

HDlLayer HDlLayer::CreateDlLayerAnchors(const HDlLayer& DLLayerInputImage, const HString& LayerName, const HTuple& AspectRatios, Hlong NumSubscales, const HTuple& Angles, const HString& GenParamName, const HString& GenParamValue) const

HDlLayer HDlLayer::CreateDlLayerAnchors(const HDlLayer& DLLayerInputImage, const char* LayerName, const HTuple& AspectRatios, Hlong NumSubscales, const HTuple& Angles, const char* GenParamName, const char* GenParamValue) const

HDlLayer HDlLayer::CreateDlLayerAnchors(const HDlLayer& DLLayerInputImage, const wchar_t* LayerName, const HTuple& AspectRatios, Hlong NumSubscales, const HTuple& Angles, const wchar_t* GenParamName, const wchar_t* GenParamValue) const   ( Nur Windows)

static void HOperatorSet.CreateDlLayerAnchors(HTuple DLLayerInput, HTuple DLLayerInputImage, HTuple layerName, HTuple aspectRatios, HTuple numSubscales, HTuple angles, HTuple genParamName, HTuple genParamValue, out HTuple DLLayerAnchors)

HDlLayer HDlLayer.CreateDlLayerAnchors(HDlLayer DLLayerInputImage, string layerName, HTuple aspectRatios, int numSubscales, HTuple angles, HTuple genParamName, HTuple genParamValue)

HDlLayer HDlLayer.CreateDlLayerAnchors(HDlLayer DLLayerInputImage, string layerName, HTuple aspectRatios, int numSubscales, HTuple angles, string genParamName, string genParamValue)

def create_dl_layer_anchors(dllayer_input: HHandle, dllayer_input_image: HHandle, layer_name: str, aspect_ratios: Sequence[Union[float, int]], num_subscales: int, angles: Sequence[Union[float, int]], gen_param_name: MaybeSequence[str], gen_param_value: MaybeSequence[Union[int, float, str]]) -> HHandle

Beschreibung

Der Operator create_dl_layer_anchorscreate_dl_layer_anchorsCreateDlLayerAnchorsCreateDlLayerAnchorscreate_dl_layer_anchors erzeugt einen Layer zur Generierung von Anchor-Boxes, dessen Handle in DLLayerAnchorsDLLayerAnchorsDLLayerAnchorsDLLayerAnchorsdllayer_anchors zurückgegeben wird.

Der Parameter DLLayerInputDLLayerInputDLLayerInputDLLayerInputdllayer_input bestimmt den zuführenden Eingabelayer, der verwendet wird, um die Breite und Höhe des räumlichen Gitters zu bestimmen, auf dem die Anchors erzeugt werden. Dies kann zum Beispiel der letzte oder ein beliebiger zwischenliegender Merkmalslayer eines CNN sein. Bei der Verwendung von Anchors führt normalerweise derselbe Layer einen Klassifikations- und einen Box-Regressionszweig zu, welche dazu verwendet werden, die Klasse eines jeden Anchors zu bestimmen und seine Form zu verfeinern (siehe auch create_dl_layer_box_proposalscreate_dl_layer_box_proposalsCreateDlLayerBoxProposalsCreateDlLayerBoxProposalscreate_dl_layer_box_proposals und create_dl_layer_box_targetscreate_dl_layer_box_targetsCreateDlLayerBoxTargetsCreateDlLayerBoxTargetscreate_dl_layer_box_targets).

Der Parameter DLLayerInputImageDLLayerInputImageDLLayerInputImageDLLayerInputImagedllayer_input_image bestimmt den zuführenden Eingabelayer der verwendet wird, um den Skalierungsfaktor des Gitters und die Größe der Anchors zu bestimmen. In der Regel ist dies der Bildeingabelayer des Netzwerks. Wenn zum Beispiel die Breite und Höhe von DLLayerInputDLLayerInputDLLayerInputDLLayerInputdllayer_input halb so groß wie die Breite und Höhe von DLLayerInputImageDLLayerInputImageDLLayerInputImageDLLayerInputImagedllayer_input_image sind, werden das Gitter und die Größe des Anchors mit dem Faktor zwei skaliert. Das Verhältnis zwischen der Größe (Breite und Höhe) von DLLayerInputImageDLLayerInputImageDLLayerInputImageDLLayerInputImagedllayer_input_image und DLLayerInputDLLayerInputDLLayerInputDLLayerInputdllayer_input muss immer eine Potenz von zwei sein, zum Beispiel 1, 2, 4, 8, 16 und so weiter.

Der Parameter LayerNameLayerNameLayerNamelayerNamelayer_name legt einen individuellen Layernamen fest. Es ist zu beachten, dass beim Erstellen eines Modells mit create_dl_modelcreate_dl_modelCreateDlModelCreateDlModelcreate_dl_model jeder Layer des erstellten Netzes einen eindeutigen Namen haben muss.

Der Parameter AspectRatiosAspectRatiosAspectRatiosaspectRatiosaspect_ratios bestimmt die Seitenverhältnisse der Anchor-Boxes (Höhe zu Breite für den Typ 'rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1" und length1 zu length2 für den Instanztyp 'rectangle2'"rectangle2""rectangle2""rectangle2""rectangle2").

Der Parameter NumSubscalesNumSubscalesNumSubscalesnumSubscalesnum_subscales bestimmt die Anzahl der verschiedenen Skalierungen bei denen Anchor-Boxes für jedes Seitenverhältnis erzeugt werden. Zur Bestimmung der Anchor-Skalierungen wird die Grundskalierung der Anchor-Boxes, die über den generischen Parameter 'scale'"scale""scale""scale""scale" gegeben ist, mit jeder Subskalierung multipliziert. Die Subskalierungen werden wie folgt berechnet wobei .

Der Parameter AnglesAnglesAnglesanglesangles bestimmt die Orientierung der Anchor-Boxes für den Instanztyp 'rectangle2'"rectangle2""rectangle2""rectangle2""rectangle2". Die Werte müssen in Bogenmaß angegeben werden. Wenn AnglesAnglesAnglesanglesangles ein leeres Tupel ist, wird der Instanztyp implizit auf 'rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1" gesetzt, wenn nicht anders über den generischen Parameter 'instance_type'"instance_type""instance_type""instance_type""instance_type" angegeben. Für jeden Punkt im Anchor-Gitter und jede Kombination von Seitenverhältnis, Subskalierung und Winkel wird eine Anchor-Box erzeugt, die das Eingabebild gleichmäßig abdecken. Typischerweise ist der Ausgabelayer DLLayerAnchorsDLLayerAnchorsDLLayerAnchorsDLLayerAnchorsdllayer_anchors ein zuführender Eingabelayer für einen Box-Target- und einen Box-Proposal-Layer, um ein Detektions-Modell zu erstellen. Weitere Informationen zu Anchors und 'instance_type'"instance_type""instance_type""instance_type""instance_type" sind im Kapitel Deep Learning / Objektdetektion und Instanz-Segmentierung zu finden.

Die folgenden generischen Parameter GenParamNameGenParamNameGenParamNamegenParamNamegen_param_name und die entsprechenden Werte GenParamValueGenParamValueGenParamValuegenParamValuegen_param_value werden unterstützt:

'instance_type'"instance_type""instance_type""instance_type""instance_type":

Instanztyp der Anchors. Mögliche Werte:

  • 'rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1": achsenparallele Rechtecke.

  • 'rectangle2'"rectangle2""rectangle2""rectangle2""rectangle2": orientierte Rechtecke.

Default: 'rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1".

'is_inference_output'"is_inference_output""is_inference_output""is_inference_output""is_inference_output":

Bestimmt, ob apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelapply_dl_model die Ausgabe dieses Layers im Dictionary DLResultBatchDLResultBatchDLResultBatchDLResultBatchdlresult_batch zurückgibt, auch ohne den Layer in OutputsOutputsOutputsoutputsoutputs anzugeben ('true'"true""true""true""true"), oder nur falls er angegeben wird ('false'"false""false""false""false").

Default: 'false'"false""false""false""false"

'scale'"scale""scale""scale""scale":

Grundskalierung der Anchor-Boxes. Siehe die obige Beschreibung für weitere Informationen.

Default: 4.0

Bestimmte Parameter von Layern, die mit create_dl_layer_anchorscreate_dl_layer_anchorsCreateDlLayerAnchorsCreateDlLayerAnchorscreate_dl_layer_anchors erzeugt wurden, können mit weiteren Operatoren gesetzt und abgerufen werden. Die folgenden Tabellen geben einen Überblick, welche Parameter mit set_dl_model_layer_paramset_dl_model_layer_paramSetDlModelLayerParamSetDlModelLayerParamset_dl_model_layer_param gesetzt werden können und welche mit get_dl_model_layer_paramget_dl_model_layer_paramGetDlModelLayerParamGetDlModelLayerParamget_dl_model_layer_param oder get_dl_layer_paramget_dl_layer_paramGetDlLayerParamGetDlLayerParamget_dl_layer_param ausgelesen werden können. Es ist zu beachten, dass die Operatoren set_dl_model_layer_paramset_dl_model_layer_paramSetDlModelLayerParamSetDlModelLayerParamset_dl_model_layer_param und get_dl_model_layer_paramget_dl_model_layer_paramGetDlModelLayerParamGetDlModelLayerParamget_dl_model_layer_param ein Modell benötigen, das mit create_dl_modelcreate_dl_modelCreateDlModelCreateDlModelcreate_dl_model erzeugt wurde.

Layer-interne Parameter set get
'anchor_angles'"anchor_angles""anchor_angles""anchor_angles""anchor_angles" (AnglesAnglesAnglesanglesangles) x
'anchor_aspect_ratios'"anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios" (AspectRatiosAspectRatiosAspectRatiosaspectRatiosaspect_ratios) x
'anchor_num_subscales'"anchor_num_subscales""anchor_num_subscales""anchor_num_subscales""anchor_num_subscales" (NumSubscalesNumSubscalesNumSubscalesnumSubscalesnum_subscales) x
'input_layer'"input_layer""input_layer""input_layer""input_layer" (DLLayerInputDLLayerInputDLLayerInputDLLayerInputdllayer_input) x
'name'"name""name""name""name" (LayerNameLayerNameLayerNamelayerNamelayer_name) x x
'output_layer'"output_layer""output_layer""output_layer""output_layer" (DLLayerAnchorsDLLayerAnchorsDLLayerAnchorsDLLayerAnchorsdllayer_anchors) x
'shape'"shape""shape""shape""shape" x
'type'"type""type""type""type" x
Generische Layer-Parameter set get
'instance_type'"instance_type""instance_type""instance_type""instance_type" x
'is_inference_output'"is_inference_output""is_inference_output""is_inference_output""is_inference_output" x x
'num_trainable_params'"num_trainable_params""num_trainable_params""num_trainable_params""num_trainable_params" x
'scale'"scale""scale""scale""scale" x

Ausführungsinformationen

Parameter

DLLayerInputDLLayerInputDLLayerInputDLLayerInputdllayer_input (input_control)  dl_layer HDlLayer, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Zuführender Layer zur Ermittlung der Anchor-Gittergröße.

DLLayerInputImageDLLayerInputImageDLLayerInputImageDLLayerInputImagedllayer_input_image (input_control)  dl_layer HDlLayer, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Zuführender Layer zur Ermittlung der Gitterskalierung und Anchorgröße.

LayerNameLayerNameLayerNamelayerNamelayer_name (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Name des Ausgabelayers.

AspectRatiosAspectRatiosAspectRatiosaspectRatiosaspect_ratios (input_control)  number-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Anchor-Seitenverhältnisse.

Default: [0.5,1.0,2.0]

NumSubscalesNumSubscalesNumSubscalesnumSubscalesnum_subscales (input_control)  number HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Anzahl Anchor-Subskalierungen.

Default: 3

Restriktion: NumSubscales > 0

AnglesAnglesAnglesanglesangles (input_control)  number-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Anchor-Orientierungen.

Default: []

GenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (input_control)  attribute.name(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Namen der generischen Eingabeparameter.

Default: []

Werteliste: 'instance_type'"instance_type""instance_type""instance_type""instance_type", 'is_inference_output'"is_inference_output""is_inference_output""is_inference_output""is_inference_output", 'scale'"scale""scale""scale""scale"

GenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (input_control)  attribute.value(-array) HTupleMaybeSequence[Union[int, float, str]]HTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)

Werte der generischen Eingabeparameter.

Default: []

Wertevorschläge: 'rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1", 'rectangle2'"rectangle2""rectangle2""rectangle2""rectangle2", 'true'"true""true""true""true", 'false'"false""false""false""false"

DLLayerAnchorsDLLayerAnchorsDLLayerAnchorsDLLayerAnchorsdllayer_anchors (output_control)  dl_layer HDlLayer, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Anchors-Layer.

Beispiel (HDevelop)

* Minimal example for the usage of layers
*  - create_dl_layer_anchors
*  - create_dl_layer_box_proposals
*  - create_dl_layer_box_targets
* for creating a model to perform object detection.
*
* Define the input image layer.
create_dl_layer_input ('image', [224,224,3], [], [], DLLayerInputImage)
* Define the input ground truth box layers.
create_dl_layer_input ('bbox_row1', [1, 1, 10], ['allow_smaller_tuple'], \
                       ['true'], DLLayerInputRow1)
create_dl_layer_input ('bbox_row2', [1, 1, 10], ['allow_smaller_tuple'], \
                       ['true'], DLLayerInputRow2)
create_dl_layer_input ('bbox_col1', [1, 1, 10], ['allow_smaller_tuple'], \
                       ['true'], DLLayerInputCol1)
create_dl_layer_input ('bbox_col2', [1, 1, 10], ['allow_smaller_tuple'], \
                       ['true'], DLLayerInputCol2)
create_dl_layer_input ('bbox_label_id', [1, 1, 10], \
                       ['allow_smaller_tuple'], ['true'], \
                       DLLayerInputLabelID)
* Concatenate all box coordinates.
create_dl_layer_concat ([DLLayerInputRow1, DLLayerInputCol1, \
                        DLLayerInputRow2, DLLayerInputCol2, \
                        DLLayerInputLabelID], 'gt_boxes', \
                        'height', [], [], DLLayerGTBoxes)
*
* Perform some operations on the input image to extract features.
create_dl_layer_convolution (DLLayerInputImage, 'conv', 3, 1, 1, 32, 1, \
                             'half_kernel_size', 'relu', [], [], \
                             DLLayerConvolution)
create_dl_layer_pooling (DLLayerConvolution, 'pool', 2, 2, 'none', \
                         'maximum', [], [], DLLayerPooling)
*
* Create the anchor boxes.
create_dl_layer_anchors (DLLayerPooling, DLLayerInputImage, 'anchor', \
                         [0.5,1.0,2.0], 3, [], [], [], DLLayerAnchors)
*
* Generate the class and box regression targets for the anchors
* according to the ground truth boxes.
Targets := ['cls_target', 'box_target']
NumClasses := 3
create_dl_layer_box_targets (DLLayerAnchors, DLLayerGTBoxes, [], \
                             Targets, 'anchors', Targets, NumClasses, \
                             [], [], DLLayerClassTarget, _, \
                             DLLayerBoxTarget, _, _, _, _)
*
* For this example, we treat the targets as predictions and
* apply them directly to the anchors to get the ground truth
* boxes as output.
create_dl_layer_box_proposals (DLLayerClassTarget, DLLayerBoxTarget, \
                               DLLayerAnchors, DLLayerInputImage, \
                               'box_proposals', [], [], \
                               DLLayerBoxProposals)
*
* Create the model.
OutputLayers := DLLayerBoxProposals
create_dl_model (OutputLayers, DLModelHandle)
*
* Prepare the model for using it as a detection model.
set_dl_model_param (DLModelHandle, 'type', 'detection')
ClassIDs := [0,1,2]
set_dl_model_param (DLModelHandle, 'class_ids', ClassIDs)
*
* Create a sample.
create_dict (DLSample)
gen_image_const (Image, 'real', 224, 224)
gen_circle (Circle, [50., 100.], [50., 120.], [20., 30.])
overpaint_region (Image, Circle, 255, 'fill')
compose3 (Image, Image, Image, Image)
set_dict_object (Image, DLSample, 'image')
smallest_rectangle1 (Circle, Row1, Col1, Row2, Col2)
set_dict_tuple (DLSample, 'bbox_row1', Row1)
set_dict_tuple (DLSample, 'bbox_row2', Row2)
set_dict_tuple (DLSample, 'bbox_col1', Col1)
set_dict_tuple (DLSample, 'bbox_col2', Col2)
set_dict_tuple (DLSample, 'bbox_label_id', [1,2])
*
* Apply the detection model.
apply_dl_model (DLModelHandle, DLSample, [], DLResult)
*
* Display ground truth and result.
create_dict (DLDatasetInfo)
set_dict_tuple (DLDatasetInfo, 'class_ids', ClassIDs)
set_dict_tuple (DLDatasetInfo, 'class_names', \
                ['class_0', 'class_1', 'class_2'])
create_dict (WindowHandleDict)
dev_display_dl_data (DLSample, DLResult, DLDatasetInfo, \
                     ['image', 'bbox_ground_truth', 'bbox_result'], \
                     [], WindowHandleDict)
stop ()
dev_close_window_dict (WindowHandleDict)

Nachfolger

create_dl_layer_box_targetscreate_dl_layer_box_targetsCreateDlLayerBoxTargetsCreateDlLayerBoxTargetscreate_dl_layer_box_targets, create_dl_layer_box_proposalscreate_dl_layer_box_proposalsCreateDlLayerBoxProposalsCreateDlLayerBoxProposalscreate_dl_layer_box_proposals

Modul

Deep Learning Professional