Isi kandungan:
- Langkah 1: Bahan
- Langkah 2: Pendawaian
- Langkah 3: Membina Selongsong
- Langkah 4: Mengkonfigurasi Kamera
- Langkah 5: Menyiapkan Docker
- Langkah 6: Menjalankan Skrip Bel
- Langkah 7: Menggunakan Doorbell
Video: Bel dengan Pengecaman Wajah: 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Motivasi
Baru-baru ini, terdapat gelombang rompakan di negara saya yang disasarkan kepada orang tua di rumah mereka sendiri. Biasanya, akses diberikan oleh penghuni sendiri kerana pengunjung meyakinkan mereka bahawa mereka adalah penjaga / jururawat. Ini tidak dapat dilupakan, betapa marah dan sedihnya kisah-kisah ini yang membuat saya merasa. Rumah harus menjadi tempat perlindungan pertama anda dan lebih-lebih lagi jika anda sudah berada dalam kedudukan yang rentan ketika berada di luar. Dengan ini, saya memulakan projek ini.
Maklumat am
Sistem bel pintu direka terutamanya untuk orang tua atau orang yang cacat penglihatan dan cukup lurus dalam cara kerjanya. Pendek kata, suis bel pintu mencetuskan kamera untuk mendapatkan rakaman. Seterusnya, wajah dalam rakaman dikesan dan dipadankan dengan senarai putih dan senarai hitam. Penghuni mendapat maklum balas visual yang jelas dengan paparan lampu isyarat yang jelas. Dengan ini, lampu hijau, kuning atau merah menunjukkan bahawa orang berada dalam senarai putih, tidak diketahui oleh sistem atau dalam senarai hitam masing-masing. Sekiranya lampu kuning atau merah dipicu, foto tersebut dikirim oleh bot Telegram untuk memberitahu / memberi amaran kepada saudara atau penjaga.
Tahap kepakaran
Projek ini dibina untuk peminat yang sangat ingin tahu tentang penggunaan komputer dan kecerdasan buatan. Instruksional ini ditulis untuk penonton pemula, jadi jangan risau jika anda tidak mempunyai pengalaman! Tambahan pula, projek ini dapat menarik bagi pembuat yang lebih berpengalaman juga kerana saluran paip disusun dengan cara yang anda dapat mengembangkannya dengan visi komputer anda sendiri dan idea pengenalan wajah tanpa banyak masalah.
Langkah 1: Bahan
Senarai produk dengan syarat minimum:
Produk | Pautan | Komen |
---|---|---|
Raspberry Pi 3b | RPi | Pautan menunjukkan RPi 4 kerana ia mempunyai prestasi yang jauh lebih baik dan harganya hampir sama dengan RPi 3b. |
Micro SD | Amazon | Kad SD mikro 16 GB atau lebih besar akan berjaya. Tetapi kad 16 GB di Amazon sekarang hampir sama dengan kad 32 GB. |
Kamera Raspberry Pi | Amazon | Kamera v1 lebih murah, tetapi v2 lebih baik dan akan disokong lebih lama. |
Kabel flex FPC 15 pin | Amazon | Panjangnya sebenarnya bergantung kepada keadaan semasa menjalankan projek ini. Sekiranya anda hanya mahu membina prototaip, kabel flex asli akan berjaya. |
Bekalan Kuasa 5v usb mikro | Adafruit | Yang ini tidak pernah dikecewakan! Berkualiti hebat. (Tidak ada di foto) |
Butang arked dengan LED terbina dalam | Amazon | Pilih ukuran yang anda mahukan, tetapi reka bentuk CAD berdasarkan butang 60mm |
Perintang | Amazon | Anda hanya memerlukan beberapa perintang 1k dan 100 ohm. 1 / 4W biasa baik-baik saja. |
Kapasitor 0.1 uF | Amazon | Tiga kapasitor diperlukan. (Tidak ada di foto) |
Kabel Jumper / Kabel Pita | AmazonAmazon | Sekiranya anda ingin menjimatkan sejumlah wang, anda juga boleh menggunakan kabel pita cakera liut lama (lihat foto). |
Tiub pengecutan / Pita elektrik | AmazonAmazon |
Alat yang diperlukan:
Alat | Penting? | Komen |
---|---|---|
Besi pematerian | Ya | |
Multimeter | Ya | |
Pelucut wayar | Ya | Atau anda boleh menggunakan pisau / gunting. |
Pemotong Laser | Tidak | |
Pencetak 3D | Tidak | |
Pengapit | Tidak | Berguna untuk menyimpan kotak bersama dalam fasa ujian. |
Kenyataan:
Untuk meningkatkan kemudahan projek, saya memutuskan untuk membangunkannya menggunakan Raspberry Pi 3b. Walaupun meningkatkan aksesibilitas, ia mengurangkan keupayaan aplikasi kerana RPi tidak begitu cepat. Sekiranya anda mencari komputer papan tunggal yang lebih pantas, anda mungkin ingin melihat NVIDIA Jetson Nano
Langkah 2: Pendawaian
Gambarajah skematik paling bermaklumat untuk langkah ini dan cukup jelas. Sekiranya anda baru menggunakan elektronik, anda boleh menggunakan gambar legenda. Nilai komponen (jika berlaku) dinyatakan dalam rajah skematik. Foto-foto dapat membantu melihat bagaimana saya membina litar. Pada dasarnya, saya menghubungkan semua komponen sedekat mungkin dengan butang arked yang menghasilkan gambaran keseluruhan yang jelas mengenai apa yang berlaku.
Kenyataan:
- Saya sangat suka menggunakan penyambung kabel pita, kerana ia lebih kuat daripada menggunakan wayar jumper tunggal.
- Seperti yang disarankan, saya telah menggunakan kabel pita yang dicakar dari komputer lama. Ini agak sukar kerana anda perlu menegaskan konfigurasi kabel secara manual. Sebagai contoh dalam projek ini, saya dapati beberapa lubang saling bersambung (mungkin digunakan sebagai tanah untuk aplikasi asal). Oleh itu, saya terpaksa mendapatkan kabel lain kemudian seperti yang anda lihat pada gambar.
Langkah 3: Membina Selongsong
Selongsong kamera
Banyak casing untuk gambar boleh dimuat turun secara percuma dari internet. Oleh itu, saya memilih untuk tidak mencipta semula roda dan memilih sarung asas tetapi bagus dari internet: thingiverse.com - Sarung / kandang kamera Raspberry pi. (Berteriak kepada pereka VGer.)
Selongsong lampu isyarat
Untuk selongsong lampu isyarat, saya merancang kotak kecil di Autodesk Fusion 360 (yang boleh dimuat turun secara percuma, lihat Catatan) yang sesuai dengan semua perkakasan. Dalam lampiran, anda boleh mendapatkan fail yang telah saya kirimkan ke syarikat pemotong laser tempatan saya. Dengan ini, reka bentuk berdasarkan ketebalan plat 6mm. Walau bagaimanapun, jika anda ingin menyesuaikan sesuatu, anda boleh mengakses semua jenis format fail dengan menggunakan pautan ini. Seperti yang ditunjukkan dalam gambar, Anda juga dapat menggunakan kotak kadbod jika Anda tidak memiliki akses ke pemotong laser. Saya menggunakan kotak kadbod pada gambar untuk membuat prototaip dan ia berfungsi seperti daya tarikan.
Pemasangannya agak lurus ke hadapan:
- Pasang suis Arcade.
- Pastikan wayar agar bel pintu tidak bebas.
- Sambungkan kabel pita ke RPi.
- Skru RPi ke panel bawah.
- Sambungkan wayar bel pintu ke penyambung wayar dan pasangkan juga ke panel bawah.
- Sambungkan Picamera ke RPi.
- Bor lubang di salah satu panel sisi untuk wayar beralih bel pintu dan wayar kuasa RPi.
Penyambung wayar digunakan sebagai titik pemasangan untuk kabel suis bel pintu, sehingga dapat dipasang ke bel pintu yang ada di kemudian hari. Segala-galanya kini sudah siap dan dapat dilekatkan bersama. Walau bagaimanapun, anda mungkin terlebih dahulu ingin menyelesaikan langkah seterusnya, untuk memastikan semuanya berfungsi dengan cara yang sepatutnya.
Kenyataan:
Autodesk Fusion 360 tersedia secara percuma untuk penggemar! Sekiranya anda ingin mendapatkan salinan anda, kunjungi pautan ini: autodesk.com - Fusion 360 For Hobbyists. Terdapat beberapa syarat, jadi pastikan anda membaca dan menerapkannya. Ini adalah projek pertama saya dengan Fusion 360 dan saya tidak mempunyai banyak pengalaman dalam menggunakan perisian CAD, tetapi saya mesti mengatakan bahawa saya sangat menyukai perisian dan semua alat tambahan yang disertakan dengan Fusion 360
Langkah 4: Mengkonfigurasi Kamera
Diandaikan bahawa anda telah memasang Raspbian dan ia berjalan dalam mod GUI. Sekiranya belum memasang Raspbian, anda boleh mengikuti artikel ini: raspberrypi.org - Memasang imej sistem operasi. Sekiranya anda boot Raspbian, anda akan melihat desktop seperti yang ditunjukkan dalam gambar.
Mari konfigurasikan kamera pada RPi dan lihat apakah ia berfungsi! Kaedah yang dijelaskan di sini adalah langsung dari raspberrypi.org - Dokumentasi. Pertama, mari kita kemas kini ke pakej terkini (termasuk firmware kamera) dengan melaksanakan perintah berikut di tetingkap terminal (lihat gambar):
sudo apt kemas kini
sudo apt peningkatan penuh
Seterusnya, kamera harus diaktifkan menggunakan perintah berikut:
sudo raspi-config
Di menu, pergi ke 5. Pilihan Antaramuka -> Kamera P1. Pilih untuk mengaktifkan kamera dan but semula RPi dengan menjalankan:
but semula
Kamera kini harus dikonfigurasikan dengan betul. Ia dapat diuji dengan membuka tetingkap terminal dan menjalankan:
raspistill -v -o /home/pi/test.jpg
Gambar disimpan ke: / rumah / pi.
Langkah 5: Menyiapkan Docker
Untuk mengelakkan pergantungan dan kesalahan pemasangan, saya memutuskan untuk membina gambar Docker khusus untuk projek ini (lihat wikipedia.org - Docker). Sekiranya anda tidak pernah menggunakan atau mendengar tentang Docker, jangan risau, saya akan menerangkan langkah demi langkah bagaimana menggunakannya dalam projek ini. Sebenarnya, ia sangat mudah! Sekiranya anda ingin menjalankan projek ini pada pemasangan tempatan (bukannya dalam bekas Docker), saya akan memberi anda beberapa petua. Tetapi sangat digalakkan menggunakan gambar Docker. Lagipun, saya membinanya untuk memudahkan anda menjalankan projek ini!
Apa itu Docker?
Catatan: bahagian ini memberikan beberapa maklumat latar belakang tentang Docker, yang boleh dilangkau jika anda hanya ingin menjalankan kod.
Projek ini adalah kali pertama saya menggunakan Docker dan ia sungguh hebat! Mungkin anda pernah mendengar mengenai virtualenv atau Anaconda untuk Python? Nah, Docker hampir serupa dalam arti bahawa anda dapat dengan mudah menguruskan versi pakej dan menjalankan versi Python yang berbeza pada satu sistem hos dengan menggunakan persekitaran yang berbeza (atau bekas seperti yang disebut dalam Docker). Tetapi, berbanding virtualenv dan Anaconda, Docker jauh lebih hebat kerana tidak terhad hanya untuk memuatkan paket Python sahaja. Memang, dalam bekas Docker, anda boleh memasang dan mengurus juga pakej sistem operasi yang diinginkan. Sebagai contoh, pertimbangkan laman web yang ingin anda migrasikan yang menjalankan kerangka web Python (mis. Django) dengan pangkalan data (mis. MySQL). Tanpa bekas Docker, anda perlu memasang semua pakej pada pelayan baru, proses yang sangat terdedah kepada ralat dan pepijat. Sebaliknya, apabila laman web anda telah dibina di Docker, migrasi pada dasarnya semudah memindahkan fail gambar / fail ke pelayan baru dan menjalankannya. Seperti yang anda bayangkan, Docker sangat berguna untuk projek di Instructables juga;)! Sekiranya anda ingin mengetahui lebih lanjut mengenai Docker, lihat laman web mereka: docker.org - Docker: Enterprise Container Platform. Sekarang, mari kita bangun dengan Docker!
Memasang Docker
Pasang Docker dengan melaksanakan:
curl -sSL https://get.docker.com | sh
Seterusnya, pengguna ditambahkan ke 'docker' kumpulan pengguna, yang memberikan hak untuk menjalankan Docker. Ini dilakukan oleh:
sudo usermod -aG docker $ PENGGUNA
Sekarang, anda seharusnya dapat menjalankan Docker. Ini dapat disahkan dengan menjalankan imej hello-world:
dok berlari hello-world
Akhir sekali, mari kita tarik gambar Docker yang mengandungi semua kebergantungan yang diperlukan untuk menjalankan skrip Python bel pintu. Proses ini mungkin memerlukan sedikit masa kerana gambarnya cukup besar (~ 1.5 GB). Laksanakan:
docker tarik erientes / loceng pintu
Catatan: Dockerfile boleh didapati di repositori bel pintu di Github. Sekarang, semuanya sudah siap untuk menjalankan skrip bel pintu, yang akan dibincangkan pada langkah seterusnya.
Pemasangan tempatan
Sekali lagi, saya sangat mengesyorkan untuk menggunakan gambar Docker dan bukannya pemasangan tempatan. Tetapi untuk menyelesaikan tutorial ini, saya sekarang akan menerangkan beberapa langkah yang saya ambil untuk pemasangan tempatan.
Untuk dapat menjalankan kod, versi python mestilah> = 3.5 (saya menggunakan python 3.5.3) dan pakej berikut perlu dipasang:
- pengecaman wajah
- picamera
- kekenyangan
- Bantal
- python-telegram-bot
- RPi. GPIO
Pautan ini cukup berguna: Github - Pasang dlib dan face_recognition pada Raspberry Pi. Walau bagaimanapun, terdapat beberapa peringatan di sini: 1) Bantal memerlukan sekurang-kurangnya Python 3.5, yang tidak akan dipasang mengikuti kaedah ini. 2) Juga, tidak semua pakej yang diperlukan dalam projek bel pintu akan dipasang dengan mengikuti kaedah ini. Namun, anda seharusnya dapat memasangnya dengan hanya menggunakan pip3.
Langkah 6: Menjalankan Skrip Bel
Dapatkan skrip
Skrip boleh dimuat turun secara manual dari: github.com - Erientes / bel pintu. Atau jika anda telah memasang Git, jalankan:
git klon
Buat alias
Sekarang, untuk menjadikan kehidupan kita lebih mudah, mari buat beberapa alias untuk menjalankan skrip. Laksanakan:
daun daun ~ /.bashrc
Tambahkan baris berikut dan simpan fail:
alias doorbell_run = 'docker run --privileged -v / home / pi / bel pintu: / bel pintu -w / bel pintu -it erientes / bel pintu python $ 1'
alias doorbell_login = 'docker run --privileged -v / home / pi / bel pintu: / bel pintu -w / bel pintu -it erientes / bel pintu'
Skrip ujian
Untuk menguji apakah semuanya dipasang dengan betul, buka terminal baru dan jalankan:
doorbell_run contoh / 0_test_installation.py
Hasilnya semestinya berupa mesej di tetingkap terminal yang mengatakan 'Pemasangan pintu telah berjaya!'. Untuk menguji apakah kamera dapat diakses oleh bekas Docker, jalankan:
loceng_run contoh / 1_test_camera.py
Dengan menjalankan 1_test_camera.py foto akan diambil dan disimpan sebagai 'test.jpg', yang boleh didapati di / home / pi / bel pintu. Terakhir, pemacu LED boleh diuji dengan menjalankan:
loceng_run contoh / 2_test_voicehat_drivers.py
Semasa skrip ini berjalan, LED di suis arked harus bertindak balas apabila butang ditekan.
Menjalankan skrip Doorbell
Untuk menjalankan skrip Doorbell, pertama kelayakan bot Telegram perlu diperoleh. Pasang Telegram di telefon anda dan pergi ke telegram.me - Botfather. Mulakan perbualan dan masukkan:
/ bot baru
Isi nama dan nama pengguna untuk bot. Selepas itu, anda akan diberikan token akses. Salin nilai itu ke fail 'credentials_telegram_template.py' di / home / pi / bel pintu dan simpan ke fail baru bernama 'credentials_telegram.py'. Terakhir, mulakan perbualan dengan bot yang baru anda buat dengan mengklik pada pautan yang diberikan oleh Botfather kepada anda.
Akhirnya, mari kita jalankan Doorbell dengan Face Recognition:
bel pintu_run main.py
Kenyataan:
Sekiranya anda ingin mengetahui lebih lanjut mengenai bagaimana kod itu berfungsi, periksa komen dalam skrip itu sendiri. Sekiranya anda mempunyai pertanyaan mengenai kod tersebut, sila hubungi saya melalui Github
Langkah 7: Menggunakan Doorbell
Mari jalankan skrip bel pintu dengan melaksanakan:
bel_run main.py Setelah memuatkan pakej, skrip tidak berfungsi. Pada dasarnya ada 2 perkara yang boleh berlaku:
- Seseorang membunyikan loceng pintu.
- Seseorang ditambahkan ke senarai putih.
Seseorang membunyikan loceng pintu
Dalam kes ini, skrip akan mula mengambil foto hingga memotret foto di mana wajah terdeteksi. Selepas pengesanan, beberapa kaedah dari python package 'face_recognition' dipanggil untuk mengira 128 pengekodan wajah. Seterusnya, pengekodan yang diperoleh dibandingkan dengan pengekodan dalam senarai putih.csv dan senarai hitam.csv. Kemungkinan hasilnya menghasilkan tindak balas berikut:
Dalam senarai putih? | Dalam senarai hitam? | Tanggapan |
---|---|---|
Ya | Tidak | Lampu hijau menyala. |
Ya | Ya | Lampu kuning menyala. Kamera bel pintu menghantar gambar ke bot Telegram dengan ikon oren. Keadaan ini boleh berlaku sekiranya seseorang ditambahkan ke kedua-dua senarai tersebut. Sebagai contoh, ketika seseorang diterima pada mulanya, tetapi disenarai hitam kemudian. |
Tidak | Tidak | Lampu kuning menyala. Kamera bel pintu menghantar gambar ke bot Telegram dengan ikon oren. |
Tidak | Ya | Lampu merah menyala. Kamera bel pintu menghantar gambar ke bot Telegram dengan ikon merah. |
Seseorang ditambahkan ke senarai putih
Untuk menambahkan seseorang ke senarai putih, tekan butang kuning lampu isyarat ketika bel pintu dalam keadaan tidak aktif. Pertama, lampu kuning akan menyala. Sekiranya lampu hijau berkelip 3 kali, wajah orang itu berjaya ditambahkan ke senarai putih. Sekiranya lampu hijau tidak berkelip 3 kali, percubaan tidak berjaya. Sekiranya demikian, tekan butang kuning sekali lagi. Anda dapat dengan mudah mengesahkan apakah itu berjaya dengan membunyikan loceng pintu dan memeriksa apakah lampu hijau dilalui.
Bagaimana untuk menambahkan seseorang ke senarai hitam?
Jelas, orang yang berniat buruk tidak akan lewat untuk memberi kita foto wajah mereka. Oleh itu, anda boleh menambahkan gambar orang terkenal yang (contohnya) telah diterbitkan oleh polis ke folder img / senarai hitam. Setiap jam, folder ini diperiksa untuk gambar baru. Sekiranya terdapat gambar baru, pengekodan wajah dikira dan ditambahkan ke senarai hitam.csv. Gambar itu kemudian dinamakan semula dan dipindahkan ke folder / img / senarai hitam / dikodkan.
Kenyataan:
- Mengendalikan skrip dengan masuk ke RPi memberikan lebih banyak kawalan dan maklumat, tetapi kawalan dan maklumat asas dapat diperoleh dengan hanya menggunakan paparan lampu isyarat.
- Pengecaman wajah dilaksanakan dengan menggunakan python package 'face_recognition'. Pakej ini berdasarkan Dlib yang mengandungi algoritma pengecam wajah canggih, yang menunjukkan ketepatan 99.38% pada penanda aras Labeled Faces in the Wild (sumber: dlib.net - Pengecaman Wajah Berkualiti Tinggi dengan Pembelajaran Metrik Dalam).
Hadiah Pertama dalam Peraduan Teknologi Bantuan
Disyorkan:
Cermin Pengecaman Muka Dengan Petak Rahsia: 15 Langkah (dengan Gambar)
Cermin Pengecaman Muka Dengan Ruang Rahsia: Saya selalu tertarik dengan ruang rahsia yang sentiasa kreatif yang digunakan dalam cerita, filem, dan sejenisnya. Oleh itu, ketika saya melihat Peraduan Petak Rahsia, saya memutuskan untuk bereksperimen dengan idea itu sendiri dan membuat cermin biasa yang membuka
Pengecaman Imej Dengan Papan K210 dan Arduino IDE / Micropython: 6 Langkah (dengan Gambar)
Pengecaman Imej Dengan Papan K210 dan Arduino IDE / Micropython: Saya sudah menulis satu artikel mengenai cara menjalankan demo OpenMV di Sipeed Maix Bit dan juga membuat video demo pengesanan objek dengan papan ini. Salah satu daripada banyak pertanyaan yang diajukan oleh orang adalah - bagaimana saya dapat mengenali objek yang rangkaian sarafnya tidak
Pengecaman dan Pengecaman Wajah - Arduino Face ID Menggunakan OpenCV Python dan Arduino .: 6 Langkah
Pengecaman dan Pengecaman Wajah | Arduino Face ID Menggunakan OpenCV Python dan Arduino .: Pengenalan wajah AKA ID ID adalah salah satu ciri terpenting pada telefon bimbit pada masa kini. Oleh itu, saya mempunyai soalan " bolehkah saya mempunyai id wajah untuk projek Arduino saya " dan jawapannya adalah ya … Perjalanan saya dimulakan seperti berikut: Langkah 1: Akses ke kami
Kunci Pintar Pengecaman Wajah Dengan LTE Pi HAT: 4 Langkah
Kunci Pintar Pengecaman Wajah Dengan LTE Pi HAT: Pengecaman wajah semakin banyak digunakan, kita boleh menggunakannya untuk membuat kunci pintar
Cermin Ajaib Cerdas Terapung Dari Laptop Lama Dengan Pengecaman Suara Alexa: 6 Langkah (dengan Gambar)
Cermin Sihir Cerdas Terapung Dari Laptop Lama Dengan Pengecaman Suara Alexa: Daftar kursus 'Elektronik secara ringkas' saya di sini: https://www.udemy.com/electronics-in-a-nutshell/?couponCode=TINKERSPARK Juga lihat saya saluran youtube di sini untuk lebih banyak projek dan tutorial elektronik: https://www.youtube.com/channel/UCelOO