Erkennen Sie Mängel an Automobilteilen mit Amazon Lookout for Vision und Amazon SageMaker

Quellknoten: 1139698

Einem aktuellen Studie, fehlerhafte Produkte kosten die Industrie von 2 bis 2012 über 2017 Milliarden US-Dollar. Die Fehlererkennung in der Fertigung ist ein wichtiger Geschäftsanwendungsfall, insbesondere in Branchen mit hochwertigen Produkten wie der Automobilindustrie. Dies ermöglicht eine frühzeitige Diagnose von Anomalien, um die Effizienz der Produktionslinie und die Produktqualität zu verbessern und Kapitalkosten zu sparen. Obwohl fortschrittliche Systeme zur Anomalieerkennung sowohl Sensoren als auch Internet-of-Things-Geräte (IoT) nutzen, um multimodale Daten zu sammeln und so die Leistung zu verbessern, ist Computer Vision nach wie vor ein gängiger Ansatz. Die Erkennung von Anomalien in Automobilteilen und -komponenten mithilfe von Computer Vision kann mithilfe normaler Bilder und sogar röntgenbasierter Bilder für Strukturschäden erfolgen. Jüngste Fortschritte in den Bereichen Deep Learning und Computer Vision haben es Wissenschaftlern und Herstellern ermöglicht, verbesserte Anomalieerkennungssysteme zu entwickeln, einschließlich der Erkennung von Oberflächenfehlern an Karosserieteilen und der Dellenerkennung in Fahrzeugen.

Die Anomalieerkennung besteht typischerweise aus zwei Aufgaben: der Feststellung, ob ein bestimmtes Produkt fehlerhaft ist oder nicht, und der Lokalisierung des Defekts – dem Prozess der Identifizierung der genauen Position eines Defekts innerhalb eines Bildes. In diesem Beitrag zeigen wir, wie wir eine End-to-End-Pipeline für Folgendes entworfen und implementiert haben:

  • Fehlererkennung mit Amazon Lookout für Vision, ein Dienst für maschinelles Lernen (ML) zur Identifizierung von Anomalien in Bildern mithilfe von Computer Vision
  • Fehlerlokalisierung durch überwachte und unüberwachte Ansätze Amazon Sage Maker

Der überwachte Ansatz basiert auf Single-Shot-MultiBox-Detektor (SSD) ist in Anwendungsfällen relevant, in denen wir über ausreichend gekennzeichnete Daten verfügen. Allerdings kann das Erstellen von Anmerkungen zu Bildern oft teuer und zeitaufwändig sein. Darüber hinaus sind anomale Bilder per Definition normalerweise nicht in großem Maßstab verfügbar. Für diese Anwendungsfälle stellen wir eine unbeaufsichtigte Fehlerlokalisierungsmethode basierend auf a vor Variations-Autoencoder (VAE).

Datenübersicht

Im Automobilbereich können die in der folgenden Tabelle aufgeführten häufigsten Arten von Mängeln wie folgt kategorisiert werden:

  • Dimensional – Wie Ausrichtung, Ausrichtung und Rundheit
  • Strukturell – Zum Beispiel Löcher, Schrauben und Klammern
  • Oberfläche – Wie Kratzer, Risse, Abnutzung und Rauheit
  • Betriebsmängel – Inkompatibilität mit Normen und Spezifikationen

In diesem Beitrag haben wir mit Automobilteilen wie Rädern und Achsschenkeln gearbeitet.

Mängel
Typen Details
Dimensional Abmessungen, Form, Positionierung, Ausrichtung, Ausrichtung, Rundheit, Ecken
Strukturell Montage, Löcher, Schlitze, Nieten, Schrauben, Klammern
Fremdkörper, Staub, Bohrer, Schwarm
Oberfläche Grübchen, Kratzer, Risse, Verschleiß, Oberfläche, Rauheit, Textur, Nähte, Falten, Überlappungen, Kontinuität
Operatives Unvereinbarkeit des Betriebs mit Standards und Spezifikationen

Wir nutzten die GRIMA-Röntgendatenbank GDXray-Datensatz, das fünf Bildgruppen umfasst: Gießen, Schweißen, Gepäck, Natur und Einstellungen (siehe folgende Tabelle).

Gruppe an Klassen Bilder
Casting 67 2,727
Schweißnähte 3 88
Gepäck 77 8,150
Natur 13 8,290
Einstellungen 7 152

Wir haben die Gussdaten für dieses Projekt berücksichtigt, die 2,727 Röntgenbilder umfassten. Wir haben vier Bilder ausgeschlossen, da sie weder Rädern noch Achsschenkeln ähnelten, so dass 984 defekte und 1739 nicht defekte Bilder übrig blieben. Die folgenden Bilder zeigen einige Beispiele aus dem in dieser Studie verwendeten Datensatz.

Aufgrund unterschiedlicher Anforderungen an die zugrunde liegenden Modellierungsansätze verwendeten wir unterschiedliche Stichprobengrößen für Training und Tests. Die folgende Tabelle zeigt die Anzahl der Proben, die in jedem unserer Modelle für Training und Tests verwendet werden.

Modell Ausbildung Testen
Lookout for Vision (Klassifizierung) 2179 544
Benutzerdefinierter Variations-Autoencoder (unüberwacht) 1739 984
Benutzerdefinierter Single-Shot-Multibox-Detektor (überwacht) 544 1036

Fehlererkennung mit Lookout for Vision

Lookout for Vision ist ein ML-Dienst, der mithilfe von Computer Vision Fehler und Anomalien in visuellen Darstellungen erkennt. Mit Lookout for Vision können Fertigungsunternehmen die Qualität steigern und die Betriebskosten senken, indem sie Unterschiede in Bildern von Objekten im großen Maßstab schnell erkennen. Mit Lookout for Vision können Sie beispielsweise fehlende Komponenten in Produkten, Schäden an Fahrzeugen oder Strukturen, Unregelmäßigkeiten in Produktionslinien, winzige Defekte in Siliziumwafern und andere ähnliche Probleme identifizieren.

Lookout for Vision nutzt ML, um Bilder von jeder Kamera so zu sehen und zu verstehen, wie ein Mensch es tun würde, jedoch mit noch höherer Genauigkeit und in einem viel größeren Maßstab. Mit Lookout for Vision können Sie kostspielige und inkonsistente manuelle Inspektionen überflüssig machen und gleichzeitig die Qualitätskontrolle, Fehler- und Schadensbewertung sowie Compliance verbessern. Innerhalb weniger Minuten können Sie Lookout for Vision verwenden, um die Inspektion von Bildern und Objekten zu automatisieren, ohne dass ML-Kenntnisse erforderlich sind. Die Verwendung von Lookout for Vision zur Klassifizierung von Bildern als anomal (defekt) oder nicht defekt ist ein entscheidender Schritt in unserer Pipeline, um zu identifizieren, welche Bilder einer weiteren Analyse bedürfen.

Halten Sie Ausschau nach dem Visionsprozess und den Ergebnissen

Wir haben den Prozess der Modellentwicklung mit Lookout for Vision in drei Schritten abgeschlossen:

  1. Wir haben unsere Beispieldaten auf hochgeladen Amazon Simple Storage-Service (Amazon S3) in Schulungs- und Testordner und wir haben sie mit unserem Lookout for Vision-Projekt verknüpft.
  2. Wir haben unser Klassifizierungsmodell mithilfe des Lookout for Vision trainiert Benutzerschnittstelle Verwenden des hochgeladenen Datensatzes.
  3. Nach Abschluss des Trainings analysierten wir die Ergebnisse für den Testsatz, wie in der folgenden Abbildung dargestellt.

Lookout for Vision ermöglichte es uns, fehlerhafte Bilder in unserem Datensatz zu erkennen und unsere Proben für die Lokalisierung fehlerhafter Regionen im ausgewählten Datensatz vorzubereiten. Lookout for Vision half bei der korrekten Identifizierung von 183 anomalen Bildern, von denen 123 Proben für das Training des Defektlokalisierungsmodells verwendet wurden. Die restlichen 60 Proben wurden zum Testen verwendet. Die Lokalisierungspipeline und die Ergebnisse unseres Ansatzes werden im folgenden Abschnitt beschrieben. Die Verwendung eines Systems wie Lookout for Vision, das die Identifizierung fehlerhafter Teile erleichtert, gefolgt von unserer im nächsten Abschnitt beschriebenen Fehlerlokalisierungspipeline, ermöglicht eine durchgängige Fehlererkennungspipeline.

Fehlerlokalisierungspipeline

Bei der Fehlerlokalisierung handelt es sich um den Prozess der Identifizierung der genauen Position eines Fehlers innerhalb eines Bildes. Wir haben eine Fehlerlokalisierungspipeline mit zwei Optionen entwickelt. Mit der ersten Option können Sie Ihre Daten zum Trainieren von ML-Modellen bereitstellen. Wir beschreiben zwei Trainingsansätze, einen mit einer unbeaufsichtigten VAE und einen mit einer überwachten SSD-Methode. Mit der zweiten Option können Sie ohne Training nur vorab trainierte oder benutzerdefinierte Modelle für Vorhersagezwecke verwenden. Die folgende Abbildung veranschaulicht die Details der in dieser Arbeit entwickelten Pipeline.

Bei der ersten Option laden wir die Daten in einen S3-Bucket hoch, getrennt in fehlerhafte und nicht fehlerhafte Ordner, die in die Verarbeitungspipeline eingespeist werden. Das Folgende ist ein Ausschnitt des VAE-Schulungsprozesses:

net = VAE(n_hidden=n_hidden, n_latent=n_latent, n_layers=n_layers, n_output=n_output, batch_size=1)
net.collect_params().initialize(mx.init.Xavier(), ctx=model_ctx)
net.hybridize()
trainer = gluon.Trainer(net.collect_params(), ‘adam’, {‘learning_rate’: .00001}) # Training VAE MODEL
n_epoch = 40
print_period = n_epoch // 10
start = time.time() training_loss = []
validation_loss = []
for epoch in tqdm(range(n_epoch)): epoch_loss = 0 epoch_val_loss = 0 train_iter.reset() test_iter.reset() n_batch_train = 0 for batch in train_iter: n_batch_train +=1 data = batch.data[0].as_in_context(model_ctx) data = data.reshape(train_iter.batch_size, 768**2)*(1/255) with autograd.record() loss = net(data) loss.backward() trainer.step(data.shape[0]) epoch_loss += nd.mean(loss).asscalar() n_batch_val = 0 for batch in test_iter: n_batch_val +=1 data = batch.data[0].as_in_context(model_ctx) data = data.reshape(train_iter.batch_size, 768**2)*(1/255) loss = net(data) epoch_val_loss += nd.mean(loss).asscalar() epoch_loss /= n_batch_train epoch_val_loss /= n_batch_val training_loss.append(epoch_loss) validation_loss.append(epoch_val_loss) if epoch % max(print_period,1) == 0: tqdm.write(‘Epoch{}, Training loss {:.2f}, Validation loss {:.2f}’.format(epoch, epoch_loss, epoch_val_loss)) end = time.time()
print(‘Time elapsed: {:.2f}s’.format(end – start))
net.save_parameters(model_prefix)

Nach der Vorverarbeitung haben wir alle fehlerfreien Bilder in das Modell eingespeist. Der folgende Code ist der Trainingsprozess für SSD:

net = get_model('ssd_512_mobilenet1.0_coco', pretrained=True, ctx=ctx)#ssd_512_mobilenet1.0_coco
net.reset_class(classes) train_data = get_dataloader(net, dataset, 512, 1, 0, ctx) net.collect_params().reset_ctx(ctx)
trainer = gluon.Trainer( net.collect_params(), 'sgd', {'learning_rate': 0.0001, 'wd': 0.0005, 'momentum': 0.9}) mbox_loss = gcv.loss.SSDMultiBoxLoss()
ce_metric = mx.metric.Loss('CrossEntropy')
smoothl1_metric = mx.metric.Loss('SmoothL1')
print("Starting SSD Training") for epoch in range(40): ce_metric.reset() smoothl1_metric.reset() tic = time.time() btic = time.time() net.hybridize(static_alloc=True, static_shape=True) for i, batch in enumerate(train_data): batch_size = batch[0].shape[0] data = gluon.utils.split_and_load(batch[0], ctx_list=[ctx], batch_axis=0) cls_targets = gluon.utils.split_and_load(batch[1], ctx_list=[ctx], batch_axis=0) box_targets = gluon.utils.split_and_load(batch[2], ctx_list=[ctx], batch_axis=0) with autograd.record(): cls_preds = [] box_preds = [] for x in data: cls_pred, box_pred, _ = net(x) cls_preds.append(cls_pred) box_preds.append(box_pred) sum_loss, cls_loss, box_loss = mbox_loss( cls_preds, box_preds, cls_targets, box_targets) autograd.backward(sum_loss) # since we have already normalized the loss, we don't want to normalize # by batch-size anymore trainer.step(1) ce_metric.update(0, [l * batch_size for l in cls_loss]) smoothl1_metric.update(0, [l * batch_size for l in box_loss]) name1, loss1 = ce_metric.get() name2, loss2 = smoothl1_metric.get() if i % 100 == 0: print('[Epoch {}][Batch {}], Speed: {:.3f} samples/sec, {}={:.3f}, {}={:.3f}'.format( epoch, i, batch_size/(time.time()-btic), name1, loss1, name2, loss2)) btic = time.time()
net.save_parameters(ssd_model_name)

Der vorhergehende Ausschnitt stammt aus GluonCV.

Bei der zweiten Option werden die Daten in einem einzelnen Ordner in einen S3-Bucket hochgeladen. Die Bilder werden in die Pipeline eingespeist und ein bereits erstelltes Modell (vorab trainiert oder benutzerdefiniert) wird aufgerufen, um die Vorhersage zu treffen. Vorhersagen werden zurück in denselben Bucket hochgeladen.

Unbeaufsichtigte Fehlerlokalisierung

Für das erste Modell in der Lokalisierungspipeline verwendeten wir eine VAE als unbeaufsichtigte Methode, bei der wir Daten ohne Labels verwendeten. Zum Testen haben wir zufällig ein Bild ausgewählt und es in den Autoencoder eingespeist, mit der Erwartung, dass das rekonstruierte Bild eine Nachbildung des Originals sein würde, mit Ausnahme des Fehlers (falls vorhanden). Der gesamte Prozess ist wie folgt:

  1. Wir haben Bilder durch den Autoencoder geleitet, um Feature-Maps zu generieren.
  2. Wir haben die generierten Feature-Maps mithilfe einer L2-Normalisierungstransformation rekonstruiert.
  3. Dieses L2-Bild wird dann mit dem Original multipliziert, um in den Bereichen, in denen Fehler vorhanden sind, einen höheren Kontrast zu erzielen.
  4. Wir haben die endgültige Version des Bildes verwendet, um eine binäre Maske zu erstellen, in der anomale Pixel mit 1 und 0 gekennzeichnet sind, andernfalls haben wir einen optimalen Schwellenwert für die Pixelintensität basierend auf Validierungsdaten verwendet.
  5. Nachdem wir die Binärmaske erstellt hatten, entfernten wir die Fehlalarme, indem wir nur „weitgehend“ verbundene Pixel verwendeten, und generierten die Begrenzungsrahmen mithilfe der verbleibenden Pixel.

Die folgende Abbildung zeigt die VAE-Architektur.

Variationeller Auto-Encoder

Variationeller Auto-Encoder

Das folgende Bild ist ein Beispiel für einen durch VAE und Ground Truth (grün) vorhergesagten Begrenzungsrahmen (rot).

vorhergesagter Begrenzungsrahmen

Überwachte Fehlerlokalisierung

Das zweite Modell der Lokalisierungspipeline, der überwachte Ansatz, verwendet den SSD-Algorithmus mit einem MobileNet-Backbone anstelle von VGG-16, vorab trainiert auf den Common Objects in Context (KOKOSNUSS) Datensatz. Zum Testen folgten wir einer ähnlichen Pipeline-Struktur wie die unbeaufsichtigte VAE-Methode. Wir haben aus unseren Daten zufällig Bilder ausgewählt und in das Netzwerk eingespeist. Das Netzwerk gibt die Koordinaten für Bounding-Box-Vorhersagen der Defekte aus. Anschließend haben wir alle Bilder in den ursprünglichen S3-Bucket hochgeladen, wobei alle erkannten Fehler von Begrenzungsrahmen umgeben waren. Die ursprüngliche SSD-Architektur ist in der folgenden Abbildung dargestellt.

Das folgende Bild ist ein Beispiel für einen durch SSD und Ground Truth (grün) vorhergesagten Begrenzungsrahmen (rot).

Um unsere Methoden zu bewerten, haben wir den F1-Score und die Schnittmenge über der Union (IoU) verwendet. Die Ergebnisse sind in der folgenden Tabelle dargestellt. Im Basismodell wurde mit der VAE-Methode ein F1-Score von 19 % und ein IoU von 10 % ermittelt. Mit unserem auf COCO vorab trainierten Objekterkennungsmodell konnten wir den F1-Score deutlich auf 46 % und unseren IoU auf 26 % steigern.

Versandart Trainingsaufteilung Split testen Durchschnittlich F1 Durchschnittlicher Schuldschein Beste F1 Bester Schuldschein
VAE 1739 984 19% 10% 88% 80%
SSD 544 1036 46% 26% 96% 89%
Achten Sie auf Vision 2179 544 95.1% - - -

Zusammenfassung

Wir haben eine Deep-Learning-basierte Lösung zur Fehlererkennung und -lokalisierung in Automobilteilen basierend auf überwachten und unüberwachten Methoden implementiert. Nachdem Sie mit Lookout for Vision alle anomalen (fehlerhaften) Bilder erkannt haben, können Sie unsere Fehlerlokalisierungspipeline anwenden, um fehlerhafte Bereiche in anomalen Bildern zu lokalisieren. Unsere mit SageMaker entwickelte Lösung ermöglicht es Ihnen, Daten in einen S3-Bucket hochzuladen und die Befehle über das Terminal auszuführen, um die Modelle zu trainieren oder Fehler in unsichtbaren Daten vorherzusagen. Das unbeaufsichtigte VAE-Modell ermöglicht es Kunden ohne gekennzeichnete Daten, Fehler zu lokalisieren, während die überwachte Objekterkennungsmethode gekennzeichnete Daten erfordert, was zu einer genaueren Fehlerlokalisierung führt.

Nutzen Sie Ihre Fertigungsbilder in unserer Pipeline, um Fehler zu reduzieren und die Effizienz Ihrer Montagelinie zu verbessern. Besuchen Sie unsere Website Erfahren Sie mehr über das Amazon ML Solutions Lab und was es für Ihr Unternehmen tun kann!


Über die Autoren

Matthäus Rhodos ist Data Scientist in der Amazon ML-Lösungslabor hier bei AWS. Er verfügt über Erfahrung in den Bereichen Computer Vision und Verarbeitung natürlicher Sprache und schloss sein Studium an der Michigan State University mit einem B.S. ab. in der Informatik. Anschließend ging er an die University of Washington, wo er einen Master in Data Science abschloss.

Saman Sarraf ist Senior Applied Scientist am Amazon ML-Lösungslabor. Sein Hintergrund liegt im angewandten maschinellen Lernen, einschließlich Deep Learning, Computer Vision und Vorhersage von Zeitreihendaten.

Suchitra Sathyanarayana ist Senior Manager, Angewandte Wissenschaft am Amazon ML-Lösungslabor wo sie AWS-Kunden aus verschiedenen Branchen dabei hilft, ihre KI- und Cloud-Einführung zu beschleunigen. Sie hat einen Doktortitel in Computer Vision von der Nanyang Technological University, Singapur.

Quelle: https://aws.amazon.com/blogs/machine-learning/detect-defects-in-automotive-parts-with-amazon-lookout-for-vision-and-amazon-sagemaker/

Zeitstempel:

Mehr von AWS-Blog für maschinelles Lernen