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
10 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.

Giới thiệu bo mạch 5 giao tiếp không giây đầu tiên trên thế giới | FiPy

Bạn đang muốn thực hiện dự án Internet của Vạn Vật nhưng vẫn đang loay hoay chọn chuẩn giao tiếp không dây? Nên dùng bluetooth để tiết kiệm năng lượng? Nên dùng wifi để truy cập từ mọi nơi trên thế giới? Nên dùng GPRS để điều khiển khắp ở những nơi có sự hiện diện của ông chú Viettel? Nên dùng LoraWAN để truyền thông tin cách hàng chục km? Nên dùng Sigfox vừa xa vừa miễn phí? Bạn yêu thích ngôn ngữ Python đơn giản? Bài này tui sẽ giới thiệu về bo mạch sắp ra lò từ xứ sở hoa tulip xinh đẹp mang tên FiPy. Giá của bo là 33 eur nếu đặt trên Kickstarter và 40 eur nếu bạn mua sau khi dự án kết thúc.Bài viết thu thập thông tin từ Kickstarter.

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