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:
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.
Réponses:
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.
la source
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.
la source
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.
la source
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.
la source
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.
la source