create_dl_layer_affine_grid — Erstellen eines Affine-Grid-Layers.
create_dl_layer_affine_grid( : : DLLayerInput, LayerName, Width, Height, GenParamName, GenParamValue : DLLayerAffineGrid)
Der Operator create_dl_layer_affine_grid erzeugt einen Affine-Grid-Layer,
der ein 2D-Gitter zurückgibt, welches durch eine affine Transformation bestimmt
wird. Das Handle des Affine-Grid-Layers wird in DLLayerAffineGrid
zurückgegeben. Affine Gitter werden üblicherweise als Abtastgitter an
Grid-Sample-Layer übergeben, um affine Transformationen auf Bilder oder
Merkmalskarten anzuwenden, siehe create_dl_layer_grid_sample.
Der Parameter DLLayerInput bestimmt den zuführenden Eingabelayer
und erwartet das Layer-Handle als Wert. Die Eingabe besteht aus einem Batch
von affinen 2D-Transformationsmatrizen (Höhe = 2, Breite = 3). Diese werden im
Format WHC übergeben, welches für Breite (Width), Höhe (Height) und Kanal
(Channels) steht. Der Kanal muss dabei immer 1 sein. Für weitere
Informationen zu affinen Transformationen siehe
affine_trans_image_size.
Der Parameter LayerName legt einen individuellen Layernamen fest.
Es ist zu beachten, dass beim Erstellen eines Modells mit create_dl_model
jeder Layer des erstellten Netzes einen eindeutigen Namen haben muss.
Die Parameter Width und Height definieren die Ausgabegröße.
Für einen Batch von N affinen Transformationsmatrizen, erzeugt der
Affine-Grid-Layer einen Batch von N Gittern der Dimension
(Height, Width, 2). Diese werden im Format CHW
(Kanal (Channels), Höhe (Height), Breite (Width)) zurückgegeben.
Durch eine affine Transformationsmatrix
wird ein Punkt eines Bildes der Größe (Width,
Height) auf den Punkt abgebildet gemäß:
Dabei bezieht sich auf die Spaltenkoordinate und auf die Zeilenkoordinate. Für eine affine Transformationsmatrix eines Eingabe-Batches () entsprechen die ausgegebenen Tensorwerte und den transformierten Spalten- und Zeilenwerten und des Punktes .
Die Gitterpositionen werden mit den Ausgabedimensionen
Width und Height normiert, um Werte im Bereich von
zu erhalten. Dabei entsprechen die Werte ,
dem oberen linken Pixel und ,
beschreiben das untere rechte Pixel. Die Extrema beziehen sich auf
die Mittelpunkte der Eckpixel.
Die folgenden generischen Parameter GenParamName und die entsprechenden
Werte GenParamValue werden unterstützt:
Bestimmt, ob apply_dl_model die Ausgabe dieses Layers im Dictionary
DLResultBatch zurückgibt, auch ohne den Layer in Outputs
anzugeben ('true'), oder nur falls er angegeben wird
('false').
Werteliste: 'true', 'false'
Default: 'false'
Bestimmte Parameter von Layern, die mit create_dl_layer_affine_grid
erzeugt wurden, können mit weiteren Operatoren gesetzt und abgerufen werden.
Die folgenden Tabellen geben einen Überblick, welche Parameter mit
set_dl_model_layer_param gesetzt werden können und welche mit
get_dl_model_layer_param oder get_dl_layer_param ausgelesen
werden können. Es ist zu beachten, dass die Operatoren
set_dl_model_layer_param und get_dl_model_layer_param ein
Modell benötigen, das mit create_dl_model erzeugt wurde.
| Layer Parameter | set |
get |
|---|---|---|
'input_layer' (DLLayerInput) |
x
|
|
'name' (LayerName) |
x |
x
|
'grid_size' (Width, Height) |
x
|
|
'output_layer' (DLLayerAffineGrid) |
x
|
|
| 'shape' | x
|
|
| 'type' | x
|
| Generische Layer Parameter | set |
get |
|---|---|---|
| 'is_inference_output' | x |
x
|
| 'num_trainable_params' | x
|
DLLayerInput (input_control) dl_layer → (handle)
Eingabelayer für einen Batch von affinen Transformationsmatrizen der Form [3,2,1].
LayerName (input_control) string → (string)
Name des Ausgabelayers.
Width (input_control) number → (integer)
Breite des Gitters.
Default: 256
Height (input_control) number → (integer)
Höhe des Gitters.
Default: 256
GenParamName (input_control) attribute.name(-array) → (string)
Namen der generischen Eingabeparameter.
Default: []
Werteliste: 'is_inference_output'
GenParamValue (input_control) attribute.value(-array) → (string / integer / real)
Werte der generischen Eingabeparameter.
Default: []
Wertevorschläge: 'true', 'false'
DLLayerAffineGrid (output_control) dl_layer → (handle)
Affine-Grid-Layer.
* Create affine grid layer for images of size (3,5).
create_dl_layer_input ('input', [3,2,1], [], [], DLLayerInput)
create_dl_layer_affine_grid (DLLayerInput, 'affine_grid', 5, 3, ['is_inference_output'], ['true'], DLLayerAffineGrid)
*
* Create an affine transformation which represents a translation
* to the right by one pixel.
* As the affine grid layer uses normalized pixel positions in
* the range of [-1,1] the translation value must be normalized
* as well. For Width = 5 the normalized column values are
* [-1, -0.5, 0.0, 0.5, 1.0]. Hence, translating by one pixel
* to the right corresponds to a translation value of 0.5 in
* x-direction.
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_translate (HomMat2DIdentity, 0.5, 0, HomMat2DTranslate)
*
* For better visualization add permutation layer to get an
* output image of size (3,5) where the first channel describes
* the transformed (normalized) column coordinates and the second
* channel describes the transformed (normalized) row coordinates.
create_dl_layer_permutation (DLLayerAffineGrid, 'permute', ['height','depth','width','batch'], [], [], DLLayerPermutation)
*
* Create and apply dl model
create_dl_model (DLLayerPermutation, DLModelHandle)
DLSample := dict{input: HomMat2DTranslate}
apply_dl_model (DLModelHandle, DLSample, [], DLResultBatch)
create_dl_layer_grid_sample,
create_dl_layer_permutation
Deep Learning Professional