Samplebasiert

Liste der Operatoren ↓

Dieses Kapitel beschreibt Operatoren für die samplebasierte Identifikation.

Konzept der samplebasierten Identifikation

Mit der samplebasierten Identifikation können eintrainierte Objekte anhand von charakteristischen Merkmalen wie Textur oder Farbe identifiziert werden. Dies ermöglicht es, Objekte zu identifizieren, die nicht mit einem Barcode oder einem Datacode markiert sind. Verglichen mit den Klassifikationsverfahren aus Kapitel Klassifikation, ist die Vorbereitung und das Training für die samplebasierte Identifikation sehr komfortabel, da hier kein komplexes Parametertuning nötig ist. Mit der samplebasierten Identifikation können sehr viele Objekte voneinander unterschieden werden. Die Identifikation ist robust gegenüber Rotation, Skalierung und Beleuchtungsänderungen sowie gegenüber Verdeckungen, Störungen und moderaten perspektivischen Verzerrungen. Darüber hinaus ist die Identifikation robust gegenüber moderaten Deformationen des Objekts und sie erlaubt in gewissen Grenzen auch die Identifikation von Schüttgut. Andererseits bedeutet dies, dass Objekte nicht unterschieden werden können, die sich sehr ähnlich sind oder sich nur in einem der Punkte unterscheiden, gegenüber denen die samplebasierte Identifikation robust ist. Zu beachten ist, dass die samplebasierte Identifikation nur mit texturierten Objekten funktioniert.

Mit der samplebasierten Identifikation kann immer nur ein Objekt pro Bild identifiziert werden. Das bedeutet, dass jedes Suchbild, oder genauer gesagt die Domain jedes Suchbildes nur ein Objekt enthalten darf.

(1) (2)
(3) (4)
Samplebasierte Identifikation der Objekte 'potato', 'blueberry', 'arugula' und 'champignon'. Diese Bilder stammen aus dem Beispielprogramm identify_vegetables.hdev.

Im Folgenden werden die einzelnen Schritte, die zur Benutzung der samplebasierten Identifikation benötigt werden, kurz beschrieben.

Anlegen und Vorbereiten eines Sample-Identifikators:

Zuerst muss ein Sample-Identifikator bereitgestellt werden. Dies erfolgt durch das Anlegen und Vorbereiten mit den Operatoren

Der Schritt der Vorbereitung ist notwendig, um die internen Datenstrukturen des Sample-Identifikators an die Art der Objekte anzupassen, die unterschieden werden sollen. Alternativ dazu kann ein bereits verfügbarer Sample-Identifikator, der mit write_sample_identifierwrite_sample_identifierWriteSampleIdentifierWriteSampleIdentifierWriteSampleIdentifier in eine Datei geschrieben wurde, mit dem Operator read_sample_identifierread_sample_identifierReadSampleIdentifierReadSampleIdentifierReadSampleIdentifier von Datei eingelesen werden. Einen vorbereiteten Sample-Identifikator kann man sich in gewisser Weise wie eine Lagerhalle vorstellen, die für die Lagerung einer bestimmten Art von Produkten ausgelegt ist.

Trainieren des Sample-Identifikators:

Im Anschluss an die Vorbereitung muss der Sample-Identifikator mit Samples der zu unterscheidenden Objekte trainiert werden. Dies erfolgt mit den Operatoren

Es ist jederzeit möglich, den Sample-Identifikator nachzutrainieren. Hierfür können Samples aus dem Sample-Identifikator mit dem Operator remove_sample_identifier_training_dataremove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataRemoveSampleIdentifierTrainingDataRemoveSampleIdentifierTrainingData gelöscht werden und es können neue Samples mit dem Operator add_sample_identifier_training_dataadd_sample_identifier_training_dataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingData hinzugefügt werden. Sofern sich die Art der zu unterscheidenden Objekte nicht zu stark ändert, ist es nicht notwendig, die Vorbereitung des Sample-Identifikator erneut durchzuführen. Das Training entspricht - um im obigen Bild zu bleiben - dem Auffüllen der Lagerhalle.

Anwenden des Sample-Identifikators zum Identifizieren von Objekten:

Nun kann der trainierte Sample-Identifikator verwendet werden um Objekte zu identifizieren. Das Identifizieren erfolgt mit dem Operator

Weitere Operatoren zur Administration und Kontrolle des Sample-Identifikators

Zusätzlich zu den oben genannten Operatoren können folgende weitere Operatoren zur Administration des Sample-Identifikator verwendet werden. Mit remove_sample_identifier_preparation_dataremove_sample_identifier_preparation_dataRemoveSampleIdentifierPreparationDataRemoveSampleIdentifierPreparationDataRemoveSampleIdentifierPreparationData und remove_sample_identifier_training_dataremove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataRemoveSampleIdentifierTrainingDataRemoveSampleIdentifierTrainingData können die Daten, die zur Vorbereitung bzw. zum Training des Sample-Identifikator hinzugefügt wurden, wieder gelöscht werden. Sie werden dann bei einer weiteren Vorbereitung bzw. einem weiteren Training nicht mehr verwendet. Die Operatoren set_sample_identifier_object_infoset_sample_identifier_object_infoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfo und get_sample_identifier_object_infoget_sample_identifier_object_infoGetSampleIdentifierObjectInfoGetSampleIdentifierObjectInfoGetSampleIdentifierObjectInfo können dazu verwendet werden, die einzelnen Objekte mit einem Namen oder einer anderen Beschreibung zu kennzeichnen. Darüber hinaus können mit dem Operator get_sample_identifier_object_infoget_sample_identifier_object_infoGetSampleIdentifierObjectInfoGetSampleIdentifierObjectInfoGetSampleIdentifierObjectInfo weitere Informationen über die Anzahl der Objekte, die für die Vorbereitung bzw. das Training zur Verfügung stehen abgefragt werden. Mit den Operatoren set_sample_identifier_paramset_sample_identifier_paramSetSampleIdentifierParamSetSampleIdentifierParamSetSampleIdentifierParam und get_sample_identifier_paramget_sample_identifier_paramGetSampleIdentifierParamGetSampleIdentifierParamGetSampleIdentifierParam können Steuerparameter gesetzt und abgefragt werden.

Glossar

Im Folgenden werden die wichtigsten Begriffe, die im Umfeld der samplebasierten Identifikation verwendet werden, beschrieben:

Objekt

Ein Objekt, das mit der samplebasierten Identifikation identifiziert werden soll.

Objektindex

Der Index eines Objekts. Der Index ist eine eindeutige Kennzeichnung des Objekts, der im SampleIdentifierSampleIdentifierSampleIdentifierSampleIdentifiersampleIdentifier im Zuge des Hinzufügens von Daten für die Vorbereitung bzw. das Training gesetzt wird. Der Objektindex ist auch das wesentliche Ergebnis des Operators apply_sample_identifierapply_sample_identifierApplySampleIdentifierApplySampleIdentifierApplySampleIdentifier. Mit dem Operator set_sample_identifier_object_infoset_sample_identifier_object_infoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfo kann für jedes Objekt auch ein beschreibender Name gesetzt werden, der die Interpretation der Ergebnisse erleichtert.

Objektsample

Ein Sample oder eine Ansicht eines Objekts. Manchmal wird hierfür auch der Begriff „Samplebild´´ verwendet.

Samplebild

Dieser Begriff wird als Synonym für Objektsample verwendet, insbesondere dann, wenn der Schwerpunkt auf dem Bild liegt.

Objektsampleindex

Der Index eines Objektsamples. Dieser Index wird für jedes Objekt getrennt vergeben. Er startet für jedes Objekt bei 0. Daher ist der Objektsampleindex nur zusammen mit dem entsprechenden Objektindex eindeutig.

Vorbereitung

Die Anpassung der internen Datenstruktur des Sample-Identifikators an die Merkmale eines Satzes von Objektsamples. Diese Satz sollte die bei der Anwendung der Identifikation zu erwartenden Objektsamples beispielhaft abdecken.

Vorbereitungsobjekt

Ein Objekt, das dem Sample-Identifikator mit dem Operator add_sample_identifier_preparation_dataadd_sample_identifier_preparation_dataAddSampleIdentifierPreparationDataAddSampleIdentifierPreparationDataAddSampleIdentifierPreparationData hinzugefügt wurde.

Sample für die Vorbereitung

Ein Objektsample eines Vorbereitungsobjekts. Die Vorbereitung des Sample-Identifikators wird typischerweise mit mehreren Samples für die Vorbereitung pro Vorbereitungsobjekt durchgeführt.

Vorbereitungsdaten

Die Menge aller Samples für die Vorbereitung.

Training

Das Training des Sample-Identifikators. Bei diesem Schritt lernt der Sample-Identifikator die vorgegebenen Objekte zu unterscheiden.

Trainingsobjekt

Ein Objekt, das dem Sample-Identifikator mit dem Operator add_sample_identifier_training_dataadd_sample_identifier_training_dataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingData hinzugefügt wurde oder das aus der Wiederverwendung der Vorbereitungsdaten entstanden ist. Im Gegensatz zu Vorbereitungsobjekten müssen alle Trainingsobjekte mit einem eindeutigen Objektindex gekennzeichnet sein.

Sample für das Training

Ein Objektsample eines Trainingsobjekts. Das Training des Sample-Identifikators wird typischerweise mit mehreren Samples für das Training pro Trainingsobjekt durchgeführt.

Trainingsdaten

Die Menge aller Samples für das Training.

Suchbild

Ein Bild, das ein Objekt enthält, welches mit dem Sample-Identifikator identifiziert werden soll.


Liste der Operatoren

add_sample_identifier_preparation_dataAddSampleIdentifierPreparationDataAddSampleIdentifierPreparationDataadd_sample_identifier_preparation_data
Hinzufügen von Samples für die Vorbereitung eines Sample-Identifikators.
add_sample_identifier_training_dataAddSampleIdentifierTrainingDataAddSampleIdentifierTrainingDataadd_sample_identifier_training_data
Hinzufügen von Samples für das Training eines Sample-Identifikators.
apply_sample_identifierApplySampleIdentifierApplySampleIdentifierapply_sample_identifier
Identifizieren von Objekten mit einem Sample-Identifikator.
clear_sample_identifierClearSampleIdentifierClearSampleIdentifierclear_sample_identifier
Freigeben des Speichers eines Sample-Identifikators.
create_sample_identifierCreateSampleIdentifierCreateSampleIdentifiercreate_sample_identifier
Anlegen eines neuen Sample-Identifikators.
deserialize_sample_identifierDeserializeSampleIdentifierDeserializeSampleIdentifierdeserialize_sample_identifier
Deserialisieren eines Sample-Identifikators.
get_sample_identifier_object_infoGetSampleIdentifierObjectInfoGetSampleIdentifierObjectInfoget_sample_identifier_object_info
Abfragen von Informationen über einen Sample-Identifikator.
get_sample_identifier_paramGetSampleIdentifierParamGetSampleIdentifierParamget_sample_identifier_param
Abfragen bestimmter Parameter eines Sample-Identifikators.
prepare_sample_identifierPrepareSampleIdentifierPrepareSampleIdentifierprepare_sample_identifier
Anpassen der internen Datenstruktur eines Sample-Identifikators an die Art der zu unterscheidenden Objekte.
read_sample_identifierReadSampleIdentifierReadSampleIdentifierread_sample_identifier
Einlesen eines Sample-Identifikators von Datei.
remove_sample_identifier_preparation_dataRemoveSampleIdentifierPreparationDataRemoveSampleIdentifierPreparationDataremove_sample_identifier_preparation_data
Löschen von Vorbereitungsdaten eines Sample-Identifikators.
remove_sample_identifier_training_dataRemoveSampleIdentifierTrainingDataRemoveSampleIdentifierTrainingDataremove_sample_identifier_training_data
Löschen von Trainingsdaten eines Sample-Identifikators.
serialize_sample_identifierSerializeSampleIdentifierSerializeSampleIdentifierserialize_sample_identifier
Serialisieren eines Sample-Identifikators.
set_sample_identifier_object_infoSetSampleIdentifierObjectInfoSetSampleIdentifierObjectInfoset_sample_identifier_object_info
Setzen eines Namens oder einer Beschreibung für ein Objekt eines Sample-Identifikators.
set_sample_identifier_paramSetSampleIdentifierParamSetSampleIdentifierParamset_sample_identifier_param
Setzen bestimmter Parameter eines Sample-Identifikators.
train_sample_identifierTrainSampleIdentifierTrainSampleIdentifiertrain_sample_identifier
Trainieren eines Sample-Identifikators.
write_sample_identifierWriteSampleIdentifierWriteSampleIdentifierwrite_sample_identifier
Schreiben eines Sample-Identifikators in eine Datei.