create_class_lut_mlpT_create_class_lut_mlpCreateClassLutMlpCreateClassLutMlpcreate_class_lut_mlp (Operator)

Name

create_class_lut_mlpT_create_class_lut_mlpCreateClassLutMlpCreateClassLutMlpcreate_class_lut_mlp — Erzeugen einer Look-Up-Table anhand eines mehrschichtigen Perzeptrons zur Klassifizierung von Byte-Bildern.

Signatur

create_class_lut_mlp( : : MLPHandle, GenParamName, GenParamValue : ClassLUTHandle)

Herror T_create_class_lut_mlp(const Htuple MLPHandle, const Htuple GenParamName, const Htuple GenParamValue, Htuple* ClassLUTHandle)

void CreateClassLutMlp(const HTuple& MLPHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* ClassLUTHandle)

HClassLUT HClassMlp::CreateClassLutMlp(const HTuple& GenParamName, const HTuple& GenParamValue) const

void HClassLUT::HClassLUT(const HClassMlp& MLPHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

void HClassLUT::CreateClassLutMlp(const HClassMlp& MLPHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

static void HOperatorSet.CreateClassLutMlp(HTuple MLPHandle, HTuple genParamName, HTuple genParamValue, out HTuple classLUTHandle)

HClassLUT HClassMlp.CreateClassLutMlp(HTuple genParamName, HTuple genParamValue)

public HClassLUT(HClassMlp MLPHandle, HTuple genParamName, HTuple genParamValue)

void HClassLUT.CreateClassLutMlp(HClassMlp MLPHandle, HTuple genParamName, HTuple genParamValue)

def create_class_lut_mlp(mlphandle: HHandle, gen_param_name: Sequence[str], gen_param_value: Sequence[Union[str, int, float]]) -> HHandle

Beschreibung

create_class_lut_mlpcreate_class_lut_mlpCreateClassLutMlpCreateClassLutMlpCreateClassLutMlpcreate_class_lut_mlp erzeugt eine Look-Up Table (LUT) ClassLUTHandleClassLUTHandleClassLUTHandleClassLUTHandleclassLUTHandleclass_luthandle anhand eines trainierten mehrschichtigen Perzeptrons (MLP) MLPHandleMLPHandleMLPHandleMLPHandleMLPHandlemlphandle zur Klassifizierung von mehrkanaligen Byte-Bildern. Mit diesem MLP-basierten LUT Klassifikator kann der Operator classify_image_class_mlpclassify_image_class_mlpClassifyImageClassMlpClassifyImageClassMlpClassifyImageClassMlpclassify_image_class_mlp, der für die spätere Klassifikation benötigt wird, durch den Operator classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut ersetzt werden. Die Klassifikation wird dadurch deutlich beschleunigt, weil die entsprechende Klasse nicht in jedem Bildpunkt extra berechnet werden muss, da alle möglichen Antworten des MLP in der LUT gespeichert sind. Für die Erzeugung der LUT sind die im zuvor aufgerufenen Operator create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp definierten Parameter NumInput, Preprocessing und NumComponents von Bedeutung. In NumInput ist festgelegt, wie viele Kanäle die zu klassifizierenden Bilder haben dürfen. Über das Preprocessing (siehe create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp) kann diese Anzahl auf NumComponents transformiert werden. NumComponents beschreibt schließlich die Größe des Merkmalsvektors, der vom Klassifikator classify_class_mlpclassify_class_mlpClassifyClassMlpClassifyClassMlpClassifyClassMlpclassify_class_mlp intern verarbeitet wird. Aufgrund von Performance und Speicherverwaltung ist die LUT auf maximal 3 Dimensionen beschränkt. Da sie den Operator classify_class_mlpclassify_class_mlpClassifyClassMlpClassifyClassMlpClassifyClassMlpclassify_class_mlp ersetzt, muss NumComponents <= 3 gelten. Findet keine Transformation mit Reduktion in den Bildkanälen statt (NumInput = NumComponents) werden beim Erzeugen der LUT alle möglichen Pixelwerte, die in einem Byte-Bild vorkommen können, mit classify_class_mlpclassify_class_mlpClassifyClassMlpClassifyClassMlpClassifyClassMlpclassify_class_mlp klassifiziert und die resultierenden Klassen in der LUT gespeichert. Findet eine Transformation mit Reduktion der Bildkanäle statt (NumInput > NumComponents) werden die Vorverarbeitungsparameter des MLP in einer separaten Struktur der LUT gespeichert. Beim Erzeugen der LUT werden alle transformierten Pixelwerte mit classify_class_mlpclassify_class_mlpClassifyClassMlpClassifyClassMlpClassifyClassMlpclassify_class_mlp klassifiziert und die resultierenden Klassen in der LUT gespeichert. Aufgrund der diskreten Struktur der LUT kann es dabei zu einem Genauigkeitsverlust gegenüber der Klassifizierung mit classify_image_class_mlpclassify_image_class_mlpClassifyImageClassMlpClassifyImageClassMlpClassifyImageClassMlpclassify_image_class_mlp kommen. Über die Parameter 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" und 'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection" kann die Klassifizierungsgenauigkeit, der Speicherbedarf und die Laufzeit zur Erzeugung der LUT angepasst werden.

Die folgenden Parameter des MLP-basierten LUT Klassifikators können mit GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value gesetzt werden:

'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth":

Anzahl der verwendeten Bits der Bildpixel. 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" steuert den Speicherbedarf der LUT und ist durch die Bittiefe des Bildes beschränkt ('bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" <= 8). Ist die Bittiefe der LUT kleiner ('bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" < 8), werden die Klassen von mehreren Pixelkombinationen auf den selben Eintrag der LUT abgebildet, was die Klassifizierungsgenauigkeit verringern kann. Einer dieser Cluster enthält Pixelkombinationen, wobei NumComponents die in create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp spezifizierte Dimension der LUT beschreibt. Für 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" = 7, NumComponents = 3 werden beispielsweise die Klassen von 8 Pixelkombinationen auf den selben Eintrag der LUT abgebildet. Die LUT benötigt maximal Bytes vom Speicher. Für NumComponents = 3, 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" = 8 und NumOutput < 16 (angegeben in create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp) werden beispielsweise durch eine interne Speicheroptimierung nur 8 MB Speicher für die LUT benötigt. Gilt NumOutput = 1, benötigt die LUT bei voller Bittiefe nur 2 MB Speicher. Die Laufzeit der Klassifizierung in classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut wird minimal, falls die LUT in den Cache passt. Defaultwert ist 8, typische Werte sind [6,7,8]. Beschränkungen: 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" >= 1, 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" <= 8.

'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection":

Methode zur Klassenauswahl für die LUT. Kann angepasst werden um die spätere Klassifizierungsgenauigkeit und die Laufzeit zur Erzeugung der LUT zu steuern. Der Wert für 'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection" wird ignoriert, falls die Bittiefe der LUT maximal ist, also 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" = 8 gilt. Ist die Bittiefe der LUT kleiner ('bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" < 8), werden die Klassen von mehreren Pixelkombinationen auf den selben Eintrag der LUT abgebildet. Einer dieser Cluster enthält Pixelkombinationen, wobei NumComponents die in create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp spezifizierte Dimension der LUT beschreibt. Gilt 'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection" = 'best'"best""best""best""best""best", wird die Klasse gespeichert, die am häufigsten im Cluster vorkommt. Für 'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection" = 'fast'"fast""fast""fast""fast""fast" wird nur der Pixel im Cluster klassifiziert, der den kleinsten Wert (komponentenweise) hat, was jedoch die Genauigkeit bei der späteren Klassifizierung über die LUT verringern kann. Allerdings lässt sich dadurch die Laufzeit zur Erzeugung der LUT reduzieren. Sie verhält sich proportional zum maximal benötigten Speicherplatz der LUT, der mit definiert ist. Defaultwert ist 'fast'"fast""fast""fast""fast""fast", mögliche Werte sind ['fast'"fast""fast""fast""fast""fast", 'best'"best""best""best""best""best"].

'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold":

Schwellenwert zur Zurückweisung unsicher klassifizierter Punkte des MLP. Der Parameter stellt einen Schwellenwert auf dem von der Klassifikation zurückgelieferten Wahrscheinlichkeitsmaß dar (siehe classify_class_mlpclassify_class_mlpClassifyClassMlpClassifyClassMlpClassifyClassMlpclassify_class_mlp und evaluate_class_mlpevaluate_class_mlpEvaluateClassMlpEvaluateClassMlpEvaluateClassMlpevaluate_class_mlp). Alle Pixel mit einer Wahrscheinlichkeit unterhalb von 'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold" werden keiner Klasse zugeordnet. Defaultwert ist 0.5. Beschränkungen: 'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold" >= 0, 'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold" <= 1.

Ausführungsinformationen

Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.

Parameter

MLPHandleMLPHandleMLPHandleMLPHandleMLPHandlemlphandle (input_control)  class_mlp HClassMlp, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des MLP.

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

Namen der generischen Parameter, die für die Erzeugung des LUT Klassifikators angepasst werden können.

Defaultwert: []

Wertevorschläge: 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth", 'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection", 'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold"

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

Werte der generischen Parameter, die für die Erzeugung des LUT Klassifikators angepasst werden können.

Defaultwert: []

Wertevorschläge: 8, 7, 6, 'fast'"fast""fast""fast""fast""fast", 'best'"best""best""best""best""best"

ClassLUTHandleClassLUTHandleClassLUTHandleClassLUTHandleclassLUTHandleclass_luthandle (output_control)  class_lut HClassLUT, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des LUT Klassifikators.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert create_class_lut_mlpcreate_class_lut_mlpCreateClassLutMlpCreateClassLutMlpCreateClassLutMlpcreate_class_lut_mlp den Wert TRUE. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

train_class_mlptrain_class_mlpTrainClassMlpTrainClassMlpTrainClassMlptrain_class_mlp, read_class_mlpread_class_mlpReadClassMlpReadClassMlpReadClassMlpread_class_mlp

Nachfolger

classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut

Alternativen

create_class_lut_gmmcreate_class_lut_gmmCreateClassLutGmmCreateClassLutGmmCreateClassLutGmmcreate_class_lut_gmm, create_class_lut_knncreate_class_lut_knnCreateClassLutKnnCreateClassLutKnnCreateClassLutKnncreate_class_lut_knn, create_class_lut_svmcreate_class_lut_svmCreateClassLutSvmCreateClassLutSvmCreateClassLutSvmcreate_class_lut_svm

Siehe auch

classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut, clear_class_lutclear_class_lutClearClassLutClearClassLutClearClassLutclear_class_lut

Modul

Foundation