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
9 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ả

"Đi học thoai": Phần 2 - Nhận clip quay từ nhà mỗi 30 phút với Raspberry Pi và Python

Không như dự án trước, phải đợi cháy nhà rồi mới quay phim gửi mail. Bài này tui sẽ viết về cách dùng Raspberry Pi quay phim rồi gửi mail cho bạn mỗi 30 phút với ngôn ngữ Python.

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

Raspberry Pi Thiên Lý Nhãn (Phần 3): Khóa thông minh nhận dạng khuôn mặt với Raspberry Pi và OpenCV

Trong bài trước tui đã giới thiệu về việc nhận diện khuôn mặt với Raspberry Pi và webcam. Tuy nhiên bài chỉ dừng lại ở việc Raspberry Pi có thể nhận diện được khuôn mặt của bất kỳ ai đứng trước webcam mà thôi. Bài toán đặt ra là làm thế nào để Raspberry Pi nhận được khuôn mặt của chính bạn? Đây là một bài toán khó và thú vị. Khó là vì chúng ta cần thuật toán và khả năng xử lí hình ảnh mạnh. Thú vị là do ta có thể "chế cháo" kết hợp với các hệ thống bảo mật khác như vân tay, mật khẩu để tăng tính an ninh cho đề án của bạn. Vì độ phức tạp của đề án này nên tui sẽ chia ra làm 2 phần.

  • Phần đầu tiên là "phần mềm": chúng ta sẽ ghi lại khoảng 200 tấm hình webcam với khuôn mặt của bạn và huấn luyện máy tính với thuật toán chính diện (eigenfaces) của OpenCV. Do tài nguyên của Pi hạn hẹp nên bạn cần chạy phần này trên máy tính của mình. 
  • Phần tiếp theo là "phần cứng": ta nối Pi với relay và cho webcam chụp ảnh. Nếu Pi nhận diện được chính khuôn mặt của bạn thì sẽ kích relay.

Lưu ý là các bạn phải tải OpenCV về trên cả Pi và máy tính. Các bạn vào đây để download code và các tập tin cần thiết nữa: https://github.com/johnkimdinh/Facial-recognition-Raspberry-Pi-OpenCV

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