get_prep_info_ocr_class_svm
— Berechnung des Informationsgehaltes der vorverarbeiteten
Merkmalsvektoren eines OCR-Klassifikators.
get_prep_info_ocr_class_svm( : : OCRHandle, TrainingFile, Preprocessing : InformationCont, CumInformationCont)
get_prep_info_ocr_class_svm
berechnet den Informationsgehalt
der mit der durch Preprocessing
gegebenen Vorverarbeitung
transformierten Komponenten der Trainingsvektoren.
Preprocessing
kann auf 'principal_components' oder
'canonical_variates' gesetzt werden. Der OCR-Klassifikator
OCRHandle
muss mit create_ocr_class_svm
erzeugt
worden sein. Die zugrundeliegenden Vorverarbeitungen sind bei
create_class_svm
beschrieben. Der Informationsgehalt wird
aus die Variation der transformierten Komponenten der
Trainingsvektoren berechnet, d.h. er wird rein aufgrund der
Trainingsdaten unabhängig von einer Fehlerrate bei einer
Klassifikation der Trainingsdaten berechnet. Der Informationsgehalt
wird für alle relevanten Komponenten der transformierten
Merkmalsvektoren (NumFeatures
für
'principal_components' und min(NumClasses
- 1,
NumFeatures
) für 'canonical_variates' , siehe
create_class_svm
) in InformationCont
zurückgegeben. Der Informationsgehalt wird als eine Zahl zwischen
0 und 1 dargestellt. Ein prozentualer Informationsgehalt kann
leicht durch Multiplikation mit 100 berechnet werden. Der kumulierte
Informationsgehalt der ersten n Komponenten wird in der n-ten
Komponente von CumInformationCont
zurückgegeben, d.h.
CumInformationCont
enthält die Summen der ersten n
Elemente von InformationCont
. Um
get_prep_info_ocr_class_svm
verwenden zu können, müssen
Trainingsmuster in den durch TrainingFile
angegebenen
Trainingsdateien abgespeichert werden (siehe
write_ocr_trainf
).
InformationCont
und CumInformationCont
können
dazu verwendet werden, um zu entscheiden, wieviele Komponenten der
transformierten Merkmalsvektoren relevante Information enthalten.
Ein oft verwendetes Kriterium ist z.B. zu verlangen, dass die
transformierten Daten x% (z.B. 90%) der Daten enthalten sollten.
Dies kann leicht anhand des ersten Wertes von
CumInformationCont
, der über x% liegt, bestimmt werden.
Der so erhaltene Wert kann bei einem neuerlichen Aufruf von
create_ocr_class_svm
als NumComponents
verwendet
werden. Da zum Aufruf von get_prep_info_ocr_class_svm
schon
ein Klassifikator mit create_ocr_class_svm
erzeugt werden
muss, also auch ein initialer Wert von NumComponents
bei
create_ocr_class_svm
angegeben werden muss, aber bei
Verwendung von get_prep_info_ocr_class_svm
typischerweise
noch nicht bekannt ist, wieviele Komponenten relevant sind,
empfiehlt sich folgendes zweistufiges Vorgehen, um
NumComponents
zu bestimmen: In einem ersten Schritt wird
ein Klassifikator mit der maximalen Anzahl von
NumComponents
(NumFeatures
für
'principal_components' und min(NumClasses
- 1,
NumFeatures
) für 'canonical_variates' )
erzeugt. Dann werden die Trainingsmuster mit
write_ocr_trainf
in einer Datei gespeichert. Anschließend
wird mit get_prep_info_ocr_class_svm
der Informationsgehalt
der Komponenten und somit NumComponents
bestimmt. Danach
wird ein neuer Klassifikator mit der gewünschten Anzahl Komponenten
erzeugt und der Klassifikator mit trainf_ocr_class_svm
trainiert.
OCRHandle
(input_control) ocr_svm →
(handle)
Handle des OCR-Klassifikators.
TrainingFile
(input_control) filename.read(-array) →
(string)
Name(n) der Trainingsdatei(en).
Defaultwert: 'ocr.trf'
Dateiendung: .trf
, .otr
Preprocessing
(input_control) string →
(string)
Art der Vorverarbeitung (Transformation) der Merkmalsvektoren.
Defaultwert: 'principal_components'
Werteliste: 'canonical_variates' , 'principal_components'
InformationCont
(output_control) real-array →
(real)
Relativer Informationsgehalt der transformierten Merkmalsvektoren.
CumInformationCont
(output_control) real-array →
(real)
Kumulierter Informationsgehalt der transformierten Merkmalsvektoren.
* Create the initial OCR classifier. read_ocr_trainf_names ('ocr.trf', CharacterNames, CharacterCount) create_ocr_class_svm (8, 10, 'constant', 'default', CharacterNames, \ 'rbf', 0.01, 0.01, 'one-versus-one', \ 'principal_components', 81, OCRHandle) * Get the information content of the transformed feature vectors. get_prep_info_ocr_class_svm (OCRHandle, 'ocr.trf', 'principal_components', \ InformationCont, CumInformationCont) * Determine the number of transformed components. * NumComp = [...] * Create the final OCR classifier. create_ocr_class_svm (8, 10, 'constant', 'default', CharacterNames, \ 'rbf', 0.01, 0.01,'one-versus-one', \ 'principal_components', NumComp, OCRHandle) * Train the final classifier. trainf_ocr_class_svm (OCRHandle, 'ocr.trf', 0.001, 'default') write_ocr_class_svm (OCRHandle, 'ocr.osc')
Sind die Parameterwerte korrekt, dann liefert
get_prep_info_ocr_class_svm
den Wert 2 (H_MSG_TRUE). Gegebenenfalls
wird eine Fehlerbehandlung durchgeführt.
Falls get_prep_info_ocr_class_svm
den Fehler 9211 (Matrix
ist nicht positiv definit) bei Preprocessing
=
'canonical_variates' zurückliefert, bedeutet dies
typischerweise, dass für die verschiedenen Klassen zu wenige
Trainingsmuster gespeichert worden sind.
create_ocr_class_svm
,
write_ocr_trainf
,
append_ocr_trainf
,
write_ocr_trainf_image
clear_ocr_class_svm
,
create_ocr_class_svm
OCR/OCV