臉部辨識保險箱

三月 9, 2015
Facebook
Twitter
Raspberry Pi、攝影機和免費軟體打造出只有偵測到你的臉才會打開的保險箱。
不用密碼與鑰匙就能保護你的貴重物品,你的臉就是開啟保險箱的鑰匙!這個專題教你如何運用Raspberry PiPi camera打造一個用臉解鎖的保險箱。

這個專題的軟體是開放原始碼的OpenCV函式庫演算法。Raspberry Pi是完美的平臺,因為它能夠執行OpenCV,而且體積夠小,可以放進幾乎任何地方。


材料:

工具:

  • 電鑽和鑽頭
  • 烙鐵與焊錫
  • 鐵片剪
  • 虎鉗
  • 鎚子
  • 鑿子或高速旋轉切割工具:如真美牌工具(Dremel)。
  • 中心衝
  • 銼刀
  • 螺絲起子
  • 鉚釘槍和鋁鉚釘,1/8″×3/16″

1.把Raspberry Pi固定在門上

  • 在保險箱門內找出適合安裝Raspberry Pi的位置,不要離鎖太近。
  • 用奇異筆在Raspberry Pi2孔洞位置作記號,然後小心鑽出1/8″大小的孔洞。
  • 用螺絲、隔離柱和螺帽將Raspberry Pi固定在門上。

2.接上伺服臂組

  • 選擇適合的伺服臂組,並依照圖片上的方法切割。
  • 折彎或切掉鎖頭上突出的部分,使其可以自由轉動。  
  • 切掉伺服機的旋臂,並用熱熔膠黏在鎖頭的中心。

3.製作伺服機支架

  • 這個步驟製作出來的支架應該適用於任何保險箱。
  • 切一片1×8”的鐵片,在中間測量一個可以裝上伺服機的長方形大小。
  • 把鐵片放在工作臺上,用鑿具挖出長方形的孔洞,再用銼刀打磨邊緣。
  • 測試支架可不可以套上伺服機和懸臂。如圖所示照著鎖的上下緣折彎鐵片,讓它覆蓋保險箱的鎖頭。用老虎鉗固定鐵片再開始彎折,如果鐵片不容易彎折,可以用小鐵槌輔助。
  • 鐵片兩端鑽出1/8″的孔洞。

4.固定伺服機

  • 將支架放在保險箱門的內側,用奇異筆在2個孔洞的位置作記號,在門上鑽出2個1/8″的孔洞。

5.固定伺服機(續)

  • 接著在支架上鑽41/8”的孔洞。
  • 用束帶將伺服機固定在支架上。
  • 用鉚釘把支架固定在保險箱的門上。

6.安裝攝影機

  • 要鑿孔安裝攝影機之前,先確認孔洞位置和連接線的距離適中。
  • 在門上鑽一個1/4的孔,用方形銼刀打磨孔洞好讓攝影機鏡頭可以放進去。
  • 用雙面膠固定攝影機電路板。

7.安裝按鈕

鑽一個1/2”的孔來設置按鈕這個按鈕是用來按下快門拍攝照片的。

8.連接電子元件

  • 參考圖片,把排針和10KΩ電阻焊到萬用電路板上。
  • 把伺服機的信號線連接到Raspberry PiGPIO腳位18上,把伺服機的電源線和接地線接到電池盒的正負極。
  • 把按鈕的一條導線接到GPIO腳位25上,並在連接Raspberry Pi3.3V電源接腳的路徑上串聯一個10K電阻。
  • 把另一端連接上Raspberry Pi的接地端
  • 把電池負極接到Raspberry Pi的接地端。

9.設置USB傳輸線

  •  保險箱內部有一個電池座供電給伺服機,現在還需要另外一個電池座供電Raspberry Pi
  • 在保險箱後側下方角落鑽一個孔,大小剛好可讓Raspberry PiUSB傳輸線穿出。
  • 注意:按鈕的紅色和黑色電線不用連接,它們是拍照時才需要的。

10.安裝客製軟體

图片

  • Github中輸入wget指令來下載軟體: 
    wget https://github.com/tdicola/pi-facerec-box/archive/master.zip
  • 解壓縮下載好的master.zip:
    unzip master.zip
  • 變更工作路徑:
    cd pi-facerec-box-master
  • 輸入安裝程式碼來安裝軟體:
    sudo ./install_dependencies.sh
  • 注意:這個程式碼會檢查Raspbian是否為Testing(Jessie)版本,並詢問是否要升級。安裝時間約1小時。

11.安裝Raspberry Pi攝影機模組

  • 輸入raspi-config程式碼,選擇camera module,再按下enable,就能開啟攝影模組的功能:
    sudo raspi-config
  • 重新啟動後,就可以支援攝影機模組了。除非之後想要更改設定,不然之後都不用再設定就可以支援攝影機了。

12.調校臉部辨識功能

  • Raspberry Pi的終端機指令列中,進入安裝軟體目錄中,並執行指令來啟動調校程式碼腳本:
    sudo python capture-positives.py
  • 按下保險箱上的鈕,讓攝影機拍一張照片,指令腳本會試著偵測拍攝影像中的一張臉,並以「正確」影像儲存於./training/ positive子目錄中。
  • 這個過程會花費10分鐘左右,讓認證系統記住你的臉。
  • 每當影像輸入後,會被儲存在capture.pgm.資料夾中。你可以用圖片編輯軟體開啟,檢查攝影機的拍攝圖檔,確保你的臉真的可以被成功偵測。
  • 接著再按下按鈕拍攝5張不同角度、不同光線的臉部照片。上面的圖就是我拍攝的照片。
  • 小祕訣:用圖片檢視器看CAPTURE.PGM檔案,可以看到Raspberry Pi攝影機拍下的照片,再到./TRAINING/NEGATIVE目錄中查看無法解鎖的照片範例(來自AT&T的臉部辨識資料庫)。
  • 最後,執行指令處理正確和錯誤的訓練影像,訓練臉部辨識演算法,而這部分大概會花費10分鐘左右:
    python train.py

13.設定伺服機

  • 啟動程式碼擷取伺服機上鎖和開鎖的脈寬數值:
  • sudo python servo.py
  • 根據螢幕上的指示輸入不同的脈寬數值(範圍10002000)來測試鎖頭上鎖和開鎖的位置。
  • 偵測到適當的數值之後,編輯config.py並把LOCK_SERVO_UNLOCKEDLOCK_SERVO_LOCKED的數值修改成剛剛測試好的數值。

14.開始使用你的智慧保險箱!

  • 執行指令,保險箱將會自動上鎖:
    sudo python box.py
  • 保險箱會自動上鎖,等到有人按下鈕,就會開始拍照並進行使用者臉部辨識。如果辨識結果正確就會解鎖,再按一次鈕就可以上鎖。

15.故障排除

  • 如果臉部辨識結果不是很理想,你可以再多訓練幾次,拍更多正確的影像,或是把config.py檔案裡的POSITIVE_THRESHOLD值改高,擴大其辨識的誤差範圍。
  • 如果你需要強迫解鎖,只要執行servo.py輸入解鎖伺服機旋臂的位置即可。

Picture

TONY DICOLA
東尼迪可拉是Adafruit的工程師,喜歡用ArduinoRaspberry Pi和其他嵌入式平臺來開發物品。

Picture


DAVID SCHELTEMA
大衛.斯海爾特馬是《MAKE》雜誌的科技編輯,喜歡鑽研電子和撰寫程式,時間都拿來做專題和編務。

(譯:Madison
原文


Social media & sharing icons powered by UltimatelySocial