Optische Erkennung von Katzen mittels Anomalieerkennung


17

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:

Beispiel für ein Gartenbild

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.


1
Vielleicht ist diese Frage besser für die Cross-Validation-SE-Site geeignet, jetzt wo ich darüber nachdenke. Die Unterscheidung ist mir etwas unklar ...
Frost

4
Ich denke, die Frage passt sehr gut zu dieser Site, da es um eine praktische Anwendung des maschinellen Lernens geht. übrigens, dumme frage, warum so wenige fotos von katzen? Kommen sie nur für fünf Sekunden vorbei?
Insys

@insys, Gerüchte über meine Wachsamkeit gegenüber dem Soaker scheinen sich in der Katzengemeinschaft verbreitet zu haben. Sie verweilen nicht mehr so ​​wie früher. Ich denke, das ist eine gute Sache mit dem eigentlichen Ziel, meinen Garten von Katzen zu befreien, auch wenn es meine bevorzugte, raffiniertere Lösung kompliziert.
Frost

2
Der naheliegende nächste Schritt (nachdem die Katzenerkennung funktioniert hat) scheint ein Himbeer-Pi-gesteuerter Super-Soaker zu sein :-)
Kryten,

Antworten:


8

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.


1
Dies ist eine gute Idee für eine kontrollierte Umgebung, aber ich bin mir nicht sicher, ob sie in diesem Fall anwendbar ist, da es sich um eine natürliche Umgebung handelt, in der sich ständig Änderungen ergeben, z Wind, Jahreszeiten usw. Ich glaube, dass die von Ihnen beschriebene Region der Größe des gesamten Bildes in jedem Fall nahe kommen würde.
Insys

@insys - Ich verstehe, aber ich stimme nicht zu - Ich glaube, dass der Detektor dadurch widerstandsfähiger gegen Änderungen ist. Der Zeitunterschied zwischen den relativen Bildern sollte gering sein (~ Sekunden bis zu einer Minute), sodass Sonne, Jahreszeit und Wetter vernachlässigbar sein sollten. Ich bin damit einverstanden, dass sich Pflanzen durch Wind bewegen, aber der Klassifizierungsschritt kann dies vermeiden, da Größe / Form / Farbe nicht mit der einer Katze übereinstimmen. Durch die Verwendung von zwei Bildern zu ähnlichen Zeiten können Sie die Intensität der Pixel normalisieren, um mit unterschiedlichen Beleuchtungsbedingungen besser umgehen zu können (z. B. eine Katze an einem sonnigen oder bewölkten Tag).
Bogatron

Eigentlich bin ich verwirrter über Ihre Antwort, nachdem ich Ihren Kommentar durchgelesen habe :) Vielleicht habe ich sie falsch verstanden, aber wenn Sie tatsächlich die "extrahierten Änderungsregionen" verwenden, um Ihre positiven Proben zu bilden, wie in Ihrer Frage erwähnt, wie machen Sie das überhaupt? sicher, dass sie Katzen sind? Sie könnten alles sein. Als solches würde Ihr Klassifizierungsschritt nichts anderes erkennen als das, was Ihnen beigebracht wurde - das heißt, Änderungen jeglicher Art. Es wiederholt also tatsächlich die Aufgabe des "Änderungs" -Detektors.
Insys

Darüber hinaus sind die Beleuchtungsbedingungen auf jeden Fall bedenklich, aber wenn ich es richtig verstehe, ist unklar, welche zwei ähnlichen Bilder, die mit einer Differenz von 1 Minute aufgenommen wurden, zur Normalisierung der Pixelintensitäten beitragen würden.
Insys

Die extrahierten Regionen können positive oder negative Beispiele darstellen - sie sind das, was Sie zum Trainieren des Cat-Klassifikators verwenden würden. In Bezug auf die Intensitäten wird angenommen, dass der Klassifizierer aus Regionen trainiert wird, die hauptsächlich aus sonnigen Bildern extrahiert wurden. Der Klassifikator kann dann leicht Katzen mit hellem weißem Fell finden, aber das funktioniert später an einem bewölkten Tag (wenn das weiße Fell nicht annähernd so hell ist) oder in der Nähe der Dämmerung nicht gut. Das Durchführen einer Normalisierung der beiden Bilder hilft, dieses Problem zu mindern (dh ein Paar heller Bilder und ein Paar dunkler Bilder würden dem Klassifikator ähnlich erscheinen).
Bogatron

4

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.


Und was würde passieren, wenn Ihr Block den Schnitt in zwei oder mehr Scheiben aufteilt? Die Blockierungsstrategie ist ein sehr verbreiteter Ansatz, aber wenn eine Kamera vollständig an einer bestimmten Position fixiert ist, ist die Bewegungserkennung aus meiner Sicht ein besserer und weniger zeitaufwendiger Ansatz.
Adesantos

@adesantos - Was Sie sagen, mag zutreffen, und für die Vorhersage hat die Unterscheidung zwischen sich bewegenden und nicht bewegenden Teilen ihre Vorteile. Aber für das Training, wie es von Bogatron beschrieben wird, ist unklar, welchen Nutzen es für den Tisch bringt. Insgesamt ist es meiner Meinung nach eine zusätzliche Komplexität, die die Debugging-Zeit erheblich verlängert. Der Vorteil des Bewegens von Fenstern liegt in seiner Einfachheit.
Insys

Übrigens ist es in Bezug auf die von Ihnen erwähnte Aufteilung eine naheliegende Strategie, die Fenster überlappen zu lassen, damit die Aufteilungsposition Ihren Klassifikator nicht beeinflusst.
Insys

Ich würde meinem Vorschlag (Bewegungserkennung) die Verwendung eines SIFT-Algorithmus mit einer Katzentextur hinzufügen. Die SIFT-Methode kann auch mit dieser Strategie von Blöcken verwendet werden. In diesem Fall werden jedoch mehr Blöcke verglichen, als erforderlich sind. Beachten Sie, dass sich eine Katze bewegt, aber ein Baum oder ein Busch nicht so viel.
Adesantos

3

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.


2

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.


1

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.

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.