Ich habe ein Hobbyprojekt, für das ich mich einsetzen möchte, um meine bisher begrenzten Erfahrungen mit maschinellem Lernen zu verbessern. Ich habe den Coursera MOOC zu diesem Thema absolviert und abgeschlossen. Meine Frage bezieht sich auf die Machbarkeit des Projekts.
Die Aufgabe ist folgende:
Benachbarte Katzen besuchen von Zeit zu Zeit meinen Garten, den ich nicht mag, da sie dazu neigen, sich auf meinem Rasen niederzulassen. Ich hätte gerne ein Warnsystem, das mich benachrichtigt, wenn eine Katze anwesend ist, damit ich sie mit meinem Super-Soaker wegjagen kann. Sagen Sie der Einfachheit halber, ich interessiere mich nur für eine Katze mit schwarz-weißer Farbe.
Ich habe einen Himbeer-Pi mit Kameramodul eingerichtet, der Videos und / oder Bilder von einem Teil des Gartens aufnehmen kann.
Beispielbild:
Meine erste Idee war es, einen Klassifikator zur Identifizierung von Katzen oder katzenähnlichen Objekten zu trainieren. Nachdem ich jedoch festgestellt habe, dass ich nicht genügend positive Proben erhalten kann, habe ich dies zugunsten der Erkennung von Anomalien aufgegeben.
Ich schätze, wenn ich jeden zweiten Tag ein Foto machen würde, würde ich vielleicht fünf Fotos pro Tag haben, die Katzen enthalten (von ungefähr 60.000 mit Sonnenlicht).
Ist dies mit Anomalieerkennung möglich? Wenn ja, welche Funktionen würden Sie vorschlagen? Meine bisherigen Ideen wären, einfach die Anzahl der Pixel zu zählen, die bestimmte Farben haben. Führen Sie eine Art Blob-Erkennung / Bildsegmentierung durch (was ich nicht weiß und daher vermeiden möchte) und führen Sie die gleiche Farbanalyse auf diesen durch.
quelle
Antworten:
Sie können Ihr Problem erheblich vereinfachen, indem Sie einen Ansatz zur Bewegungs- / Änderungserkennung verwenden. Sie können beispielsweise jedes Bild / Frame mit einem Bild aus einer früheren Zeit (z. B. eine Minute früher) vergleichen und dann nur Pixel berücksichtigen, die sich seit der früheren Zeit geändert haben. Sie können dann den rechteckigen Änderungsbereich extrahieren und diesen als Grundlage für Ihre Klassifizierung oder Anomalieerkennung verwenden.
Diese Vorgehensweise kann Ihren Klassifikator erheblich vereinfachen und die Rate falscher Ziele verringern, da Sie alles ignorieren können, was nicht ungefähr die Größe einer Katze hat (z. B. eine Person oder ein Vogel). Sie würden dann die extrahierten Änderungsbereiche verwenden, die nicht herausgefiltert wurden, um das Trainingsset für Ihren Klassifikator (oder Anomaliedetektor) zu bilden.
Stellen Sie nur sicher, dass die Rate falscher Ziele ausreichend niedrig ist, bevor Sie einen Laserturm an Ihr System zur Erkennung von Eindringlingen bei Katzen anbringen.
quelle
Dies ist ein interessantes und auch recht ehrgeiziges Projekt :)
Ich bin nicht sicher, ob die Erkennung von Anomalien (zumindest in dem von Ihnen beschriebenen Sinne) in diesem Fall ein sehr geeigneter Algorithmus wäre.
Ich würde einen praktikableren Ansatz als das betrachten, was am Ende dieses Kurses besprochen wurde, in dem ein Photo OCR-Workflow demonstriert wurde.
Der Ansatz würde darin bestehen, Ihr Bild in kleinere "Blöcke" zu segmentieren und diese nacheinander unter Verwendung eines überwachten Lernalgorithmus durchzugehen und zu versuchen, jeden Block danach zu klassifizieren, ob er eine Katze enthält oder nicht. Wenn ein Block eine Katze enthält, wird der Alarm ausgelöst. Als Bonus erhalten Sie auch die Position der Katze, so dass Sie sich vorstellen können, eine "automatische" Reaktion als zukünftigen Schritt in Ihr Projekt aufzunehmen.
Der Vorteil dabei ist, dass Sie Ihren Algorithmus nicht mit einem für Ihren Garten spezifischen Datensatz trainieren müssen (der, wie Sie bereits erwähnt haben, schwer zu erstellen ist), sondern Bilder von Katzen verwenden können, die aus dem Netz stammen (z. B. können Sie nach suchen) "Katze auf Gras" oder so) und vielleicht Flecken von Fotos aus Ihrem (oder einem anderen) Garten. Sie müssen also nicht Ihre Zeit damit verbringen, Fotos von Ihrer Kamera zu sammeln, und vermeiden das Risiko, eine sehr kleine (vergleichbare) Stichprobe von Positiven (z. B. Katzen) zu haben.
Nun ist natürlich ein anderes Thema, wie einfach es ist, einen genauen Katzendetektor zu bauen.
quelle
Die Strategie der Bewegungs- / Änderungserkennung ist sicherlich angemessen, aber ich würde eine zusätzliche Operation hinzufügen. Ich würde jene Regionen erkennen, in denen die Wahrscheinlichkeit einer Veränderung größer ist. Beispielsweise scheint die Leiter ein Ort zu sein, an dem sich Menschen (auch Katzen) und Gras befinden können, an dem sich Hunde, Katzen oder Menschen befinden können.
Ich würde eine Karte mit der Größe des Objekts und der Flugbahn erfassen und damit einen Cluster erstellen, um ein Objekt (mit einer bestimmten Größe im Bild in Pixel) zu erkennen, das sich mit einer bestimmten Geschwindigkeit und Flugbahn bewegt.
Sie können dies erreichen, indem Sie R verwenden, oder ich würde OpenCV vorschlagen, um Bewegungen zu erkennen und verschiedenen Objekten zu folgen.
quelle
Durch die Hintergrundsubtraktion von OpenCV werden Objekte gefunden, die sich auf Ihrem Harden bewegen. Anschließend können Sie mithilfe eines Klassifikators oder einer Formanalyse zwischen Katzen, Menschen, Bäumen usw. unterscheiden.
quelle
Ist es ein Vogel? Ist das eine Katze? Wir haben schwarz-weiße Katzen! Elstern hier. das würde also scheitern.
Als erstes sollten alle grünen Bereiche ausgeschlossen werden, Katzen sind selten grün.
Vergleichen Sie den Rest mit einem Referenzbild, um statische Elemente wie Steine und Treppen zu entfernen.
Das Erkennen von Objekten mit einer Mindestgröße sollte möglich sein, aber für eine Klassifizierung ist die Auflösung zu niedrig. Könnte auch Ihr Nachbar sein, der seine neue ferngesteuerte Drohne testet.
Mit zwei Kameras können Sie ein 3D-Mapping der Objekte durchführen und fliegende Objekte eliminieren.
quelle