DE102018109392A1 - Verfahren zum erfassen optischer codes, automatisierungssystem und computerprogrammprodukt zum durchführen des verfahrens - Google Patents

Verfahren zum erfassen optischer codes, automatisierungssystem und computerprogrammprodukt zum durchführen des verfahrens Download PDF

Info

Publication number
DE102018109392A1
DE102018109392A1 DE102018109392.6A DE102018109392A DE102018109392A1 DE 102018109392 A1 DE102018109392 A1 DE 102018109392A1 DE 102018109392 A DE102018109392 A DE 102018109392A DE 102018109392 A1 DE102018109392 A1 DE 102018109392A1
Authority
DE
Germany
Prior art keywords
code
optical codes
neural network
optical
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018109392.6A
Other languages
English (en)
Inventor
Marko Tscherepanow
Robin Vogt
Benjamin JURKE
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beckhoff Automation GmbH and Co KG
Original Assignee
Beckhoff Automation GmbH and Co KG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beckhoff Automation GmbH and Co KG filed Critical Beckhoff Automation GmbH and Co KG
Priority to DE102018109392.6A priority Critical patent/DE102018109392A1/de
Priority to US16/388,503 priority patent/US10922510B2/en
Publication of DE102018109392A1 publication Critical patent/DE102018109392A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1443Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1456Methods for optical code recognition including a method step for retrieval of the optical code determining the orientation of the optical code with respect to the reader and correcting therefore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods

Abstract

Ein Verfahren zum Erfassen optischer Codes (101, 102, 713, 804) umfasst die folgenden Verfahrensschritte. Ein Eingabebild (103) wird bereitgestellt. Optische Codes (101, 102, 713, 804) im Eingabebild (103) werden durch Erzeugen eines Ausgabebildes (115) auf Grundlage des Eingabebildes (103) erfasst. Im Rahmen des Erzeugens des Ausgabebildes (115) wird Bildpunkten eines einen Teil eines optischen Codes (101, 102, 713, 804) aufweisenden Bereichs des Eingabebildes (103) eine erste Intensität (116) im Ausgabebild (115) zugeordnet. Im Rahmen des Erzeugens des Ausgabebildes (115) wird Bildpunkten eines keinen Teil eines optischen Codes (101, 102, 713, 804) aufweisenden Bereichs des Eingabebildes (103) eine zweite Intensität (117) im Ausgabebild (115) zugeordnet. Regionen des Ausgabebildes (115) mit der ersten Intensität (116) werden zum Bestimmen von Eigenschaften der erfassten optischen Codes (101, 102, 713, 804) bereitgestellt.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zum Bestimmen von Eigenschaften optischer Codes.
  • Im Rahmen einer Automatisierung von Produktionsprozessen hat eine individuelle Objektkennzeichnung eine große Bedeutung. Sie ermöglicht eine eindeutige Identifikation und Verfolgung von Ausgangsmaterialien, Teil- und Zwischenprodukten und fertigen Produkten. Damit stellt die Objektkennzeichnung eine wichtige Grundlage für eine individualisierte Produktion, Prozesssteuerung, Prozessoptimierung, Lagerhaltung, Qualitätskontrolle und Dokumentation dar. Auch in der Logistikbranche müssen zu transportierende Güter eindeutig identifiziert und verfolgt werden können. Die Objektkennzeichnung ermöglicht auch eine Rückverfolgbarkeit von Produkten im Rahmen von Rückrufaktionen. In einzelnen Branchen kann es unerlässlich sein, Produkte lückenlos zurückverfolgen zu können, um deren Sicherheit zu garantieren. Beispielsweise wird in der Pharmaindustrie eine Rückverfolgbarkeit gesetzlich gefordert, um Medikamentenfälschungen erkennen zu können.
  • Für eine maschinenlesbare Objektkennzeichnung werden häufig optische Codes verwendet. Mit optischen Codes gekennzeichnete Objekte besitzen häufig mehrere, zum Teil branchen- und regionenspezifische Kennzeichnungen mit unterschiedlichen Aufgaben. Bekannte Typen von optischen Codes sind beispielsweise der EAN-13 Code, der Code 39, der Code 128, der PDF417 Code, der Aztec-Code, der Datamatrix-Code, der Han-Xin Code, der Maxi-Code, der QR-Code, der Dot-Code, der High-Capacity-Color Barcode und der Per-Colorant-Channel Color Barcode. Ein optischer Code kann ein Referenzmuster oder eine Mehrzahl von Referenzmustern aufweisen. Das Referenzmuster kann beispielsweise ein Finder-Pattern, ein Timing-Pattern oder ein Alignement-Pattern sein. Das Referenzmuster kann es ermöglichen eine Position, eine Lage und eine Kategorie, das heißt (d.h.) einen Typ, eines optischen Codes zu bestimmen. Ein Auslesen von in optischen Codes gespeicherten Informationen erfolgt anhand von codespezifischen Auslesealgorithmen. Ein codespezifischer Auslesealgorithmus ist beispielsweise der in der ISO IEC 16022 für Datamatrix-Codes angegebene Referenzalgorithmus.
  • Ein exemplarisches Produkt kann beispielsweise einen EAN-13 Code für einen Verkauf, einen Datamatrix-Code für die Rückverfolgbarkeit und einen QR-Code mit einem Link auf eine Firmenwebseite beinhalten. Hinzu kommen noch eventuelle Logos, Qualitätssiegel und Klartextinformationen. Die gleichzeitige Nutzung mehrerer Kennzeichnungen erschwert hierbei eine Bildanalyse, da eine Mehrzahl unterschiedlicher Bildobjekte detektiert, lokalisiert und interpretiert werden muss.
  • Wird ein kontinuierlicher Strom bewegter gekennzeichneter Objekte analysiert, sind maximale Zeiten für eine optische Analyse einzelner Objekte einzuhalten. Anderenfalls ständen keine Rechenkapazitäten für eine Verarbeitung nachfolgender Objekte zur Verfügung und/oder Aktoren könnten nicht schnell genug angesteuert werden. Für einen stabilen Betrieb ist es sinnvoll, wenn die Bearbeitungszeiten möglichst geringen Schwankungen unterworfen sind. Dabei ist auch zu berücksichtigen, dass im Rahmen einer Codeerkennung durch eine Bildanalyse üblicherweise nur ein einziges Bild zur Verfügung steht.
  • Eine Detektion optischer Codes, d.h. ein Erkennen ob und ggf. wo sich ein optischer Code im Bild befindet, ist ein nichttriviales Problem. Eine Aufgabe bei der Erkennung optischer Codes besteht darin, die optischen Codes von anderen Kennzeichnungen zu unterscheiden sowie deren Position, Lage und Kategorie zu bestimmen. Dies kann durch Störungen im Bild erschwert werden. Die optischen Codes können auch teilweise verdeckt oder zerstört sein. Insbesondere bei Beeinträchtigung der codespezifischen Referenzmuster wird die Codedetektion deutlich erschwert. Weiterhin ist das Erscheinungsbild von optischen Codes einer gewissen Variabilität unterworfen, beispielsweise ist es möglich, optische Codes invers aufzubringen.
  • Ein bekannter Ansatz zur Vereinfachung der Detektion besteht darin, feste Positionen für verschiedene optische Codes vorzugeben. Im Zuge einer Individualisierung der Produktion und der Internationalisierung beim Warentransport kann jedoch nicht uneingeschränkt davon ausgegangen werden, dass die Positionen auszulesender Codes auf gekennzeichneten Objekten a priori bekannt sind.
  • Neuronale Netze sind Datenverarbeitungsstrukturen, die in Anlehnung an Nervennetzwerke von Organismen konzipiert wurden. Sie wurden bereits sehr erfolgreich für verschiedene Aufgabenstellungen eingesetzt. Insbesondere sogenannte tiefe neuronale Netze (engl.: deep neural networks) mit vielen Schichten von Neuronen führten in vielen Mustererkennungsaufgaben zu deutlichen Verbesserungen, u.a. im Bereich der Auswertung von Bildern und der Spracherkennung.
  • Im Bereich Bildverarbeitung kommen insbesondere Faltungsnetzwerke (engl.: convolutional neural networks, CNNs) zum Einsatz. Bei CNNs wird die aus der Bildverarbeitung bekannte Operation der zweidimensionalen Faltung (engl.: convolution) oder die mit der Faltung verwandte Kreuzkorrelation verwendet.
  • Es sind CNNs, genannt ELCNNs, bekannt, die mit Extreme-Learning-Machines (ELMs) kombiniert werden. Dadurch werden sowohl eine Anzahl notwendiger Trainingsdaten als auch eine für ein Training eines CNN benötigte Zeit selbst verringert.
  • Aus der Offenlegungsschrift DE 101 37 093 A1 ist ein Verfahren zum Erkennen von optischen Codes mittels eines neuronalen Netzes bekannt. Im Rahmen des Verfahrens erfolgt ein Ermitteln eines Aktivitätswertes auf Grundlage eines Eingabebildes. Der Aktivitätswert stellt ein Maß für eine Übereinstimmung des zugeführten Eingabebilddatensatzes mit eingelernten Datensätzen dar. Es wird für jedes Eingabebild und für jede eingelernte Kategorie jeweils ein Aktivitätswert von dem neuronalen Netz ermittelt. Der Aktivitätswert enthält eine Information über eine Position eines optischen Codes. Das Eingabebild kann auch in Eingabeteilbilder unterteilt werden, sodass jedem Eingabeteilbild und jeder eingelernten Kategorie ein Aktivitätswert zugeordnet wird.
  • Eine Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren zum Erfassen optischer Codes anzugeben. Diese Aufgabe wird durch ein Verfahren mit den Merkmalen des unabhängigen Anspruchs 1 gelöst. Vorteilhafte Ausführungsformen sind in den abhängigen Ansprüchen angegeben. Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, ein Automatisierungssystem und ein Computerprogrammprodukt zum Durchführen des Verfahrens bereitzustellen. Diese Aufgabe wird durch ein Automatisierungssystem mit den Merkmalen des unabhängigen Anspruchs 14 und durch ein Computerprogrammprodukt mit den Merkmalen des unabhängigen Anspruchs 17 gelöst. Vorteilhafte Ausführungsformen sind in den abhängigen Ansprüchen angegeben.
  • Ein Verfahren zum Erfassen optischer Codes umfasst die folgenden Verfahrensschritte. Ein Eingabebild wird bereitgestellt. Optische Codes im Eingabebild werden durch Erzeugen eines Ausgabebildes auf Grundlage des Eingabebildes erfasst. Im Rahmen des Erzeugens des Ausgabebildes wird Bildpunkten eines einen Teil eines optischen Codes aufweisenden Bereichs des Eingabebildes eine erste Intensität im Ausgabebild zugeordnet. Im Rahmen des Erzeugens des Ausgabebildes wird Bildpunkten eines keinen Teil eines optischen Codes aufweisenden Bereichs des Eingabebildes eine zweite Intensität im Ausgabebild zugeordnet. Regionen des Ausgabebildes mit der ersten Intensität werden zum Bestimmen von Eigenschaften der erfassten optischen Codes bereitgestellt.
  • Eine Eigenschaft eines optischen Codes kann beispielsweise seine Position, seine Größe, seine Lage, seine Kategorie oder seine Qualität oder eine Kombination aus den angeführten Beispielen sein. Die Position oder die Größe oder die Lage eines optischen Codes kann beispielsweise in Relation zum Eingabebild oder in Relation zu einem den optischen Code enthaltenen Produkt bestimmbar sein. Die Lage eines optischen Codes kann beispielsweise in Form eines Drehwinkels oder eines zweidimensionalen Vektors oder in Form von Werten für eine Verschiebung entlang festgelegter Koordinatenachsen angegeben werden. Die Qualität eines optischen Codes, auch Codequalität genannt, kann beispielsweise ein numerisches Maß angeben. Für die Bewertung der Qualität kann beispielsweise ein Kontrastwert des optischen Codes oder eine Druckauflösung des optischen Codes oder eine Reflektanz eines optischen Codes oder eine Farbe des optischen Codes relevant sein. Für lineare Strichcodes ist beispielsweise eine Qualitätseinstufung in der Norm ISO/IEC 15416 festgelegt. Für 2D-Matrix-Codes ist beispielsweise eine Qualitätseinstufung in der Norm ISO/IEC 15415 festgelegt.
  • In einer Ausführungsform erfolgt das Erzeugen des Ausgabebildes durch ein erstes neuronales Netz, insbesondere ein tiefes, trainiertes, konvolutionelles neuronales Netz (CNN). Vorteilhafterweise kann das als ein CNN ausgebildete erste neuronale Netz Vorgänge im Rahmen eines Trainings lernen, die in klassischen Algorithmen einen manuellen Aufbau von Bildverarbeitungsketten erfordern. Dies kann zeitaufwendig und fehleranfällig sein und kann viel Expertenwissen erfordern. Ein CNN hingegen kann Bildverarbeitungsoperationen über einen Trainingsalgorithmus lernen, wodurch eine Unabhängigkeit von Expertenwissen ermöglicht werden kann.
  • In einer Ausführungsform umfasst das Bereitstellen des Eingabebildes ein Anpassen des Eingabebildes. Das Anpassen des Eingabebildes erfolgt derart, dass ein angepasstes Eingabebild eine mit einer Größe einer ersten Eingabeschicht des ersten neuronalen Netzes kompatible Größe aufweist. Vorteilhafterweise kann das erste neuronale Netz das angepasste Eingabebild verarbeiten.
  • In einer Ausführungsform erfolgt zum Bestimmen der Eigenschaften der optischen Codes ein Bestimmen von Positionen der optischen Codes. Das Bestimmen der Positionen der optischen Codes erfolgt dadurch, dass den Regionen des Ausgabebildes mit der ersten Intensität umgebende Rechtecke, Außenkonturen und/oder geometrische Schwerpunkte zugeordnet werden. Vorteilhafterweise ermöglichen die bestimmten Positionen der optischen Codes das Bestimmen weiterer Eigenschaften der optischen Codes.
  • In einer Ausführungsform erfolgt das Zuordnen der umgebenden Rechtecke, Außenkonturen und/oder geometrischen Schwerpunkten mittels Blobdetektion, morphologischen Operatoren und/oder einer Binarisierung des Ausgabebildes in Kombination mit einer Konturverfolgung.
  • In einer Ausführungsform umfasst das Bestimmen der Positionen der optischen Codes ein Transformieren der umgebenden Rechtecke, der Außenkonturen und/oder der geometrischen Schwerpunkte auf das Eingabebild. Vorteilhafterweise sind dadurch die Positionen der optischen Codes im Eingabebild und beispielsweise nicht nur im angepassten Eingabebild bekannt.
  • In einer Ausführungsform erfolgt zum Bestimmen der Eigenschaften der optischen Codes ein Extrahieren von Codebildern auf Grundlage der bestimmten Positionen der optischen Codes und ein Bestimmen von Lagen und/oder von Kategorien der optischen Codes auf Grundlage der Codebilder. Vorteilhafterweise ermöglicht das Bestimmen der Lagen und/oder der Kategorien der optischen Codes ein vereinfachtes Auslesen von in den optischen Codes gespeicherten Informationen. Ist beispielsweise die Kategorie bekannt, so kann ein passender Auslesealgorithmus zum Auslesen ausgewählt werden.
  • In einer Ausführungsform erfolgt das Bestimmen der Lagen und/oder der Kategorien der optischen Codes durch ein zweites neuronales Netz, insbesondere ein tiefes, trainiertes, konvolutionelles neuronales Netz. Vorteilhafterweise kann das zweite neuronale Netz das Bestimmen von Lagen und Kategorien der optischen Codes gleichzeitig im Rahmen eines Trainings lernen und im Rahmen einer Prädiktion gleichzeitig bestimmen.
  • In einer Ausführungsform umfasst das Extrahieren der Codebilder ein Anpassen der Codebilder. Das Anpassen der Codebilder erfolgt derart, dass angepasste Codebilder jeweils eine mit einer Größe einer zweiten Eingabeschicht des zweiten neuronalen Netzes kompatible Größe aufweisen. Vorteilhafterweise kann das zweite neuronale Netz die angepassten Codebilder verarbeiten.
  • In einer Ausführungsform umfasst das Bestimmen der Lagen und/oder der Kategorien der optischen Codes ein Extrahieren allgemeiner Merkmale durch ein drittes neuronales Netz, insbesondere durch einen Autoencoder, und eine Regression und/oder eine Klassifikation. Vorteilhafterweise wird dadurch eine aufwendige Berechnung geeigneter Merkmale zur Repräsentation von optischen Codes von der eigentlichen Aufgabe des Bestimmens der Kategorie getrennt. Damit ist es beispielsweise möglich, ohne ein aufwendiges Training einen Klassifikator auszutauschen, beispielsweise um speziellen Kundenanforderungen gerecht zu werden oder eine neue Kategorie hinzuzufügen.
  • In einer Ausführungsform wird eine Ausprägung eines extrahierten allgemeinen Merkmals von einem Neuheitserkenner auf Neuheit überprüft. Ein Vorteil des Neuheitserkenners besteht darin, dass dieser anzeigen kann, ob eine Ausprägung des extrahierten allgemeinen Merkmals einem gelernten Spektrum entspricht oder außerhalb des gelernten Spektrums liegt. Liegt die Ausprägung eines extrahierten allgemeinen Merkmals außerhalb des gelernten Spektrums, kann eine damit verbundene Klassifikation und/oder Regression verworfen werden, da darüber keine sicheren Aussagen möglich sind.
  • In einer Ausführungsform erfolgt zum Bestimmen der Eigenschaften der optischen Codes ein Auslesen von in den optischen Codes gespeicherten Informationen.
  • In einer Ausführungsform erfolgt das Bestimmen einer Eigenschaft eines einzelnen optischen Codes und/oder das Bestimmen mehrerer Eigenschaften eines einzelnen optischen Codes und/oder das Bestimmen einer Eigenschaft mehrerer optischer Codes und/oder das Bestimmen mehrerer Eigenschaften mehrerer optischer Codes parallel. Vorteilhafterweise kann auf diese Weise eine Mehrzahl von Eigenschaften einer Mehrzahl von optischen Codes gleichzeitig bestimmt werden.
  • Ein Automatisierungssystem umfasst eine Steuerung, ein Transportsystem und eine Erfassungseinrichtung. Das Transportsystem und die Erfassungseinrichtung sind jeweils über einen Feldbus mit der Steuerung verbunden und mittels der Steuerung ansteuerbar. Das Transportsystem ist dazu ausgebildet, mit optischen Codes gekennzeichnete Werkstücke durch einen Erfassungsbereich der Erfassungseinrichtung zu transportieren. Die Erfassungseinrichtung ist dazu ausgebildet, Eingabebilder der mit den optischen Codes gekennzeichneten Werkstücke zu generieren und der Steuerung bereitzustellen. Die Steuerung ist dazu ausgebildet, anhand der von der Erfassungseinrichtung bereitgestellten Eingabebilder das Verfahren zum Erfassen optischer Codes durchzuführen.
  • In einer Ausführungsform des Automatisierungssystems ist die Steuerung dazu ausgebildet, das Verfahren innerhalb eines einzigen Steuerungszyklus des Automatisierungssystems abzuschließen.
  • In einer Ausführungsform weist die Steuerung eine Prozessoreinheit und einen Speicher auf. Ein erstes neuronales Netz und/oder ein zweites neuronales Netz und/oder ein drittes neuronales Netz sind in dem Speicher hinterlegt. Die Steuerung ist dazu ausgebildet, mithilfe der Prozessoreinheit und des im Speicher hinterlegten ersten neuronalen Netzes und/oder des zweiten neuronalen Netzes und/oder des dritten neuronalen Netzes das Verfahren zum Erfassen optischer Codes durchzuführen.
  • Ein Computerprogrammprodukt umfasst Befehle, die bei der Ausführung des Computerprogramms durch einen Computer diesen dazu veranlassen, das Verfahren zum Erfassen optischen Codes auszuführen.
  • Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, sind klarer und deutlicher verständlich im Zusammenhang mit der folgenden Beschreibung der Ausführungsbeispiele, die im Zusammenhang mit den Zeichnungen näher erläutert werden. Dabei zeigen in jeweils schematischer Darstellung:
    • 1: Verfahrensschritte eines Verfahrens zum Erfassen optischer Codes;
    • 2: einen Ablauf für eine Generierung eines Trainingsdatenpaares bestehend aus einem Trainingseingabebild und einem Trainingsausgabebild;
    • 3: ein Bestimmen einer Lage und/oder einer Kategorie eines ersten optischen Codes;
    • 4: einen prinzipiellen Ablauf für eine Generierung eines Trainingsbeispiels zum Bestimmen der Lage und/oder der Kategorie eines optischen Codes;
    • 5: einen Trainingsprozess eines neuronalen Netzes;
    • 6: einen alternativen Ansatz zum Bestimmen der Lagen und/oder der Kategorien optischer Codes;
    • 7: ein exemplarisches erstes Automatisierungssystem zum Bearbeiten von Werkstücken;
    • 8: ein exemplarisches zweites Automatisierungssystem zum Sortieren von Werkstücken.
  • 1 zeigt schematisch Verfahrensschritte eines Verfahrens zum Erfassen optischer Codes 101, 102.
  • Im Rahmen eines ersten Verfahrensschritts wird ein Eingabebild 103 bereitgestellt. Das Eingabebild 103 zeigt beispielhaft ein Werkstück 104. Das Werkstück 104 kann ein beliebiges Produkt sein. Das Werkstück 104 weist in der Darstellung des Eingabebildes 103 beispielhaft einen kreisscheibenförmigen Querschnitt auf. Das Werkstück 104 wurde beispielhaft mit einem ersten optischen Code 101 und mit einem zweiten optischen Code 102 gekennzeichnet. Das Werkstück 104 kann jedoch mit einer beliebigen Anzahl optischer Codes 101, 102 gekennzeichnet worden sein.
  • Den optischen Codes 101, 102 kann jeweils eine Kategorie zugeordnet werden. Der erste optische Code 101 ist beispielhaft als ein Matrix-Code ausgebildet. Beispielhaft ist der erste optische Code 101 ein QR-Code. Der erste optische Code 101 kann jedoch auch ein optischer Code einer anderen Kategorie sein. Der erste optische Code 101 ist derart angeordnet worden, dass er im Eingabebild 103 rotiert erscheint. D.h., dass die Kanten des ersten optischen Codes 101 schräg zu den Kanten des Eingabebildes 103 verlaufend ausgebildet sind.
  • Der zweite optische Code 102 ist beispielhaft als ein eindimensionaler Barcode ausgebildet, d.h. dass der zweite optische Code 102 Informationen nur in einer Richtung orthogonal zu seinen Streifen codiert. Beispielhaft ist der zweite optische Code 102 ein EAN-13 Code. Der zweite optische Code 102 kann jedoch auch ein optischer Code einer anderen Kategorie sein. Der zweite optische Code 102 wurde im Gegensatz zum ersten optischen Code 101 beispielhaft derart angeordnet, dass die Kanten des zweiten optischen Codes 102 parallel zu den Kanten des Eingabebildes 103 ausgebildet sind.
  • Neben dem ersten und dem zweiten optischen Code 101, 102, weist das Werkstück 104 zusätzliche Elemente auf, die das Erfassen der optischen Codes 101, 102 erschweren können, da sie Ähnlichkeiten mit den optischen Codes 101, 102 aufweisen können. Beispielhaft weist das Werkstück 104 Klartextinformation 105, ein Logo 106, erste Unebenheiten 107, ein Beleuchtungsartefakt 108 und ein Reflexionsartefakt 109 auf. Die Klartextinformation 105 und das Logo 106 können beispielsweise ähnliche Intensitätsmuster wie ein optischer Code 101, 102 aufweisen. Die ersten Unebenheiten 107 können beispielsweise Kratzer sein und ein ähnliches Intensitätsmuster wie der als EAN-13 Code ausgebildete zweite optische Code 102 aufweisen. Das Beleuchtungsartefakt 108 wurde im Rahmen einer Aufnahme des Eingabebildes 103 und einer damit einhergehenden optionalen Beleuchtung des Werkstücks 104 aufgenommen. Das Beleuchtungsartefakt 108 überlappt, wie in 1 dargestellt, mit dem ersten optischen Code 101 und verändert ein Erscheinungsbild des ersten optischen Codes 101. Das Reflexionsartefakt 109 ist beispielhaft als Spiegelbild des Werkstücks 104 ausgebildet und wurde ebenfalls im Rahmen der Aufnahme des Eingabebildes 103 aufgenommen.
  • Das Eingabebild 103 zeigt neben dem Werkstück 104 zweite Unebenheiten 110 und Verunreinigungen 111, die in einer Umgebung 112 des Werkstücks 104 ausgebildet sind und im Rahmen der Aufnahme des Eingabebildes 103 aufgenommen wurden. Auch die innerhalb der Umgebung 112 des Werkstücks 104 befindlichen Elemente können Ähnlichkeiten mit den optischen Codes 101, 102 aufweisen und das Erfassen der optischen Codes 101, 102 erschweren.
  • Das Bereitstellen des Eingabebildes 103 kann eine optionale Vorverarbeitung des Eingabebildes 103 umfassen. Die Vorverarbeitung kann beispielsweise ein Debayering, eine Filterung von Bildpunkten, eine Shading-Korrektur, eine Farbraumkonvertierung, eine Kontrastverbesserung, eine Intensitätsnormierung oder eine andere bildumwandelnde Operation umfassen.
  • Das Bereitstellen des Eingabebildes 103 kann ein Anpassen des Eingabebildes 103 umfassen. Das Anpassen des Eingabebildes 103 dient dem Zweck, dass ein angepasstes Eingabebild 113 eine für eine weitere Verarbeitung zweckdienliche Größe aufweist. Das Anpassen des Eingabebildes 103 kann beispielsweise durch ein Skalieren des Eingabebildes 103 erfolgen, wie dies in 1 beispielhaft dargestellt ist, wobei das Eingabebild 103 verkleinert wurde, um das angepasste Eingabebild 113 zu erzeugen. Das Anpassen des Eingabebildes 103 kann aber auch durch ein Unterteilen des Eingabebildes 103 in angepasste, disjunkte oder überlappende Eingabeteilbilder erfolgen. Die optionale Vorverarbeitung kann auch nach dem Anpassen des Eingabebildes 103 erfolgen. Das Anpassen des Eingabebildes 103 kann jedoch auch entfallen.
  • Das Anpassen des Eingabebildes 103 kann auch derart erfolgen, dass das angepasste Eingabebild 113 eine mit einer Größe einer ersten Eingabeschicht eines ersten neuronalen Netzes 114 kompatible Größe aufweist. Beispielsweise kann eine Anzahl von Bildpunkten des angepassten Eingabebildes 113, mit einer Anzahl von Neuronen der ersten Eingabeschicht des ersten neuronalen Netzes 114 übereinstimmen. Hierzu kann das Anpassen des Eingabebildes 103 ebenfalls durch Skalieren oder Unterteilen des Eingabebildes 103 erfolgen.
  • Im Rahmen eines zweiten Verfahrensschritts zum Erfassen der optischen Codes 101, 102 im Eingabebild 103 wird ein Ausgabebild 115 auf Grundlage des Eingabebildes 103 oder auf Grundlage des angepassten Eingabebildes 113 erzeugt. Das Erzeugen des Ausgabebildes 115 erfolgt durch eine erste Abbildung.
  • Im Rahmen des Erzeugens des Ausgabebildes 115, d.h. im Rahmen der ersten Abbildung, wird Bildpunkten eines einen Teil eines optischen Codes 101, 102 aufweisenden Bereichs des Eingabebildes 103 bzw. des angepassten Eingabebildes 113 eine erste Intensität 116 im Ausgabebild 115 zugeordnet. Die erste Intensität 116 kann beispielsweise eine maximale Intensität sein, d.h. die Bildpunkte des Ausgabebildes 115 mit der ersten Intensität 116 können beispielsweise weiß sein. Im Rahmen des Erzeugens des Ausgabebildes 115, d.h. im Rahmen der ersten Abbildung, wird außerdem Bildpunkten eines keinen Teil eines optischen Codes 101, 102 aufweisenden Bereichs des Eingabebildes 103 bzw. des angepassten Eingabebildes 113 eine zweite Intensität 117 im Ausgabebild 115 zugeordnet. Die zweite Intensität 117 kann beispielsweise eine minimale Intensität sein, d.h. die Bildpunkte des Ausgabebildes 115 mit der zweiten Intensität 117 können beispielsweise schwarz sein. Alternativ kann das Ausgabebild 115 nur Bildpunkte mit der ersten Intensität 116 für jene Bildpunkte des Eingabebildes 103 bzw. des angepassten Eingabebildes 113, die zu einem Referenzmuster des ersten und/oder des zweiten optischen Codes 101, 102 gehören, aufweisen. Ein Referenzmuster kann beispielsweise als ein Finder-Pattern, als ein Timing-Pattern oder als ein Alignement-Pattern ausgebildet sein.
  • Die erste Abbildung kann eine Approximation sein, d.h. es können neben der ersten Intensität 116 und der zweiten Intensität 117 auch weitere Intensitäten im Ausgabebild 115 vorliegen. Je heller ein Bildpunkt des Ausgabebildes 115 ist, umso sicherer ist eine Zuordnung zu einem optischen Code 101, 102. Die weiteren Intensitäten können beispielsweise Intensitäten zwischen der ersten Intensität 116 und der zweiten Intensität 117 aufweisen, d.h. Bildpunkte des Ausgabebildes 115 mit weiteren Intensitäten können beispielsweise verschiedene Abstufungen von Grautönen aufweisen. Die weiteren Intensitäten können aber auch Intensitäten aufweisen, die größer oder kleiner als die erste bzw. die zweite Intensität 116, 117 sind. Die Tatsache, dass die erste Abbildung eine Approximation sein kann, bedeutet, dass die die erste Intensität 116 aufweisenden Regionen des Ausgabebildes 115 nicht notwendigerweise exakt mit den die optischen Codes 101, 102 aufweisenden Bereichen des Eingabebildes 103 bzw. des angepassten Eingabebildes 113 übereinstimmen müssen. Es kann beispielsweise sein, dass lediglich einem Teil eines einen optischen Code 101, 102 aufweisenden Bereichs des Eingabebildes 103 bzw. des angepassten Eingabebildes 113 die erste Intensität 116 im Ausgabebild zugeordnet wird.
  • Die erste Abbildung kann beispielsweise durch das erste neuronale Netz 114 erfolgen. Das erste neuronale Netz 114 erzeugt auf Grundlage des Eingabebildes 103 oder des angepassten Eingabebildes 113 das Ausgabebild 115. Das erste neuronale Netz 114 kann insbesondere ein tiefes, konvolutionelles neuronales Netz (engl.: convolutional neural network, CNN) sein, das darauf trainiert wurde, ein Ausgabebild 115 zu erzeugen. Das erste neuronale Netz 114 kann insbesondere mit Extreme-Learning-Machines (ELMs) kombiniert werden, wobei eine solche Kombination als ELCNN bezeichnet wird. Alternativ kann das erste neuronale Netz als fully convolutional network (FCN) ausgeprägt sein.
  • FCNs stellen einen Spezialfall von CNNs dar, bei dem Verarbeitungsfunktionen aller Netzwerkschichten auf typische Operatoren von CNNs, insbesondere Faltung und Pooling für lokale statistische Auswertungen, beschränkt sind. FCNs ermöglichen wie ELCNNs eine Abbildung von Bildern auf Bilder. Mittels eines mehrstufigen Encoder-Netzwerks können zunächst globale strukturelle Informationen des Eingabebildes 103 extrahiert werden. Mittels eines Decoder-Netzwerks und direkter Verbindungen von Schichten des Encoder-Netzwerks zu korrespondierenden Schichten des Decoder-Netzwerks kann eine Kombination von Lokalisierungs- und Strukturinformationen erhalten werden. Diese Informationen können zu einem Ausgabebild 115 zusammengefügt werden.
  • Im Rahmen eines dritten Verfahrensschritts erfolgt ein Bereitstellen von Regionen des Ausgabebildes 115 mit der ersten Intensität 116 zum Bestimmen der Eigenschaften der erfassten optischen Codes 101, 102.
  • Das Bestimmen der Eigenschaften der optischen Codes 101, 102 kann ein Bestimmen von Positionen der optischen Codes 101, 102 umfassen. Das Bestimmen der Positionen der optischen Codes 101, 102 erfolgt dadurch, dass den Regionen des Ausgabebildes 115 mit der ersten Intensität 116 umgebende Rechtecke 118, 119, Außenkonturen oder geometrische Schwerpunkte zugeordnet werden. In der beispielshaften Darstellung der 1 wurde dem ersten optischen Code 101 ein erstes umgebendes Rechteck 118 und dem zweiten optische Code 102 ein zweites umgebendes Rechteck 119 zugeordnet. Durch die Zuordnung der umgebenden Rechtecke 118, 119 wurden die Positionen der optischen Codes 101, 102 bestimmt, d.h. den durch das Erzeugen des Ausgabebildes 115 erfassten, d.h. lokalisierten optischen Codes 101, 102 werden eindeutige Positionen zugeordnet. Die Positionen der optischen Codes 101, 102 ergeben sich aus Positionen der umgebenden Rechtecke 118, 119, der Außenkonturen und/oder der geometrischen Schwerpunkte.
  • Gegenüber einem geometrischen Schwerpunkt, der einer Region des Ausgabebildes 115 mit der ersten Intensität 116 zugeordnet wird, bieten ein umgebendes Rechteck 118, 119 und eine Außenkontur den Vorteil, dass eine Ausdehnung eines optischen Codes 101, 102 beim Bestimmen seiner Positionen berücksichtigt werden kann. Weicht eine Region des Ausgabebildes 115 mit der ersten Intensität 116 bzw. eine zugehörige Außenkontur von einer rechteckigen Form stark ab, so kann diese Region in ein kleinstes umgebendes Rechteck eingebettet werden.
  • Das Bestimmen der Positionen der optischen Codes 101, 102 kann beispielsweise mittels Blobdetektion, morphologischen Operatoren und/oder einer Binarisierung des Ausgabebildes 115 in Kombination mit einer Konturverfolgung erfolgen.
  • Das Bestimmen der Positionen der optischen Codes 101, 102 kann ein Transformieren der umgebenden Rechtecke 118, 119, der Außenkonturen und/oder der geometrischen Schwerpunkte auf das Eingabebild 103 umfassen. Dies kann beispielsweise dann zweckdienlich sein, wenn ein Anpassen des Eingabebildes 103 zum Erzeugen des Ausgabebildes 115 erfolgt ist. In diesem Fall sind die bestimmten Positionen auf das anhand des angepassten Eingabebildes 113 erzeugte Ausgabebild 115 bezogen, sodass das Ausgabebild 115 und das Eingabebild 103 unterschiedliche Größen aufweisen. Das Transformieren der bestimmten Positionen kann transformierte Positionen der optischen Codes 101, 102 liefern, die auf ein transformiertes Ausgabebild 120 bezogen sind, das eine identische Größe zum Eingabebild 103 aufweist. Eine Transformation kann auch dann zweckdienlich sein, wenn die Größe der ersten Eingabeschicht des ersten neuronalen Netzes 114 von einer Größe einer ersten Ausgabeschicht des ersten neuronalen Netzes 114 abweicht. In diesem Fall können die bestimmten Positionen im Ausgabebild 115 von den tatsächlichen Positionen im Eingabebild 103 abweichen, obwohl kein Anpassen des Eingabebildes 103 erfolgt ist.
  • Das Transformieren ist in 1 beispielhaft anhand des transformierten Ausgabebildes 120 dargestellt, das eine mit der Größe des Eingabebildes 103 identische Größe aufweist. Das transformierte Ausgabebild 120 enthält transformierte umgebende Rechtecke 121, 122. Ein erstes transformiertes umgebendes Rechteck 121 liefert die Position des ersten optischen Codes 101 im Eingabebild 103. Ein zweites transformiertes umgebendes Rechteck 122 liefert die Position des zweiten optischen Codes 102 im Eingabebild 103.
  • Wie bereits erwähnt kann die erste Abbildung, d.h. das Erzeugen des Ausgabebildes 115, beispielsweise durch das erste neuronale Netz 114 erfolgen. Dazu muss das erste neuronale Netz 114 darauf trainiert werden, die erste Abbildung durchzuführen.
  • Um ein neuronales Netz trainieren zu können, wird eine sehr hohe Anzahl an Trainingsdaten benötigt. Da es sich bei optischen Codes um künstliche Strukturen handelt, können diese in beliebiger Menge künstlich erstellt werden. Auf das Sammeln und Annotieren großer Datensätze kann daher verzichtet werden.
  • Ein künstlich generiertes Trainingsdatenpaar umfasst ein Trainingseingabebild und ein dazu korrespondierendes Trainingsausgabebild. Das Trainingsausgabebild enthält dabei Bildpunkte mit der ersten Intensität 116, für jeden Bildpunkt im Trainingseingabebild, der zu einem optischen Code gehört. Alternativ dazu können die Trainingsausgabebilder auch nur Bildpunkte mit der ersten Intensität für jeden Bildpunkt im Trainingseingabebild aufweisen, der zu einem Referenzmuster eines optischen Codes gehört. Allen anderen Bildpunkten wird die zweite Intensität 117 zugeordnet. Befinden sich mehrere optische Codes in einem Trainingseingabebild, enthält das korrespondierende Trainingsausgabebild mehrere Regionen mit der ersten Intensität. Nachdem die erste Abbildung von dem ersten neuronalen Netz 114 hinreichend gut gelernt wurde, kann das erste neuronale Netz 114 auf Grundlage von Eingabebildern 103 die korrespondierenden Ausgabebilder 115 selbst erzeugen.
  • Aufgrund der extrem hohen Anzahl zu lernender Parameter in einem CNN ist eine sehr hohe Anzahl an Trainingsbeispielen erforderlich. Diese können erzeugt werden, indem Trainingseingabebilder, die verschiedene optische Codes an unterschiedlichen Positionen, in unterschiedlichen Orientierungen und Größen zeigen, gemeinsam mit entsprechenden Trainingsausgabebildern generiert werden. Generiert man beispielsweise Trainingsbeispiele für fünf einzelne optische Codes an jeweils zehn unterschiedlichen horizontalen Positionen, zehn unterschiedlichen vertikalen Positionen, mit 36 Orientierungen und zehn unterschiedlichen Größen erhält man 180.000 Trainingsbeispiele. Es kann auch sinnvoll sein, weitere Trainingsbeispiele mit mehreren optischen Codes oder ohne optische Codes zu verwenden.
  • 2 zeigt schematisch einen Ablauf für die Generierung eines einzelnen Trainingsbeispiels, d.h. eines Trainingsdatenpaares bestehend aus einem Trainingseingabebild und einem Trainingsausgabebild.
  • Im Rahmen eines ersten Schritts 201 erfolgt eine Auswahl eines Hintergrundbildes aus einer Datenbank. Im Rahmen eines zweiten Schritts 202 erfolgt ein Erstellen eines vorläufigen Ausgabebildes mit einer zweiten Intensität, z.B. schwarz, wobei das vorläufige Ausgabebild ausschließlich die zweite Intensität aufweist. Während das Hintergrundbild eine beliebige Größe besitzen kann, wird das vorläufige Ausgabebild mit einer mit der ersten Ausgabeschicht des ersten neuronalen Netzes 114 kompatiblen Größe erstellt.
  • Im Rahmen eines dritten Schritts 203 erfolgen eine Auswahl und ein Markieren von Regionen im Hintergrundbild, in denen optische Codes auftreten dürfen. Beispielsweise können die optischen Codes 101, 102 in dem in 1 gezeigten Eingabebild 103 nur in Regionen auftreten, in denen das Werkstück 104 dargestellt ist, da die optischen Codes 101, 102 nicht außerhalb des Werkstücks 104 angeordnet sein können. Die Auswahl und das Markieren der Regionen des Hintergrundbildes, in denen optische Codes auftreten dürfen, können beispielsweise mittels eines Maskenbildes erfolgen. Das Maskenbild kann mit dem Hintergrundbild überlagert werden, um die Regionen des Hintergrundbildes zu markieren, in denen optische Codes auftreten dürfen. Beispielsweise kann das Maskenbild für ein kreisscheibenförmiges Werkstück 104, wie es in 1 gezeigt ist, eine Region aufweisen, die ebenfalls kreisscheibenförmig ausgebildet ist. Optische Codes können dann nur innerhalb einer entsprechenden kreisscheibenförmigen Region des Hintergrundbildes auftreten.
  • Im Rahmen eines vierten Schritts 204 wird entschieden, ob ein optischer Code in das Hintergrundbild eingezeichnet werden soll. Soll ein optischer Code in das Hintergrundbild eingezeichnet werden, erfolgt ein dem vierten Schritt 204 nachfolgender fünfter Schritt 205. Soll kein optischer Code in das Hintergrundbild eingezeichnet werden, erfolgt ein dem vierten Schritt 204 nachfolgender zwölfter Schritt 212. Im Folgenden werden zunächst der fünfte Schritt 205 und dem fünften Schritt 205 nachfolgende Schritte erläutert.
  • Im Rahmen des fünften Schritts 205 erfolgt ein Erstellen eines optischen Codes in einer Normallage, d.h. beispielsweise, dass der optische Code zentriert und mit einem Drehwinkel von 0° erstellt wird. Der optische Code kann auch mit einer festgelegten Größe und mit einem vorgegebenen Farbschema, beispielsweise in schwarz und weiß, erstellt werden.
  • Im Rahmen eines sechsten Schritts 206 erfolgt ein Bestimmen einer geometrischen Transformation, beispielsweise einer affinen oder perspektivischen geometrischen Transformation, die den erstellten optischen Code in eine zulässige, d.h. mittels des Maskenbildes markierte, Region des Hintergrundbildes abbildet.
  • Im Rahmen eines siebten Schritts 207 erfolgt ein Bestimmen einer Bildpunkttransformation des optischen Codes. Die Bildpunkttransformation kann beispielsweise ein Invertieren oder ein Anpassen der Farben des optischen Codes umfassen.
  • Im Rahmen eines achten Schritts 208 erfolgt ein Generieren von lokalen Störungen, wobei beispielsweise Rauschen, Kratzer oder defekte Bereiche des optischen Codes generiert werden.
  • Im Rahmen eines neunten Schritts 209 erfolgt ein Einzeichnen eines mittels der geometrischen Transformation, der Bildpunkttransformation und der generierten lokalen Störungen transformierten optischen Codes in die zulässige Region des Hintergrundbildes. Das Einzeichnen kann beispielsweise unter Verwendung von alpha-Blending erfolgen.
  • Im Rahmen eines zehnten Schritts 210 erfolgt ein Erzeugen des Trainingsausgabebildes durch ein Markieren von zu dem transformierten optischen Code entsprechenden Bildregionen im vorläufigen Ausgabebild mit einer ersten Intensität. Beispielsweise können die Bildregionen im vorläufigen Ausgabebild weiß markiert werden. Zusätzlich kann durch eine Farbinformation im vorläufigen Ausgabebild die Kategorie des optischen Codes hinterlegt werden.
  • Im Rahmen eines optionalen elften Schritts 211 erfolgt ein Anpassen der zulässigen Regionen des Hintergrundbildes, um Überlagerungen von optischen Codes zu vermeiden. Beispielsweise kann das Anpassen derart erfolgen, dass eine zu dem transformierten optischen Code entsprechende Region innerhalb des Maskenbildes markiert wird. Der elfte Schritt 211 kann auch vor dem zehnten Schritt 210 erfolgen.
  • Dem zehnten Schritt 210 oder dem elften Schritt 211 nachfolgend kann der vierte Schritt 204 erneut erfolgen, d.h. es kann entschieden werden, ob ein weiterer optischer Code in das Hintergrundbild eingezeichnet werden soll. Ist dies nicht der Fall erfolgt im Rahmen des zwölften Schritts 212 ein Hinzufügen globaler Störungen, wie beispielsweise Kratzer, die sich über größere Bildbereiche erstrecken können, Rauschen, Verschmutzungen oder codeähnliche Strukturen, wodurch das Trainingseingabebild erzeugt wird. Der zwölfte Schritt 212 kann auch nach dem vierten Schritt 204 erfolgen, wenn im Rahmen des vierten Schritts 204 kein optischer Code in das Hintergrundbild eingezeichnet werden soll.
  • Im Rahmen eines dreizehnten Schritts 213 erfolgt ein Abspeichern eines oder mehrerer Trainingsdatenpaare. Dabei werden zunächst aus dem Hintergrundbild unter Verwendung der zum Anpassen an die erste Eingabeschicht des ersten neuronalen Netzes 114 benötigten Transformation ein oder mehrere Trainingseingabebilder erzeugt. Dies kann auch ein Aufteilen des Hintergrundbildes in disjunkte oder überlappende Teilbilder umfassen. Weiterhin werden aus dem vorläufigen Ausgabebild mittels derselben Transformation sowie gegebenenfalls einer zusätzlichen Transformation, die die unterschiedliche Größe der Ein- und Ausgabeschichten des CNN kompensiert, ein oder mehrere Trainingsausgabebilder erzeugt. Korrespondierende Paare bestehend aus jeweils einem Trainingseingabebild und einem dazugehörigen Trainingsausgabebild werden als Trainingsdatenpaare bereitgestellt und abgespeichert.
  • Wichtig bei der Generierung von Trainingsdatenpaaren ist, dass der Datensatz möglichst repräsentativ ist, d.h. dass er ausreichend viele Beispiele für alle relevanten Ausprägungen aller Freiheitsgrade der optischen Codes enthält. Ansonsten kann ein CNN in seiner Leistungsfähigkeit für nicht vorhandene oder unterrepräsentierte Transformationen und Störungen stark eingeschränkt sein. Weiter sollten ebenfalls alternative Bildstrukturen, wie lesbarer Text, Seriennummern o.Ä. in dem Trainingsdatensatz enthalten sein und falls möglich mit generiert werden. Auch die Verwendung asiatischer Schriftzeichen kann sinnvoll sein, da diese aufgrund ihrer Schreibweise in annähernd quadratischer Form in Bezug auf Form und Kontrast sehr starke Ähnlichkeiten zu Matrixcodes aufweisen können.
  • Durch eine geschickte Verteilung der optischen Codes auf die unterschiedlichen Ausprägungen der Freiheitsgrade kann die Anzahl der zu generierenden Trainingsdaten reduziert werden. Es ist z.B. nicht notwendig, jeden optischen Code an jeder Position in allen Lagen und allen Skalierungen zu generieren. Hier könnte z.B. ein optischer Code oder mehrere optische Codes für je eine Kombination aus Position, Lage und Skalierung zufällig ausgewählt werden.
  • Die Generierung der Trainingsdaten kann unabhängig von einem Trainingsprozess erfolgen. Die Trainingsdaten können beispielsweise in einem Dateisystem abgelegt und während des Trainings des ersten neuronalen Netzes 114 geladen werden. Dieser Ansatz ist jedoch sehr langsam und erfordert viel Speichplatz auf einem Speichermedium. Vorteilhafter ist es, die Trainingsdaten im Trainingsprozess bei Bedarf zu generieren. Dadurch werden langsame Zugriffe auf das Dateisystem vermieden. Neben der Generierung der Trainingsdaten auf einer Prozessoreinheit (englisch: central processing unit, CPU) ist es auch möglich, sie auf einer Grafikprozessoreinheit (englisch: graphics processing unit, GPU) zu berechnen. Dies erhöht die Effizienz, insbesondere dann, wenn das eigentliche Training auch mit Hilfe von einer GPU realisiert wird, da dann die einzelnen Bilder in einem Speicher der GPU vorliegen und nicht über eine vergleichsweise langsame Verbindung zwischen der CPU und der GPU in den Speicher der GPU kopiert werden müssen.
  • Um die erste Abbildung anhand von Trainingsdaten lernen zu können, benötigt das erste neuronale Netz 114 eine geeignete Struktur. Es kann beispielsweise ein speziell angepasstes CNN sein. Beispielsweise ist ein morphologisches CNN (MCNN) für die Erkennung von Codestrukturen besonders geeignet. CNNs basieren auf einer Faltungs- oder Korrelationsoperation. Entsprechende Filter der CNNs stellen jedoch nur einen möglichen Ansatz zur Bildverarbeitung dar. Beispiele für Filter sind Frequenzfilter (z.B. Tiefpassfilter), Kantenerkennung und Template-Matching. Um formbasierte Merkmale zu filtern oder zu detektieren, sind jedoch andere Operationen unter Umständen besser geeignet. Insbesondere sind morphologische Operationen geeignet. Im Gegensatz zur Faltung, sind entsprechende Funktionen dabei jedoch nicht differenzierbar. Deswegen existiert eine Erweiterung von CNNs, durch welche morphologische Operatoren approximiert und dadurch für das Training erforderliche Gradienten berechenbar gemacht werden. Solche erweiterte CNNs werden als MCNNs bezeichnet.
  • Es ist möglich, mehrere CNNs zum Bestimmen unterschiedlicher Kategorien optischer Codes miteinander zu kombinieren. So können beispielsweise ein erstes CNN für das Erfassen von Barcodes und ein zweites CNN für das Erfassen von Matrixcodes ausgebildet sein. Dabei können beide CNNs auch als ein einziges, kombiniertes CNN realisiert sein, das Elemente des ersten und des zweiten CNN als Teilkomponenten umfasst. Ausgabebilder 115 können dabei entweder separat bereitgestellt oder in einem mehrkanaligen Ausgabebild 115 zusammengefasst werden. Dies ermöglicht schon eine erste, grobe Bestimmung einer Kategorie eines optischen Codes 101, 102. Mit einer groben Bestimmung der Kategorie wird eine Bestimmung bezeichnet, die keine Kategorie als solche als Ergebnis liefert.
  • Das Bestimmen der Eigenschaften der optischen Codes 101, 102 kann ein Extrahieren von Codebildern auf Grundlage der bestimmten Positionen der optischen Codes 101, 102 und ein Bestimmen von Lagen und/oder von Kategorien der optischen Codes 101, 102 auf Grundlage der Codebilder umfassen. Das Extrahieren von Codebildern und das Bestimmen der Lagen und/oder der Kategorien optischer Codes 101, 102 können nach dem Erfassen und nach dem Bestimmen der Positionen der optischen Codes 101, 102 erfolgen.
  • 3 zeigt schematisch das Bestimmen einer Lage und/oder einer Kategorie anhand des ersten optischen Codes 101 auf Grundlage eines extrahierten Codebildes 301 des ersten optischen Codes 101. Zur Erläuterung wurde der erste Code 101 beispielhaft ausgewählt. Die nachstehenden Erläuterungen zur 3 gelten jedoch auch für den zweiten optischen Code 102 oder für beliebige andere optische Codes.
  • Das Bestimmen der Lage und/oder der Kategorie des ersten optischen Codes 101 erfolgt nach dem Erfassen des ersten optischen Codes 101 und nach dem Bestimmen seiner Position durch Zuordnen des ersten umgebenden Rechtecks 118 bzw. durch Bestimmen des ersten transformierten umgebenden Rechtecks 121 gemäß der Darstellung der 1.
  • Die Lage des ersten optischen Codes 101 kann beispielsweise eine Rotation, eine Scherung, eine Spiegelung und/oder eine perspektivische Verzerrung umfassen. In der beispielhaften Darstellung der 3 liegt der erste optische Code 101 rotiert vor. Im Rahmen des Extrahierens des ersten optischen Codes 101 wurde das Codebild 301 des ersten optische Codes 101 erzeugt. Das Codebild 301 wurde durch Extrahieren eines rechteckförmigen Bereichs des Eingabebildes 103 erzeugt. Der rechteckförmige Bereich umfasst den ersten optischen Code 101 und Kanten des rechteckförmigen Bereichs sind parallel zu den Kanten des Eingabebildes 103 verlaufend ausgebildet. Der rechteckförmige Bereich zum Extrahieren des Codebildes 301 kann beispielsweise durch ein weiteres umgebendes Rechteck, das das erste umgebende Rechteck 118 bzw. das erste transformierte umgebende Rechteck 121 umfasst, festgelegt werden.
  • Das Bestimmen der Lage und/oder der Kategorie des ersten optischen Codes 101 kann durch ein zweites neuronales Netz 302, insbesondere ein tiefes, trainiertes, konvolutionelles neuronales Netz, erfolgen. Hierzu kann das Extrahieren des Codebildes 301 ein Anpassen des Codebildes 301 umfassen. Das Anpassen des Codebildes 301 kann derart erfolgt, dass ein angepasstes Codebild 303 eine mit einer Größe einer zweiten Eingabeschicht des zweiten neuronalen Netzes 302 kompatible Größe aufweist.
  • Um die Lage des ersten optischen Codes 101 zu bestimmen, kann eine zweite Abbildung erfolgen. Im Rahmen der zweiten Abbildung wird dem Codebild 301 bzw. dem angepassten Codebild 303 ein Lagevektor 304 zugeordnet, der eine Lageinformation des ersten optischen Codes 101 enthält. Dabei handelt es sich also um ein Regressionsproblem. Dies muss von dem zweiten neuronalen Netz 302 im Rahmen eines Trainings gelernt werden.
  • Algorithmen zum Auslesen von optischen Codes können sich je nach Kategorie der optischen Codes sehr stark unterscheiden. Deswegen muss die Kategorie eines optischen Codes bestimmt werden, um einen jeweils passenden Auslesealgorithmus auswählen zu können. D.h., es muss ein Klassifikationsproblem gelöst werden, was durch eine dritte Abbildung erfolgen kann. Im Rahmen der dritten Abbildung wird dem Codebild 301 bzw. dem angepassten Codebild 303 ein Kategorielabel 305 zugeordnet. Das Kategorielabel 305 umfasst eine Information hinsichtlich der Kategorie des optischen Codes. Dies kann von dem zweiten neuronalen Netz 302 im Rahmen eines Trainings gelernt werden.
  • Nachdem die Position des ersten optischen Codes 101, dessen Lagevektor 304 und dessen Kategorie bestimmt wurden, kann das Bestimmen der Eigenschaften des ersten optischen Codes 101 ein Auslesen von in dem ersten optischen Code 101 gespeicherten Informationen mittels eines geeigneten Auslesealgorithmus 306 erfolgen.
  • Das Bestimmen einer Eigenschaft eines einzelnen optischen Codes 101, 102 und/oder das Bestimmen mehrerer Eigenschaften eines einzelnen optischen Codes 101, 102 und/oder das Bestimmen einer Eigenschaft mehrerer optischer Codes 101, 102 und/oder das Bestimmen mehrerer Eigenschaften mehrerer optischer Codes 101, 102 kann parallel erfolgen. Beim Bestimmen einer Eigenschaft eines einzelnen optischen Codes 101, 102 kann eine Berechnung der Eigenschaft innerhalb eines neuronalen Netzes 114, 302 parallelisiert werden.
  • Ein für das Training zum Bestimmen einer Lage und/oder einer Kategorie verwendeter Datensatz muss repräsentative Trainingscodebilder bzw. angepasste Trainingscodebilder einzelner optischer Codes der zu unterscheidenden Kategorien aufweisen. Die Trainingscodebilder bzw. die angepassten Trainingscodebilder sollten wie beim Training zum Bestimmen der Positionen optischer Codes in unterschiedlichen Lagen und mit möglichen Störungen zeigen, sowie mit einem Kategorielabel 305 assoziiert sein, das die gezeigte Kategorie widerspiegelt. Die Position der optischen Codes muss beim Training zum Bestimmen einer Lage und/oder einer Kategorie im Gegensatz zum Training zum Bestimmen der Positionen optischer Codes nur in sehr begrenzten Umfang oder überhaupt nicht variiert werden, da die optischen Codes aufgrund der vorher erfolgten Positionsbestimmung passend positioniert und skaliert werden können.
  • Das Training zum Bestimmen der Lage und/oder der Kategorie kann mit identischen Trainingscodebildern bzw. angepassten Trainingscodebildern erfolgen, d.h., das zweite neuronale Netz 302 kann die zweite Abbildung und die dritte Abbildung gleichzeitig lernen. Zusätzlich zum Kategorielabel 305 werden auch Lageinformationen zu optischen Codes in Form von Lagevektoren für jedes Trainingscodebild bzw. angepasstes Trainingscodebild benötigt. Alternativ kann das zweite neuronale Netz 302 die zweite Abbildung und die dritte Abbildung getrennt bzw. separat lernen. Es ist auch möglich, dass das zweite neuronale Netz 302 die zweite Abbildung lernt, während die dritte Abbildung von einem anderen neuronalen Netz gelernt wird.
  • 4 zeigt schematisch einen prinzipiellen Ablauf für eine Generierung eines Trainingsbeispiels zum Bestimmen der Lage und/oder der Kategorie.
  • Im Rahmen eines vierzehnten Schritts 414, der identisch zum fünften Schritt 205 ist, wird ein optischer Code erstellt. Im Rahmen eines fünfzehnten Schritts 415 wird, ähnlich wie beim sechsten Schritt 206, eine weitere geometrische Transformation (z.B. affin oder perspektivisch) erstellt, die die Lage des optischen Codes verändert.
  • Im Rahmen eines sechzehnten Schritts 416 wird, ähnlich wie beim siebten Schritt 207, eine weitere Bildpunkttransformation bestimmt. Die weitere Bildpunkttransformation kann beispielsweise eine Invertierung oder eine Anpassung der Farben des optischen Codes umfassen.
  • Im Rahmen eines siebzehnten Schritts 417, der identisch zum achten Schritt 208 ist, werden weitere lokale Störungen generiert. Die weiteren lokalen Störungen können beispielsweise Rauschen, Kratzer oder defekte Bereiche des optischen Codes umfassen.
  • Im Rahmen eines achtzehnten Schritts 418 wird eine Abmessung und eine Lage des mittels der weiteren geometrischen Transformation transformierten optischen Codes bestimmt.
  • Im Rahmen eines neunzehnten Schritts 419 wird ein weiteres Hintergrundbild generiert, das den transformierten optischen Code vollständig aufnehmen kann.
  • Im Rahmen eines zwanzigsten Schritts 420, der ähnlich zum neunten Schritt 209 ist, erfolgt ein Einzeichnen des mittels der weiteren geometrischen Transformation, der weiteren Bildpunkttransformation und der weiteren generierten lokalen Störungen transformierten optischen Codes in das weitere Hintergrundbild. Das Einzeichnen kann beispielsweise unter Verwendung von alpha-Blending erfolgen.
  • Im Rahmen eines einundzwanzigsten Schritts 421, der identisch zum zwölften Schritt 212 ist, erfolgt ein Einzeichnen globaler Störungen, wie beispielsweise Kratzer, die sich über größere Bildbereiche erstrecken können, Verschmutzungen oder codeähnliche Strukturen.
  • Im Rahmen eines zweiundzwanzigsten Schritts 422 erfolgt zunächst ein Anpassen des in den vorangegangenen Schritten generierten Trainingscodebildes an die Größe der zweiten Eingabeschicht des zweiten neuronalen Netzes 302. Dies kann auch ein Aufteilen des weiteren Hintergrundbildes in disjunkte oder überlappende weitere Teilbilder umfassen. Anschließend erfolgt ein Abspeichern des angepassten Trainingscodebildes gemeinsam mit einem Kategorielabel und einem Lagevektor des im vierzehnten Schritt 414 erzeugten optischen Codes.
  • Es ist möglich, ein CNN zum Bestimmen von Eigenschaften optischer Codes für eine spezielle Kategorie eines optischen Codes, für mehrere Kategorien oder sogar für alternative Kennzeichnungsformen wie spezielle Logos oder Text (Schriftzeichen, Buchstaben und Ziffern) zu trainieren.
  • 5 zeigt schematisch einen Trainingsprozess 501 des ersten neuronalen Netzes 114 oder des zweiten neuronalen Netzes 302, wobei der Trainingsprozess 501 ein Basistraining 502 und ein optionales Nachtraining 503 umfasst.
  • Der Trainingsprozess 501 umfasst zunächst ein Auslesen oder Generieren von Trainingsdaten 504 bestehend aus Trainingseingabebildern und den dazugehörigen Trainingsausgabebildern oder Trainingscodebildern. Die ausgelesenen oder generierten Trainingsdaten 504 werden dem ersten oder dem zweiten neuronalen Netz 114, 302 für das Basistraining 502 bereitgestellt. Im Rahmen des Basistrainings 502 lernt das erste beziehungsweise das zweite neuronale Netz 114, 302 die erste Abbildung beziehungsweise die zweite Abbildung und/oder die dritte Abbildung. Das Basistraining 502 kann beispielsweise mittels Stochastic-Gradient-Descent erfolgen. Durch das Basistraining 502 wird ein vortrainiertes neuronales Netz 505 bereitgestellt. Das Basistraining 502 kann auch eine Optimierung von Hyper-Parametern, wie beispielsweise einer Lernrate und einer Netzwerkstruktur eines neuronalen Netzes 114, 302 umfassen. Weiterhin kann das Basistraining 502 eine abschließende Optimierung, z.B. in Form einer Reduktion der Struktur und Komplexität des ersten oder des zweiten neuronalen Netzes 114, 302 mittels Network-Pruning, umfassen.
  • Im Rahmen des Trainingsprozesses 501 kann zusätzlich das Nachtraining 503 erfolgen. Hierzu werden zunächst weitere Trainingsdaten 506 ausgelesen oder generiert. Die weiteren Trainingsdaten 506 können beispielsweise anwendungsbezogene Trainingsdaten sein, die zusätzliche, anwendungsspezifische Freiheitsgrade optischer Codes repräsentieren können. Beispielsweise können die weiteren Trainingsdaten 506 Trainingscodebilder von optischen Codes einer bisher nicht erlernten Kategorie umfassen.
  • Die ausgelesenen oder generierten weiteren Trainingsdaten 506 werden dem vortrainiertem neuronalen Netz 505 für das Nachtraining 503 bereitgestellt. Im Rahmen des Nachtrainings 503 kann das vortrainierte neuronale Netz 505 beispielsweise eine weitere Abbildung lernen. Das Nachtraining 503 kann beispielsweise mittels Stochastic-Gradient-Descent erfolgen. Durch das Nachtraining 503 wird ein nachtrainiertes neuronales Netz 507 bereitgestellt. Im Nachtraining 503 kann das vortrainierte neuronale Netz 505 durch ein zusätzliches, meist wesentlich weniger umfangreicheres, ergänzendes Training mit anwenderspezifischen Daten besser an einen jeweiligen Anwendungskontext angepasst werden. In einem vorteilhaften Nachtraining 503 wird ein Few-Shot Lernansatz verwendet. Wie das Basistraining 502 kann auch das Nachtraining 503 eine abschließende Optimierung z.B. in Form einer Reduktion der Struktur und Komplexität des neuronalen Netzes mittels Network-Pruning umfassen. Das Nachtraining 503 kann beliebig oft mit zusätzlichen Trainingsdaten erfolgen.
  • Das Bestimmen der Lagen und/oder der Kategorien der optischen Codes 101, 102 kann alternativ auch ein Extrahieren allgemeiner Merkmale durch ein drittes neuronales Netz 601 und eine Regression und/oder eine Klassifikation umfassen. Die Regression und/oder die Klassifikation können auch separat vom Extrahieren eines allgemeinen Merkmals erfolgen.
  • 6 zeigt schematisch diesen alternativen Ansatz zum Bestimmen der Lagen und/oder der Kategorien der optischen Codes 101, 102, wobei der Ansatz beispielhaft anhand des ersten optischen Codes 101 erläutert wird.
  • Das Codebild 301 des ersten optischen Codes 101 oder das angepasste Codebild 303 wird dem dritten neuronalen Netz 601 bereitgestellt. Das dritte neuronale Netz 601 wurde auf die allgemeine Merkmalsextraktion trainiert und führt diese durch. Das dritte neuronale Netz 601 kann beispielsweise ein auf einem tiefen CNN basierender Autoencoder sein. Im Rahmen der Extraktion allgemeiner Merkmale kann beispielsweise ein Satz formaler Merkmale bestimmt werden, der die Eingabedaten, d.h. das Codebild 301 oder das angepasste Codebild 303, am besten approximiert.
  • Autoencoder sind spezielle Varianten neuronaler Netze, die auch mit CNNs kombiniert werden können. Dabei lernt ein neuronales Netz, Eingabedaten in seine Ausgabeschicht zu transferieren. In inneren Schichten werden dabei kodierte Formen der Eingabedaten generiert und gespeichert, die nach dem Training als allgemeine Merkmale für ein anderes Machine-Learning-Modell genutzt werden können. Insbesondere können die inneren Schichten deutlich weniger Neuronen enthalten als die Ein- bzw. die Ausgabeschicht. In diesem Fall wird eine komprimierte Darstellung der Eingabedaten gelernt.
  • Ein Vorteil der Verwendung von Autoencoder-Netzen anstelle von überwachten CNNs zur Klassifikation und/oder Regression von Bilddaten besteht darin, dass ein Training auf einfachere Weise erfolgen kann. Insbesondere werden keine annotierten, d.h. beispielsweise keine kategorisierten oder keine manuell segmentierten, Trainingsdaten benötigt, da es sich im Gegensatz zur Klassifikation und Regression durch das zweite neuronale Netz 302 um einen unüberwachten Machine-Learning-Ansatz handelt.
  • Wie in 6 dargestellt, wird zumindest ein vom dritten neuronalen Netz 601 extrahiertes allgemeines Merkmal Machine-Learning-Modellen zur Klassifikation und/oder Regression bereitgesellt. Genauer gesagt wird eine Ausprägung des zumindest einen allgemeinen Merkmals für die Klassifikation und/oder für die Regression bereitgestellt. Eine vierte Abbildung der Ausprägung des zumindest einen extrahierten allgemeinen Merkmals auf einen weiteren Lagevektor 602 kann beispielsweise mit einem Support-Vector Regressor 603 gelernt und im Rahmen der Regression verwendet werden. Eine fünfte Abbildung der Ausprägung des zumindest einen extrahierten allgemeinen Merkmals auf ein weiteres Kategorielabel 604 kann beispielsweise mit einem Support-Vector Klassifikator 605 gelernt und im Rahmen der Klassifikation verwendet werden.
  • Der Ansatz der allgemeinen Merkmalsextraktion in Kombination mit einer separaten Regression und/oder Klassifikation bietet mehrere Vorteile. Zunächst trennt man die aufwendige Berechnung geeigneter Merkmale zur Repräsentation von optischen Codes von der eigentlichen Aufgabe des Bestimmens der Kategorie und/oder der Lage. Damit ist es beispielsweise möglich, ohne ein aufwendiges Training den Support-Vector Klassifikator 605 auszutauschen, beispielsweise, um speziellen Kundenanforderungen gerecht zu werden oder eine neue Kategorie hinzuzufügen. Ferner erhält man eine allgemeine Schnittstelle, um weitere, eventuell a-priori noch nicht bekannte, Mustererkennungsaufgaben bezüglich der detektierten optischen Codes zu lösen. Ein Beispiel dafür ist ein Bestimmen einer Codequalität, wobei einem Codebild ein numerisches Maß, das die Codequalität charakterisiert, zugeordnet wird, was ebenfalls ein Regressionsproblem darstellt.
  • Ein weiterer Vorteil besteht darin, dass man anhand der extrahierten allgemeinen Merkmale zusätzlich einen Neuheitserkenner 606, z.B. eine Single-Class Support-Vector Maschine, verwenden kann, wie dies in 6 dargestellt ist. Solch ein Neuheitserkenner 606 beruht auf einem unüberwachten maschinellen Lernverfahren und kann anzeigen, ob Daten einem gelernten Spektrum entsprechen oder außerhalb des gelernten Spektrums liegen. Anders ausgedrückt, überprüft der Neuheitserkenner 606 die Ausprägung der extrahierten allgemeinen Merkmale auf Neuheit und liefert ein Ergebnis 607, das eine Aussage darüber enthält, ob die Ausprägung der extrahierten allgemeinen Merkmale bekannt oder unbekannt ist. Klassifikations- und/oder Regressionsergebnisse außerhalb des gelernten Spektrums können verworfen werden, da darüber keine sicheren Aussagen über die Eigenschaft eines optischen Codes möglich sind. Damit wird ein grundsätzliches Problem von CNNs gelöst, die bei unerwarteten Eingabe- oder Codebildern 103, 301 undefinierte Ausgaben liefern können.
  • Die Verwendung eines überwachten CNN und einer allgemeinen Merkmalsextraktion können auch kombiniert werden. Nach einem Training des CNNs zur Positionsbestimmung oder Kategoriebestimmung und/oder Lagebestimmung können allgemeine Merkmale aus Aktivierungen von Neuronen einer inneren Neuronen-Schicht des CNNs extrahiert werden. Dafür müssen Trainingsbeispiele dem CNN erneut präsentiert werden, um die Aktivierungen der betreffenden Neuronen zu ermitteln. Diese Aktivierungen können auch als Ausprägungen bezeichnet werden. Mit den so extrahierten allgemeinen Merkmalen kann dann ebenfalls eine Neuheitserkennung trainiert werden, die gemeinsam mit dem überwachten CNN einsetzbar ist.
  • 7 zeigt schematisch ein exemplarisches erstes Automatisierungssystem 701 zum Bearbeiten von Werkstücken 702, 703, 704, 705. Beispielhaft weisen die Werkstücke 702, 703, 704, 705 in der Darstellung der 7 einen kreisscheibenförmigen Querschnitt auf.
  • Die Werkstücke 702, 703, 704 befinden sich auf einem Transportsystem 706, welches die Werkstücke 702, 703, 704 entlang einer Bewegungsrichtung 707 des Transportsystems 706 befördert. Das Transportsystem 706 wird zum Zweck der Bearbeitung der Werkstücke 702, 703, 704, 705 in festgelegten zeitlichen Intervallen gestoppt. Während das Transportsystem 706 stillsteht, wird mittels eines Werkzeugs 708 ein Loch 709 in ein unterhalb des Werkzeugs 708 befindliches Werkstück 702, 703, 704, 705 gebohrt. Die Löcher 709 sollen jeweils in der Mitte eines Werkstücks 702, 703, 704, 705 angeordnet werden. Dabei kann es vorkommen, dass ein Loch 709 beispielsweise nicht mittig angeordnet wird. Deswegen werden die Werkstücke 702, 703, 704, 705 mittels einer Erfassungseinrichtung 710 inspiziert und auf eine korrekte Position, ein korrektes Maß und eine Qualität des Lochs 709 überprüft.
  • In der Darstellung der 7 ist ein noch unbearbeitetes Werkstück 702 gezeigt. Außerdem zeigt 7 drei korrekt bearbeitete Werkstücke 703. Ein fehlerhaft bearbeitetes Werkstück 704 befindet sich noch auf dem Transportsystem 706. Ein weiteres fehlerhaft bearbeitetes Werkstück 705 befindet sich nicht mehr auf dem Transportsystem 706. Das weitere fehlerhaft bearbeitete Werkstück 705 wurde als fehlerhaft erkannt und aus diesem Grund von einem ersten Aktor 711 von dem Transportsystem 706 befördert. Das weitere fehlerhaft bearbeitete Werkstück 705 befindet sich in einem ersten Sammelbehälter 712 für fehlerhaft bearbeitete Werkstücke 704, 705.
  • Jedes Werkstück 702, 703, 704, 705 wurde mit einem dritten optischen Code 713 gekennzeichnet, was eine Rückverfolgung von den korrekt bearbeiteten Werkstücken 703 und von den fehlerhaft bearbeiteten Werkstücken 704, 705 ermöglicht. Für die Rückverfolgbarkeit müssen die dritten optischen Codes 713 erfasst und die Eigenschaften der dritten optischen Codes 713 müssen bestimmt werden, d.h. beispielsweise, dass Positionen, Lagen und/oder Kategorien der dritten optischen Codes 713 bestimmt und die in den dritten optischen Codes 713 gespeicherten Informationen zu den jeweiligen Werkstücken 702, 703, 704, 705 ausgelesen werden müssen.
  • Die dritten optischen Codes 713 der einzelnen Werkstücke 702, 703, 704, 705 können unterschiedlichen Kategorien angehören. Die dritten optischen Codes 713 können aber auch alle einer Kategorie angehören. In der Darstellung der 7 sind die dritten optischen Codes 713 beispielhaft alle als Matrix-Codes, beispielsweise als QR-Codes, ausgebildet. Die dritten optischen Codes 713 sind jedoch nicht identisch ausgebildet, da sie jeweils verschiedene Informationen der einzelnen Werkstücke 702, 703, 704, 705 kodieren.
  • Um die Rückverfolgbarkeit der Werkstücke 702, 703, 704, 705 zu gewährleisten, werden die dritten optischen Codes 713 von der Erfassungseinrichtung 710 erfasst. Die Erfassungseinrichtung 710 stellt Eingabebilder für das erste neuronale Netz 114 und das zweite neuronale Netz 302 oder das dritte neuronale Netz 601 und die Machine-Learning-Modelle des ersten Automatisierungssystems 701 zur Verfügung. Die Eigenschaften der dritten optischen Codes 713 werden von dem ersten neuronalen Netz 114 und dem zweiten neuronalen Netz 302 oder dem dritten neuronalen Netz 601 und den Machine-Learning-Modellen bestimmt und die dritten optischen Codes 713 werden mittels eines passenden Auslesealgorithmus ausgelesen.
  • Eine Voraussetzung für einen reibungslosen Ablauf des Bearbeitens der Werkstücke 702, 703, 704, 705 ist, dass Ergebnisse einer Bildverarbeitung, die die Inspektion und das Bestimmen der Eigenschaften der dritten optischen Codes 713 umfasst, spätestens dann in einer ersten Steuerung 720 des ersten Automatisierungssystems 701 vorliegen müssen, wenn ein Werkstück 702, 703, 704 den ersten Aktor 711 erreicht hat. Die Erfassungseinrichtung 710 ist so platziert worden, dass die Bildverarbeitung parallel zur Bearbeitung eines anderen Werkstücks mit dem Werkzeug 708 erfolgen kann. Aufgrund eines kontinuierlichen Werkstückstromes ist eine Zeit zur Bildverarbeitung begrenzt, da bei einer zu langen Bildverarbeitungszeit nachfolgende Werkstücke nicht inspiziert werden können.
  • Die erste Steuerung 720 kann beispielsweise eine speicherprogrammierbare Steuerung sein, welche auf einem Computer bzw. einen sogenannten Industrie-PC abläuft. Die erste Steuerung 720 ist über einen ersten Feldbus 722 mit dem Werkzeug 708, dem Transportsystem 706, der Erfassungseinrichtung 710 und dem ersten Aktor 711 verbunden. Der erste Feldbus 722 kann beispielsweise ein ethernet-basierter Feldbus, wie EtherCAT oder Profinet, sein. Die erste Steuerung 720 steuert den zuvor beschriebenen Prozess des ersten Automatisierungssystems 701 und koordiniert bzw. synchronisiert die Aktionen der aufgezählten Komponenten des ersten Automatisierungssystems 701. Hierzu werden beispielsweise Steuersignale von der ersten Steuerung 720 an das Werkzeug 708 oder das Transportsystem 706 oder die Erfassungseinrichtung 710 oder den ersten Aktor 711 über den ersten Feldbus 722 übertragen. So kann beispielsweise die erste Steuerung 720 ein Steuersignal über den ersten Feldbus 722 an die Erfassungseinrichtung 710 senden, damit die Erfassungseinrichtung 710 eine Bildaufnahme durchführt.
  • Die Erfassungseinrichtung 710 ist beispielsweise eine digitale Kamera. Wenn größere Bilddaten von der Erfassungseinrichtung 710 zu der ersten Steuerung 720 übermittelt werden sollen, kann es der Fall sein, dass die Datenrate des ersten Feldbusses 722 nicht ausreichend ist. Daher ist die erste Steuerung 720 mit der Erfassungseinrichtung 710 zusätzlich über eine erste Datenleitung 723 verbunden. Mithilfe der ersten Datenleitung 723 können große Datenmenge in kurzer Zeit übertragen werden. Die erste Datenleitung 723 besitzt beispielsweise eine Datenrate von größer gleich 1 Gbit/s. Wenn die Datenrate des ersten Feldbusses 722 für das Übermitteln von Bilddaten und/oder weiteren Daten zwischen der ersten Steuerung 720 und der Erfassungseinrichtung 710 ausreichend ist, kann in einer nicht gezeigten Ausführungsform auf die erste Datenleitung 723 verzichtet werden. Die erste Datenleitung 723 ist demnach nicht zwingend erforderlich.
  • Die erste Steuerung 720 weist zusätzlich einen ersten Netzwerkanschluss 724 auf. Unter Verwendung des ersten Netzwerkanschlusses 724 kann die erste Steuerung 720 beispielsweise mit weiteren nicht eingezeichneten Steuerungen oder weiteren Computern oder einer Cloud-Infrastruktur kommunizieren. Der erste Netzwerkanschluss 724 kann beispielsweise auch ein Internetanschluss für die erste Steuerung 720 sein.
  • Die erste Steuerung 720 umfasst zumindest eine Prozessoreinheit, beispielsweise eine CPU, die beispielsweise als ein Mehrkernprozessor ausgebildet sein kann, und optional zumindest eine GPU auf einer optional vorhandenen Grafikkarte. Zusätzlich weist die erste Steuerung 720 zumindest einen Speicher, wie beispielsweise einen Arbeitsspeicher oder einen Festplattenspeicher oder einen Flash-Speicher, auf. Die oben beschriebene Bildverarbeitung wird beispielsweise auf der ersten Steuerung 720 zusätzlich zu der Steuerung des in 7 beschriebenen Prozesses des ersten Automatisierungssystems 701 durchgeführt. Die oben beschriebene Bildverarbeitung kann insbesondere innerhalb der Steuerung des in 7 beschriebenen Prozesses des ersten Automatisierungssystems 701 ausgeführt werden. Das erste und/oder zweite und/oder dritte neuronale Netz 114, 302, 601 ist beispielsweise auf zumindest einem Speicher gespeichert. Die erste Eingabeschicht des ersten neuronalen Netzes 114 und/oder die zweite Eingabeschicht des zweiten neuronalen Netzes 302 und/oder eine dritte Eingabeschicht des dritten neuronalen Netzes 601 sind somit beispielsweise auch auf zumindest einen Speicher gespeichert. Die erste Steuerung 720 ist dazu ausgebildet, das erfindungsgemäße Verfahren mithilfe der zumindest einen Prozessoreinheit und des zumindest einen Speichers auszuführen.
  • Die erste Steuerung 720 kann als Echtzeitsteuerung ausgebildet sein. In diesem Fall kann die erste Steuerung 720 dazu ausgebildet sein, das Verfahren zum Erfassen optischer Codes innerhalb eines einzigen Steuerungszyklus des ersten Automatisierungssystems 701 abzuschließen.
  • In einer alternativen Ausführungsform kann die beschriebene Bildverarbeitung ganz oder teilweise in der Erfassungseinrichtung 710 ausgeführt werden. In diesem Fall besitzt die Erfassungseinrichtung 710 die dafür notwendigen Komponenten, wie beispielsweise eine Prozessoreinheit, z.B. eine CPU, oder einen Speicher.
  • Die erste Steuerung 720 kann beispielsweise einen in 5 beschriebenen Trainingsprozess durchführen. Demnach sind in zumindest einem Speicher der ersten Steuerung 720 Trainingsdaten 504 bzw. weitere Trainingsdaten 506 abgespeichert. Alternativ kann die erste Steuerung 720 beispielsweise mithilfe des ersten Netzwerkanschlusses 724 Trainingsdaten 504 und/oder weitere Trainingsdaten 506 von externen weiteren Steuerungen oder von weiteren Computern oder von einer Cloud-Infrastruktur beziehen. Alternativ kann ein Trainingsprozess, wie er beispielhaft in 5 beschrieben wird, beispielsweise innerhalb einer Cloud-Infrastruktur ganz oder teilweise durchgeführt werden. In diesem Fall wird eine Anfrage von der ersten Steuerung 720 mittels des ersten Netzwerkanschlusses 724 an eine Cloud-Infrastruktur gesendet. Die Anfrage kann beispielsweise Angaben für die zumindest eine relevante Eigenschaft eines optischen Codes enthalten. Anschließend führt die Cloud-Infrastruktur den Trainingsprozess 501 oder einen Teil des Trainingsprozesses 501, wie beispielsweise das in 5 beschriebene Basistraining 502, durch. Abschließend wird zumindest ein vortrainiertes neuronales Netz 505 oder zumindest ein nachtrainiertes neuronales Netz 507 von der Cloud-Infrastruktur über den ersten Netzwerkanschluss 724 an die erste Steuerung 720 übertragen. Die erste Steuerung 720 ist beispielsweise in der Lage ein über den ersten Netzwerkanschluss 724 empfangenes neuronales Netz nachzutrainieren, wenn ein Bedarf besteht. Die erste Steuerung 720 kann beispielsweise ein in 5 beschriebenes Nachtraining 503 selbstständig durchführen.
  • 8 zeigt schematisch ein exemplarisches zweites Automatisierungssystem 800 zum Sortieren von Werkstücken 801, 802, 803. Beispielhaft weisen die Werkstücke 801, 802, 803 in der Darstellung der 8 einen kreisscheibenförmigen Querschnitt auf.
  • Die Werkstücke 801, 802, 803 gehören unterschiedlichen Typen an. 8 zeigt beispielhaft ein erstes Werkstück 801 eines ersten Typs, ein zweites Werkstück 802 eines zweiten Typs und zwei dritte Werkstücke 803 eines dritten Typs. Die Werkstücke 801, 802, 803 wurden jeweils mit einem vierten optischen Code 804 gekennzeichnet. Die vierten optischen Codes 804 der einzelnen Werkstücke 801, 802, 803 können unterschiedlichen Kategorien angehören. Die vierten optischen Codes 804 können aber auch alle einer Kategorie angehören. In der Darstellung der 8 sind die vierten optischen Codes 804 beispielhaft alle als Matrix-Codes, beispielsweise als QR-Codes, ausgebildet. Die vierten optischen Codes 804 sind jedoch nicht identisch ausgebildet, da sie jeweils verschiedene Informationen der einzelnen Werkstücke 801, 802, 803 kodieren. Insbesondere kodieren die vierten optischen Codes 804 jeweils den Typen eines Werkstücks 801, 802, 803.
  • Das zweite Automatisierungssystem 800 weist die ebenfalls in 7 gezeigte Erfassungseinrichtung 710, das sich in die Bewegungsrichtung 707 bewegende und in 7 dargestellte Transportsystem 706, einen zweiten Aktor 805, einen dritten Aktor 806 und einen vierten Aktor 807 auf. Die Erfassungseinrichtung 710 nimmt während des Transports der Werkstücke 801, 802, 803 jeweils ein Eingabebild eines Werkstücks 801, 802, 803 auf, wenn sich dieses innerhalb eines Erfassungsbereichs der Erfassungseinrichtung 710 befindet.
  • Eine zweite Steuerung 820 des zweiten Automatisierungssystems 800 kann beispielsweise eine speicherprogrammierbare Steuerung sein, welche auf einem Industrie-PC abläuft. Die zweite Steuerung 820 ist über einen zweiten Feldbus 822 mit dem Transportsystem 706, der Erfassungseinrichtung 710, dem zweiten Aktor 805, dem dritten Aktor 806 und den vierten Aktor 807 verbunden. Der zweite Feldbus 822 kann beispielsweise ein ethernet-basierter Feldbus, wie EtherCAT oder Profinet, sein. Die zweite Steuerung 820 steuert das Sortieren von Werkstücken 801, 802, 803 und koordiniert bzw. synchronisiert die Aktionen der aufgezählten Komponenten des zweiten Automatisierungssystems 800. Hierzu werden beispielsweise Steuersignale von der zweiten Steuerung 820 an die Erfassungseinrichtung 710 oder das Transportsystem 706 oder die Erfassungseinrichtung 710 oder den zweiten bis vierten Aktor 805, 806, 807 über den zweiten Feldbus 822 übertragen. So kann beispielsweise die zweite Steuerung 820 ein Steuersignal über den zweiten Feldbus 722 an die Erfassungseinrichtung 710 senden, damit die Erfassungseinrichtung 710 eine Bildaufnahme durchführt, wenn sich eines der Werkstücke 801, 802, 803 innerhalb des Erfassungsbereichs der Erfassungseinrichtung 710 befindet.
  • Wenn größere Bilddaten von der Erfassungseinrichtung 710 zu der zweite Steuerung 820 übermittelt werden sollen, kann es der Fall sein, dass die Datenrate des ersten Feldbusses 722 nicht ausreichend ist. Daher ist die zweite Steuerung 820 mit der Erfassungseinrichtung 710 zusätzlich über eine zweite Datenleitung 823 verbunden. Mithilfe der zweiten Datenleitung 823 können große Datenmenge in kurzer Zeit übertragen werden. Die zweite Datenleitung 823 besitzt beispielsweise eine Datenrate von größer gleich 1 Gbit/s. Wenn die Datenrate des zweiten Feldbusses 822 für das Übermitteln von Bilddaten und/oder weiteren Daten zwischen der zweiten Steuerung 820 und der Erfassungseinrichtung 710 ausreichend ist, kann in einer nicht gezeigten Ausführungsform auf die zweite Datenleitung 823 verzichtet werden. Die zweite Datenleitung 823 ist demnach nicht zwingend erforderlich.
  • Die zweite Steuerung 820 weist zusätzlich einen zweiten Netzwerkanschluss 824 auf. Unter Verwendung des zweiten Netzwerkanschlusses 824 kann die zweite Steuerung 820 beispielsweise mit weiteren nicht eingezeichneten Steuerungen oder einer Cloud-Infrastruktur kommunizieren. Der zweite Netzwerkanschluss 824 kann beispielsweise auch ein Internetanschluss für die zweite Steuerung 820 sein.
  • Die Eigenschaften der in dem Eingabebild sichtbaren vierten optischen Codes 804 werden von der zweiten Steuerung 820 bestimmt und die in den vierten optischen Codes 804 gespeicherten Informationen werden von der zweiten Steuerung 820 ausgelesen. Die Erfassungseinrichtung 710 stellt die Eingabebilder für das erste neuronale Netz 114 und das zweite neuronale Netz 302 oder das dritte neuronale Netz 601 und die Machine-Learning-Modelle des zweiten Automatisierungssystems 800 zur Verfügung. Die Eigenschaften der vierten optischen Codes 804 werden mithilfe des ersten neuronalen Netzes 114 und des zweiten neuronalen Netzes 302 oder des dritten neuronalen Netzes 601 und der Machine-Learning-Modelle bestimmt und die vierten optischen Codes 804 werden mittels eines passenden Auslesealgorithmus ausgelesen. Dabei wird auch der Typ eines Werkstücks 801, 802, 803 im Rahmen des Auslesens bestimmt.
  • Die zweite Steuerung 820 umfasst zumindest eine Prozessoreinheit, beispielsweise eine CPU, die beispielsweise als ein Mehrkernprozessor ausgebildet sein kann, und optional zumindest eine GPU auf einer optional vorhandenen Grafikkarte. Zusätzlich weist die zweite Steuerung 820 zumindest einen Speicher, wie beispielsweise einen Arbeitsspeicher oder einen Festplattenspeicher oder einen Flash-Speicher, auf. Die zweite Steuerung 820 führt zusätzlich zum Sortieren von Werkstücken 801, 802, 803 das erfindungsgemäße Verfahren zum Erfassen optischer Codes und das Bestimmen der Eigenschaften der erfassten optischen Codes durch. Das erste und/oder zweite und/oder dritte neuronale Netz 114, 302, 601 ist beispielsweise auf zumindest einen Speicher der zweiten Steuerung 820 gespeichert. Die erste Eingabeschicht des ersten neuronalen Netzes 114 und/oder die zweite Eingabeschicht des zweiten neuronalen Netzes 302 und/oder die dritte Eingabeschicht des dritten neuronalen Netzes 601 sind somit beispielsweise auch auf zumindest einen Speicher gespeichert.
  • Die zweite Steuerung 820 kann als Echtzeitsteuerung ausgebildet sein. In diesem Fall kann die zweite Steuerung 820 dazu ausgebildet sein, das Verfahren zum Erfassen optischer Codes innerhalb eines einzigen Steuerungszyklus des zweiten Automatisierungssystems 800 abzuschließen.
  • Anhand der aus den ausgelesenen vierten Codes 804 bestimmten Typen der Werkstücke 801, 802, 803 erfolgt das Sortieren der Werkstücke 801, 802, 803. Werkstücke 801 des ersten Typs werden von dem zweiten Aktor 805 in einen zweiten Sammelbehälter 808 befördert, wenn sie sich unterhalb des zweiten Aktors 805 befinden. Werkstücke 802 des zweiten Typs werden von dem dritten Aktor 806 in einen dritten Sammelbehälter 809 befördert, wenn sie sich unterhalb des dritten Aktors 806 befinden. Werkstücke 803 des dritten Typs werden von dem vierten Aktor 807 in einen vierten Sammelbehälter 810 befördert, wenn sie sich unterhalb des vierten Aktors 807 befinden. Werkstücke, die keinem der drei Typen angehören, werden von dem Transportsystem 706 weiter transportiert.
  • Eine maximale Bewegungsgeschwindigkeit des Transportsystems 706 hängt dabei insbesondere von einer maximalen Verarbeitungszeit für die Aufnahme und Analyse eines gekennzeichneten Werkstücks 801, 802, 803 ab. Daraus folgt, dass diese Zeit möglichst minimal sein sollte. Im Idealfall gäbe es keine Abweichungen zwischen den Analysezeiten aller Werkstücke 801, 802, 803 und diese Zeitspanne wäre sehr kurz.
  • Ein kritischer Punkt bei der Nutzung von CNNs im Rahmen einer Steuerung eines Automatisierungssystems 701, 800 ist eine für das Training und die Prädiktion (Inferenz) benötigte Rechenzeit. Dabei ist insbesondere auf geringe Prädiktionszeiten zu achten, da diese direkt in einem zyklischen Ablauf der Steuerung 720, 820 anfallen. Trainingszeiten werden relevant, falls die Trainingsdaten 504 sehr umfangreich sind, sowie falls ein Nachtraining 503 im laufenden Betrieb oder ein Online-Lernen erfolgen sollen. Ein Online-Lernen beschreibt hierbei insbesondere einen Lernvorgang im laufenden Betrieb eines Automatisierungssystems 701, 800.
  • Ein genereller Ansatz, um eine Größe trainierter neuronaler Netze und damit die Anfälligkeit für ein sogenanntes Overfitting, d.h. beispielsweise eine übermäßige Spezialisierung auf Trainingsdaten, und die Anzahl von Rechenoperationen, die für die Prädiktion und ein eventuelles Nachtraining erforderlich sind, zu verringern, ist das sogenannte Network-Pruning. Dabei werden Teilkomponenten eines neuronalen Netzes, d.h. einzelne Verbindungen zwischen Neuronen, ganze Neuronen oder Gruppen von Neuronen, nach vorgegebenen Kriterien entfernt. Diese Kriterien beschreiben den Nutzen der Teilkomponente für das Gesamtnetzwerk. Ein Entfernen kann beispielsweise dann erfolgen, wenn ein Nutzen geringer ist als ein definierter Schwellwert. Im Kontext einer Steuerung eines Automatisierungssystems sind dabei insbesondere Ansätze wie das strukturelle Pruning sinnvoll, welches Netzwerkkomponenten derart entfernt, dass ein verkleinertes neuronales Netz möglichst effizient arbeitet. Nach dem Pruning muss ein neuronales Netz üblicherweise noch einmal nachtrainiert werden, um eine mögliche Leistungsverringerung zu minimieren.
  • Ein Computerprogrammprodukt zum Erfassen optischer Codes umfasst Befehle, die bei der Ausführung des Computerprogramms durch einen Computer diesen dazu veranlassen, das Verfahren zum Erfassen optischer Codes auszuführen.
  • Im Folgenden werden einige hypothetische Anwendungsszenarien beschrieben, die die Anwendungsmöglichkeiten der Erfindung verdeutlichen sollen. Die angegebenen Zahlen sind keine Messwerte. Stattdessen wurden sie so gewählt, dass die gewünschten Sachverhalte besser veranschaulicht werden können.
  • Ein erstes Anwendungsszenario zeigt einen Vorteil des Verfahrens zum Erfassen optischer Codes, der auf einer deterministischen Rechenzeit, innerhalb derer das Verfahren durchgeführt werden kann, beruht.
  • Maschinenbauer A möchte mit einem Machine-Vision System, welches in einer automatisierten Steuerung integriert ist, Datamatrix-Codes auslesen, mit denen Zulieferer Z seine Produkte gekennzeichnet hat. Dadurch soll eine vollständige Rückverfolgbarkeit der Produkte von A, sowie deren Bestandteilen ermöglicht werden. Zusätzlich hat Zulieferer Z seine Produkte mit einem branchenspezifischen Barcode sowie einem QR-Code, der auf eine Webseite von Z verweist, gekennzeichnet. Auch Klartextinformationen und Logos sind auf den Produkten von Z standardmäßig vorhanden.
  • Die Produkte von Z werden in einer Anlage von A in einem Takt von 60ms an einer Kamera vorbei bewegt. Mittels der Kamera wird ein Bild aufgenommen und anschließend einem Verarbeitungsrechner bereitgestellt. Dieser Vorgang dauert üblicherweise 10ms. Weitere 10ms werden als Sicherheitspuffer für eine Kommunikation und eine Ansteuerung von Aktoren durch eine Steuerung eingeplant. Damit stehen zum Erfassen und Auslesen eines einzigen Datamatrix-Codes 40ms zur Verfügung. Eine aktuell genutzte Codeerkennungsfunktion benötigt üblicherweise 35ms und erfüllt damit die Vorgabe. Falls der Datamatrix-Code jedoch schlecht sichtbar ist oder an einer ungeeigneten Position angebracht wurde, erhöht sich diese Zeit bis in einen Bereich von mehreren Sekunden. Da die Codeerkennungsfunktion sequentiell arbeitet, ist eine Parallelisierung der Verarbeitung nicht möglich, obwohl in der Steuerung von A zusätzliche freie Rechenkerne innerhalb zumindest einer CPU vorhanden wären. Das Detektieren und Auslesen kann dann zwar abgebrochen werden, der Inhalt des Datamatrix-Codes wäre in diesem Fall aber unbekannt.
  • Das Verfahren zum Erfassen optischer Codes löst diese Probleme. Die Anwendung von CNNs ist sehr deterministisch, da im Wesentlichen eine feste Anzahl von Matrizenoperationen durchgeführt werden muss. Weiterhin können diese Operationen sehr gut parallelisiert werden. Damit wird es möglich, in einem Vorverarbeitungsschritt für das Auslesen des relevanten Datamatrix-Codes eine Bildregion zu bestimmen, in der sich der gesuchte Datamatrix-Code befindet, und ihn in eine Normallage zu transformieren. Der eigentliche Auslesealgorithmus kann deterministische Ergebnisse in etwa 10ms Verarbeitungszeit liefern.
  • Trotz der Parallelisierung ist die Positionsbestimmung aufgrund der bei CNNs üblicherweise hohen Anzahl an notwendigen Matrizenoperationen mit einer Verarbeitungszeit von 55ms vergleichsweise langsam. Dazu kommen weitere 25ms für die Kategoriebestimmung und die Lageerkennung. Dies ergibt eine Gesamtberechnungszeit von 90ms für das Erfassen des Datamatrix-Codes. Um das Verfahren zum Erfassen optischer Codes dennoch einsetzen zu können, entscheidet sich Maschinenbauer A daher, zwei das Verfahren zum Erfassen optischer Codes ausführende Systeme mit einem zeitlichen Versatz von 60ms parallel zu betreiben. Damit erhöht sich die für die Bildverarbeitung zur Verfügung stehende Rechenzeit auf 120ms - 10ms (Bildaufnahme und Bereitstellen) - 10ms (Sicherheitspuffer) = 100ms und es steht ausreichend Rechenzeit zur Verfügung. Mit 120ms pro Kamerabild unabhängig vom Bildinhalt liegt die Verarbeitungszeit immer noch weit unter der Zeit von bis zu einigen Sekunden, die der ursprüngliche Algorithmus für ungünstige Kamerabilder benötigt.
  • Ein zweites Anwendungsszenario zeigt einen Vorteil des Verfahrens zum Erfassen optischer Codes, der darin besteht, dass eine exakte Positionsbestimmung optischer Codes möglich ist. Maschinenbauer B möchte Barcodes, die auf seinen Produkten angebracht sind, in einer HMI (Human-Machine Interface) darstellen. Jedes Produkt umfasst dabei drei unterschiedliche Barcodes: einen EAN-13-Code für den Einzelhandel, einen Code 128 für die Seriennummer und einen weiteren Code 128 für die Artikelbezeichnung. Die Positionen der Barcodes sind annähernd bekannt. Dennoch sollen die exakten Regionen der erfassten optischen Codes gemeinsam mit dem ausgelesenen Inhalt in einer HMI dargestellt werden. Ein aktuell verwendeter Auslesealgorithmus arbeitet nach dem Zeilenscannerprinzip, bei dem ein Intensitätsprofil entlang einer Suchlinie oder einer schmalen Region waagerecht zum Barcode analysiert wird. Ein solcher Algorithmus kann daher die Bildregion, in der sich ein ausgelesener Barcode befindet, nicht exakt liefern. Eine Taktrate des verwendeten Auslesealgorithmus liegt bei 100ms. Die Darstellung in der HMI erfolgt stichprobenartig. Dabei wird nur jedes zehnte Produkt in der HMI angezeigt.
  • Maschinenbauer B hat sich daher entschieden, das Verfahren zum Erfassen optischer Codes einzusetzen. Neben der Möglichkeit zur Darstellung der erfassten Bildregionen, kann er damit auch den Auslesealgorithmus gezielter einsetzen.
  • Ein drittes Anwendungsszenario zeigt einen Vorteil des Verfahrens zum Erfassen optischer Codes mit einer allgemeinen Merkmalsextraktion und einer separaten Regression und/oder Klassifikation gemäß 6.
  • Maschinenbauer C produziert Bestückungsanlagen für den chinesischen Markt. Eine solche Anlage ist in der Lage, zahlreiche verschiedene Arten von Leiterplatten zu bestücken. Um Leiterplatten identifizieren und verfolgen zu können, werden optische Codes eingesetzt. Kategorien, Anzahl, Größe und Positionen dieser optischen Codes sind von der Leiterplatte abhängig und damit variabel. Zusätzlich enthalten die Leiterplatten Klartext in Form chinesischer Schriftzeichen.
  • Da die bestückte Leiterplatte viele kleine Elemente enthält und die Merkmale chinesischer Schriftzeichen Matrixcodes ähneln können, führte ein aktuell genutzter Codeerkenner zu einer hohen Anzahl fälschlicherweise als optische Codes erkannter Muster, die erst im Laufe des Auslesevorgangs als andere Objekte erkannt wurden. Daher ist die benötigte Rechenzeit sehr hoch und schwankt stark zwischen verschiedenen Leiterplattentypen. Dennoch werden nicht immer alle optischen Codes erkannt. Davon sind insbesondere die optischen Codes betroffen, die direkt auf der Leiterplatte aufgebracht wurden und nicht mit einem bedruckten Aufkleber angebracht wurden, da bei solchen optischen Codes oft die charakteristischen Referenzmuster beschädigt oder schlecht sichtbar sind.
  • Eine Lösung für die genannten Probleme bietet das Verfahren zum Erfassen optischer Codes. Aufgrund der guten inhärenten Parallelisierbarkeit des Verfahrens und der vergleichsweise konstanten Laufzeit der Inferenzalgorithmen können damit relevante Codebereiche in deterministischer Zeit ermittelt und erste Informationen über auszulesende optische Codes in Form der erkannten Kategorie und der Lage der optischen Codes bereitgestellt werden.
  • Aufgrund seiner schlechten Erfahrungen mit den festgelegten Verarbeitungsverfahren herkömmlicher Codeerkenner, möchte Maschinenbauer C gerne den modularen und leicht erweiterbaren Ansatz der allgemeinen Merkmalsextraktion in Kombination mit einer separaten Regression und/oder Klassifikation verwenden. Die Verarbeitung detektierter Coderegionen erfolgt damit entsprechend 6.
  • Nachdem das System einige Zeit im Einsatz ist, wird auch eine Neuheitserkennung für Maschinenbauer C interessant, da sich gezeigt hat, dass sich die Spezifikationen der zu fertigenden Leiterplatten oft ändern, womit unvorhergesehene Muster, die optischen Codes ähneln, auf die Leiterplatten gelangen könnten. Dies fällt gegebenenfalls erst im Ausleseschritt auf, wodurch die Auslesezeitzeit stark erhöht wird. Daher sollen solch unvorhergesehene Muster von vornherein ausgeschlossen werden. Maschinenbauer C erwirbt deshalb einen Neuheitserkenner, der mit seinen bisherigen Erkennungsmodulen kompatibel ist. Die für die Neuheitserkennung benötigten Merkmale sind mit denen für die Kategorie- und Lagebestimmung identisch. D.h. eine zusätzliche Berechnung entfällt. Die eigentliche Neuheitserkennung, die mit den vorhandenen Merkmalen sehr effizient durchgeführt werden kann, erfolgt dann parallel zur Kategorie- und Lagebestimmung auf getrennten Prozessorkernen einer CPU oder GPU. Damit erhöht sich die Zeit, ab der alle Analyseergebnisse vorliegen, nicht, es können aber zahlreiche unnötige Ausleseversuche vermieden werden, wodurch sich die Auslesezeit und damit auch die Gesamtzeit für die Codeerkennung verringert.
  • Ein viertes Anwendungsszenario zeigt einen Vorteil des Verfahrens zum Erfassen optischer Codes mit einer allgemeinen Merkmalsextraktion und einer separaten Regression und/oder Klassifikation gemäß 6.
  • Maschinenbauer D produziert Sortiermaschinen für die Logistikbranche. Dabei sind zahlreiche optische Codes auszulesen, die beispielsweise eine Startadresse, eine Zieladresse, eine Art der Sendung und Zusatzinformationen eines Absenders kodieren. Je nach Art der Sendung, einem Herkunftsort und weiteren eventuell involvierten Logistikunternehmen sind Kategorien, Anzahl, Größen und Positionen der optischen Codes variabel. Damit ähnelt das Problem dem dritten Anwendungsszenario.
  • Maschinenbauer D entscheidet sich daher ebenfalls für eine allgemeine Merkmalsextraktion in Kombination mit einer separaten Regression und/oder Klassifikation. Dabei kombiniert er die Ergebnisse aus der Neuheitserkennung mit denen aus der Kategorie- und/oder Lagebestimmung, sodass Eigenschaften unbekannter Muster abgeschätzt werden können. Wird beispielsweise ein QR-Code erkannt, die Neuheitserkennung gibt aber an, dass es sich um ein unbekanntes Muster handelt, ist damit folgende Aussage möglich: An Position X wurde ein unbekannter optischer Code erkannt, der einem QR-Code ähnelt. Entsprechende zu transportierende Güter können dann gezielt zu einer manuellen Nachkontrolle an einen Mitarbeiter der Kunden von D weitergeleitet werden. Dieser kann dann entscheiden, wie weiter zu verfahren ist.
  • Bei diesen Nachprüfungen fällt auf, dass seit kurzem viele transportierte Güter mit Han-Xin-Codes ausgestattet sind, welche eine Identifikationsnummer eines jeweiligen Objekts kodieren. Die Kunden von Maschinenbauer D möchten diese gerne verwenden, die Bestimmung der Kategorie ist jedoch nicht mit Han-Xin-Codes trainiert. Er erwirbt daher trainierte Machine-Learning Modelle für die Neuheitserkennung sowie für Kategorie- und Lagebestimmung, die Han-Xin-Codes beinhalten. Nach einem Austausch der Machine-Learning-Modelle können Han-Xin Codes auch korrekt als solche erfasst und mit einer ebenfalls neu erworbenen Auslesefunktion dekodiert werden.
  • Ein fünftes Anwendungsszenario zeigt einen Vorteil des Verfahrens zum Erfassen optischer Codes gemäß 3.
  • Firma E setzt das Verfahren zum Bestimmen von Eigenschaften optischer Codes sowie die rein CNN-basierte Kategorie- und Lagebestimmung entsprechend 3 ein. Obwohl die optischen Codes zuverlässig erfasst werden, sind die Kategorie- und Lagebestimmung nicht zufriedenstellend. Die Ursache hierfür sieht Firma E darin, dass die optischen Codes mittels eines Lasers direkt auf ihren Produkten aufgebracht werden. Da es sich hierbei um Teile aus Gusseisen mit einer ausgeprägten Oberflächenstruktur handelt, sind die Codes entsprechend stark gestört. Firma E entscheidet sich für ein Nachtraining der entsprechenden Machine-Learning Modelle, um diese robuster gegenüber der Oberflächenstruktur ihrer Produkte zu machen. Das Nachtraining wird entsprechend 5 mit Bildern von Firma E durchgeführt. Firma E erhält im Anschluss einen speziell auf Ihre Bedürfnisse zugeschnittenen Klassifikator und Regressor. Diese liefern sehr gute Ergebnisse.
  • Machine-Learning Modelle kann man sich technisch als Daten vorstellen. Austausch bedeutet hier, dass man ein vorhandenes Verfahren mit neuen Daten betreibt. D.h., Software in Form von Programmen bzw. Funktionen muss dabei nicht notwendigerweise ausgetauscht oder angepasst werden.
  • Ein sechstes Anwendungsszenario zeigt einen Vorteil des Verfahrens zum Erfassen optischer Codes gemäß 1 und 3.
  • Firma F baut Maschinen, die eine Codedetektion nach 1 sowie eine CNN-basierte Kategoriebestimmung entsprechend 3 verwenden. Für einen internen Gebrauch soll ein neuer Matrixcode eingeführt werden, der von den bisher genutzten Verfahren nicht erkannt werden kann. Ein Machine-Learning Experte von Firma F hat daher zehn repräsentative Kamerabilder optischer Codes der neuen Kategorie aufgenommen. Mit Hilfe eines Nachtrainingsassistenten erweitert er das Machine-Learning Modell für die Kategoriebestimmung um die neue Kategorie. Da das Verfahren zum Nachtraining auf einem Few-Shot Lernansatz beruhen kann, d.h., dass das Nachtraining anhand einiger weniger Trainingsdaten möglich ist, kann das Nachtraining innerhalb weniger Augenblicke abgeschlossen sein. Damit ist es Firma F möglich, auch optische Codes der neuen Kategorie korrekt als solche zu erkennen und dann gezielt einer weiteren Verarbeitung zuzuführen. Dabei kann es sich unter anderem um eine entsprechende Auslesefunktion handeln.
  • Die vorliegende Erfindung wurde anhand der bevorzugten Ausführungsbeispiele näher illustriert und beschrieben. Dennoch ist die Erfindung nicht auf die offenbarten Beispiele beschränkt. Vielmehr können hieraus andere Variationen vom Fachmann abgeleitet werden, ohne den Schutzumfang der Erfindung zu verlassen.
  • Bezugszeichenliste
  • 101
    erster optischer Code
    102
    zweiter optischer Code
    103
    Eingabebild
    104
    Werkstück
    105
    Klartextinformation
    106
    Logo
    107
    erste Unebenheiten
    108
    Beleuchtungsartefakt
    109
    Reflexionsartefakt
    110
    zweite Unebenheiten
    111
    Verunreinigungen
    112
    Umgebung des Werkstücks
    113
    angepasstes Eingabebild
    114
    erstes neuronales Netz
    115
    Ausgabebild
    116
    erste Intensität
    117
    zweite Intensität
    118
    erstes umgebendes Rechteck
    119
    zweites umgebendes Rechteck
    120
    transformiertes Ausgabebild
    121
    erstes transformiertes umgebendes Rechteck
    122
    zweites transformiertes umgebendes Rechteck
    201
    erster Schritt
    202
    zweiter Schritt
    203
    dritter Schritt
    204
    vierter Schritt
    205
    fünfter Schritt
    206
    sechster Schritt
    207
    siebter Schritt
    208
    achter Schritt
    209
    neunter Schritt
    210
    zehnter Schritt
    211
    elfter Schritt
    212
    zwölfter Schritt
    213
    dreizehnter Schritt
    301
    Codebild
    302
    zweites neuronales Netz
    303
    angepasstes Codebild
    304
    Lagevektor
    305
    Kategorielabel
    306
    Auslesealgorithmus
    414
    vierzehnter Schritt
    415
    fünfzehnter Schritt
    416
    sechzehnter Schritt
    417
    siebzehnter Schritt
    418
    achtzehnter Schritt
    419
    neunzehnter Schritt
    420
    zwanzigster Schritt
    421
    einundzwanzigster Schritt
    422
    zweiundzwanzigster Schritt
    501
    Trainingsprozess
    502
    Basistraining
    503
    Nachtraining
    504
    Auslesen oder Generieren von Trainingsdaten
    505
    vortrainiertes neuronales Netz
    506
    Generieren weiterer Trainingsdaten
    507
    nachtrainiertes neuronales Netz
    601
    drittes neuronales Netz
    602
    weiterer Lagevektor
    603
    Regressor
    604
    weiteres Kategorielabel
    605
    Klassifikator
    606
    Neuheitserkenner
    607
    Ergebnis
    701
    erstes Automatisierungssystem
    702
    unbearbeitetes Werkstück
    703
    korrekt bearbeitetes Werkstück
    704
    fehlerhaft bearbeitetes Werkstück
    705
    weiteres fehlerhaft bearbeitetes Werkstück
    706
    Transportsystem
    707
    Bewegungsrichtung des Transportsystems
    708
    Werkzeug
    709
    Loch
    710
    Erfassungseinrichtung
    711
    erster Aktor
    712
    erster Sammelbehälter
    713
    dritte optische Codes
    720
    erste Steuerung
    722
    erster Feldbus
    723
    erste Datenleitung
    724
    erster Netzwerkanschluss
    800
    zweites Automatisierungssystem
    801
    erstes Werkstück
    802
    zweites Werkstück
    803
    drittes Werkstück
    804
    vierte optische Codes
    805
    zweiter Aktor
    806
    dritter Aktor
    807
    vierter Aktor
    808
    zweiter Sammelbehälter
    809
    dritter Sammelbehälter
    810
    vierter Sammelbehälter
    820
    zweite Steuerung
    822
    zweiter Feldbus
    823
    zweite Datenleitung
    824
    zweiter Netzwerkanschluss
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • DE 10137093 A1 [0011]

Claims (17)

  1. Verfahren zum Erfassen optischer Codes (101, 102, 713, 804) mit den folgenden Verfahrensschritten: - Bereitstellen eines Eingabebildes (103), - Erfassen von optischen Codes (101, 102, 713, 804) im Eingabebild (103) durch Erzeugen eines Ausgabebildes (115) auf Grundlage des Eingabebildes (103), wobei im Rahmen des Erzeugens des Ausgabebildes (115) Bildpunkten eines einen Teil eines optischen Codes (101, 102, 713, 804) aufweisenden Bereichs des Eingabebildes (103) eine erste Intensität (116) im Ausgabebild (115) zugeordnet wird, wobei im Rahmen des Erzeugens des Ausgabebildes (115) Bildpunkten eines keinen Teil eines optischen Codes (101, 102, 713, 804) aufweisenden Bereichs des Eingabebildes (103) eine zweite Intensität (117) im Ausgabebild (115) zugeordnet wird, - Bereitstellen von Regionen des Ausgabebildes (115) mit der ersten Intensität (116) zum Bestimmen von Eigenschaften der erfassten optischen Codes (101, 102, 713, 804).
  2. Verfahren gemäß Anspruch 1, wobei das Erzeugen des Ausgabebildes (115) durch ein erstes neuronales Netz (114), insbesondere ein tiefes, trainiertes, konvolutionelles neuronales Netz, erfolgt.
  3. Verfahren gemäß Anspruch 2, wobei das Bereitstellen des Eingabebildes (103) ein Anpassen des Eingabebildes (103) umfasst, wobei das Anpassen des Eingabebildes (103) derart erfolgt, dass ein angepasstes Eingabebild (113) eine mit einer Größe einer ersten Eingabeschicht des ersten neuronalen Netzes (114) kompatible Größe aufweist.
  4. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei zum Bestimmen der Eigenschaften der optischen Codes (101, 102, 713, 804) ein Bestimmen von Positionen der optischen Codes (101, 102, 713, 804) erfolgt, wobei das Bestimmen der Positionen der optischen Codes (101, 102, 713, 804) dadurch erfolgt, dass den Regionen des Ausgabebildes (115) mit der ersten Intensität (116) umgebende Rechtecke (118, 119), Außenkonturen und/oder geometrische Schwerpunkte zugeordnet werden.
  5. Verfahren gemäß Anspruch 4, wobei das Zuordnen der umgebenden Rechtecke (118, 119), Außenkonturen und/oder geometrischen Schwerpunkte mittels Blobdetektion, morphologischen Operatoren und/oder einer Binarisierung des Ausgabebildes (115) in Kombination mit einer Konturverfolgung erfolgt.
  6. Verfahren gemäß Anspruch 4 oder 5, wobei das Bestimmen der Positionen der optischen Codes (101, 102, 713, 804) ein Transformieren der umgebenden Rechtecke (118, 119), der Außenkonturen und/oder der geometrischen Schwerpunkte auf das Eingabebild (103) umfasst.
  7. Verfahren gemäß einem der Ansprüche 4 bis 6, wobei zum Bestimmen der Eigenschaften der optischen Codes (101, 102, 713, 804) ein Extrahieren von Codebildern (301) auf Grundlage der bestimmten Positionen der optischen Codes (101, 102, 713, 804) und ein Bestimmen von Lagen und/oder von Kategorien der optischen Codes (101, 102, 713, 804) auf Grundlage der Codebilder (301) erfolgt.
  8. Verfahren gemäß Anspruch 7, wobei das Bestimmen der Lagen und/oder der Kategorien der optischen Codes (101, 102, 713, 804) durch ein zweites neuronales Netz (302), insbesondere ein tiefes, trainiertes, konvolutionelles neuronales Netz, erfolgt.
  9. Verfahren gemäß Anspruch 8, wobei das Extrahieren der Codebilder (301) ein Anpassen der Codebilder (301) umfasst, wobei das Anpassen der Codebilder (301) derart erfolgt, dass angepasste Codebilder (303) jeweils eine mit einer Größe einer zweiten Eingabeschicht des zweiten neuronalen Netzes (302) kompatible Größe aufweisen.
  10. Verfahren gemäß Anspruch 7, wobei das Bestimmen der Lagen und/oder der Kategorien der optischen Codes (101, 102, 713, 804) ein Extrahieren allgemeiner Merkmale durch ein drittes neuronales Netz (601), insbesondere durch einen Autoencoder, und eine Regression und/oder eine Klassifikation umfasst.
  11. Verfahren gemäß Anspruch 10, wobei eine Ausprägung eines extrahierten allgemeinen Merkmals von einem Neuheitserkenner (606) auf Neuheit überprüft wird.
  12. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei zum Bestimmen der Eigenschaften der optischen Codes (101, 102, 713, 804) ein Auslesen von in den optischen Codes (101, 102, 713, 804) gespeicherten Informationen erfolgt.
  13. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei das Bestimmen einer Eigenschaft eines einzelnen optischen Codes (101, 102, 713, 804) und/oder das Bestimmen mehrerer Eigenschaften eines einzelnen optischen Codes (101, 102, 713, 804) und/oder das Bestimmen einer Eigenschaft mehrerer optischer Codes (101, 102, 713, 804) und/oder das Bestimmen mehrerer Eigenschaften mehrerer optischer Codes (101, 102, 713, 804) parallel erfolgt.
  14. Automatisierungssystem (701, 800) umfassend eine Steuerung (720, 820), ein Transportsystem (706) und eine Erfassungseinrichtung (710), wobei das Transportsystem (706) und die Erfassungseinrichtung (710) jeweils über einen Feldbus (722, 822) mit der Steuerung (720, 820) verbunden und mittels der Steuerung (720, 820) ansteuerbar sind, wobei das Transportsystem (706) dazu ausgebildet ist, mit optischen Codes (101, 102, 713, 804) gekennzeichnete Werkstücke (702, 703, 704, 705, 801, 802, 803) durch einen Erfassungsbereich der Erfassungseinrichtung (710) zu transportieren, wobei die Erfassungseinrichtung (710) dazu ausgebildet ist, Eingabebilder (103) der mit den optischen Codes (101, 102, 713, 804) gekennzeichneten Werkstücke (702, 703, 704, 705, 801, 802, 803) zu generieren und der Steuerung (720, 820) bereitzustellen, wobei die Steuerung (720, 820) dazu ausgebildet ist, anhand der von der Erfassungseinrichtung (710) bereitgestellten Eingabebilder (103) das Verfahren gemäß einem der Ansprüche 1 bis 13 durchzuführen.
  15. Automatisierungssystem (701, 800) gemäß Anspruch 14, wobei die Steuerung (720, 820) dazu ausgebildet ist, das Verfahren innerhalb eines einzigen Steuerungszyklus des Automatisierungssystems (701, 800) abzuschließen.
  16. Automatisierungssystem (701, 800) gemäß Anspruch 14 oder 15, wobei die Steuerung (720, 820) eine Prozessoreinheit und einen Speicher aufweist, wobei ein erstes neuronales Netz (114) und/oder ein zweites neuronales Netz (302) und/oder ein drittes neuronales Netz (601) in dem Speicher hinterlegt sind, wobei die Steuerung (720, 820) dazu ausgebildet ist, mithilfe der Prozessoreinheit und des im Speicher hinterlegten ersten neuronalen Netzes (114) und/oder des zweiten neuronalen Netzes (302) und/oder des dritten neuronalen Netzes (601) das Verfahren durchzuführen.
  17. Computerprogrammprodukt umfassend Befehle, die bei der Ausführung des Computerprogramms durch einen Computer diesen dazu veranlassen, das Verfahren gemäß einem der Ansprüche 1 bis 13 auszuführen.
DE102018109392.6A 2018-04-19 2018-04-19 Verfahren zum erfassen optischer codes, automatisierungssystem und computerprogrammprodukt zum durchführen des verfahrens Pending DE102018109392A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102018109392.6A DE102018109392A1 (de) 2018-04-19 2018-04-19 Verfahren zum erfassen optischer codes, automatisierungssystem und computerprogrammprodukt zum durchführen des verfahrens
US16/388,503 US10922510B2 (en) 2018-04-19 2019-04-18 Method, automation system and computer system for detecting optical codes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102018109392.6A DE102018109392A1 (de) 2018-04-19 2018-04-19 Verfahren zum erfassen optischer codes, automatisierungssystem und computerprogrammprodukt zum durchführen des verfahrens

Publications (1)

Publication Number Publication Date
DE102018109392A1 true DE102018109392A1 (de) 2019-10-24

Family

ID=68105051

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018109392.6A Pending DE102018109392A1 (de) 2018-04-19 2018-04-19 Verfahren zum erfassen optischer codes, automatisierungssystem und computerprogrammprodukt zum durchführen des verfahrens

Country Status (2)

Country Link
US (1) US10922510B2 (de)
DE (1) DE102018109392A1 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2739059C1 (ru) * 2020-06-30 2020-12-21 Анатолий Сергеевич Гавердовский Способ проверки подлинности маркировки
EP4231195A1 (de) 2022-02-21 2023-08-23 Sick Ag Auffinden von codebildbereichen in einem bild eines codetragenden objekts
DE102023102950B3 (de) 2023-02-07 2023-11-30 Sick Ag Codelesevorrichtung und Verfahren zum parallelen Lesen einer Vielzahl von Codes

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11615285B2 (en) 2017-01-06 2023-03-28 Ecole Polytechnique Federale De Lausanne (Epfl) Generating and identifying functional subnetworks within structural networks
US10846561B1 (en) 2020-04-01 2020-11-24 Scandit Ag Recognition and selection of discrete patterns within a scene or image
US11663478B2 (en) 2018-06-11 2023-05-30 Inait Sa Characterizing activity in a recurrent artificial neural network
US11893471B2 (en) 2018-06-11 2024-02-06 Inait Sa Encoding and decoding information and artificial neural networks
US10810726B2 (en) 2019-01-30 2020-10-20 Walmart Apollo, Llc Systems and methods for detecting content in images using neural network architectures
US10922584B2 (en) * 2019-01-30 2021-02-16 Walmart Apollo, Llc Systems, methods, and techniques for training neural networks and utilizing the neural networks to detect non-compliant content
US11569978B2 (en) 2019-03-18 2023-01-31 Inait Sa Encrypting and decrypting information
US11652603B2 (en) * 2019-03-18 2023-05-16 Inait Sa Homomorphic encryption
US11080884B2 (en) * 2019-05-15 2021-08-03 Matterport, Inc. Point tracking using a trained network
US11816553B2 (en) 2019-12-11 2023-11-14 Inait Sa Output from a recurrent neural network
US11651210B2 (en) 2019-12-11 2023-05-16 Inait Sa Interpreting and improving the processing results of recurrent neural networks
US11797827B2 (en) 2019-12-11 2023-10-24 Inait Sa Input into a neural network
US11580401B2 (en) 2019-12-11 2023-02-14 Inait Sa Distance metrics and clustering in recurrent neural networks
US10990848B1 (en) 2019-12-27 2021-04-27 Sap Se Self-paced adversarial training for multimodal and 3D model few-shot learning
US11080560B2 (en) 2019-12-27 2021-08-03 Sap Se Low-shot learning from imaginary 3D model
US11758069B2 (en) 2020-01-27 2023-09-12 Walmart Apollo, Llc Systems and methods for identifying non-compliant images using neural network architectures
US11514665B2 (en) 2020-04-01 2022-11-29 Scandit Ag Mapping optical-code images to an overview image
US11087105B1 (en) 2020-05-15 2021-08-10 Scandit Ag Performance improvements for recognition of optical patterns in images
US11216628B2 (en) 2020-04-01 2022-01-04 Scandit Ag High-speed scanning of optical patterns using a digital camera
US11295163B1 (en) 2020-04-01 2022-04-05 Scandit Ag Recognition of optical patterns in images acquired by a robotic device
US11922271B1 (en) 2020-05-15 2024-03-05 Scandit Ag Virtual screen standby mode for mobile device camera
US11290643B1 (en) 2020-06-26 2022-03-29 Scandit Ag Efficient digital camera image acquisition and analysis
US11244147B2 (en) 2020-05-15 2022-02-08 Scandit Ag Optical data exchange while preserving social distancing
US11403477B1 (en) 2020-05-15 2022-08-02 Scandit Ag Image exposure performance improvements for recognition of optical patterns
EP3916633A1 (de) * 2020-05-25 2021-12-01 Sick Ag Kamera und verfahren zum verarbeiten von bilddaten
EP3926519A1 (de) * 2020-06-18 2021-12-22 Leuze electronic GmbH + Co. KG Optischer sensor und verfahren zur erfassung von codes
US11417001B1 (en) 2020-07-27 2022-08-16 Scandit Ag Detecting discrete optical patterns using depth estimation
EP4030337B1 (de) * 2021-01-18 2024-03-13 Leuze electronic GmbH + Co. KG Optischer sensor und verfahren zur erfassung von codes
US11495036B1 (en) 2021-01-29 2022-11-08 Scandit Ag Segmenting images for optical character recognition
US20220309264A1 (en) * 2021-03-24 2022-09-29 Maplebear Inc. (Dba Instacart) Image-based barcode decoding
US11880738B1 (en) 2021-08-17 2024-01-23 Scandit Ag Visual odometry for optical pattern scanning in a real scene
US11557136B1 (en) 2022-02-23 2023-01-17 Scandit Ag Identity document verification based on barcode structure

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10137093A1 (de) 2001-07-30 2003-02-13 Sick Ag Verfahren zum Erkennen eines Codes und Codeleser
US20150339526A1 (en) * 2013-03-13 2015-11-26 Kofax, Inc. Systems and methods for classifying objects in digital images captured using mobile devices

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7016539B1 (en) 1998-07-13 2006-03-21 Cognex Corporation Method for fast, robust, multi-dimensional pattern recognition
US20040007623A1 (en) 2002-07-15 2004-01-15 Huang Mark Po-Shaw System for bar-code/character/graph reader
US7181066B1 (en) 2002-12-26 2007-02-20 Cognex Technology And Investment Corporation Method for locating bar codes and symbols in an image
JP4886584B2 (ja) * 2007-04-26 2012-02-29 キヤノン株式会社 画像処理装置、画像処理方法及びそのプログラム
US8905314B2 (en) 2010-09-30 2014-12-09 Apple Inc. Barcode recognition using data-driven classifier
US8523075B2 (en) 2010-09-30 2013-09-03 Apple Inc. Barcode recognition using data-driven classifier
EP2555160B1 (de) 2011-08-05 2013-10-09 Sick Ag Erzeugung eines in interessante und uninteressante Bereiche vorsegmentierten Bildes
US9361503B2 (en) 2014-10-30 2016-06-07 Datalogic IP Tech Srl Systems, methods and articles for reading highly blurred machine-readable symbols
US11062108B2 (en) * 2017-11-07 2021-07-13 Digimarc Corporation Generating and reading optical codes with variable density to adapt for visual quality and reliability
US10650211B2 (en) * 2018-03-28 2020-05-12 Datalogic IP Tech, S.r.l. Artificial intelligence-based machine readable symbol reader
US11915288B2 (en) * 2018-04-20 2024-02-27 Noww, Inc. Useful and novel shopping application

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10137093A1 (de) 2001-07-30 2003-02-13 Sick Ag Verfahren zum Erkennen eines Codes und Codeleser
US20150339526A1 (en) * 2013-03-13 2015-11-26 Kofax, Inc. Systems and methods for classifying objects in digital images captured using mobile devices

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Computer vision. In: Wikipedia, The free encyclopedia. Bearbeitungsstand: 14.04.2018. URL: https://en.wikipedia.org/w/index.php?title=Computer_vision&oldid=836425155 [aufgerufen am 30.01.2019] *
DÖRN, S.: Programmieren für Ingenieure und Naturwissenschaftler: Intelligente Algorithmen und digitale Technologien. Springer-Verlag, 2018. Seiten 89-97, 129-145 *
FURMANS, K. [et al.]: Handbuch Logistik. Berlin, Springer, 2008. S. 815-824 *
KATONA, M.; NYÚL, L. G.: Improved 1D and 2D barcode detection with morphological operations. 2013.URL: http://publicatio.bibl.u-szeged.hu/8469/1/F06_03.pdf [aufgerufen am 30.01.2019] *
PICCINELLI, L.: Barcode image segmentation. 22.04.2017. URL: https://hackernoon.com/barcode-image-segmentation-a36cdce69f03 [aufgerufen am 30.01.2019] *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2739059C1 (ru) * 2020-06-30 2020-12-21 Анатолий Сергеевич Гавердовский Способ проверки подлинности маркировки
EP4231195A1 (de) 2022-02-21 2023-08-23 Sick Ag Auffinden von codebildbereichen in einem bild eines codetragenden objekts
DE102023102950B3 (de) 2023-02-07 2023-11-30 Sick Ag Codelesevorrichtung und Verfahren zum parallelen Lesen einer Vielzahl von Codes

Also Published As

Publication number Publication date
US10922510B2 (en) 2021-02-16
US20190325183A1 (en) 2019-10-24

Similar Documents

Publication Publication Date Title
DE102018109392A1 (de) Verfahren zum erfassen optischer codes, automatisierungssystem und computerprogrammprodukt zum durchführen des verfahrens
EP2417561B1 (de) Zweidimensionaler symbolcode und verfahren zum lesen des symbolcodes
EP3428834B1 (de) Optoelektronischer codeleser und verfahren zum lesen von optischen codes
DE102018129425B4 (de) System zur Erkennung eines Bearbeitungsfehlers für ein Laserbearbeitungssystem zur Bearbeitung eines Werkstücks, Laserbearbeitungssystem zur Bearbeitung eines Werkstücks mittels eines Laserstrahls umfassend dasselbe und Verfahren zur Erkennung eines Bearbeitungsfehlers eines Laserbearbeitungssystems zur Bearbeitung eines Werkstücks
DE102018128531A1 (de) System und Verfahren zum Analysieren einer durch eine Punktwolke dargestellten dreidimensionalen Umgebung durch tiefes Lernen
EP2463101B1 (de) System und Verfahren zur Erzeugung und Inspektion von Drucken mit statischen und variablen Inhalten
DE102019102866A1 (de) Identifizierung eines Herstellungsteils unter Verwendung von Computervision und Maschinenlernen
DE102020000964A1 (de) Objekterkennungsvorrichtung, Steuervorrichtung und Objekterkennungscomputerprogramm
EP3916633A1 (de) Kamera und verfahren zum verarbeiten von bilddaten
DE112019002848T5 (de) System und verfahren zum auffinden und klassifizieren von mustern in einem bild mit einem bildverarbeitungssystem
EP3767403B1 (de) Machine-learning gestützte form- und oberflächenmessung zur produktionsüberwachung
DE102019204139A1 (de) Training für künstliche neuronale Netzwerke mit besserer Ausnutzung der Lern-Datensätze
EP3529744A1 (de) Analyseverfahren für objektmarkierungen in bildern auf basis von modellen
EP3123393B1 (de) Verfahren zur optischen erkennung von zeichen
EP3009984A1 (de) Detektionssystem für optische Codes
EP3425324B2 (de) Verfahren zur parametrierung eines sensors
DE10137093A1 (de) Verfahren zum Erkennen eines Codes und Codeleser
DE10013137B4 (de) Verfahren zur bildgesteuerten Prüfung und Bearbeitung von Produkten
EP0693200B1 (de) Verfahren zur klassifizierung von objekten
EP0731416B1 (de) Vorrichtung zur berührungslosen Erkennung
WO2022214647A1 (de) Vorrichtung und verfahren für eine prüfung einer kennzeichnung eines produkts
WO2022237930A1 (de) Bauteilklassifizierungsvorrichtung, verfahren zum klassifizieren von bauteilen und verfahren zum trainieren einer bauteilklassifizierungsvorrichtung
EP3289518A1 (de) Verfahren zur gewinnung von informationen aus einem kodierkoerper, system mit einem kodierkoerper, computerprogrammprodukt und datenspreichermittel
DE102021123761A1 (de) Bauteilklassifizierungsvorrichtung, Verfahren zum Klassifizieren von Bauteilen und Verfahren zum Trainieren einer Bauteilklassifizierungsvorrichtung
DE102019134387A1 (de) Verfahren zur echtzeitfähigen optischen Zeichenerkennung in einem Automatisierungssystem und Automatisierungssystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication