Taula de continguts:
- Pas 1: materials
- Pas 2: cablejat
- Pas 3: construcció de la carcassa
- Pas 4: Configuració de la càmera
- Pas 5: Configuració de Docker
- Pas 6: Execució dels scripts del timbre
- Pas 7: utilitzar el timbre
Vídeo: Timbre amb reconeixement facial: 7 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
Motivació
Recentment, al meu país hi ha hagut una onada de robatoris dirigits a persones grans a casa seva. Normalment, l’accés el concedeixen els mateixos ocupants, ja que els visitants els convencen que són cuidadors / infermeres. És més enllà de les paraules, de la ràbia i de la tristesa que em fan sentir aquestes històries. La llar hauria de ser el vostre primer refugi segur i més encara si ja esteu en una posició vulnerable quan esteu fora. Amb això en ment, vaig començar aquest projecte.
Informació general
El sistema de timbre està dissenyat principalment per a persones grans o amb problemes de visió i és bastant senzill en el seu funcionament. En resum, l’interruptor del timbre porta la càmera a obtenir imatges. A continuació, es detecten les cares del metratge i es combinen amb una llista blanca i una llista negra. L’ocupant obté una retroalimentació visual clara mitjançant una pantalla clara de semàfor. Per la present, el llum verd, groc o vermell indica que les persones es troben a la llista blanca, desconegudes pel sistema o a la llista negra, respectivament. Si s’activa la llum groga o vermella, un robot de Telegram envia la foto per informar / advertir un familiar o un conserge.
Nivell d’expertesa
El projecte es va crear per a entusiastes que tinguin especial curiositat per utilitzar la visió per computador i la intel·ligència artificial. Aquest instructiu està escrit per a un públic de principiants, així que no us preocupeu si no teniu experiència. A més, el projecte també pot ser interessant per a fabricants amb més experiència, ja que el gasoducte està organitzat de manera que pugueu ampliar-lo amb les vostres pròpies idees de visió per computador i reconeixement facial sense gaire molèsties.
Pas 1: materials
Llista de productes amb requisits mínims:
Producte | Enllaç | Comenta |
---|---|---|
Raspberry Pi 3b | RPi | Link mostra RPi 4, ja que té un rendiment molt millor i un preu gairebé igual que el RPi 3b. |
Micro SD | Amazon | Una targeta micro SD de 16 GB o més farà la feina. Però les targetes de 16 GB d’Amazon tenen ara gairebé el mateix preu que les targetes de 32 GB. |
Càmera Raspberry Pi | Amazon | La càmera v1 és més barata, però la v2 és millor i s’admetrà més temps. |
Cable flexible FPC de 15 pins | Amazon | La durada realment depèn de les circumstàncies de fer aquest projecte. Si només voleu construir un prototip, el cable flexible original farà la feina. |
Alimentació 5v micro usb | Adafruit | Aquest mai es va deixar caure! Gran qualitat. (No apareix a la foto) |
Botons Arcade amb LED incorporat | Amazon | Trieu la mida que vulgueu, però el disseny CAD es basa en botons de 60 mm |
Resistències | Amazon | Només necessiteu un parell de resistències de 1 k i 100 ohms. 1 / 4W normals estan bé. |
Condensadors 0,1 uF | Amazon | Es necessiten tres condensadors. (No apareix a la foto) |
Filferros de pont / cable de cinta | AmazonAmazon | Si voleu estalviar-vos alguns diners, també podeu utilitzar un cable de cinta de disc dur (vegeu la foto). |
Tub de contracció / cinta elèctrica | AmazonAmazon |
Eines necessàries:
Eina | Essencial? | Comenta |
---|---|---|
Soldador | Sí | |
Multímetre | Sí | |
Decapant de filferro | Sí | O podeu utilitzar un ganivet / tisores. |
Tallador làser | No | |
Impressora 3D | No | |
Pinces | No | Útil per mantenir la caixa unida en la fase de proves. |
Observacions:
Per augmentar l'accessibilitat del projecte, vaig decidir desenvolupar-lo amb un Raspberry Pi 3b. Tot i que augmenta l'accessibilitat, disminueix les capacitats de l'aplicació, ja que els RPi no són tan ràpids. Si busqueu un ordinador de placa únic que sigui més ràpid, us recomanem que consulteu el NVIDIA Jetson Nano
Pas 2: cablejat
El diagrama esquemàtic és molt informatiu per a aquest pas i s’explica per si mateix. En cas que sigueu novells en electrònica, podeu utilitzar la imatge de llegenda. El valor del component (si s’escau) s’indica al diagrama esquemàtic. Les fotos poden ajudar a veure com construeixo el circuit. Bàsicament, he connectat tots els components el més a prop possible del botó Arcade, cosa que dóna com a resultat una visió clara del que està passant.
Observacions:
- M'agrada molt utilitzar connectors de cables de cinta, ja que són molt més resistents que l'ús de cables d'un sol pont.
- Com he suggerit, he utilitzat un cable de cinta desbordat d’un ordinador antic. Això és una mica complicat, ja que haureu d’afirmar manualment la configuració del cable. En aquest projecte, per exemple, vaig descobrir que alguns forats estaven connectats entre si (probablement s'utilitzaven com a terra per a l'aplicació original). Per tant, vaig haver d’aconseguir un cable diferent més endavant com es pot veure a les imatges.
Pas 3: construcció de la carcassa
Carcassa de la càmera
Moltes carcasses de la càmera de fotos es poden descarregar lliurement des d'Internet. Per tant, trio no reinventar la roda i escollir una carcassa bàsica però agradable d’Internet: thingiverse.com - caixa / armari de la càmera Raspberry pi. (Crida al dissenyador VGer).
Carcassa del semàfor
Per a la carcassa del semàfor, vaig dissenyar una petita caixa a Autodesk Fusion 360 (que es pot descarregar lliurement, vegeu Observacions) que s’adapti a tot el maquinari. Al fitxer adjunt podeu trobar el fitxer que he enviat a la meva empresa local de tall per làser. El disseny es basa en un gruix de placa de 6 mm. Tot i això, si voleu ajustar les coses, podeu accedir a tot tipus de formats de fitxer mitjançant aquest enllaç. Com es mostra a les imatges, també podeu utilitzar una caixa de cartró si no teniu accés a un tallador làser. Vaig utilitzar la caixa de cartró de la imatge per prototipar i funciona com un encant.
El muntatge és força senzill:
- Muntar els commutadors Arcade.
- Assegureu-vos de mantenir lliures els cables del timbre.
- Connecteu el cable de cinta a l'RPi.
- Cargoleu el RPi al tauler inferior.
- Connecteu els cables del timbre a un connector de cable i munteu-lo al tauler inferior també.
- Connecteu la Picamera al RPi.
- Practicar un forat en un dels panells laterals per al cable de commutació del timbre i el cable d'alimentació RPi.
El connector de cable s’utilitza com a punt de muntatge dels cables de l’interruptor del timbre, de manera que es pot fixar més endavant a un timbre existent. Ara tot està al seu lloc i es pot enganxar. Tanmateix, és possible que vulgueu acabar els passos següents per assegurar-vos que tot funcioni tal com es suposa.
Observacions:
Autodesk Fusion 360 està disponible gratuïtament per als aficionats. Si voleu obtenir la vostra còpia, visiteu aquest enllaç: autodesk.com - Fusion 360 For Hobbyists. Hi ha alguns termes, així que assegureu-vos de llegir-los i aplicar-los. Va ser el meu primer projecte amb Fusion 360 i no tinc molta experiència en l’ús de programari CAD, però he de dir que m’agrada molt el programari i totes les eines addicionals que inclou Fusion 360
Pas 4: Configuració de la càmera
Se suposa que teniu Raspbian instal·lat i que s'executa en mode GUI. Si encara no teniu Raspbian instal·lat, podeu seguir aquest article: raspberrypi.org - Instal·lació d’imatges del sistema operatiu. Si arrenceu Raspbian, hauríeu de veure un escriptori tal com es mostra a les imatges.
Configurem la càmera al RPi i veiem si funciona. El mètode descrit aquí prové directament de raspberrypi.org - Documentació. En primer lloc, actualitzem els darrers paquets (inclòs el microprogramari de la càmera) executant les ordres següents en una finestra del terminal (vegeu les imatges):
actualització sudo apt
sudo apt actualització completa
A continuació, cal activar la càmera mitjançant l'ordre següent:
sudo raspi-config
Al menú, aneu a 5. Opcions d’interfície -> Càmera P1. Trieu habilitar la càmera i reinicieu el RPi executant:
reiniciar
La càmera ara s'hauria de configurar correctament. Es pot provar obrint una finestra de terminal i executant:
raspistill -v -o /home/pi/test.jpg
La imatge es desa a: / home / pi.
Pas 5: Configuració de Docker
Per evitar la dependència i els errors d'instal·lació, vaig decidir crear una imatge personalitzada de Docker per a aquest projecte (vegeu wikipedia.org - Docker). Si mai heu utilitzat o sentit parlar de Docker, no us preocupeu, us explicaré pas a pas com utilitzar-lo en aquest projecte. De fet, és molt fàcil. En cas que vulgueu executar aquest projecte en una instal·lació local (en lloc de contenidor Docker), us donaré alguns consells. Però es recomana utilitzar la imatge Docker. Al cap i a la fi, el construeixo perquè sigui més fàcil executar aquest projecte.
Què és Docker?
Nota: aquesta part proporciona informació de fons sobre Docker, que es pot ometre si només voleu executar el codi.
Aquest projecte és la primera vegada que utilitzo Docker i és simplement fantàstic. Potser heu sentit a parlar de virtualenv o Anaconda per a Python? Bé, Docker és bastant similar en el sentit que podeu gestionar fàcilment versions de paquets i executar diferents versions de Python en un sistema amfitrió mitjançant un entorn diferent (o contenidor com es diu a Docker). Però, en comparació amb virtualenv i Anaconda, Docker és molt més potent ja que no es limita a contenir només paquets Python. De fet, en un contenidor Docker, podeu instal·lar i gestionar també els paquets d’un sistema operatiu desitjat. Per exemple, tingueu en compte un lloc web que vulgueu migrar que executi un framework web Python (per exemple, Django) amb una base de dades (per exemple, MySQL). Sense un contenidor Docker, hauríeu d’instal·lar tots els paquets al servidor nou, un procés molt propens a errors i errors. D'altra banda, quan el vostre lloc web s'ha construït a Docker, la migració és bàsicament tan fàcil com moure els fitxers o fitxers d'imatge al servidor nou i executar-los. Com podeu imaginar, Docker també és molt útil per a projectes amb Instructables;)! Si voleu obtenir més informació sobre Docker, consulteu el seu lloc web: docker.org - Docker: Enterprise Container Platform. Ara, posem-nos en marxa amb Docker!
Instal·lació de Docker
Instal·leu Docker executant:
curl -sSL https://get.docker.com | sh
A continuació, l'usuari s'afegeix al grup d'usuaris "docker", que proporciona els drets per executar Docker. Això es fa mitjançant:
sudo usermod -aG docker $ USER
Ara hauríeu de poder executar Docker. Això es pot validar executant la imatge hello-world:
docker run hola-world
Per últim, traiem la imatge de Docker que conté totes les dependències necessàries per executar els scripts Python del timbre. Aquest procés pot trigar una estona, ja que la imatge és bastant gran (~ 1,5 GB). Executa:
docker pull erientes / timbre
Nota: el fitxer Docker es pot trobar al dipòsit de timbres de Github. Ara, tot està a punt per executar els scripts de timbre, que es parlaran en el següent pas.
Instal·lació local
Una vegada més, recomanaria fer servir la imatge Docker en lloc d’una instal·lació local. Però per completar aquest tutorial, ara descriuré alguns dels passos que vaig fer per a la instal·lació local.
Per poder executar el codi, la versió de python ha de ser> = 3.5 (he utilitzat python 3.5.3) i cal instal·lar els paquets següents:
- reconeixement_cara
- picamera
- numpy
- Coixí
- python-telegram-bot
- RPi. GPIO
Aquest enllaç és molt útil: Github: instal·leu dlib i face_recognition en un Raspberry Pi. Tot i això, aquí hi ha algunes advertències: 1) El coixí necessita com a mínim Python 3.5, que no s’instal·larà seguint aquest mètode. 2) A més, no tots els paquets necessaris al projecte del timbre s’instal·laran seguint aquest mètode. Tot i això, hauríeu de poder instal·lar-lo simplement amb pip3.
Pas 6: Execució dels scripts del timbre
Obteniu els scripts
Els scripts es poden descarregar manualment des de: github.com - Erientes / timbre. O si teniu Git instal·lat, executeu:
git clone
Creeu àlies
Ara, per fer-nos la vida una mica més fàcil, creem alguns àlies per executar els scripts. Executa:
fullet ~ /.bashrc
Afegiu les línies següents i deseu el fitxer:
àlies doorbell_run = 'docker run --privileged -v / home / pi / doorbell: / doorbell -w / doorbell -it erientes / doorbell python $ 1'
àlies doorbell_login = 'docker run --privileged -v / home / pi / doorbell: / doorbell -w / doorbell -it erientes / doorbell bash'
Prova scripts
Per provar si tot està instal·lat bé, obriu un terminal nou i executeu:
exemples de timbres / 0_test_installation.py
El resultat ha de ser simplement un missatge a la finestra del terminal que digui "La instal·lació del timbre s'ha acabat correctament!". Per provar si el contenidor Docker pot accedir a la càmera, executeu:
exemples de timbres / 1_test_camera.py
En executar 1_test_camera.py es farà una foto i es desarà com a "test.jpg", que es pot trobar a / home / pi / timbre. Finalment, els controladors de LED es poden provar executant:
exemples de timbres / 2_test_voicehat_drivers.py
Quan aquest script s’executa, el LED del commutador arcade hauria de respondre quan es prem el botó.
Executant scripts de campaneta
Per executar els scripts Doorbell, primer cal obtenir les credencials del bot de Telegram. Instal·leu Telegram al telèfon i aneu a telegram.me - Botfather. Inicieu una conversa i introduïu:
/ newbot
Empleneu un nom i un nom d’usuari per al bot. Després d'això, se us proporcionarà el testimoni d'accés. Copieu aquest valor al fitxer 'credentials_telegram_template.py' a / home / pi / doorbell i deseu-lo en un fitxer nou anomenat 'credentials_telegram.py'. Per últim, inicieu una conversa amb el bot que acabeu de crear fent clic a l’enllaç que us proporciona Botfather.
Finalment, executem el timbre amb reconeixement facial:
doorbell_run main.py
Observacions:
Si voleu obtenir més informació sobre com funciona el codi, consulteu els comentaris dels propis scripts. Si teniu alguna pregunta sobre el codi, poseu-vos en contacte amb mi a través de Github
Pas 7: utilitzar el timbre
Executem l'script del timbre executant:
doorbell_run main.py Després de carregar els paquets, els scripts no funcionen. Bàsicament hi ha dues coses que poden passar:
- Algú fa sonar el timbre.
- S'afegeix algú a la llista blanca.
Algú fa sonar el timbre
En aquest cas, el guió començarà a fer fotos fins que faci una foto en què es detecti una cara. Després de la detecció, s'anomena alguns mètodes del paquet python 'face_recognition' per calcular una codificació de 128 de la cara. A continuació, es compara la codificació obtinguda amb les codificacions de whitelist.csv i blacklist.csv. Els possibles resultats resulten en la següent resposta:
A la llista blanca? | A la llista negra? | Resposta |
---|---|---|
Sí | No | S'encén el llum verd. |
Sí | Sí | S'encén la llum groga. La càmera del timbre envia fotos al bot de Telegram amb icona taronja. Aquest estat pot ocórrer si s'afegeix algú a les dues llistes. Per exemple, quan algú era benvingut al principi, però més endavant va aparèixer a la llista negra. |
No | No | S'encén la llum groga. La càmera del timbre envia fotos al bot de Telegram amb icona taronja. |
No | Sí | S'encén el llum vermell. La càmera del timbre envia fotos al bot de Telegram amb icona vermella. |
S'afegeix algú a la llista blanca
Per afegir algú a la llista blanca, premeu el botó groc del semàfor quan el timbre de la porta estigui inactiu. En primer lloc, s’encendrà el llum groc. Si el llum verd parpelleja 3 vegades, la cara de la persona s’afegeix amb èxit a la llista blanca. Si el llum verd no parpelleja 3 vegades, l'intent no ha tingut èxit. En aquest cas, torneu a prémer el botó groc. Podeu verificar fàcilment si ha tingut èxit fent sonar el timbre de la porta i comprovant si es passa el llum verd.
Com afegir algú a la llista negra?
Obbviament, les persones amb males intencions no passaran per fer-nos una foto de la seva cara. Per tant, podeu afegir imatges de persones famoses que (per exemple) la policia ha publicat a la carpeta img / llista negra. Cada hora, aquesta carpeta comprova si hi ha imatges noves. Si hi ha una imatge nova, la codificació de la cara es calcula i s'afegeix a blacklist.csv. A continuació, es canvia el nom de la imatge i es trasllada a la carpeta / img / llista negra / codificada.
Observacions:
- El fet d’operar els scripts mitjançant l’inici de sessió al RPi proporciona molta més informació i control, però el control i la informació bàsica es poden obtenir només mitjançant la visualització del semàfor.
- El reconeixement facial s’implementa mitjançant el paquet python "face_recognition". Aquest paquet es basa en Dlib que conté un algoritme de reconeixement de cares d’última generació, que realitza una precisió del 99,38% en el benchmark de Cares etiquetades al Wild (font: dlib.net - Reconeixement facial d’alta qualitat amb Deep Metric Learning).
Primer premi del concurs d'assistència tècnica
Recomanat:
Mirall de reconeixement facial amb compartiment secret: 15 passos (amb imatges)
Mirall de reconeixement facial amb compartiment secret: sempre he estat intrigat pels compartiments secrets sempre creatius que s’utilitzen en històries, pel·lícules i similars. Per tant, quan vaig veure el Concurs de compartiments secrets, vaig decidir experimentar jo mateixa amb la idea i fer un mirall d’aspecte normal que obrís un
Smart Lock de reconeixement facial amb LTE Pi HAT: 4 passos
Bloqueig intel·ligent de reconeixement de cares amb LTE Pi HAT: el reconeixement de rostres s’utilitza cada vegada més, podem utilitzar-lo per fer un bloqueig intel·ligent
Reconeixement facial ESP32 CAM amb suport MQTT - AI-Thinker: 4 passos
Reconeixement facial ESP32 CAM amb suport MQTT | AI-Thinker: Hola, volia compartir el meu codi per a un projecte si necessitava tenir una CAM ESP amb reconeixement facial que pogués enviar dades a MQTT. Doncs bé … després de potser 7 hores buscant exemples de codis múltiples i buscant què és què, tinc finis
Sistema de seguretat de reconeixement facial per a una nevera amb Raspberry Pi: 7 passos (amb imatges)
Sistema de seguretat de reconeixement facial per a un refrigerador amb Raspberry Pi: navegant per Internet he descobert que els preus dels sistemes de seguretat varien de 150 a 600 $ i més, però no totes les solucions (fins i tot les molt cares) es poden integrar amb altres eines intel·ligents a casa! Per exemple, no es pot configurar
Reconeixement facial en temps real: un projecte d'extrem a extrem: 8 passos (amb imatges)
Reconeixement facial en temps real: un projecte de punta a punta: en el meu darrer tutorial que explorava OpenCV, vam aprendre EL SEGUIMENT AUTOMÀTIC D'OBJECTES DE VISIÓ. Ara utilitzarem la nostra PiCam per reconèixer les cares en temps real, com podeu veure a continuació: Aquest projecte es va fer amb aquest fantàstic "Open Source Computer Vision Library & qu