Buka Wijen Atau Intel RealSense dan ResNet Guard Fruit


Bukan rahasia lagi bahwa di dunia teknologi tinggi modern, kita diharuskan untuk terus-menerus mengkonfirmasi identitas dan hak akses kita - dengan kata sandi, tag tanpa kontak, sidik jari, dan sebagainya. Anda dapat melakukan ini dengan jejak visual - wajah pengguna. Lihat saja gadget kami, bagaimana ia memahami bahwa ada pengguna yang berwenang di depannya, dan membuka kunci layar.


Kami memutuskan untuk mengimplementasikan skema serupa menggunakan bahan yang tersedia dan solusi open source. Sebagai objek fisik, yang akan memiliki "selektivitas untuk penemuan" yang sesuai, brankas dipilih.


Semua detail di bawah potongan.


Perumahan



Gambar 1. Proses perakitan case


Kasing terbuat dari potongan-potongan panel MDF laminasi 40 x 40 cm, dihubungkan oleh sekrup furnitur. Selanjutnya, semua sambungan tebal dilapisi dengan dempul akrilik pada kayu, tidak terlalu diampelas seluruhnya, setelah itu seluruh tubuh ditutupi beberapa kali dengan lapisan tebal cat putih akrilik. Cat, tunggu sampai lapisan saat ini mengering, diampelas, tutup dengan lapisan berikutnya. Setelah tiga lapisan, saya mendapatkan lapisan matte putih yang seragam, di mana saya berjalan lapisan tipis enamel putih mengkilap.



Gambar 2. Rumah final selama instalasi listrik


Dari bagian bawah kasing kami kencangkan kaki yang tercetak - bagian pertama yang digambar dalam editor 3D.



Gambar 3. Kaki. PLA plastik


Tukang listrik


Kunci brankas dibuat dari penggerak hybrid kunci tengah dan lidah pintu interior - dari yang terakhir kami membuang lengan putar dan membuat kait di bawah traksi.
Dengan bantuan komponen tercetak, semuanya terpasang dalam satu desain dan dipasang di pintu. Pelat utama itu sendiri cukup tipis (3mm) dan mudah ditekuk, tetapi semuanya berubah setelah instalasi. Desain akhir cukup kuat untuk percobaan lebih lanjut.



Gambar 4. Unit mekanisme kunci


Tentu saja, jika kita berbicara tentang sistem kontrol akses penuh, maka Anda dapat membeli kunci listrik jadi-jadi semua-logam dengan memasangnya di brankas logam biasa. Tapi tidak.


Selain kunci, kita juga memerlukan trailer untuk mengontrol keadaan pintu, sakelar tiga posisi untuk mengontrol sistem, dan LED dua warna untuk menampilkan status program saat ini.



Gambar 5. Diagram skematis dari body kit


Jangan lupa bahwa tegangan pada pin adalah 1,8V (dengan papan ekspansi sudah 3,3V), jadi kami menghubungkan LED melalui tahap transistor - dari 1,8V mereka tidak akan menyala.


Elektronik


Komponen utama sistem - kamera dan komputer papan tunggal diciptakan untuk satu sama lain (dalam kasus kami, ini bukan pergantian bicara, tetapi fakta yang diketahui):



Gambar 6. Intel Joule 570x Development Kit - mikrokomputer satu-papan dengan 4-core 64-bit Intel Atom on board, memori 4GB dan konektor USB 3.0



Gambar 7. Kamera Intel RealSense SR300 - Kamera jarak pendek 3D sebagai organ penglihatan. Rentang efektif pengakuan kedalaman adalah 0,2 - 1,2 m.


Hanya beberapa hari setelah dimulainya proyek, Intel Joule berhasil memperoleh status EOL (End Of Life), tetapi ini tidak menghentikan kami.


Sebagai modul komputasi, Anda dapat mengambil hampir semua papan tunggal modern dengan USB3.0 berdasarkan pada prosesor Intel. Misalnya, Kit Pengembangan IoT Up Squared Grove atau MinnowBoard Turbot * . Intel NUC akan melakukan triknya juga.


Majelis


Kami memasang detail kunci pada kotak sehingga kunci biasanya tertutup. Agar pintu memantul saat dipicu (seperti pada alas), kami mencetak dan memasang pegas pendorong. Tugasnya adalah untuk menarik kembali pintu dari kait dengan beberapa milimeter setelah menarik kembali lidah, sehingga kotak tidak menutup lagi setelah melepas tegangan.



Gambar 8. Kait untuk lidah dan penekan pegas


Pasang kamera di bagian depan. Kami merekatkan LED ke penutup untuk kamera, pada titik di atas i - untuk beberapa alasan, ia berhasil bermetamorfosis menjadi satu LED hijau. Kami memperbaikinya dengan sepasang sekrup.



Gambar 9. Kamera yang diinstal


Untuk Intel Joule, Anda perlu kasing, jadi di editor 3D Anda menggambar kasing ukuran yang diperlukan dengan jendela untuk konektor.



Gambar 10. Gambar Kasus untuk Intel Joule


Untuk konektor GPIO 40-pin, tidak ada jendela yang disediakan, karena diputuskan untuk meletakkan semua listrik di dalam case. Untuk melakukan ini, penutup tebal ditarik, dengan alur untuk relai dan 4 kontak, serta jendela untuk sakelar. Jangan lupa bahwa prosesor di papan bukan yang terlemah, jadi kami membuat beberapa lubang ventilasi di tutupnya.



Gambar 11. Gambar sampul


Ada dua sekolah. Pertama, ketika mengembangkan body kit, konektor koneksi LED tidak diperhitungkan, yang menyebabkan fakta bahwa:


  1. Tidak ada lubang untuk kabel / konektor dalam kasing dan saya harus membakar lubang dengan besi solder;
  2. Kasing rakitan memiliki ekor panjang dengan LED di ujungnya.

Kedua, case harus terhubung entah bagaimana dan tidak ada yang lebih baik daripada melakukan ini menggunakan potongan kawat karena tidak ditemukan ¯_ (ツ) _ / ¯. Tentang pemasangan diam umumnya diam. Anda tidak bisa melihat, tetapi di suatu tempat di sana, di bawah nosel termal, 3 transistor dan tumit rezuki disembunyikan.


prototipe perokok

Di sini saya ingat gambar kepenulisan saya sendiri:

Dan kata-kata dari orang yang membawakan saya perangkat yang tepat - "mereka sudah membuat prototipe untuk saya, saya hanya perlu memperbaiki firmware sedikit - ada sesuatu yang tidak stabil dan baterai habis dengan cepat".



Gambar 12. Kotak elektronik rakitan


Bagian dalam kotak adalah empat terminal - dua untuk daya dan dua untuk motor, saklar ujung untuk pintu, bolak-balik untuk mengontrol program, dan relay yang memasok tegangan ke kunci. Selama pencetakan, sudut di dekat rongga relai merobek meja dan relai memutuskan untuk tidak masuk ke dalamnya. Saya harus merekatkan saklar ke termosnot. Serta pembayar tunggal.


Pita hijau direkatkan ke papan antena Wi-Fi. Secara umum, mereka perekat diri, tetapi kami telah menempelkannya berkali-kali untuk merobek selama percobaan, bahwa mereka telah kehilangan kemampuan untuk menempel ke permukaan.



Gambar 13. Kotak elektronik rakitan dalam bentuk tertutup


Kami menempatkan usus di dalam tubuh, tutup dan lanjutkan ke pengembangan bagian perangkat lunak.


Pencetakan 3D liris.


Detail kastil - dicintai oleh banyak orang dan dibenci oleh saya PLA. Bahan ini sangat baik untuk mencetak model presisi tinggi, tetapi sangat tidak mungkin untuk diproses. Dan juga infeksi ini mengapung ketika dipanaskan, yang merupakan properti yang sangat buruk untuk elemen struktural.


Semua detail lain dari HIPS - IMHO itu kurang berubah-ubah daripada ABS, dan praktis tidak berbau ketika dicetak. Satu-satunya peringatan - sampai ia menaikkan suhu meja ke 95 derajat, detail di atas meja bengkok. Menurut instruksi, suhu meja harus sekitar 100 derajat, tetapi siapa yang membacanya sejauh ini begitu baik?


Bagian perangkat lunak


Persiapan sistem


Pertama-tama, Anda perlu memperbarui BIOS di papan untuk menginstal gambar sistem operasi yang kami butuhkan. Kami menggunakan ini dan instruksi ini dari dokumentasi resmi di situs web Intel.


Selanjutnya, menghubungkan monitor dan keyboard ke papan, kami memasang distribusi Ubuntu * Desktop 16.04 LTS khusus untuk Intel Joule dalam mode grafik atau teks biasa. Jika komputer menggunakan Intel NUC atau komputer lain, gambar persediaan sistem juga akan hilang.


Setelah menginstal OS menggunakan cara biasa, kami terhubung ke Internet melalui Wi-Fi bawaan. Karena hanya ada satu konektor USB di papan dan kami membutuhkannya untuk menghubungkan kamera, kami terhubung ke papan melalui ssh. Sekarang kita dapat membebaskan port dari keyboard dan menghubungkan Intel RealSense.


Instal paket dan dependensi.


Pertama, instal Python 3.5.4, di mana proyek kami ditulis. Unduh dan bangun modul OpenCV Python dari kode sumber, karena modul OpenCV Python tidak resmi pada Intel Joule tidak berfungsi dengan benar.


Instal atau perbarui dependensi tambahan:


apt install -y --fix-missing build-essential cmake gfortran git wget curl graphicsmagick libgraphicsmagick1-dev libatlas-dev libavcodec-dev libavformat-dev libboost-all-dev libgtk2.0-dev libjpeg-dev liblapack-dev libswscale-dev pkg-config python3-dev python3-numpy software-properties-common zip git clone https://github.com/davisking/dlib.git /root/dlib; cd /root/dlib; mkdir build; cd build; cmake .. -DUSE_AVX_INSTRUCTIONS=1; cmake --build . ; cd .. ; python3 setup.py install --yes USE_AVX_INSTRUCTIONS --no DLIB_USE_CUDA pip3 install face_recognition 

Kami menggunakan libmraa - pustaka ini berguna bagi kami untuk berkomunikasi dengan kotak. Instruksi perakitan terperinci ada di sini .


Atau Anda dapat menginstal binari siap pakai dari PPA:


 sudo add-apt-repository ppa:mraa/mraa sudo apt-get update sudo apt-get install libmraa1 libmraa-dev libmraa-java python-mraa python3-mraa node-mraa mraa-tools 

Setelah menginstal semua dependensi, kami dapat memverifikasi bahwa semuanya berfungsi dengan benar. Untuk melakukan ini, naikkan VNC - vnc4server adalah segalanya, jalankan sampel untuk bekerja dengan kamera dan pastikan bahwa kamera berfungsi.


Pos pemeriksaan terakhir adalah impor modul face_recognition yang benar . Sebenarnya, ini adalah jaringan saraf ResNet kami, yang ditujukan untuk mengidentifikasi orang-orang di foto. Jadi itu terlihat dalam demo penulis:



 import face_recognition 

Setelah semuanya siap, kami membongkar kode sumber aplikasi kami dari repositori dan mulai bekerja.


Untuk kenyamanan, kami menambahkan semua perpustakaan sebagai submodul ke proyek kami. Untuk mengunduhnya, lakukan git submodule update --init --recursive dari direktori proyek.


Bekerja


 ./launcher.py 

Ketika Anda pertama kali mengaktifkan basis data tidak ada orang, maka kotak itu akan ditutup. Kami membukanya secara manual (kami memiliki pintu belakang bawaan untuk ini - sebuah lubang kecil yang jelas berlawanan dengan lidah) dan melaksanakan pelatihan.


Untuk melakukan ini, berdirilah di depan kotak - LED pada panel depan menyala, menunjukkan bahwa seseorang sedang berada dalam bidang pandang kamera.


Kami mengklik sakelar ke arah mengingat wajah dan entri yang sesuai muncul di konsol.



Sekarang, jika Anda menutup laci dan berdiri di depannya, sistem akan mengenali wajahnya dan dengan gembira membuka pintu.



Entri akses konsol akan muncul di konsol.



Jika orang asing berdiri, sistem tidak akan dapat mengenalinya, akibatnya pintu akan tetap tertutup. Ini masalah lain bahwa sistem dapat kelaparan - persentase positif palsu dalam kasus kami cukup tinggi, dan jika Anda berjalan untuk waktu yang lama dengan banyak objek berbeda di tangan Anda, hingga masih akan terbuka.


Ini dapat diselesaikan dengan menggunakan saluran kedalaman - ini tidak digunakan dalam versi saat ini, karena tidak mungkin untuk membuatnya bekerja secara stabil, dan masalah kompatibilitas dengan Intel Joule sudah terlambat untuk dikirim. Penulis face_recognition mengukur akurasi 99,38% pada benchmark berlabel Faces in the Wild Home


Kesimpulan


Tentu saja, Bukti-Dari-Konsep ini dapat ditingkatkan secara signifikan, dan fungsinya diperluas berkali-kali. Misalnya, Anda dapat menambahkan pencatatan akses yang berhasil dan tidak berhasil, serta pengelolaan yang nyaman melalui antarmuka web.


Prinsip dasar pembuatan perangkat ini adalah: "Saya membutakannya dari apa itu." Kami hanya ingin menunjukkan bahwa sesuatu yang menarik dapat dibuat dari bahan improvisasi.


Terima kasih kepada Dmitry ( dmitryvodop ) dan Sergey untuk mengerjakan bagian perangkat lunak proyek.


Semua model dalam format * .stl dan kode sumber program diunggah ke GitHub di bawah lisensi MIT.

Source: https://habr.com/ru/post/id410193/


All Articles