Détection visuelle des chats par détection d'anomalies

17

J'ai un projet de loisir auquel j'envisage de m'engager comme un moyen d'augmenter mon expérience jusqu'ici limitée de l'apprentissage automatique. J'ai suivi et complété le MOOC Coursera sur le sujet. Ma question concerne la faisabilité du projet.

La tâche est la suivante:

Les chats voisins visitent de temps en temps mon jardin, ce que je n'aime pas car ils ont tendance à déféquer sur ma pelouse. J'aimerais avoir un système d'avertissement qui m'alerte quand il y a un chat présent afin que je puisse aller le chasser en utilisant mon super soaker. Par souci de simplicité, disons que je ne me soucie que d'un chat avec une coloration noir et blanc.

J'ai installé un Raspberry Pi avec un module de caméra qui peut capturer des vidéos et / ou des photos d'une partie du jardin.

Exemple d'image:

Exemple d'image de jardin

Ma première idée a été de former un classifieur pour identifier un chat ou des objets semblables à un chat, mais après avoir réalisé que je ne serais pas en mesure d'obtenir un nombre suffisant d'échantillons positifs, j'ai abandonné cela au profit de la détection d'anomalies.

J'estime que si je prenais une photo toutes les secondes de la journée, je finirais peut-être avec cinq photos contenant des chats (sur environ 60 000 avec la lumière du soleil) par jour.

Est-ce faisable en utilisant la détection d'anomalies? Si oui, quelles fonctionnalités proposeriez-vous? Jusqu'à présent, mes idées seraient de simplement compter le nombre de pixels avec certaines couleurs; faire une sorte de détection de blob / segmentation d'image (que je ne sais pas faire, et que je voudrais donc éviter) et effectuer la même analyse de couleur sur eux.

Gel
la source
1
Peut-être que cette question est mieux adaptée au site SE de validation croisée, maintenant que j'y pense. La distinction n'est pas claire pour moi ...
Frost
4
Je pense que la question est tout à fait appropriée à ce site, car il traite d'une application pratique de l'apprentissage automatique. btw, question idiote, pourquoi si peu de photos de chats? Ne viennent-ils que cinq secondes seulement?
insys
@insys, les rumeurs sur ma vigilance avec le trempeur semblent se propager dans la communauté féline. Ils ont tendance à ne pas s'attarder comme avant. Je suppose que c'est une bonne chose w / r / t l'objectif réel de débarrasser mon jardin de chats, même si cela complique ma solution préférée et plus sophistiquée.
Frost
2
On dirait que la prochaine étape évidente (après que la détection de chat fonctionne) est un super trempeur contrôlé par framboise pi :-)
Kryten

Réponses:

8

Vous pouvez simplifier considérablement votre problème en utilisant une approche de détection de mouvement / changement. Par exemple, vous pouvez comparer chaque image / image à une image antérieure (par exemple, une minute plus tôt), puis ne considérer que les pixels qui ont changé depuis la première heure. Vous pouvez ensuite extraire la région rectangulaire de changement et l'utiliser comme base pour votre classification ou détection d'anomalie.

L'adoption de ce type d'approche peut considérablement simplifier votre classificateur et réduire votre faux taux cible car vous pouvez ignorer tout ce qui n'est pas à peu près de la taille d'un chat (par exemple, une personne ou un oiseau). Vous utiliseriez ensuite les régions de changement extraites qui n'ont pas été filtrées pour former l'ensemble d'apprentissage pour votre classificateur (ou détecteur d'anomalie).

Assurez-vous simplement d'obtenir votre taux de fausses cibles suffisamment bas avant de monter une tourelle laser sur votre système de détection d'intrusion féline.

bogatron
la source
1
C'est une bonne idée pour un environnement contrôlé mais je ne suis pas sûr de son applicabilité dans ce cas, car nous avons affaire à un environnement naturel où il y a un changement continu, c'est-à-dire un changement de temps, de position du soleil, des plantes et des arbres à cause de le vent, les saisons, etc. Je crois que la région du changement que vous décrivez deviendrait de toute façon proche de la taille de l'image entière.
insys
@insys - Je vois votre point mais je ne suis pas d'accord - je pense que cela rend le détecteur plus résistant au changement. La différence de temps entre les images relatives doit être faible (~ secondes à une minute), donc le soleil, la saison et le temps doivent être négligeables. Je suis d'accord que le vent fera bouger les plantes mais l'étape de classification peut éviter celles-ci car leur taille / forme / couleur est différente de celle d'un chat. De plus, l'utilisation de deux images à des moments similaires permet de normaliser les intensités de pixels pour mieux gérer les conditions d'éclairage variables (par exemple, un chat par temps ensoleillé ou nuageux).
bogatron
En fait, je suis plus confus au sujet de votre réponse maintenant que j'ai lu votre commentaire :) Peut-être que j'ai mal compris, mais si vous utilisez réellement les "régions de changement extraites" pour former vos échantillons positifs, comme mentionné dans votre question, comment faites-vous même sûr que ce sont des chats? Ils pourraient être n'importe quoi. En tant que tel, votre étape de classification ne détecterait rien d'autre que ce qui est appris à détecter, c'est-à-dire des changements de toute nature. Il s'agit donc en fait de répéter le travail du détecteur de «changement».
insys
De plus, les conditions d'éclairage sont certainement préoccupantes, mais, si je comprends bien, on ne sait pas ce que deux images similaires, prises avec une différence de 1 minute, offriraient pour normaliser les intensités de pixels?
insys
Les régions extraites peuvent représenter des exemples positifs ou négatifs - c'est ce que vous utiliseriez pour former le classificateur de chat. En ce qui concerne les intensités, supposons que le classifieur soit formé à partir de régions extraites principalement d'images ensoleillées. Le classificateur peut alors facilement trouver des chats à fourrure blanche brillante, mais cela ne fonctionnera pas bien plus tard un jour nuageux (lorsque la fourrure blanche n'est pas aussi brillante) ou près du crépuscule. La normalisation des deux images permet d'atténuer ce problème (c'est-à-dire qu'une paire d'images lumineuses et une paire d'images sombres semblent similaires au classificateur).
bogatron du
4

C'est un projet intéressant et aussi assez ambitieux :)

Je ne suis pas sûr que la détection d'anomalies (au moins dans le sens décrit dans le cours que vous avez suivi) serait un algorithme très approprié dans ce cas.

Je considérerais qu'une approche plus viable serait ce qui a été discuté à la fin de ce cours où un flux de travail Photo OCR a été démontré.

L'approche consisterait à segmenter votre image en «blocs» plus petits, à les parcourir un par un à l'aide d'un algorithme d'apprentissage supervisé et à essayer de classer chaque bloc selon qu'il contient ou non un chat. Si un bloc contient un chat, l'alarme se déclenche. En prime, vous obtenez également la position du chat, de sorte que vous pouvez penser à incorporer une réponse "automatique" comme une étape future à votre projet.

L'avantage ici est que vous n'aurez pas à former votre algorithme à l'aide d'un ensemble de données spécifique à votre jardin (qui, comme vous le mentionnez est difficile à créer), mais vous pouvez utiliser des images de chats retirés du net (par exemple, vous pouvez rechercher "chat sur l'herbe" ou quelque chose), et peut-être des patchs de photos de vos (ou d'autres) jardins. Par conséquent, vous n'avez pas à passer votre temps à collecter des photos à partir de votre appareil photo, et vous évitez le risque d'avoir un très petit échantillon (comparable) de positifs (c'est-à-dire des chats).

Maintenant, bien sûr, il est facile de construire un détecteur de chat précis.

insys
la source
Et que se passerait-il si votre bloc divise la coupe en deux ou plusieurs tranches? La stratégie de blocage est une approche très courante, mais lorsque j'ai une caméra complètement fixée à une certaine position, la détection de mouvement est une approche meilleure et moins longue, de mon point de vue.
adesantos
@adesantos - Ce que vous dites pourrait bien être vrai, et pour la prédiction, faire la différence entre les pièces mobiles et non mobiles a ses avantages. Mais pour la formation, la façon dont elle est décrite par bogatron, on ne sait pas quels avantages cela apporte à la table. Dans l'ensemble, je pense que cela ajoute de la complexité, ce qui allonge considérablement le temps de débogage. L'avantage de déplacer la fenêtre est sa simplicité.
insys
En ce qui concerne le fractionnement que vous mentionnez, une stratégie évidente consiste à laisser vos fenêtres se chevaucher, afin que la position du fractionnement n'affecte pas votre classificateur.
insys
J'ajouterais à ma proposition (détection de mouvement) l'utilisation de l'algorithme SIFT avec une texture de chat. La méthode SIFT peut également être utilisée avec cette stratégie de blocs, mais dans ce cas, vous comparerez plus de blocs que nécessaire. Remarquez qu'un chat bouge, mais pas un arbre ou un buisson.
adesantos
3

La stratégie de détection de mouvement / changement est certainement adéquate, mais j'ajouterais une opération supplémentaire. Je détecterais les régions les plus susceptibles d'être modifiées, par exemple, l'échelle semble être un endroit où les humains peuvent être (également des chats) et de l'herbe où les chiens, les chats ou les humains peuvent être.

Je capturerais une carte avec la taille de l'objet et la trajectoire et avec cela je créerais un cluster dans le but de détecter un objet (avec une taille spécifique dans l'image en termes de pixels) qui se déplace avec une certaine vitesse et trajectoire.

Vous pouvez y parvenir en utilisant R ou je suggérerais OpenCV afin de détecter les mouvements et de suivre différents objets.

adesantos
la source
2

La soustraction d'arrière - plan d'OpenCV trouvera des objets se déplaçant autour de votre durcissement. Après cela, vous pouvez utiliser un classificateur ou une analyse de forme pour différencier les chats, les personnes, les arbres, etc.

vrfsdbelbeml
la source
1

Est-ce un oiseau? C'est un chat? Nous avons la taille d'un chat en noir et blanc! pies ici. donc cela échouerait.

La première chose serait d'exclure toutes les zones vertes, les chats sont rarement verts.

Comparez ensuite le reste à une image de référence pour supprimer les éléments statiques comme les pierres et les escaliers.

La détection d'objets d'une taille minimale devrait être possible, mais pour une classification, la résolution est trop faible. Cela pourrait aussi être votre voisin testant son nouveau drone télécommandé.

Avec deux caméras, vous pouvez effectuer une cartographie 3D des objets et éliminer les objets volants.

user1164
la source