Isi kandungan:

Bel dengan Pengecaman Wajah: 7 Langkah (dengan Gambar)
Bel dengan Pengecaman Wajah: 7 Langkah (dengan Gambar)

Video: Bel dengan Pengecaman Wajah: 7 Langkah (dengan Gambar)

Video: Bel dengan Pengecaman Wajah: 7 Langkah (dengan Gambar)
Video: akibat membangunkan harimau yang sedang tidur #short #harimauvsanjing#anjingserangharimau 2024, Julai
Anonim
Bel dengan Pengecaman Muka
Bel dengan Pengecaman Muka

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

Bahan
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

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

Membina Selongsong
Membina Selongsong
Membina Selongsong
Membina Selongsong
Membina Selongsong
Membina Selongsong
Membina Selongsong
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:

  1. Pasang suis Arcade.
  2. Pastikan wayar agar bel pintu tidak bebas.
  3. Sambungkan kabel pita ke RPi.
  4. Skru RPi ke panel bawah.
  5. Sambungkan wayar bel pintu ke penyambung wayar dan pasangkan juga ke panel bawah.
  6. Sambungkan Picamera ke RPi.
  7. 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

Mengkonfigurasi Kamera
Mengkonfigurasi Kamera
Mengkonfigurasi Kamera
Mengkonfigurasi Kamera
Mengkonfigurasi Kamera
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

Menyiapkan Docker
Menyiapkan Docker
Menyiapkan Docker
Menyiapkan Docker
Menyiapkan Docker
Menyiapkan Docker
Menyiapkan Docker
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

Menjalankan Skrip Bel
Menjalankan Skrip Bel
Menjalankan Skrip Doorbell
Menjalankan Skrip Doorbell
Menjalankan Skrip Doorbell
Menjalankan Skrip Doorbell

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

Image
Image
Menggunakan Doorbell
Menggunakan Doorbell
Menggunakan Doorbell
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:

  1. Seseorang membunyikan loceng pintu.
  2. 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).
Pertandingan Teknologi Bantuan
Pertandingan Teknologi Bantuan
Pertandingan Teknologi Bantuan
Pertandingan Teknologi Bantuan

Hadiah Pertama dalam Peraduan Teknologi Bantuan

Disyorkan: