Dieses Kapitel beschreibt Operatoren für die samplebasierte 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) |
Im Folgenden werden die einzelnen Schritte, die zur Benutzung der samplebasierten Identifikation benötigt werden, kurz beschrieben.
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
in eine Datei
geschrieben wurde, mit dem Operator write_sample_identifier
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.
read_sample_identifier
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
gelöscht werden und es können
neue Samples mit dem Operator remove_sample_identifier_training_data
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.
add_sample_identifier_training_data
Nun kann der trainierte Sample-Identifikator verwendet werden um Objekte zu identifizieren. Das Identifizieren erfolgt mit dem Operator
Zusätzlich zu den oben genannten Operatoren können folgende weitere
Operatoren zur Administration des Sample-Identifikator verwendet werden. Mit
und
remove_sample_identifier_preparation_data
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
remove_sample_identifier_training_data
und
set_sample_identifier_object_info
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_info
weitere Informationen über die
Anzahl der Objekte, die für die Vorbereitung bzw. das Training zur Verfügung
stehen abgefragt werden. Mit den Operatoren
get_sample_identifier_object_info
und set_sample_identifier_param
können Steuerparameter gesetzt und abgefragt werden.
get_sample_identifier_param
Im Folgenden werden die wichtigsten Begriffe, die im Umfeld der samplebasierten Identifikation verwendet werden, beschrieben:
Ein Objekt, das mit der samplebasierten Identifikation identifiziert werden soll.
Der Index eines Objekts. Der Index ist eine eindeutige
Kennzeichnung des Objekts, der im
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
SampleIdentifier
. Mit dem Operator
apply_sample_identifier
kann für jedes Objekt auch ein
beschreibender Name gesetzt werden, der die Interpretation der Ergebnisse
erleichtert.
set_sample_identifier_object_info
Ein Sample oder eine Ansicht eines Objekts. Manchmal wird hierfür auch der Begriff „Samplebild´´ verwendet.
Dieser Begriff wird als Synonym für Objektsample verwendet, insbesondere dann, wenn der Schwerpunkt auf dem Bild liegt.
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.
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.
Ein Objekt, das dem Sample-Identifikator mit dem
Operator
hinzugefügt wurde.
add_sample_identifier_preparation_data
Ein Objektsample eines Vorbereitungsobjekts. Die Vorbereitung des Sample-Identifikators wird typischerweise mit mehreren Samples für die Vorbereitung pro Vorbereitungsobjekt durchgeführt.
Die Menge aller Samples für die Vorbereitung.
Das Training des Sample-Identifikators. Bei diesem Schritt lernt der Sample-Identifikator die vorgegebenen Objekte zu unterscheiden.
Ein Objekt, das dem Sample-Identifikator mit dem
Operator
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.
add_sample_identifier_training_data
Ein Objektsample eines Trainingsobjekts. Das Training des Sample-Identifikators wird typischerweise mit mehreren Samples für das Training pro Trainingsobjekt durchgeführt.
Die Menge aller Samples für das Training.
Ein Bild, das ein Objekt enthält, welches mit dem Sample-Identifikator identifiziert werden soll.
add_sample_identifier_preparation_data
add_sample_identifier_training_data
apply_sample_identifier
clear_sample_identifier
create_sample_identifier
deserialize_sample_identifier
get_sample_identifier_object_info
get_sample_identifier_param
prepare_sample_identifier
read_sample_identifier
remove_sample_identifier_preparation_data
remove_sample_identifier_training_data
serialize_sample_identifier
set_sample_identifier_object_info
set_sample_identifier_param
train_sample_identifier
write_sample_identifier