Erkennen eines gefüllten Glasobjekts


10

Ich wurde von dieser Frage im Stackoverflow hierher geschickt . Bitte entschuldigen Sie, wenn die Frage zu spezifisch ist und nicht in der Art und Weise hier steht :)

Die Aufgabe besteht darin, ein Glas mit einer bestimmten Flüssigkeit darin zu finden. Lassen Sie mich Ihnen die Bilder zeigen und dann in der Beschreibung unter den Bildern beschreiben, was ich erreichen möchte und wie ich bisher versucht habe, dies zu erreichen.

Die Bilder : (anscheinend brauche ich mindestens 10 Ruf, um Bilder und Links zu posten, also müssen Links Folgendes tun :( Andernfalls können Sie sich die Frage zum Stapelüberlauf ansehen.)

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Eine detaillierte Beschreibung : Ich habe versucht, einen Algorithmus zu implementieren, der ein Glas einer bestimmten Form in opencv erkennt (Glas kann durch einen anderen Aufnahmewinkel / -abstand der Kamera transformiert werden). Es wird auch andere Gläser anderer Formen geben. Das Glas, nach dem ich suche, wird auch mit einer farbigen Flüssigkeit gefüllt, die es von Gläsern mit anderen Farben unterscheidet.

Bisher habe ich versucht, mit dem SIFT-Funktionsextraktor einige Funktionen im Glas zu finden und sie dann mit anderen Fotos mit dem Glas darin abzugleichen.

Dieser Ansatz funktionierte nur unter sehr spezifischen Bedingungen, unter denen ich Glas an einer ganz bestimmten Position hätte und der Hintergrund den Lernbildern ähnlich wäre. Das Problem ist auch, dass das Glas ein 3D-Objekt ist und ich nicht weiß, wie ich Features daraus extrahieren kann (vielleicht mehrere Fotos aus verschiedenen Blickwinkeln - irgendwie miteinander verbunden?).

Jetzt weiß ich nicht, welchen anderen Ansatz ich verwenden könnte. Ich habe einige Hinweise dazu gefunden (hier /programming/10168686/algorithm-improvement-for-coca-cola-can-shape-recognition#answer-10219338 ), aber die Links scheinen unterbrochen zu sein.

Ein weiteres Problem wäre, unterschiedliche "Leeregrade" in einem solchen Glas zu erkennen, aber ich konnte das Glas selbst nicht einmal richtig finden.

Was würden Sie zum Ansatz bei dieser Aufgabe empfehlen? Wäre es besser, die lokale 3D-Objektfunktion auf andere Weise zu finden? Oder wäre es besser, einen anderen Ansatz zu verwenden? Ich habe von Algorithmen gehört, die das Objekt aus mehreren Fotos "lernen", aber ich habe dies in der Praxis noch nie gesehen.

Jeder Rat wäre sehr dankbar


Gibt es eine endgültige Lösung mit einem vollständigen Quellcodebeispiel in C #?
Kiquenet

Wow, das ist eine ganz bestimmte Anfrage. Das Problem hat noch keine Lösung und ich werde nicht mehr Zeit in die Lösung investieren. Ich glaube, nach dem hier erwähnten Artikel zu urteilen, dass die wissenschaftlichen Gründe auch nicht sehr bald eine Lösung haben werden, da der vorgeschlagene Algorithmus sehr schlechte Präzisionsraten hatte. Da dieses Projekt für meinen Job war, habe ich mich schließlich über einen Kompromiss mit einem Kunden gestritten, da die Aufgabe heutzutage nicht mehr zu erledigen ist. verwendete einige normale haarähnliche Merkmaldetektoren für "alles, was wie eine Tasse aussieht" und wählte dann gelbe Farbtöne aus, um Bier zu erkennen. nicht die ursprüngliche Aufgabe
user1916182

Antworten:



0

Vielleicht kann Ihnen dieses Papier helfen: http://ai.stanford.edu/~ang/papers/iros09-ScalableLearningObjectDetectionGPU.pdf

Obwohl sie das aktive Stereosystem zusätzlich zu 2D-Bildern verwenden, um Tiefenbilder zu erfassen, ist es interessant, wie sie die Patch-basierten Funktionen verwenden, ein Wörterbuch des Objekts mit vielen kleinen Fragmenten erstellen und dann einen Klassifikator trainieren. Möglicherweise können Sie diese Funktionen hinzufügen, um Ihre Erkennungsrate zu verbessern.


Ich glaube nicht, dass diese Arbeit in der wilden Praxis sehr gut eingesetzt werden kann. Der in diesem Artikel beschriebene Roboter benötigt einen Tiefensensor, um Tiefeninformationen zu erkennen. Es ist nicht sehr praktisch, einen Kinect herumzutragen, wenn zufällige Bilder auf einem Mobiltelefon oder etwas anderem aufgenommen werden. Aber ja, die Patch-basierten Funktionen sind ein sehr interessanter Ansatz!
user1916182

-1

In Bezug auf Gesichtserkennungssoftware wurde viel daran gearbeitet. Wenn Sie beispielsweise beim Markieren von Fotos auf Facebook feststellen, dass die Position der Gesichter eingerahmt und Ihnen vorgeschlagen wird.

Ich habe viel Literatur zur Gesichtserkennung in Bildern mit neuronalen Netzen gesehen, und eine schnelle Google-Suche wird zweifellos eine große Menge an Informationen zu diesem Thema liefern. Diese Netzwerke nehmen die Pixel des Bildes als Eingaben. In Ihrem Fall kann die Art und Weise, wie sich die Deckkraft ändert / das Licht vom Glas reflektiert wird, eine gute Identifizierung von Merkmalen sein, die das Netzwerk lernen wird.

Ein Problem kann die Anzahl der Fotos sein, die Sie als Trainingsdaten verwenden müssen, und die Vorverarbeitung dieser (dh die Identifizierung der Gesichter selbst). Wenn dies nicht möglich ist, damit genügend Bilder vorhanden sind, um Ihr Netzwerk gut genug zu trainieren, müssen Sie in der Lernphase nach Verknüpfungen suchen. Dieses Dokument ist relevant für das, was Sie tun möchten: http://www.ll.mit.edu/publications/journal/pdf/vol04_no2/4.2.5.neuralnetwork.pdf

Glücklicherweise ist dies ein sehr aktives Feld und ein Großteil des für diese Art von Problem erforderlichen Codes ist online verfügbar.

Sobald Sie die Brille in den Bildern identifizieren können, können Sie von dort aus weitere Analysen durchführen.


Dies ist völlig irrelevant
user1916182

Interessant sollte man das sagen. Auf jeden Fall ist hier ein Link zu den Erkennungsalgorithmen, die Facebook basierend auf neuronalen Netzen verwendet. Viel Glück, github.com/facebookresearch/Detectron .
rwolst
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.