Raspberry Pi Thiên Lý Nhãn (Phần 4): Demo khóa thông minh nhận dạng khuôn mặt

Mô tả dự án: 

Bài trước tui đã hướng dẫn các bạn chuẩn bị phầm mềm cho dự án khóa thông minh nhận diện khuôn mặt, cụ thể là phần training lấy dữ liệu bằng python. Bài này ta sẽ bắt tay vào phần cứng và demo thử xem dữ liệu training của ta tốt đến đâu.

Chuẩn bị phần cứng

Ta cần những thứ sau đây:

  • Raspberry Pi. 
  • Webcam
  • Module relay
  • Module LCD từ adafruit (Thực ra bạn có thể dùng các màn hình khác cũng được. Tuy nhiên module này có lợi là đi kèm sẵn 5 nút bấm và thư viện python rất tiện lợi. Trang adafruit cũng có hướng dẫn các bạn cách tự làm cho mình 1 module như vậy). 

Các bạn gắn module LCD như trong hình. Nhớ gắn thêm mấy miếng băng keo cách điện để chống chạm mạch (đây là lỗi thiết kế phần cứng từ adafruit).

Tiếp đến là gắn relay vào Raspberry Pi theo sơ đồ:

Pi Relay
5V/3.3V +
GND -
GPIO21 (BCM) Signal

Lưu ý là module LCD chiếm hết các chân nguồn của Pi nhưng các bạn có thể gắn vào chân + của relay vào chân thứ 2 trên LCD module (ô vuông đỏ) như hình sau:

Trên Raspberry Pi

  • Việc đầu tiên là tải thư viện cho LCD Module.
    sudo apt-get update
    sudo apt-get install build-essential python-dev python-smbus python-pip
    sudo pip install RPi.GPIO
  • Các bạn vào đây tải về, giải nén và sau đó nhập:
    sudo python setup.py install
  • Tiếp đến là vào Github của tui tải các tập tin về Raspberry Pi. Chạy box.py để xem camera có chạy ổn không
    python box.py
  • Copy tập tin training.xml đã tạo ở bài trước từ máy tính vào Raspberry Pi và sau đó là chạy chương trình chính (vì dùng GPIO nên phải có sudo)
    sudo python security_lock.py

Demo

 

Khi vừa mới chạy security_lock.py thì bạn phải đợi 1 tí để Pi tải tập tin training.xml (khoảng vài trăm MB):

Sau khi tải xong thì sẽ yêu cầu bạn bấm Select để chạy camera:

Camera sẽ bắt đầu chụp hình và phát hiện khuôn mặt. Nếu không có người trong hình hoặc hình không rõ thi LCD sẽ hiện NO FACE DETECTED. Bạn nên ngồi yên để camera làm việc tốt. 

Nếu phát hiện có khuôn mặt nhưng không giống với khuôn mặt bạn thì LCD sẽ hiện 2 NOT RECOGNIZED kèm với chỉ số confidence. Số 2 ở đây báo cho bạn biết là khuôn mặt chụp được giống với khuôn mặt của người khác (negative) đã tạo ở phần training.

Nếu phát hiện có khuôn mặt và giống với dữ liệu training thì LCD sẽ hiện 1 OK. OPEN LOCK! kèm với chỉ số confidence. Nếu chỉ số confidence thấp hơn ngưỡng mặc định (4000) thì chân GPIO sẽ kích relay để mở khóa. Số 1 ở đây báo cho bạn biết là khuôn mặt chụp được giống với khuôn mặt chính diện của bạn (positive) đã tạo ở phần training. Ngưỡng mặc định càng thấp thì Pi càng chắc chắn và bạn có thể chỉnh ngưỡng mặc định này ở tập tin config.py. Thông thường dao động từ 2500 đến 5000 tùy vào tập tin training.xml. 

Sau 300 giây thì LCD sẽ báo hết giờ. Bạn phải bấm Select để tiếp tục chạy camera. Dĩ nhiên bạn có thể chỉnh thông số này ở tập tin config.py 

Lưu ý

  • Chi tiết hướng dẫn nối dây LCD mà không dùng module ở đây. Bạn cần có thêm 1 potentiometer và 1 điện trở.
  • Script box.py sẽ tự động dừng sau 15 phút. 
  • Nếu bạn rơi vào trường hợp 2 NOT RECOGNIZED nhiều lần thì bạn nên train lại dữ liệu của mình với các điều kiện ánh sáng khác nhau.
  • Khuôn mặt của bạn KHÔNG CÓ TÍNH BẢO MẬT CAO. Chỉ cần 1 tấm hình của bạn trên facebook cũng có thể hack được khóa này. Đó là lí do bạn nên dùng kèm với các biện pháp khác như vân tay hoặc mật mã.
  • Nếu bạn hiểu rõ logic phía sau thuật toán thì có thể chia thêm nhiều trường hợp trong phần security_lock.py dựa vào chỉ số confidence và positive/negative.

Chúc các bạn thành công!

lên
5 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

"Fiat Lux - Hãy có ánh sáng": (Phần 2) Viết code BLINK thần thánh cho neopixel WS2812

Đây là phần 2 cho tutorial hướng dẫn cách lập trình LED 3 màu neopixel WS2812. Vì mỗi module LED là 1 mạch IC nên cách sử dụng hơi rắc rối hơn so với LED thông thường. Các bạn chú ý nha!

lên
16 thành viên đã đánh giá bài viết này hữu ích.

Arduino lưỡng quốc diễn nghĩa - Truyền nhân UNO và MEGA

Đây là bài tiếp theo về cuộc đại chiến giữa hai công ty Arduino. Phần này tui sẽ giới thiệu về phiên bản nâng cấp của board UNO và MEGA huyền thoại, phát triển bởi Arduino.org (Italia). Các board này sẽ được niêm giá vào mùa thu năm nay.

lên
12 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: