KI-GESTÜTZTE DOKUMENTATION
Was möchten Sie wissen?
Klassifikation: ein Label pro Region
Ein Klassifikator betrachtet eine zugeschnittene Region und beantwortet eine einzige Frage: In welche Kategorie gehört dies? Pass oder Fail. Leer oder voll. Rot, grün oder blau. Es ist der einfachste, schnellste Inspektionstyp und die richtige Standardwahl, sofern Sie nicht wissen müssen, wo sich ein Defekt befindet.
Die Einrichtung eines Klassifikators basiert auf einer einfachen Hierarchie: Types besitzen Classes, und Types werden als ROIs auf Bilder gestempelt.
Stellen Sie es sich wie ein Stempelsystem vor. Der Inspection Type ist der Stempel selbst (das Design). Die ROIs sind die Abdrücke, die Sie auf das Blatt setzen (das Bild). Jeder Abdruck erbt dasselbe Design, dieselbe Klassenliste und dasselbe trainierte Modell.
Die OV10i führt ausschließlich Klassifikator-Modelle aus. Wenn Ihre Inspektion pixelgenaue Masken erfordert (Zählen, Flächenmessung, Defektlokalisierung), wechseln Sie zur OV20i oder OV80i, die Segmentierung unterstützen.
Die drei Konzepte
Bevor Sie ein AI-Modell trainieren können, muss die Kamera wissen, wo sie suchen soll, welche möglichen Ergebnisse es gibt und wie jeder Zuschnitt bewertet werden soll. Diese drei Fragen entsprechen drei Konzepten, die auf eine ganz bestimmte Weise ineinandergreifen.
Inspection Type
A named bucket. Holds one shared dataset, one shared list of classes, and one trained AI model.
Classes
The vocabulary of possible outcomes for this inspection. Defined once on the type.
Region of Interest (ROI)
A rectangle drawn on the image. Many ROIs can share one type and, therefore, one dataset and one model.
Das mentale Modell: Ein Type besitzt die Classes und die ROIs
Ein Inspection Type ist ein Container. Er enthält einen gemeinsamen Datensatz, eine gemeinsame Klassenliste und ein trainiertes AI-Modell. Diesen Container stempeln Sie dann an mehreren Stellen auf das Bild – diese Stempel sind die ROIs. Jede ROI desselben Types erbt dieselben Classes und wird vom selben Modell ausgewertet.
- Inspection Type ist der Container.
- Classes sind das Ergebnisvokabular.
- ROI ist eine Position im Bild.
Für einen Klassifikator: ein Label pro ROI, ausgewählt aus der Klassenliste
Ein Klassifikator nimmt jeden ROI-Zuschnitt und stellt eine einzige Frage: Welcher Class entspricht dieser? Vorhanden oder nicht vorhanden. Pass oder Fail. Gut, zerkratzt oder gerissen. Die Ausgabe pro ROI ist ein Klassenname plus ein Confidence-Wert – eine saubere kategorische Antwort, auf die der Rest Ihrer Pipeline reagieren kann.
Praxisbeispiel: Schraubenprüfung auf einer Leiterplatte
Betrachten Sie eine Leiterplatte mit sechs Schraubenpositionen. Vier Schrauben sind vorhanden, eine fehlt, eine ist beschädigt. So würden Sie die Konfiguration vornehmen:
- Type:
Screws(6 ROIs, Klassifikator) - Classes:
present,absent,damaged - ROIs:
Screw_1bisScrew_6, jede mit einer der drei Classes gekennzeichnet
Die Ausgabe pro ROI ist ein Label plus Confidence:
| ROI | Label | Confidence |
|---|---|---|
| Screw_1 | present | 0.98 |
| Screw_2 | absent | 0.94 |
| Screw_3 | present | 0.97 |
| Screw_4 | present | 0.96 |
| Screw_5 | present | 0.95 |
| Screw_6 | damaged | 0.82 |
Drei Dinge, die Sie aus diesem Beispiel verinnerlichen sollten:
- Ein Label pro ROI. Der Klassifikator weist jedem Zuschnitt genau eine Class zu – eine Dropdown-Auswahl, keine Mal-Aufgabe. Die Ausgabe ist
class_nameplus einconfidence-Wert. - Der Type ist der Besitzer. Alle sechs ROIs teilen sich den Screws-Datensatz. Eine Bildaufnahme liefert Ihnen sechs neue Trainingsbeispiele, und ein trainiertes Modell entscheidet über alle sechs.
- ROIs sind nur Positionen. Zeichnen Sie eng (unter 512 × 512 px). Verwenden Sie Duplicate, um
Screw_1 → Screw_2 → Screw_3zu stempeln – jede erbt automatisch die Klassenliste.
Deep Dive: Wie sich Classes verhalten
Classes gehören zum Type, nicht zur ROI
Dies ist das Wichtigste, das Sie verinnerlichen müssen. Classes sind eine Eigenschaft des Inspection Types, was bedeutet, dass das Hinzufügen oder Entfernen einer Class die Label-Optionen für jede ROI, die diesen Type verwendet, automatisch ändert.
- Einmal definieren. Klicken Sie im Classes-Panel auf + Add class. Geben Sie ihr einen Namen (z. B.
stripped_head) und eine Farbe. - Sofortige Übernahme. Die neue Class erscheint im Dropdown jeder ROI dieses Types. Keine ROI-spezifische Konfiguration nötig.
- Bei Bedarf neu labeln. Bestehende Trainingsbilder behalten ihre Labels; Sie können jedes Bild erneut aufrufen und auf die neue Class umklassifizieren.
- Halten Sie es kompakt. Beginnen Sie mit der kleinsten Klassenmenge, die Ihre Entscheidungen abbildet. Zwei Klassen (
pass/fail) übertreffen oft fünf unscharfe.
Deep Dive: Wie sich ROIs verhalten
Kleinere Regionen gewinnen. Machen Sie jede ROI gerade groß genug, um das Merkmal zu enthalten. Kleinere ROIs bedeuten weniger Trainingsdaten, schnellere Iteration und genauere AI-Entscheidungen – das Merkmal dominiert den Zuschnitt, anstatt im Hintergrund unterzugehen, und nichts wird herunterskaliert.
Klein, spezifisch und zahlreich
Eine ROI sagt der Kamera, wo sie zuschneiden soll. Je enger der Zuschnitt, desto klarer das Signal, das das Modell erhält. Da sich ROIs einen Type teilen, vervielfacht das Hinzufügen weiterer ROIs Ihre Trainingsdaten, ohne Ihre Arbeit zu vervielfachen.
- Halten Sie Zuschnitte unter 512 × 512 px. Alles Größere wird auf die Modell-Eingabegröße herunterskaliert, und Details gehen dauerhaft verloren.
- Eng ist besser. Eine kleine ROI um ein einzelnes Merkmal liefert dem Modell ein klares Signal und benötigt weniger Trainingsdaten zur Konvergenz.
- Viele ROIs, ein Type. 10 Schrauben → 10 ROIs auf demselben Screws-Type. Eine Aufnahme wird zu zehn Trainingsbeispielen, und ein Modell bearbeitet alle zehn bei der Inferenz.
- Verwenden Sie Duplicate. Benennen Sie die erste ROI aussagekräftig (
Screw_Top_Left). Duplicate inkrementiert die Namen automatisch, sodass Sie nicht erneut tippen müssen. - Vollständige Abdeckung erforderlich? Zeichnen Sie nicht eine riesige ROI – kacheln Sie ein Raster aus kleinen ROIs. Jede behält die volle Auflösung.
Datenfluss: Jede ROI durchläuft das Modell einzeln
Zur Laufzeit schneidet die Kamera jede ROI aus dem Gesamtbild heraus, übergibt sie einzeln an das trainierte Modell und erfasst, welche Class gewonnen hat, zusammen mit einem Confidence-Wert. Das Ergebnis ist ein Label pro ROI bei jeder Aufnahme.
- Capture des gesamten Frames mit allen markierten ROIs.
- Einzeln zuschneiden, sodass jede ROI zu ihrem eigenen kleinen Bild wird.
- Klassifikator-Modell wählt eine Class plus einen Confidence-Wert für jeden Zuschnitt aus.
- Output ist eine Tabelle aus ROI → Label → Confidence. Pass/Fail-Logik auf Basis dieser Tabelle wird durch Ihre IO-Block-Regeln festgelegt.
Zusammenfassung der Einrichtung
Eine kurze Checkliste vor dem Training. Wenn alle Punkte erfüllt sind, hat Ihr Klassifikator eine solide Grundlage.
- Ein Inspection Type pro Entscheidung. Vermischen Sie nicht „Schrauben" und „Etiketten" im selben Type – geben Sie jedem seinen eigenen Type, damit jeder seine eigenen Classes, seinen eigenen Datensatz und sein eigenes Modell erhält.
- Classes auf Type-Ebene definiert. Jede ROI erhält dasselbe Dropdown. Wenn eine Option nicht für jede ROI gilt, gehört sie wahrscheinlich zu einem anderen Type.
- ROIs eng gezeichnet und aussagekräftig benannt.
Screw_Top_Leftist besser alsNew ROI. Halten Sie jede ROI gerade groß genug für ihr Merkmal und unter 512 × 512 px. - Alignment funktioniert zuerst. Wenn sich das Teil verschiebt oder dreht, bewegt der Aligner Ihre ROIs entsprechend mit. Enge ROIs funktionieren nur bei zuverlässigem Alignment.
- 3 bis 5 Trainingsbilder pro Class zu Beginn. Trainieren, Fehler finden, gezielt Daten ergänzen, erneut trainieren. Zwei bis vier Iterationen sind typisch.
- Jedes Label doppelt geprüft. Ein falsches Label in fünf Trainingsbildern entspricht 20 % Korruption. Klicken Sie vor jedem Training auf View All ROIs.
Wie geht es weiter
- Regions of Interest (ROIs) – der praktische Leitfaden zum Zeichnen von ROIs.
- Training Your AI – der Workflow zum Labeln und Trainieren.
- Outputs – wie Sie Pass/Fail-Entscheidungen in den IO Block einbinden.