Die Parameter können das ganze Modell betreffen oder nur spezifische
Komponenten.
Die folgende Tabelle gibt einen Überblick, welche Parameter gesetzt und welche
zurückgegeben werden können sowie für welche Modellkomponente sie zutreffen.
Es gilt zu beachten, dass eine Einheit auch für eine einzelne Komponente
neu gesetzt werden kann. In diesem Fall wird nur der möglicherweise
verbliebene Teil des Modells (z.B. eine verbleibende Komponente)
auf der Einheit dieses Handles ausgeführt.
Default:
Handle der Standard-Einheit, d.h. die GPU mit Index
0 in der Liste, die mit get_systemget_systemGetSystemGetSystemget_system und
'cuda_devices'"cuda_devices""cuda_devices""cuda_devices""cuda_devices" erhalten wird.
Falls keine Einheit vorhanden ist, ein leeres Tupel.
Dieser Parameter setzt die Hardware Einheit auf welcher die
Lokalisierungskomponente des Deep OCR-Modells ausgeführt wird.
Siehe 'device'"device""device""device""device" für weitere Erklärungen.
Default:
Der selbe Wert wie für 'device'"device""device""device""device".
Tupel mit den Bilddimensionen ('detection_image_width'"detection_image_width""detection_image_width""detection_image_width""detection_image_width",
'detection_image_height'"detection_image_height""detection_image_height""detection_image_height""detection_image_height", Anzahl Kanäle), welche die
Lokalisierungskomponente verarbeitet.
Das Eingabebild wird Seitenverhältnis getreu in
'detection_image_dimensions'"detection_image_dimensions""detection_image_dimensions""detection_image_dimensions""detection_image_dimensions" eingepasst. Falls
notwendig, wird das skalierte Bild mit Grauwerten 0
aufgefüllt. Daher kann das Ändern der Parameter
'detection_image_height'"detection_image_height""detection_image_height""detection_image_height""detection_image_height" bzw.
'detection_image_width'"detection_image_width""detection_image_width""detection_image_width""detection_image_width" die Ergebnisse beeinflussen.
Höhe des Bildes, welche die Lokalisierungskomponente verarbeitet.
Dies bedeutet, dass das Netzwerk die Eingabebilder Seitenverhältnis
getreu bis maximal auf diese Höhe skaliert bevor es das Bild verarbeitet.
Dadurch kann diese Größe die Ergebnisse beeinflussen.
Die Modellarchitektur verlangt, dass die Höhe ein Vielfaches von 32 ist.
Ist dies nicht der Fall, wird die Höhe auf das nächstgrößere ganzzahlige
Vielfache von 32 gerundet.
Tupel mit der Bildgröße ('detection_image_width'"detection_image_width""detection_image_width""detection_image_width""detection_image_width",
'detection_image_height'"detection_image_height""detection_image_height""detection_image_height""detection_image_height"), welche die
Lokalisierungskomponente verarbeitet.
Breite des Bildes, welche die Lokalisierungskomponente verarbeitet.
Dies bedeutet, dass das Netzwerk die Eingabebilder Seitenverhältnis
getreu bis maximal auf diese Breite skaliert bevor es das Bild verarbeitet.
Dadurch kann diese Größe die Ergebnisse beeinflussen.
Die Modellarchitektur verlangt, dass die Breite ein Vielfaches von 32
ist. Ist dies nicht der Fall, wird die Breite auf das nächstgrößere
ganzzahlige Vielfache von 32 gerundet.
Der Parameter 'detection_min_character_score'"detection_min_character_score""detection_min_character_score""detection_min_character_score""detection_min_character_score" gibt den unteren
Schwellenwert an, der für die Zeichenbewertung verwendet wird, um die
Abmessungen der Zeichen zu schätzen.
Durch Anpassen von 'detection_min_character_score'"detection_min_character_score""detection_min_character_score""detection_min_character_score""detection_min_character_score" können
vorgeschlagene Instanzen aufgespalten, beziehungsweise benachbarte
Instanzen vereint werden.
Der Parameter 'detection_min_link_score'"detection_min_link_score""detection_min_link_score""detection_min_link_score""detection_min_link_score" definiert die minimale
Verknüpfungsbewertung, die zwischen zwei lokalisierten Zeichen gefordert
ist, um diese Zeichen als zusammenhängendes Wort zu erkennen.
Der Parameter 'detection_min_word_area'"detection_min_word_area""detection_min_word_area""detection_min_word_area""detection_min_word_area" definiert die
Mindestgröße, die ein lokalisiertes Wort haben muss, um vorgeschlagen zu
werden.
Über diesen Parameter können zu kleine Vorschläge gefiltert werden.
Der Parameter 'detection_min_word_score'"detection_min_word_score""detection_min_word_score""detection_min_word_score""detection_min_word_score" definiert die minimale
Bewertung, die eine lokalisierte Instanz enthalten muss, um als Wort
vorgeschlagen zu werden. Über diesen Parameter können unsichere Worte
herausgefiltert werden.
Der Operator get_deep_ocr_paramget_deep_ocr_paramGetDeepOcrParamGetDeepOcrParamget_deep_ocr_param gibt das Handle der Deep
OCR-Modellkomponente zur Lokalisierung der Worte zurück.
Mit set_deep_ocr_paramset_deep_ocr_paramSetDeepOcrParamSetDeepOcrParamset_deep_ocr_param kann ein Handle, ein Dateiname
oder ein spezieller String übergeben werden.
'default'"default""default""default""default" lädt die vortrainierte
Lokalisierungskomponente 'pretrained_deep_ocr_detection.hdl'"pretrained_deep_ocr_detection.hdl""pretrained_deep_ocr_detection.hdl""pretrained_deep_ocr_detection.hdl""pretrained_deep_ocr_detection.hdl".
'compact'"compact""compact""compact""compact" lädt die kompakte
Lokalisierungskomponente 'pretrained_deep_ocr_detection_compact.hdl'"pretrained_deep_ocr_detection_compact.hdl""pretrained_deep_ocr_detection_compact.hdl""pretrained_deep_ocr_detection_compact.hdl""pretrained_deep_ocr_detection_compact.hdl",
die eine schnellere Inferenz bei reduzierter Genauigkeit im Vergleich zur
Standardkomponente bietet.
Jeder andere String wird als Modell-Dateiname interpretiert und intern
mit einer Batch-Größe von 1 geladen.
Es ist zu beachten, dass das Setzen der Lokalisierungskomponente auch eine
Änderung anderer modellspezifischer Parameter mit sich bringen kann.
Dieser Parameter erlaubt es, die Orientierung der vorhergesagten Worte im
Voraus festzulegen. Diese Festlegung kann wieder rückgängig gemacht
werden, indem 'detection_orientation'"detection_orientation""detection_orientation""detection_orientation""detection_orientation" auf 'auto'"auto""auto""auto""auto"
gesetzt wird. Dann wird für die Orientierung der Worte wieder die
Vorhersage des Modells benutzt.
Auf Grundlage der geschätzten Orientierungen der lokalisierten Worte
werden die gefundenen Worte zeilenweise sortiert. Wird der Parameter
'detection_sort_by_line'"detection_sort_by_line""detection_sort_by_line""detection_sort_by_line""detection_sort_by_line" auf 'false'"false""false""false""false" gesetzt, werden
die Ergebnisse nicht sortiert.
Das Eingabebild wird automatisch in überlappende Kacheln der Größe
'detection_image_size'"detection_image_size""detection_image_size""detection_image_size""detection_image_size" aufgeteilt, welche separat von der
Lokalisierungskomponente verarbeitet werden.
Dies ermöglicht das Verarbeiten von Eingabebildern, welche wesentlich
größer sind als die eigentliche Bildgröße
'detection_image_size'"detection_image_size""detection_image_size""detection_image_size""detection_image_size", ohne dass das Eingabebild gezoomt
werden muss.
Entsprechend wird für 'detection_tiling'"detection_tiling""detection_tiling""detection_tiling""detection_tiling" = 'true'"true""true""true""true" das
Eingabebild nicht mehr gezoomt bevor es verarbeitet wird.
Dieser Parameter definiert wie groß die Überlappung benachbarter
Kacheln ist, falls Eingabebilder aufgeteilt werden
(siehe 'detection_tiling'"detection_tiling""detection_tiling""detection_tiling""detection_tiling"). Die Größe der Überlappung wird
in Pixeln angegeben.
Dieser Parameter legt fest, ob eine Wortausrichtung vor der Erkennung
des Textes durchgeführt wird. Die Aktivierung dieser Funktion
('true'"true""true""true""true") verbessert die Erkennungsrate für ungenau
ausgeschnittene Wörter. Daher kann sie verwendet werden, wenn die
Position des Textes im Bild nur ungefähr bekannt ist.
Der Parameter 'recognition_alignment'"recognition_alignment""recognition_alignment""recognition_alignment""recognition_alignment" kann nur auf
'true'"true""true""true""true" gesetzt werden, wenn die Erkennungskomponente
Funktionalität zur Wortausrichtung enthält. Um zu überprüfen, ob das
Modell die Ausrichtung unterstützt, kann der Parameter
'recognition_alignment_available'"recognition_alignment_available""recognition_alignment_available""recognition_alignment_available""recognition_alignment_available" verwendet werden.
Im Gegensatz zur Erkennung von eng zugeschnittenen Wörtern, erfordert
die Erkennung von ausgerichteten Wörtern ein Training mit Bildern,
die echte Hintergründe um die Wörter herum enthalten. Auf diese Weise
lernt das Modell, Hintergrundinformationen zu unterdrücken, die nach der
Ausrichtung von ungenauen Wortausschnitten vorhanden sein können,
und verhindert so Fehllesungen.
Dieser Parameter gibt an, ob die Erkennungskomponente Funktionalität
zur Wortausrichtung enthält. Wenn 'true'"true""true""true""true" zurückgegeben
wird, bedeutet das, dass die Wortausrichtung mit dem Parameter
'recognition_alignment'"recognition_alignment""recognition_alignment""recognition_alignment""recognition_alignment" aktiviert werden kann.
Der Zeichensatz, welchen das Modell erkennen kann.
Dieser Zeichensatz enthält alle Zeichen die kein Mapping auf das
erste Zeichen des internen Alphabets haben (siehe Parameter
'recognition_alphabet_mapping'"recognition_alphabet_mapping""recognition_alphabet_mapping""recognition_alphabet_mapping""recognition_alphabet_mapping"
und 'recognition_alphabet_internal'"recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal")).
Das Alphabet kann bei Bedarf geändert oder erweitert werden. Wird das
Alphabet über 'recognition_alphabet'"recognition_alphabet""recognition_alphabet""recognition_alphabet""recognition_alphabet" geändert, so werden das
interne Alphabet und dessen Mapping so geändert, dass, falls möglich,
die Länge des internen Alphabets gleich bleibt.
Es wird empfohlen das Modell mit anwendungsspezifischen Daten
nachzutrainieren wenn das Alphabet geändert wird (siehe auch das
HDevelop Beispielprogramm
deep_ocr_recognition_training_workflow.hdev). Für zuvor
unbekannte Zeichen werden mehr Trainingsdaten benötigt.
Es ist zu beachten, dass, falls sich die Länge des internen
Alphabets ändert, die letzten Modell-Layer zufällig initialisiert werden
müssen und dadurch zufällige Strings als Ausgabe resultieren
(siehe 'recognition_alphabet_internal'"recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal"). In diesem Fall ist
es zwingend notwendig das Modell nachzutrainieren.
Der vollständige Zeichensatz mit dem die Deep OCR
Erkennungskomponente trainiert wurde.
Das erste Zeichen des internen Alphabets hat eine Sonderstellung.
Im vortrainierten Modell ist es als leeres Braillezeichen (U+2800)
spezifiziert, ist dabei aber nicht mit dem Leerzeichen
zu verwechseln.
Dieses leeres Braillezeichen wird nie in einem Wort zurückgegeben,
kann dafür aber als Kandidat für Zeichen zurückgegeben werden.
Das leeres Braillezeichen ist notwendig und muss auch bei einer
Änderung des internen Alphabets das erste Zeichen des Alphabets bleiben.
Das leeres Braillezeichen wird automatisch zum Zeichensatz hinzugefügt
falls das Alphabet mit 'recognition_alphabet'"recognition_alphabet""recognition_alphabet""recognition_alphabet""recognition_alphabet" geändert wird.
Die Länge dieses Tupels entspricht der Tiefe des letzten
Faltungs-Layers des Modells. Ändert sich die Länge, dann müssen
die Größen des letzten Faltungslayers und aller folgenden Layer
angepasst und möglicherweise zufällig reinitialisiert werden.
Nach einer entsprechenden Änderung ist es notwendig das Modell
nachzutrainieren (siehe HDevelop Beispielprogramm
deep_ocr_recognition_training_workflow.hdev).
Es wird empfohlen den Parameter 'recognition_alphabet'"recognition_alphabet""recognition_alphabet""recognition_alphabet""recognition_alphabet"
zur Änderung des Alphabets zu verwenden, da dadurch versucht
wird die Länge des internen Alphabets automatisch zu erhalten.
Es handelt sich um ein Mapping, das vom Modell während der Dekodierung
jedes Wortes angewendet wird. Das Mapping überschreibt jedes
Zeichen von 'recognition_alphabet_internal'"recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal" mit dem
vom Index festgelegten Zeichen aus
'recognition_alphabet_internal'"recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal".
Das über die Indizes des Tupels definierte Mapping wird im
Dekodierungsschritt auf die vorhergesagten Zeichen angewandt.
Das Tupel muss dieselbe Länge wie das Tupel
'recognition_alphabet_internal'"recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal" haben.
Jeder der ganzzahligen Indizes von
'recognition_alphabet_mapping'"recognition_alphabet_mapping""recognition_alphabet_mapping""recognition_alphabet_mapping""recognition_alphabet_mapping" muss zwischen 0
|'recognition_alphabet_internal'"recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal"|-1 liegen.
Manchmal kann es nützlich sein ein Mapping für bestimmte Zeichen
aufeinander zu definieren. Falls beispielsweise nur Zahlen in einer
Anwendung auftreten können kann es sinnvoll sein ein Mapping des Zeichens
"O" auf "0" festzulegen. Das Modell muss dafür nicht nachtrainiert
werden.
Falls ein Eintrag auf 0 gesetzt wird, wird das entsprechende
Zeichen in 'recognition_alphabet_internal'"recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal""recognition_alphabet_internal" in keinem
Wort dekodiert.
Anzahl der Bilder in einem Batch, die gleichzeitig in den Gerätespeicher
transferiert werden. Für mehr Informationen wird auf die
Referenzdokumentation des Operator apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelapply_dl_model bezüglich des
Parameters 'batch_size'"batch_size""batch_size""batch_size""batch_size" verwiesen. Dieser Parameter kann dazu
verwendet werden die Laufzeit von apply_deep_ocrapply_deep_ocrApplyDeepOcrApplyDeepOcrapply_deep_ocr auf der
gegebenen Hardware-Einheit zu verkürzen. Falls die
Erkennungskomponente mehrere Eingaben (Wörter) gleichzeitig
verarbeiten muss, kann eine höhere 'recognition_batch_size'"recognition_batch_size""recognition_batch_size""recognition_batch_size""recognition_batch_size" zu
schnellerer Verarbeitung führen. Es gilt zu beachten, dass ein höherer
Wert für die 'recognition_batch_size'"recognition_batch_size""recognition_batch_size""recognition_batch_size""recognition_batch_size" zu höherem
Speicherverbrauch auf der Hardware-Einheit führt.
Dieser Parameter setzt die Hardware Einheit auf welcher die
Erkennungskomponente des Deep OCR-Modells ausgeführt wird.
Siehe 'device'"device""device""device""device" für weitere Erklärungen.
Default:
Der selbe Wert wie für 'device'"device""device""device""device".
Tupel mit den Bilddimensionen ('recognition_image_width'"recognition_image_width""recognition_image_width""recognition_image_width""recognition_image_width",
'recognition_image_height'"recognition_image_height""recognition_image_height""recognition_image_height""recognition_image_height", Anzahl Kanäle),
welche die Erkennungskomponente verarbeitet.
Der Bildausschnitt wird zunächst Seitenverhältnis getreu auf die Höhe
'recognition_image_height'"recognition_image_height""recognition_image_height""recognition_image_height""recognition_image_height" gezoomt. Anschließend wird das
resultierende Bild, falls es eine geringere Breite als
'recognition_image_width'"recognition_image_width""recognition_image_width""recognition_image_width""recognition_image_width" besitzt, von rechts mit Grauwert 0
aufgefüllt. Falls der Bildausschnitt breiter sein sollte, wird er auf
die Breite 'recognition_image_width'"recognition_image_width""recognition_image_width""recognition_image_width""recognition_image_width" gezoomt.
Der Operator get_deep_ocr_paramget_deep_ocr_paramGetDeepOcrParamGetDeepOcrParamget_deep_ocr_param gibt das Handle der Deep
OCR-Modellkomponente zur Worterkennung zurück.
Mit set_deep_ocr_paramset_deep_ocr_paramSetDeepOcrParamSetDeepOcrParamset_deep_ocr_param kann ein Handle, ein Dateiname
oder ein spezieller String übergeben werden.
'default'"default""default""default""default" lädt die vortrainierte
Erkennungskomponente 'pretrained_deep_ocr_recognition.hdl'"pretrained_deep_ocr_recognition.hdl""pretrained_deep_ocr_recognition.hdl""pretrained_deep_ocr_recognition.hdl""pretrained_deep_ocr_recognition.hdl".
'compact'"compact""compact""compact""compact" lädt die kompakte
Erkennungskomponente 'pretrained_deep_ocr_recognition_compact.hdl'"pretrained_deep_ocr_recognition_compact.hdl""pretrained_deep_ocr_recognition_compact.hdl""pretrained_deep_ocr_recognition_compact.hdl""pretrained_deep_ocr_recognition_compact.hdl",
die eine schnellere Inferenz bei reduzierter Genauigkeit im Vergleich zur
Standardkomponente bietet.
Jeder andere String wird als Modell-Dateiname interpretiert und intern
mit einer Batch-Größe von 1 geladen.
Es ist zu beachten, dass das Setzen der Erkennungskomponente auch eine
Änderung anderer modellspezifischer Parameter mit sich bringen kann.
Sind die Parameterwerte korrekt, dann liefert get_deep_ocr_paramget_deep_ocr_paramGetDeepOcrParamGetDeepOcrParamget_deep_ocr_param den
Wert 2 (
H_MSG_TRUE)
. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.