Taula de continguts:

Timbre amb reconeixement facial: 7 passos (amb imatges)
Timbre amb reconeixement facial: 7 passos (amb imatges)

Vídeo: Timbre amb reconeixement facial: 7 passos (amb imatges)

Vídeo: Timbre amb reconeixement facial: 7 passos (amb imatges)
Vídeo: Собаку бросили в лесу с коробкой макарон. История собаки по имени Ринго. 2024, Desembre
Anonim
Timbre amb reconeixement facial
Timbre amb reconeixement facial

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

Materials
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
Multímetre
Decapant de filferro 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

Cablejat
Cablejat
Cablejat
Cablejat
Cablejat
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

Construint la carcassa
Construint la carcassa
Construint la carcassa
Construint la carcassa
Construint la carcassa
Construint la carcassa
Construint la carcassa
Construint 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:

  1. Muntar els commutadors Arcade.
  2. Assegureu-vos de mantenir lliures els cables del timbre.
  3. Connecteu el cable de cinta a l'RPi.
  4. Cargoleu el RPi al tauler inferior.
  5. Connecteu els cables del timbre a un connector de cable i munteu-lo al tauler inferior també.
  6. Connecteu la Picamera al RPi.
  7. 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

Configuració de la càmera
Configuració de la càmera
Configuració de la càmera
Configuració de la càmera
Configuració de la càmera
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

Configuració de Docker
Configuració de Docker
Configuració de Docker
Configuració de Docker
Configuració de Docker
Configuració de Docker
Configuració de Docker
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

Execució dels scripts del timbre
Execució dels scripts del timbre
Execució dels scripts del timbre
Execució dels scripts del timbre
Execució dels scripts del timbre
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

Image
Image
Utilitzant el timbre
Utilitzant el timbre
Utilitzant el timbre
Utilitzant 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:

  1. Algú fa sonar el timbre.
  2. 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
No S'encén el llum verd.
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'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).
Concurs d'assistència tècnica
Concurs d'assistència tècnica
Concurs d'assistència tècnica
Concurs d'assistència tècnica

Primer premi del concurs d'assistència tècnica

Recomanat: