create_dl_layer_grid_sample — Erstellen eines Grid-Sample-Layers.
create_dl_layer_grid_sample( : : DLLayerInput, DLLayerGrid, LayerName, GenParamName, GenParamValue : DLLayerGridSample)
Der Operator create_dl_layer_grid_sample erstellt einen
Grid-Sample-Layer, der eine räumliche Transformation auf ein Eingabebild oder
eine Feature-Map anwendet. Das Handle des erstellten Grid-Sample-Layers wird
in DLLayerGridSample zurückgegeben.
Ein Grid-Sample-Layer verformt die Eingabe DLLayerInput basierend
auf einem Sampling-Gitter DLLayerGrid. Dieses Gitter muss räumlich
normalisierte Eingabe-Pixelpositionen angeben, welche dann zur
Interpolation der Ausgabewerte verwendet werden. Pixelpositionen innerhalb des
Eingabebildes oder der Feature-Map müssen Werte im Bereich
haben. Die Werte ,
müssen dabei dem obersten linken Pixel entsprechen, während
, das unterste rechte Pixel beschreibt. Die
Extremwerte beziehen sich jeweils auf die Mittelpunkte der Eckpixel. Der
Grid-Sample-Layer setzt intern 'align_corners' auf 1 und definiert
damit die Mittelpunkte der Pixel als Referenzpunkte des Gitters. Das
Sampling-Gitter DLLayerGrid kann mit create_dl_layer_affine_grid
generiert werden.
Der Grid-Sample-Layer verwendet bilineare Interpolation zur Berechnung der Ausgabewerte, wodurch fließende Übergänge zwischen den Pixelwerten sichergestellt werden. Für Sampling-Gitter-Positionen außerhalb des Eingabebildes oder der Feature-Map werden die entsprechenden Werte auf 0 gesetzt. Dabei hat die Ausgabe des Grid-Sample-Layers hat die gleichen räumlichen Dimensionen wie das Eingabe-Gitter.
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 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_grid_sample
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 Parameters | set |
get |
|---|---|---|
'input_layer' (DLLayerInput, DLLayerGrid) |
x
|
|
'name' (LayerName) |
x |
x
|
'output_layer' (DLLayerGridSample) |
x
|
|
| 'shape' | x
|
|
| 'type' | x
|
| Generic Layer Parameters | set |
get |
|---|---|---|
| 'is_inference_output' | x |
x
|
| 'num_trainable_params' | x
|
DLLayerInput (input_control) dl_layer → (handle)
Eingabelayer für Bild oder Feature Map.
DLLayerGrid (input_control) dl_layer → (handle)
Eingabelayer, welches das Sampling-Gitter definiert.
LayerName (input_control) string → (string)
Name des Ausgabelayers.
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'
DLLayerGridSample (output_control) dl_layer → (handle)
GridSample-Layer.
read_image (Image, 'printer_chip/printer_chip_01')
convert_image_type (Image, Image, 'real')
get_image_size (Image, Width, Height)
* Create input layer for the image to be transformed.
create_dl_layer_input ('image', [Width,Height,1], [], [], DLLayerInputImage)
*
* Create an affine grid layer and define the size of its output grid with (Width/2, Height/2), which later
* determines the output image size.
create_dl_layer_input ('transformation', [3,2,1], [], [], DLLayerInputTransformation)
create_dl_layer_affine_grid (DLLayerInputTransformation, 'affine_grid', Width/2, Height/2, [], [], DLLayerAffineGrid)
*
* Create an affine transformation which represents a translation
* to the right by half the image width.
* As the affine grid layer uses normalized pixel positions in
* the range of [-1,1] the translation value must be normalized
* as well. Hence, translating by half the image width to the right
* corresponds to a translation value of -1 in x-direction.
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_translate (HomMat2DIdentity, -1, 0, HomMat2DTranslate)
*
* Create grid sample layer with the affine grid as input
create_dl_layer_grid_sample (DLLayerInputImage, DLLayerAffineGrid, 'output', [], [], DLLayerGridSample)
*
* Create and apply dl model
create_dl_model (DLLayerGridSample, DLModelHandle)
DLSample := dict{image: Image, transformation: HomMat2DTranslate}
apply_dl_model (DLModelHandle, DLSample, [], DLResultBatch)
get_dict_object (ImageTranslated, DLResultBatch, 'output')
Deep Learning Professional