Skip to content

NCNU-OpenSource/Access_Control_System_with_pi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Access Control System with pi

Concept Development 動機發想

有些資料與物品具有非常高的價值,以防內鬼誕生之後沒有人能守護,因此做一個以rasberry-pi執行的門禁系統,以USB camera讀入影像辨識人臉,先以opencv進行訓練並註冊,如果是註冊過的就可以亮led燈表示通過,並透過telegram bot會傳送他的名子說他來了,若是沒有註冊過的則會使蜂鳴器叫並且透過telegram提醒說這是沒註冊的人,並且會顯示畫面裡的人的情緒。

Implementation Resources 硬體設備

  • 1塊Raspberry Pi Model 3B
  • 1台webcam
  • 1塊麵包版
  • 1個蜂鳴器
  • 杜邦線至少4條
  • 1個LED
  • 1個電阻(防LED燒壞)

Existing Library/Software 軟體架構

  • python3.9.2
  • GPIO module(樹梅派內建就有)
  • python-telegram-bot(為了通知在遠端的使用者用telegram做interface)
  • opencv(影像辨識)
  • tensorflow2.9.1
  • deepface(辨識人臉情緒、年齡、人種)

Implementation Process

  • 因為樹梅派跑不太動深度學習的人臉辨識,因此使用了cv2取代做人臉辨識與偵測,其實可以先sever端訓練好之後再把model丟到樹梅派裡就好

  • 直接pip install tensorflow會使樹梅派當機 因此用其他方式代替

原本想要載tensorflow-lite,使用到的deepface好像只吃tensorflow,因此載tensorflow lite需要完全改寫,不然就是要載專門給樹梅派(arm架構)的tensorflow

Knowledge from Lecture

  • linux系統基本指令

Installation 預先下載

  • 更新/取得最新版本的軟體資訊及下載文字編輯器vim
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install vim
  • 去telegram找@BotFather申請一個機器人記好api token

  • 下載人臉追蹤模型(要記好位置)
$ wget https://github.com/kipr/opencv/raw/master/data/haarcascades/haarcascade_frontalface_default.xml
  • 下載樹梅派專用tensorflow2.9.1

    • https://drive.google.com/file/d/1xP6ErBK85SMFnQamUh4ro3jRmdCV_qDU/view
    • 從上面的連結下載whl檔
    • 之後執行$ sudo -H pip install tensorflow-2.9.1-cp39-cp39-linux_aarch64.whl
  • 下載python專屬套件(使用pip)

$ pip install opencv_python
$ pip install opencv_contrib_python
$ pip install deepface 

Usage 使用方法

  • GPIO接線

  • 下載程式碼並增加使用權限
$ git clone https://github.com/doudou030/Access_Control_System_with_pi.git
$ cd Access_Control_System_with_pi
$ chmod +755 run
  • 註冊自己的臉
    • 先多自拍幾張存好並命名成{number}.jpeg 例: 1.jpeg、2.jpeg
    • 並存在自己知道位置的資料夾
    • 並取名叫做face01$ mkdir face01
$ vim train.py

  • 改成自己bot的token與chat id
$ vim main.py
  • chat id找法

去尋找@GreenTracksBot/start他就會回傳你的chat id

  • 執行
$ ./run
  • Demo成果

Job Assignment 工作分配

  • 歐丞言
    • 寫github
    • 建立telegram bot
    • python programming
  • 郝健皓
    • python debugging
    • demo錄影
  • 陳奕宏
    • demo錄影
  • 陳俊維
    • telegram bot programming

References

Releases

No releases published

Packages

No packages published