6

Ich habe eine Datenbank mit fast 20k 3D-Dateien, sie sind Zeichnungen von Maschinenteilen, die in einer CAD-Software entworfen wurden (Solidworks). Ich versuche, ein trainiertes Modell aus all diesen 3D-Modellen zu erstellen, also kann ich eine 3D-Objekt-Erkennungs-App erstellen, wenn jemand ein Bild von einem dieser Teile (in der realen Welt) machen kann und die App nützliche Informationen über Material liefern kann. Größe, Behandlung und so weiter.Erstellen eines trainierten Modells (maschinelles Lernen) von 3D-Modellen

Wenn jemand schon etwas ähnliches tut, würde jede Information, die Sie mir zur Verfügung stellen, sehr geschätzt werden!

+5

Was Sie fragen, ist nicht trivial, um es gelinde auszudrücken. Sie können dies möglicherweise vereinfachen, indem Sie es eher als 2D-Bildklassifizierungsproblem behandeln. Vielleicht könntest du die Erzeugung einer Bank von 2-D Trainingsbildern aus diesen Teilen in verschiedenen Winkeln beschreiben. Sie müssten sicherstellen, dass diese Trainingsbilder denen ähneln, die jemand unter verschiedenen Lichtbedingungen in einem Teil der realen Welt sehen würde, sodass Sie ein ziemlich realistisches Rendering mit einer Vielzahl von Hintergründen benötigen. Kombinationen von Materialien, Behandlungen usw. würden zu einer großen Matrix möglicher Klassen führen. –

+0

Ich kann mehrere Png-Dateien mit einem Skript exportieren, das ich bereits habe, aber ich habe nicht gedacht, dass ich zu diesen Bildern realistische Hintergründe und Beleuchtung hinzufügen musste, um es erfolgreicher zu machen, Sie machen einen ziemlich guten Punkt. Danke vielmals. –

+0

Warum kann es nicht möglich sein, den Lernalgorithmus der Maschine so zu gestalten, dass er verschiedene Umgebungslicht-Renderings selbst erzeugt und trainiert und es sich so offensichtlich anfühlt, warum viele Leute nicht daran gedacht haben? –

Antwort

0

Wenn Ihre Testdaten in der Produktion hauptsächlich Bilder des 3D-Objekts sind, dann ist die Methode im Kommentarabschnitt von Brad Larson der bessere Ansatz und es ist auch einfacher zu implementieren und erfordert viel weniger Aufwand und Ressourcen in Betrieb.

Wenn Sie jedoch zwischen 3D-Modellen klassifizieren möchten, gibt es existierende Netzwerke, die existieren, um 3D-Punktwolken zu klassifizieren. Sie müssen diese Modelle in Punktwolken umwandeln und sie als Trainingsbeispiele verwenden. Eine von denen, die ich benutzt habe, ist Voxnet. Ich empfehle Ihnen auch, den Trainingsdaten weitere Variationen hinzuzufügen, wie z. B. verschiedene Rotationen des 3D-Modells.

+0

meine Testdaten sind ein 3D Modell vom Typ step/iges/parasolid; Was ich gerne erreichen möchte, ist, mein Modell mit einer solchen Datei zu lernen und dann Objekte aus der realen Welt zu erkennen (das sind "feste" Objekte wie Flaschen etc., NICHT Hunde/Katzen/...) – swalkner

+0

@swalkner Sie müssen diese konvertieren Dateien in [XYZ-Format], das ist im Grunde eine einfache CSV-Typ-Darstellung der Vertices. Sobald dies erledigt ist, können Sie die Modelle mit Voxnet trainieren (in Antwort) –

0

Sie können vortrainierte 3D Deep Neural Networks verwenden, da es viele Netzwerke gibt, die Ihnen bei Ihrer Arbeit helfen könnten und eine hohe Genauigkeit erzeugen würden.

3

Einige Ideen:

1) Mehrere Bilder: Statt nur ein. Als Rodrigo kommentiert und Brad Larson versucht, mit seiner Methode zu umgehen, das Problem mit dem Benutzer nur ein Bild für die Eingabe ist, dass Sie notwendigerweise Informationen fehlen, um eine Triangulation und bilden eine Punktwolke in 3D. Mit 4 Bildern aus einem etwas anderen Blickwinkel können Sie bereits Teile des Objekts rekonstruieren. Der Vergleich von Punktwolken würde das Unterfangen für jeden ML-Algorithmus, neuronale Netzwerke (NN), Support Vector Machine (SVM) oder andere viel einfacher machen. Ein gebräuchlicher Standard zur Erstellung von Punktwolken ist ASTM E2807, der das Dateiformat e57 verwendet.

Auf der anderen Seite kann ein 3D-Vision-Algorithmus schwer auf dem Gerät des Benutzers sein, und ist nicht am einfachsten zu implementieren.

2) Künstliches Bildtraining: Durch Training auf vorberechneten künstlichen Bildern, wie Brad Larson vorgeschlagen hat, übernehmen Sie einen Großteil der Berechnungen, zum Nutzen des Benutzers. Sei dir bewusst, dass du wahrscheinlich "features" aus den Bildern extrahieren solltest, nicht das komplette Bild, um sowohl zu trainieren als auch zu klassifizieren. Das Problem bei dieser Methode besteht darin, dass Sie möglicherweise sehr empfindlich auf Beleuchtung und Hintergrundkontext reagieren. Sie sollten darauf achten, CAD-Bilder zu erzeugen, die für alle Objekte die gleichen Beleuchtungsbedingungen haben, damit der Klassifikator bestimmte Aspekte der "Bilder", die nicht zum Objekt gehören, nicht überzeichnet.

Dieser Aspekt ist, wo Lösung 1) viel stabiler ist, ist es weniger anfällig für den visuellen Kontext.

3) Maßstab: Die Größe Ihres Objekts ist ein wichtiger Deskriptor. Sie sollten daher Ihrem Objektdeskriptor vor dem Training Skaleninformationen hinzufügen. Sie könnten den Benutzer bitten, Bilder mit einem Referenzobjekt zu machen.Alternativ können Sie den Benutzer bitten, eine Faustregel der Objektgröße ("Was sind die ungefähren Abmessungen des Objekts, in [cm]?") Zu machen. Durch die Angabe der Größe könnte Ihr Algorithmus erheblich schneller und genauer werden.

Verwandte Themen