Construire une caméra Trap à l'aide de Raspberry Pi, Python, OpenCV et TensorFlow





Je crois fermement à l'apprentissage par la pratique, en créant quelque chose de nouveau. Et pour créer quelque chose, vous devez rendre votre travail agréable.



Je vais commencer mon histoire sur mon nouveau projet en révélant les raisons pour lesquelles j'ai décidé d'essayer de créer un piège à caméra basé sur le Raspberry Pi.



Je vis à Londres et mon jardin est fréquenté par la faune locale. Cela arrive si souvent que moi, un jardinier passionné, j'ai progressivement commencé à m'énerver. Pots cassés, plantes creusées dans le sol, fruits et légumes mangés ...



J'ai vu dans mon jardin des petits renards (ils sont tout simplement adorables), des grands renards, des chats (pas les miens), des oiseaux. Et une fois, j'ai même été visité par un épervier.



Sparrowhawk



Qui d'autre rampera dans mon jardin sous le couvert de la nuit?





Voir l'animal sur cette image n'est pas facile.



De quelles autres raisons ai-je besoin pour créer un piège à caméra basé sur le Raspberry Pi, Python, TensorFlow, etc. Et mon appareil photo devrait être très bon.



Quelqu'un peut dire que vous n'avez pas besoin de fabriquer vous-même un tel appareil photo, que vous pouvez en acheter un prêt à l'emploi qui répondra parfaitement à la tâche d'observation des animaux sauvages.



C'est une bonne idée, mais ce ne sera pas deux fois moins intéressant.



Modules de caméra pour Raspberry Pi



J'ai commencé par rechercher quels types de caméras peuvent être connectés à un ordinateur monocarte Raspberry Pi.



Les caméras similaires les plus populaires sont celles qui se connectent directement au Raspberry Pi à l'aide du connecteur MIPI. L'avantage de ce type de caméra est que les données sont transférées très rapidement entre la caméra et la carte. Il existe également une API facile à utiliser pour travailler avec la caméra. 



J'ai essayé cette API et j'ai découvert qu'elle avait de nombreuses fonctions utiles qui vous permettent d'enregistrer des vidéos et de prendre des photos pendant l'enregistrement. Cela me permet de détecter simultanément les mouvements et d'enregistrer des vidéos à l'aide d'outils simples et directs.



Il existe trois types de modules de caméra pour Raspberry Pi... Vous trouverez ci-dessous une version abrégée du tableau avec les caractéristiques de ces modules.

Module de caméra v1 Module de caméra v2 Caméra HQ
Prix ​​net 25 $ 25 $ 50 $
La taille Environ 25 × 24 × 9 mm 38 x 38 x 18,4 mm (hors optique)
Le poids 3 g 3 g
Résolution de l'image 5 mois 8 mois 12,3 millions
Modes vidéo 1080p30, 720p60 et 640x480p60 / 90 1080p30, 720p60 et 640x480p60 / 90 1080p30, 720p60 et 640x480p60 / 90
Intégration Linux Pilote V4L2 Pilote V4L2 Pilote V4L2
C-API OpenMAX IL et autres OpenMAX IL et autres
Capteur OmniVision OV5647 Sony IMX219 Sony IMX477
Résolution du capteur 2592 × 1944 pixels 3280 × 2464 pixels 4056 x 3040 pixels
Taille de la zone de travail du capteur 3,76 x 2,74 mm 3,68 x 2,76 mm (4,6 mm de diagonale) 6,287 x 4,712 mm (7,9 mm de diagonale)


Ce tableau répertorie les modules de caméra officiels, mais vous pouvez trouver des caméras tierces qui fonctionneront avec le Raspberry Pi. Les modules de caméra sont utilisés pour traiter les données du capteur GPU Raspberry Pi.



Étant donné que lors de l'utilisation du module caméra, le Raspberry Pi lui-même est engagé dans le traitement d'image, il s'avère que le choix des capteurs de caméra est très limité. Chaque capteur a sa propre API, donc prendre en charge différents types de capteurs n'est pas une tâche facile.



Enregistrement vidéo dans des conditions de faible éclairage



Je vais créer une caméra piège pour observer les animaux sauvages. Par conséquent, ses capacités devraient être suffisantes pour le travail de jour et de nuit. Autrement dit, il doit avoir un capteur capable d'enregistrer de la vidéo dans des conditions de faible luminosité. Il est hautement souhaitable qu'elle reproduise la couleur réelle des objets photographiés. Dans de mauvaises conditions d'éclairage, les modules de caméra v1 et v2 ne fonctionnent pas très bien. Pour qu'ils puissent retirer quelque chose dans de telles conditions, vous devez utiliser un éclairage infrarouge et en retirer le filtre infrarouge. La procédure de préparation de l'appareil photo pour la prise de vue dans des conditions de faible éclairage dépend du modèle d'appareil photo spécifique. Mais ici, il y a un autre problème, qui est que les images résultantes ont une teinte rose. Lorsque vous utilisez de telles caméras, vous avez besoin d'un mécanismequi active le filtre IR lors de la prise de vue pendant la journée et supprime ce filtre lors de la prise de vue de nuit.





Image d'une caméra Raspberry Pi prise pendant la journée dans des conditions de faible luminosité



Mais il y a une nouvelle caméra pour le Raspberry Pi, qui dans le tableau est désignée comme caméra HQ. Cependant, je ne suis pas tout à fait sûr de ses capacités «de nuit». Il est basé sur le capteur Sony IMX477, qui, dans de mauvaises conditions d'éclairage, peut produire une meilleure image que les générations précédentes d'appareils photo. Je vais toujours savoir si ce capteur peut produire la bonne image couleur dans l'obscurité. Mais mes recherches préliminaires sur les caméras concernant leurs spécifications suggèrent qu'il est peu probable qu'il en soit capable.



Sony Starvis est un excellent capteur de caméra



Sony propose une famille spéciale de capteurs de caméra utilisés principalement pour la vidéosurveillance. C'est Sony Starvis. Ces capteurs sont des appareils très avancés capables de fournir des images couleur de haute qualité dans des conditions de faible luminosité à aussi peu que 0,001 lux. Lux (lx) est une unité de mesure de l'éclairage.



Pour clarifier les choses, je vais donner quelques exemples. L'obscurité presque complète est de 0,0001 lux. A savoir: il n'y a pas de lumière du soleil, pas de lumière de la lune et des étoiles, le ciel est couvert, il n'y a pas de sources artificielles d'éclairage. Je ne connais aucun capteur de caméra capable de filmer dans l'obscurité totale.



Mais si le ciel est clair, les étoiles donnent un éclairage de 0,002 lux. Bien qu'il fasse encore très sombre dans ces conditions, le capteur Sony Starvis est capable de filmer dans la moitié de cette lumière. Pour moi, c'est tout simplement incroyable.



Voici une page de Wikipédia où vous pouvez trouver plus d'exemples.



J'espère que j'ai pu vous faire comprendre que le Sony Starvis est le capteur parfait pour une caméra piège.



Le principal inconvénient de ce capteur est qu'il n'y a pas de caméras pour le Raspberry Pi dans lequel il est utilisé. Mais si je tombais sur une caméra USB ou une caméra IP avec un tel capteur, je penserais à quelque chose et le connecterais au Raspberry Pi.



En fait, j'ai trouvé un tel appareil photo.



Je ne voulais pas trop investir dans ce projet, j'ai donc acheté une caméra IP appropriée de Sony Starvis sur Aliexpress. Cet achat m'a coûté, si je me souviens bien, 20 £.



Comparer une caméra pour Raspberry Pi et cette caméra, c'est comme comparer le jour et la nuit. Et je n'exagère pas du tout. Chercher par vous-même.





Appareil photo avec capteur Sony Starvis IMX307, prise de vue dans une pièce sombre





Caméra Raspberry Pi v2 - la même pièce, mais un point de vue différent



Pour une caméra piège et pour une caméra CCTV, il est très important de pouvoir réaliser des enregistrements de haute qualité dans de mauvaises conditions d'éclairage.



Certains pourraient dire que l'enregistrement vidéo couleur dans de mauvaises conditions d'éclairage n'est pas si important que vous pouvez vous en tirer avec une simple caméra infrarouge. Mais je ne peux pas utiliser l'éclairage infrarouge car je vais placer la caméra à l'intérieur et la pointer vers le jardin par la fenêtre. Et si vous dirigez la source IR vers le verre, le verre se comportera comme un miroir et la caméra deviendra aveugle.



Si nous parlons de caméras pour le Raspberry Pi, elles sont bien adaptées pour certains projets simples ou pour apprendre quelque chose de nouveau. Mais si vous entreprenez un projet au moins à moitié sérieux, il vous suffit d'utiliser des caméras de meilleure qualité.



L'utilisation d'une caméra USB (ou même d'une caméra IP) ouvre de toutes nouvelles possibilités. De plus, si vous avez également une caméra ordinaire pour le Raspberry Pi, vous pouvez l'utiliser pour certaines expériences d'intelligence artificielle.



Installation et configuration d'une caméra pour Raspberry Pi



Prenons soin de connecter le module caméra v2 à la carte. C'est en fait très simple.





Module de caméra v2



La caméra dispose d'un câble bleu et blanc. Il doit être connecté au connecteur CSI de la carte. Le côté bleu du ruban doit être vers l'arrière de la planche.



J'ai utilisé un corps de caméra imprimé en 3D. J'ai trouvé les fichiers correspondants sur Thingiverse. Mais un étui adapté, assez peu coûteux, peut être trouvé, par exemple, sur Amazon.





Boîtier de la caméra



Il est maintenant temps d'allumer la caméra.



Après avoir allumé le Raspberry Pi, vous devez ouvrir une fenêtre de terminal.





Terminal



Ensuite, vous devez exécuter la commande suivante:



$ sudo apt update


Et puis - ceci:



$ sudo apt full upgrade


Cela permet de s'assurer que le tableau utilise la dernière version de Raspbian et les correctifs et mises à jour les plus récents.



Après cela, vous devez exécuter la commande suivante dans le terminal:



sudo raspi-config




Travailler avec raspi-config



Nous sommes ici intéressés par la sectionInterfacing Options>P1 Camera. Ensuite, vous devez sélectionner une commandeFinishet redémarrer le Raspberry Pi.



Prendre des photos avec raspistill



La caméra devrait maintenant être prête à être utilisée. Vérifions-le avec raspistill. Ouvrez à nouveau le terminal et entrez la commande suivante:



raspistill -v -o test.jpg


C'est la merveilleuse photo que mon appareil photo a prise.





Instantané de l'appareil photo pour Raspberry Pi



Enregistrement vidéo avec raspivid



Les photos sont bonnes, mais l'enregistrement vidéo est bien meilleur. Voici venir à notre aide raspivid:



raspivid -o vid.h264


Cette commande vous permet d'enregistrer une vidéo d'une durée de 5 secondes.



Si vous avez besoin de tourner une vidéo plus longue, cette commande devra passer un paramètre -tindiquant la durée de la vidéo en millisecondes. Par exemple, la commande suivante vous permet d'enregistrer une vidéo de 30 secondes:



raspivid -o vid.h264 -t 30000


Configurer le streaming



Vient maintenant la partie amusante. Pour voir ce que la caméra "voit", vous pouvez utiliser la commande suivante:



raspivid -o - -t 0 -n | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264


Il crée un flux RTSP auquel vous pouvez vous connecter à partir du réseau local.



Résultat



Maintenant que j'ai compris les caméras pour le Raspberry Pi, je peux développer le projet plus loin, à savoir, installer TensorFlow, Open CV et Python sur le Raspberry Pi 4 et commencer à écrire du code. J'ai l'intention d'en parler dans mes prochains documents. Pour ceux d'entre vous intéressés, ma chaîne YouTube, où vous pouvez trouver des vidéos liées à ce projet.



Avez-vous travaillé avec des caméras pour le Raspberry Pi?










All Articles