Daftar Isi:

Bel Pintu Dengan Pengenalan Wajah: 7 Langkah (dengan Gambar)
Bel Pintu Dengan Pengenalan Wajah: 7 Langkah (dengan Gambar)

Video: Bel Pintu Dengan Pengenalan Wajah: 7 Langkah (dengan Gambar)

Video: Bel Pintu Dengan Pengenalan Wajah: 7 Langkah (dengan Gambar)
Video: TIRU SUARA PRAMUGARI by Leyla Aderina 2024, November
Anonim
Bel Pintu Dengan Pengenalan Wajah
Bel Pintu Dengan Pengenalan Wajah

Motivasi

Baru-baru ini, telah terjadi gelombang perampokan di negara saya yang ditargetkan pada orang tua di rumah mereka sendiri. Biasanya, akses diberikan oleh penghuni sendiri karena pengunjung meyakinkan mereka bahwa mereka adalah pengasuh/perawat. Tidak bisa diungkapkan dengan kata-kata, betapa marah dan sedihnya cerita-cerita ini membuat saya merasa. Rumah harus menjadi tempat berlindung pertama Anda dan terlebih lagi jika Anda sudah berada dalam posisi rentan saat berada di luar. Dengan pemikiran ini, saya memulai proyek ini.

Informasi Umum

Sistem bel pintu terutama dirancang untuk orang tua atau orang dengan gangguan penglihatan dan cukup mudah dalam cara kerjanya. Singkatnya, sakelar bel pintu memicu kamera untuk mendapatkan rekaman. Selanjutnya, wajah dalam rekaman dideteksi dan dicocokkan dengan daftar putih dan daftar hitam. Penghuni mendapat umpan balik visual yang jelas dengan tampilan lampu lalu lintas yang jelas. Dengan ini, lampu hijau, kuning atau merah menunjukkan bahwa orang tersebut berada di daftar putih, tidak diketahui oleh sistem atau di daftar hitam masing-masing. Jika lampu kuning atau merah menyala, foto dikirim oleh bot Telegram untuk menginformasikan/memperingatkan kerabat atau pengasuh.

Tingkat keahlian

Proyek ini didirikan untuk para penggemar yang sangat ingin tahu tentang menggunakan visi komputer dan kecerdasan buatan. Instruksi ini ditulis untuk audiens pemula, jadi jangan khawatir jika Anda tidak memiliki pengalaman! Selain itu, proyek ini juga dapat menarik bagi pembuat yang lebih berpengalaman karena alurnya diatur sedemikian rupa sehingga Anda dapat mengembangkannya dengan visi komputer dan ide pengenalan wajah Anda sendiri tanpa banyak kesulitan.

Langkah 1: Bahan

Bahan
Bahan

Daftar produk dengan persyaratan minimum:

Produk Tautan Komentar
Raspberry Pi 3b RPi Tautan menunjukkan RPi 4 karena memiliki kinerja yang jauh lebih baik dan harga yang hampir sama dengan RPi 3b.
Mikro SD Amazon Kartu micro SD 16 GB atau lebih besar akan melakukan pekerjaan itu. Tetapi kartu 16 GB di Amazon sekarang harganya hampir sama dengan kartu 32 GB.
Kamera Raspberry Pi Amazon Kamera v1 lebih murah, tetapi v2 lebih baik dan akan didukung lebih lama.
Kabel fleksibel FPC 15 pin Amazon Panjangnya sebenarnya tergantung pada keadaan melakukan proyek ini. Jika Anda hanya ingin membuat prototipe, kabel fleksibel asli akan melakukan pekerjaan itu.
Catu Daya 5v mikro usb Adabuah Yang ini tidak pernah mengecewakan! Kualitas bagus. (Tidak di foto)
Tombol arcade dengan LED bawaan Amazon Pilih ukuran yang Anda inginkan, tetapi desain CAD didasarkan pada tombol 60mm
Resistor Amazon Anda hanya perlu beberapa resistor 1k dan 100 ohm. Biasa 1/4W baik-baik saja.
Kapasitor 0,1 uF Amazon Diperlukan tiga kapasitor. (Tidak di foto)
Kabel Jumper / Kabel Pita AmazonAmazon Jika Anda ingin menghemat uang, Anda juga bisa menggunakan kabel pita floppy drive lama (lihat foto).
Menyusut tabung / Pita listrik AmazonAmazon

Alat yang dibutuhkan:

Alat Penting? Komentar
Besi solder Ya
Multimeter Ya
penari telanjang kawat Ya Atau bisa juga menggunakan pisau/gunting.
Pemotong Laser Tidak
pencetak 3D Tidak
klem Tidak Berguna untuk menjaga kotak bersama-sama dalam fase pengujian.

Perkataan:

Untuk meningkatkan aksesibilitas proyek, saya memutuskan untuk mengembangkannya menggunakan Raspberry Pi 3b. Meskipun meningkatkan aksesibilitas, ini menurunkan kemampuan aplikasi karena RPi tidak secepat itu. Jika Anda mencari komputer papan tunggal yang lebih cepat, Anda mungkin ingin melihat NVIDIA Jetson Nano

Langkah 2: Pengkabelan

Pengkabelan
Pengkabelan
Pengkabelan
Pengkabelan
Pengkabelan
Pengkabelan

Diagram skematik paling informatif untuk langkah ini dan cukup jelas. Jika Anda baru mengenal elektronik, Anda dapat menggunakan gambar legenda. Nilai komponen (jika berlaku) dinyatakan dalam diagram skematik. Foto-foto dapat membantu untuk melihat bagaimana saya membangun sirkuit. Pada dasarnya, saya menghubungkan semua komponen sedekat mungkin dengan tombol arcade yang menghasilkan gambaran umum yang jelas tentang apa yang terjadi.

Perkataan:

  • Saya sangat suka menggunakan konektor kabel pita, karena jauh lebih kokoh daripada menggunakan kabel jumper tunggal.
  • Seperti yang disarankan, saya telah menggunakan kabel pita dari komputer lama. Ini agak rumit karena Anda harus menegaskan konfigurasi kabel secara manual. Dalam proyek ini misalnya, saya menemukan bahwa beberapa lubang terhubung satu sama lain (mungkin digunakan sebagai ground untuk aplikasi asli). Oleh karena itu, saya harus mendapatkan kabel yang berbeda nanti seperti yang Anda lihat pada gambar.

Langkah 3: Membangun Casing

Membangun Casing
Membangun Casing
Membangun Casing
Membangun Casing
Membangun Casing
Membangun Casing
Membangun Casing
Membangun Casing

casing kamera

Banyak casing untuk picamera dapat diunduh secara bebas dari internet. Jadi, saya memilih untuk tidak menemukan kembali roda dan memilih casing dasar tapi bagus dari internet: thingiverse.com - Casing/kandang kamera Raspberry pi. (Berteriak kepada desainer VGer.)

Casing lampu lalu lintas

Untuk casing lampu lalu lintas, saya merancang sebuah kotak kecil di Autodesk Fusion 360 (yang dapat diunduh secara gratis, lihat Keterangan) yang cocok untuk semua perangkat keras. Dalam lampiran, Anda dapat menemukan file yang telah saya kirim ke perusahaan pemotongan laser lokal saya. Dengan ini, desain didasarkan pada ketebalan pelat 6mm. Namun, jika Anda ingin menyesuaikan sesuatu, Anda dapat mengakses semua jenis format file dengan menggunakan tautan ini. Seperti yang ditunjukkan pada gambar, Anda juga dapat menggunakan kotak kardus jika Anda tidak memiliki akses ke pemotong laser. Saya menggunakan kotak kardus pada gambar untuk membuat prototipe dan berfungsi seperti pesona.

Perakitannya cukup lurus ke depan:

  1. Pasang sakelar Arkade.
  2. Pastikan untuk menjaga kabel untuk bel pintu bebas.
  3. Hubungkan kabel pita ke RPi.
  4. Pasang RPi ke panel bawah.
  5. Hubungkan kabel bel pintu ke konektor kabel dan pasang juga ke panel bawah.
  6. Hubungkan Picamera ke RPi.
  7. Bor lubang di salah satu panel samping untuk kabel sakelar bel pintu dan kabel daya RPi.

Konektor kawat digunakan sebagai titik pemasangan untuk kabel sakelar bel pintu, sehingga nantinya dapat dipasang ke bel pintu yang ada. Semuanya sekarang ada di tempatnya dan bisa direkatkan. Namun, Anda mungkin ingin menyelesaikan langkah berikutnya terlebih dahulu, untuk memastikan semuanya berjalan sebagaimana mestinya.

Perkataan:

Autodesk Fusion 360 tersedia gratis untuk para penghobi! Jika Anda ingin mendapatkan salinannya, kunjungi tautan ini: autodesk.com - Fusion 360 For Hobbyists. Ada beberapa istilah, jadi pastikan untuk membaca dan menerapkannya. Ini adalah proyek pertama saya dengan Fusion 360 dan saya tidak memiliki banyak pengalaman dalam menggunakan perangkat lunak CAD, tetapi saya harus mengatakan bahwa saya sangat menyukai perangkat lunak dan semua alat tambahan yang disertakan dengan Fusion 360

Langkah 4: Mengkonfigurasi Kamera

Mengonfigurasi Kamera
Mengonfigurasi Kamera
Mengonfigurasi Kamera
Mengonfigurasi Kamera
Mengonfigurasi Kamera
Mengonfigurasi Kamera

Diasumsikan bahwa Anda telah menginstal Raspbian dan berjalan dalam mode GUI. Jika Anda belum menginstal Raspbian, Anda dapat mengikuti artikel ini: raspberrypi.org - Menginstal image sistem operasi. Jika Anda mem-boot Raspbian, Anda akan melihat desktop seperti yang ditunjukkan pada gambar.

Mari konfigurasikan kamera pada RPi dan lihat apakah itu berfungsi! Metode yang dijelaskan di sini langsung dari raspberrypi.org - Dokumentasi. Pertama, mari perbarui ke paket terbaru (termasuk firmware kamera) dengan menjalankan perintah berikut di jendela terminal (lihat gambar):

sudo apt update

sudo apt peningkatan penuh

Selanjutnya, kamera harus diaktifkan menggunakan perintah berikut:

sudo raspi-config

Di menu, buka 5. Opsi Antarmuka -> Kamera P1. Pilih untuk mengaktifkan kamera dan reboot RPi dengan menjalankan:

menyalakan ulang

Kamera sekarang harus dikonfigurasi dengan benar. Itu dapat diuji dengan membuka jendela terminal dan menjalankan:

raspistill -v -o /home/pi/test.jpg

Gambar disimpan ke: /home/pi.

Langkah 5: Menyiapkan Docker

Menyiapkan Docker
Menyiapkan Docker
Menyiapkan Docker
Menyiapkan Docker
Menyiapkan Docker
Menyiapkan Docker
Menyiapkan Docker
Menyiapkan Docker

Untuk menghindari ketergantungan dan kesalahan instalasi, saya memutuskan untuk membuat image Docker kustom untuk proyek ini (lihat wikipedia.org - Docker). Jika Anda belum pernah menggunakan atau mendengar tentang Docker, jangan khawatir, saya akan menjelaskan langkah demi langkah cara menggunakannya dalam proyek ini. Bahkan, itu sangat mudah! Jika Anda ingin menjalankan proyek ini di instalasi lokal (bukan di wadah Docker), saya akan memberi Anda beberapa tips. Tetapi sangat disarankan untuk menggunakan gambar Docker. Lagi pula, saya membangunnya untuk memudahkan Anda menjalankan proyek ini!

Apa itu Doker?

Catatan: bagian ini menyediakan beberapa informasi latar belakang tentang Docker, yang dapat dilewati jika Anda hanya ingin menjalankan kode.

Proyek ini adalah pertama kalinya saya menggunakan Docker dan ini luar biasa! Mungkin Anda pernah mendengar tentang virtualenv atau Anaconda untuk Python? Yah, Docker sangat mirip dalam arti bahwa Anda dapat dengan mudah mengelola versi paket dan menjalankan versi Python yang berbeda pada satu sistem host dengan menggunakan lingkungan yang berbeda (atau wadah seperti yang disebut di Docker). Namun, dibandingkan dengan virtualenv dan Anaconda, Docker jauh lebih kuat karena tidak terbatas hanya berisi paket-paket Python. Memang, dalam wadah Docker, Anda dapat menginstal dan mengelola juga paket-paket sistem operasi yang diinginkan. Misalnya, pertimbangkan situs web yang ingin Anda migrasikan yang menjalankan kerangka kerja web Python (misalnya Django) dengan database (misalnya MySQL). Tanpa wadah Docker, Anda harus menginstal semua paket di server baru, sebuah proses yang sangat rentan terhadap kesalahan dan bug. Di sisi lain, ketika situs web Anda dibuat di Docker, migrasi pada dasarnya semudah memindahkan file/file gambar ke server baru dan menjalankannya. Seperti yang dapat Anda bayangkan, Docker juga sangat berguna untuk proyek di Instructables;)! Jika Anda ingin tahu lebih banyak tentang Docker, kunjungi situs web mereka: docker.org - Docker: Enterprise Container Platform. Sekarang, mari bangun dan jalankan dengan Docker!

Menginstal Docker

Instal Docker dengan menjalankan:

curl -sSL https://get.docker.com | NS

Selanjutnya, pengguna ditambahkan ke usergroup 'docker', yang memberikan hak untuk menjalankan Docker. Ini dilakukan oleh:

sudo usermod -aG buruh pelabuhan $USER

Sekarang, Anda harus dapat menjalankan Docker. Ini dapat divalidasi dengan menjalankan gambar hello-world:

docker menjalankan hello-world

Terakhir, mari tarik gambar Docker yang berisi semua dependensi yang diperlukan untuk menjalankan skrip Python bel pintu. Proses ini mungkin memakan waktu cukup lama karena gambarnya cukup besar (~1,5 GB). Menjalankan:

buruh pelabuhan tarik erientes/bel pintu

Catatan: Dockerfile dapat ditemukan di repositori bel pintu di Github. Sekarang, semuanya sudah siap untuk menjalankan skrip bel pintu, yang akan dibahas pada langkah selanjutnya.

Instalasi lokal

Sekali lagi, saya akan sangat menyarankan untuk menggunakan gambar Docker daripada instalasi lokal. Tetapi untuk melengkapi tutorial ini, sekarang saya akan menjelaskan beberapa langkah yang saya ambil untuk instalasi lokal.

Untuk dapat menjalankan kode, versi python harus >= 3.5 (saya menggunakan python 3.5.3) dan paket-paket berikut perlu diinstal:

  • pengenalan_wajah
  • kamera foto
  • mati rasa
  • Bantal
  • python-telegram-bot
  • RPi. GPIO

Tautan ini cukup membantu: Github - Instal dlib dan face_recognition pada Raspberry Pi. Namun, ada beberapa peringatan di sini: 1) Bantal membutuhkan setidaknya Python 3.5, yang tidak akan diinstal setelah metode ini. 2) Juga, tidak semua paket yang dibutuhkan dalam proyek bel pintu akan diinstal dengan mengikuti metode ini. Namun, Anda harus dapat menginstalnya hanya dengan menggunakan pip3.

Langkah 6: Menjalankan Skrip Bel Pintu

Menjalankan Skrip Bel Pintu
Menjalankan Skrip Bel Pintu
Menjalankan Skrip Bel Pintu
Menjalankan Skrip Bel Pintu
Menjalankan Skrip Bel Pintu
Menjalankan Skrip Bel Pintu

Dapatkan skripnya

Skrip dapat diunduh secara manual dari: github.com - Erientes/bel pintu. Atau jika Anda telah menginstal Git, jalankan:

git clone

Buat alias

Sekarang, untuk membuat hidup kita sedikit lebih mudah, mari kita buat beberapa alias untuk menjalankan skrip. Menjalankan:

leafpad ~/.bashrc

Tambahkan baris berikut dan simpan file:

alias doorbell_run='docker run --privileged -v /home/pi/doorbell:/doorbell -w /doorbell -it erientes/doorbell python $1'

alias doorbell_login='docker run --privileged -v /home/pi/doorbell:/doorbell -w /doorbell -it erientes/doorbell bash'

Skrip tes

Untuk menguji apakah semuanya terpasang dengan benar, buka terminal baru dan jalankan:

contoh doorbell_run/0_test_installation.py

Hasilnya seharusnya hanya berupa pesan di jendela terminal yang mengatakan 'Instalasi bel pintu berakhir dengan sukses!'. Untuk menguji apakah kamera dapat diakses oleh wadah Docker, jalankan:

contoh doorbell_run/1_test_camera.py

Dengan menjalankan 1_test_camera.py foto akan diambil dan disimpan sebagai 'test.jpg', yang dapat ditemukan di /home/pi/bel pintu. Terakhir, driver LED dapat diuji dengan menjalankan:

contoh doorbell_run/2_test_voicehat_drivers.py

Saat skrip ini berjalan, LED di sakelar arcade akan merespons saat tombol ditekan.

Menjalankan skrip Bel Pintu

Untuk menjalankan skrip Bel Pintu, pertama-tama kredensial bot Telegram harus diperoleh. Instal Telegram di ponsel Anda dan buka telegram.me - Botfather. Mulai percakapan dan masukkan:

/newbot

Isi nama dan nama pengguna untuk bot. Setelah itu, Anda akan diberikan token akses. Salin nilai itu ke file 'credentials_telegram_template.py' di /home/pi/bel pintu dan simpan ke file baru bernama 'credentials_telegram.py'. Terakhir, mulailah percakapan dengan bot yang baru saja Anda buat dengan mengklik tautan yang diberikan Botfather kepada Anda.

Akhirnya, mari kita jalankan Bel Pintu dengan Pengenalan Wajah:

bell_run main.py

Perkataan:

Jika Anda ingin tahu lebih banyak tentang cara kerja kode, lihat komentar di skrip itu sendiri. Jika Anda memiliki pertanyaan tentang kode, silakan hubungi saya melalui Github

Langkah 7: Menggunakan Bel Pintu

Image
Image
Menggunakan Bel Pintu
Menggunakan Bel Pintu
Menggunakan Bel Pintu
Menggunakan Bel Pintu

Mari kita jalankan skrip bel pintu dengan menjalankan:

bel_jalankan main.py Setelah memuat paket, skrip menjadi tidak aktif. Pada dasarnya ada 2 hal yang bisa terjadi:

  1. Seseorang membunyikan bel pintu.
  2. Seseorang ditambahkan ke daftar putih.

Seseorang membunyikan bel pintu

Dalam hal ini, skrip akan mulai mengambil foto hingga memotret foto di mana wajah terdeteksi. Setelah deteksi, beberapa metode dari paket python 'face_recognition' dipanggil untuk menghitung 128 encoding wajah. Selanjutnya encoding yang diperoleh dibandingkan dengan encoding pada whitelist.csv dan blacklist.csv. Hasil yang mungkin menghasilkan respons berikut:

Dalam daftar putih? Dalam daftar hitam? Tanggapan
Ya Tidak Lampu hijau menyala.
Ya Ya Lampu kuning menyala. Kamera bel pintu mengirim foto ke bot Telegram dengan ikon oranye. Status ini dapat terjadi jika seseorang ditambahkan ke kedua daftar. Misalnya, ketika seseorang diterima pada awalnya, tetapi kemudian masuk daftar hitam.
Tidak Tidak Lampu kuning menyala. Kamera bel pintu mengirim foto ke bot Telegram dengan ikon oranye.
Tidak Ya Lampu merah menyala. Kamera bel pintu mengirim foto ke bot Telegram dengan ikon merah.

Seseorang ditambahkan ke daftar putih

Untuk menambahkan seseorang ke daftar putih, tekan tombol kuning lampu lalu lintas saat bel pintu dalam keadaan siaga. Pertama, lampu kuning akan menyala. Jika lampu hijau berkedip 3 kali, wajah orang tersebut berhasil ditambahkan ke daftar putih. Jika lampu hijau tidak berkedip 3 kali, upaya itu tidak berhasil. Dalam hal ini, tekan tombol kuning lagi. Anda dapat dengan mudah memverifikasi apakah itu berhasil dengan membunyikan bel pintu dan memeriksa apakah lampu hijau sudah lewat.

Bagaimana cara menambahkan seseorang ke daftar hitam?

Jelas, orang-orang dengan niat buruk tidak akan lewat untuk memberi kami foto wajah mereka. Jadi sebagai gantinya, Anda dapat menambahkan gambar orang terkenal yang (misalnya) telah dipublikasikan oleh polisi ke folder img/blacklist. Setiap jam, folder ini diperiksa untuk gambar baru. Jika ada gambar baru, maka face encoding dihitung dan ditambahkan ke blacklist.csv. Gambar tersebut kemudian diganti namanya dan dipindahkan ke folder /img/blacklist/encoded.

Perkataan:

  • Mengoperasikan skrip dengan masuk ke RPi memberikan lebih banyak kontrol dan informasi, tetapi kontrol dan informasi dasar dapat diperoleh hanya dengan menggunakan tampilan lampu lalu lintas.
  • Pengenalan wajah diimplementasikan dengan menggunakan paket python 'face_recognition'. Paket ini didasarkan pada Dlib yang berisi algoritme pengenalan wajah canggih, yang melakukan akurasi 99,38% pada tolok ukur Wajah Berlabel di Alam Liar (sumber: dlib.net - Pengenalan Wajah Berkualitas Tinggi dengan Pembelajaran Metrik Dalam).
Kontes Teknologi Bantu
Kontes Teknologi Bantu
Kontes Teknologi Bantu
Kontes Teknologi Bantu

Hadiah Pertama dalam Kontes Teknologi Bantu

Direkomendasikan: