Reconnaissance de forme

Bonjour à tous

Je me présente sylvain, je travaille dans l'informatique et l'infogérance.
Pour des besoins personnel et aussi afin de satisfaire ma curiosité j'essaie de pratiquer avec ma faible expérience à l'arduino. Et comme je suis quelqu'un qui comprend seulement en pratiquant je m'essaie à faire une vrai expérience.

J'ai un projet de reconnaissance de forme. Cette forme une fois reconnue devra faire quelque chose en actionnant un appareil
Mais bon pour l'instant je veux me cantonner à la reconnaissance avant d'aller plus loin.

Cette forme sera du type animalier de petite taille (plutôt insecte pas plus gros qu'un papillon mais avec des couleurs.)
J'ai vu que les cartes arduino n'était pas fait pour cela et qu'il fallait mieux coupler avec une Rasberry pi
Donc ma première question, vers quel matériel dois-je m'orienter si vous avez des propositions. (carte, caméra ...)
Ensuite comment fait-on pour travailler sur rasberry et une arduino.
Je suis preneur de toute les infos
Encore merci pour votre aimable participation.

Bonjour

Donc ma première question, vers quel matériel dois-je m'orienter si vous avez des propositions. (carte, caméra ...) Ensuite comment fait-on pour travailler sur rasberry

Un moteur de recherche peut servir pour avoir desréponses aux questions posées et consulter des réalisations...!!

matériel : Raspberry PI 3 et la caméra habituellement vendue pour elle
application : par exemple OpenVC (voir ici)
(oublions la carte Arduino pour le sujet abordé içi)

Je ne peux répondre au choix de materiel; je conseillerais simplement de vous concentrer sur le Rpi, en attendant que des cartes entraînables sur des formes et des couleurs soient disponibles, plus ou moins interfaçables avec l'Arduino (toute l'"intelligence" étant concentrée dans le futur peripherique arduino).
La carte RPi+SD + camera coûte assez cher ; je n'ai pas eu de difficultés à jouer avec ma caméra et faire des opérations simples sur RPi;
Le port RPi offre plus de possibilités (broches) que celui de l'UNO: (autre qu'analogiques); le petit problème est qu'il est en 3v3, et je ne sais pas s'il est très robuste.

Peut être que ce lien, offrant une pub pour un futur livre sur la reconnaissance d'images (et le suivi, avec des servomoteurs orientant la camera, de portions interessantes, peut vous donner des idées I'm writing a book on Computer Vision and the Raspberry Pi (and I need your input). - PyImageSearch

Pour votre info : les développeurs de Rapsbian font le maximum pour offrir les plus récentes versions d'opencv -logiciel fréquemment utilisé en traitement et reconnaissance d'images-, ce pour un processeur plus modeste que celui d'un PC;
Je n'ai pas d'actions, ni dans pyimagesearch, ni dans https://www.learnopencv.com/, même si ces deux sites, après le tutoriaux d'opencv, m'ont beaucoup appris.

a voir CMUCAM5 Pixy , connectable avec arduino uno
et équipé d' un Processeur: NXP LPC4330 - 204 MHz - dual core et 264 Ko ram
et un capteur Omnivision OV9715 - 1/4" - 1280 x 800 pixels.

Je pense que pixy, évoqué par PBZOOM, est plus simple que le duo RPi+camera+opencv, moins cher, plus rapide -ne mange pas de CPU de l'arduino/RPi auquel il est connecté; cependant, il ne reconnaît pas les formes, mais les couleurs -très bien- , et je ne sais pas ce qu'il donne sur un objet partiellement occulté (ex un papillon qui passe derrière une branche). Opencv peut traiter ce cas dans certaines limites...

Merci de vos réponses
J'ai vu en consultant quelques sites opencv
Pour moi la forme et la couleur sont important pour la reconnaissance
C'est pour cela que je me suis permis de poster ici pour avoir des avis de personnes plus compétentes que moi

RPi plus opencv, et programme en python. Oublie le reste...

Je vais essayer de trouver des infos sur opencv et RPI
N'hésitez pas à me faire part de vos trouvailles

Merci

Bonjour,

Comme tu es preneur de toute informations je te conseille de jeter un coup d’œil sur Wolfram Language qui dispose d'outils de reconnaissance d'images.

Wolfram à l'avantage d’être en un langage de très haut niveau, beaucoup plus buvable qu'OpenCV.

Wolfram est livré avec le RPi (de fait); le seul petit problème, c'est que, sinon, il est payant... et qu'il n'est pas prévu pour mouvoir des servomoteurs ou des déclencheurs d'appareils photos (à la détection d'un papillon, pourquoi pas?)

python (ou du C++) peut parfaitement gérer, outre opencv, des appareils divers sur RPi et est gratuit.
Le caractère bordélique d'opencv -que je ne nie pas- peut être atténué par de bons tutoriaux (ceux d'OCV ne sont pas mauvais, quoiqu'ils aient du mal à suivre les évolutions d'OCV; pyimagesearch et learnopencv sont excellents (et ont pour buts de ... promouvoir des livres).
Une particularité d'OCV est qu'il est très portable, et ce peut être exploité: les temps d'apprentissage peuvent être très longs sur RPi , raisonnables (j'ai compté un facteur 10) sur PC, et négligeables sur batteries de PC ; ces derniers peuvent fournir des structures préentraînées (pour reconnaître des piétons, des velos, des chats, des voitures, des chameaux, des plaques d'immatriculation ... peut être pour des insectes) qui peuvent être utilisés, voire ajustés, sur des ordinateurs moins puissants -qui peuvent ainsi fonctionner en temps réel-. Cette richesse de possibilités est naturellement, au début, une source de confusion...

perso pour ce genre de projets j'explore le machine learning et je regarde un cran au dessus en terme de performance et qualité ---> du côté des smartphones... que ce soit sur Android ou Apple vous avez des outils pour le machine learning.

Create ML est de haut niveau et tire partie de la puissance de la puce AI embarquée, donc pas besoin de cloud computing, tout se fait dans le device et à en croire leur marketing, la A12 Bionic Neural Engine est capable de réaliser 5000 milliards d’opérations à la seconde.. vous ne ferez pas ça sur votre RPI...

Sur Android TensorFlow Lite permet de faire aussi des choses embarquées mais ne va pas être optimisé pour le hardware spécifique que vous pourriez avoir. ml-kit permet de créer des modèle avec calculs dans le cloud (et les contraintes associées)

TensorFlow est aussi porté sur Raspberry donc vous pouvez commencer là

et ensuite un coup de bluetooth LE pour discuter avec son arduino pour faire des choses sympa (pilotage de moteur etc)

Sinon il y a la nouvelle carte de Nvidia's Jetson Nano qui est en train de sortir et semble intéressante (et doit pouvoir servir de radiateur par temps froid :slight_smile: )
jetson.png

C'est curieux, JML cite les cartes jetson et RPi, qui sont considérées comme les plus prometteuses dans Embedded Computer Vision: Which device should you choose? | LearnOpenCV # (le Pi3 étant 10 fois moins cher).
Il y a un aspect de l'apprentissage automatique qui peut être exploité sur les RPi (qui sont très lents, malgré un effort d'optimisation): l'apprentissage est très lent, mais le resultat de l'apprentissage est raisonnablement rapide et peut être,
soit porté directement sans modification -un Rpi peut l' exploiter- ,
soit reentraîné "transfer learning" et "fine tuning" -un PC peut le faire assez vite-
https://www.learnopencv.com/keras-tutorial-using-pre-trained-imagenet-models/ explique comment l'auteur de ce tutorial récupère des modéles préentraînés; le tutoriel suivant explique comment spécialiser un modèle, et lie vers Imagenet (une base de données de photos, incluant des tas d'insectes: la categorisation a été bien faite, ce que ne fait pas une simple recherche google, demander à wikipedia pour plus d'infos).

Je vous remercie pour toutes ses infos
Je n'ai plus cas choisir
J'aimerais que ce soit assez compacte et exploitable avec une batterie 12v car ça sera pour mettre à l’extérieure et autonome quelques jours.

En résumé si j'ai bien compris il me faut une carte qui puisse gérer la caméra avec le logiciel de reconnaissance et compatible arduino pour gérer les servos moteurs.

Le tout c'est qu'il faut que je me décide sur quel langage faire tout ça
J'ai déjà une RPI3 et une arduino mais bon si il faut changer pas de soucis
mais je n'ai pas de caméra qui va

Merci à vous

Normalement, python+ opencv +piggpio peut gérer la camera et les servos ( avec un bémol correponsant à leur alim). connecter un arduino sur une RPi, via le port serie (et pyserial) est faisable, mais en exterieur, vous ajoutez des risques de faux contacts).
Il vous faut une camera pour detecter des petites bêtes et stocker leurs photos/videos (et il y a une prise, faite pour ça : les RPi sont suffisamment populaires pour que leur camera -demandez à gotronic, hackspark des caméras dédiées au RPi- ne soit pas chère en étant d'assez bonne qualité et avec des tutoriaux simples ... sous python )...

dbrion06:
C'est curieux, JML cite les cartes jetson et RPi, qui sont considérées comme les plus prometteuses dans Embedded Computer Vision: Which device should you choose? | LearnOpenCV #

Pourquoi c'est curieux? Au passage le RPi ce n'est pas moi qui l'ait mentionné mais al1fch et La jetson, je suis tombé dessus hier en lisant PC world...

Pour avoir joué pas mal avec les frameworks iOS and Android, ma recommendation serait ni jetson ni RPi mais plutôt prendre un smartphone ou une tablette. Le materiel comme cela contient la caméra (optimisée et d'assez bonne qualité), la batterie, un flash, le wifi, le bluetooth, un gyroscope, un GPS, dans un montage relativement étanche et des coques sont faciles à trouver et toutes les APIs pour faire cela relativement simplement sur une architecture boostée.

et aujourd'hui tout le monde à un smartphone dans la poche ou presque donc pas vraiment d'investissement sauf si bien sûr c'est pour laisser dehors pendant quelques jours... mais on trouve de bon smartphones d'occasion qui pourraient convenir. bref c'est avec cela que je m'amuse de temps en temps.

Votre choix de "smart" "phone" d'occasion est justifié . Le seul bémol que je vois est l'absence de servos pour orienter le "smart" "phone" vers les petites bêtes (et ce ne doit pas être insurmontable: des tourelles de chars de récupération -les chars...- auraient été pilotées par "smart" "phone" au Rojava/Syrie du Nord vers 2014-2015).

Je crois même que les "smart" "phones " ont une boussole (quand on rajoute tout ça au RPi, ça peut le rendre un peu cher... )

dbrion06:
Le seul bémol que je vois est l'absence de servos pour orienter le "smart" "phone" vers les petites bêtes

Oui pour quelques euros on prend 2 servos
servo.png

des brackets en acier ou alu
brackets.png

et on monte un pan & tilt que l'on pilote par bluetooth depuis l'application sur le smartphone (oui ils ont aussi une boussole)

(désolé pour les anglicismes)

A vrai dire je n'ai pas besoin de stocker les images
je voudrais que ce soit de la détection en temps réel afin de réaliser une action, mais peut-être monter sur un servo moteur ou quelque chose dans se genre afin de suivre cette forme.
Je n'avais pas vu vos derniers message JML et dbrion06
Le soucis c'est que ça sera dans des endroits sans surveillance donc le smartphone ça serait dommage de se le faire piquer

Le soucis c'est que ça sera dans des endroits sans surveillance donc le smartphone ça serait dommage de se le faire piquer

oui comme votre système aussi sans doute.. même si c'est peut-être moins attractif.

cela dit si ça ne bouge pas vous pouvez essayez de mettre le système dans une boîte métallique avec un cadenas un peu solide... et rajoutez un autocollant "Haute tension danger de mort" ou un truc du genre :slight_smile:

"A vrai dire je n'ai pas besoin de stocker les images "
Bon: vous avez des logiciels dont vous n'avez pas l'experience (c'est un projet en partie pour apprendre) et qui nécessitent peut être des réglages . A ma connaissance, les projets de mesure en temps réel commencent par stocker le détail des mesures, pour essayer de détecter/ corriger d'éventuels défauts avant 'être déclarés bons pour le service". Sans prétendre déterminer vos besoins, j'envisagerais la possibilité que tout ne marche pas du premier coup (une version édulcorée des nombreuses -nombre au moins infini- lois de Murphy) et je stockerais pour comprendre d'éventuels défauts.