AIで顔認証スマートロック! – 機能とセットアップ編 –

6月 13, 2020

はじめに

こんにちは, 今回は顔認証スマートロックについて, その機能, 各種セットアップ, 作成工程から検証方法までを紹介しています. ぜひお試しを!

複数記事に分けて解説しています.

AIで顔認証スマートロック! – 機能とセットアップ編 –
AIで顔認証スマートロック! – 作成編 –
AIで顔認証スマートロック! – 検証編 – 

顔認証スマートロックとは?

カメラの前に立つだけで, AIが家主と赤の他人を見分け鍵の開け閉めを自動で行います. スマートロックというとスマートフォンのボタン入力で鍵の開閉をするイメージですが, そのような面倒もなく手ぶらで鍵が開きます. 顔認証には100層以上のレイヤーからなるResnetモデルを使用しており, 個人単位の識別が可能です. またJetson nanoを使用しており, そのGPUによって高速なニューラルネットワークの演算が可能です.

実装した機能

  1. 顔認識による自動ロック解除
  2. スマートフォンによるロックと解除
  3. スマートフォンにロック状態の表示

システム定義

人の写真をビデオ撮影するカメラ, スマートフォンからのボタンを受け付けるBlynk, それら入力を処理し, 鍵を開閉させるJetson nanoとモータからこのシステムは構成されています.

準備したもの

Jetson nano関連

3D Printer関連

駆動部

カメラ

セットアップ

Jetson nano

以下のサイトを参考にしました. JetsonシリーズにはNvidiaから公式にJetCardというイメージが用意されています. tensorflow_gpu, Jupyter notebook等がプリインストールされており, 便利です.

必要なソフトウェアのインストール

cmake

cmakeはC, C++, CUDA, Fortran, assemblerなどのプロジェクトのビルドをコンパイラに依存せず自動化するためのツールです. apt-getでインストールするとうまく動作しないので, cmakeをソースからビルドします.

#念のため既存のcmakeを削除しておく
sudo apt -y remove cmake
sudo apt-get -y install libcurl4-openssl-dev

#ソースの取得及びインストール
git clone https://github.com/Kitware/CMake.git
cd CMake
./bootstrap --system-curl
make -j4
sudo make install

# 再起動する
sudo reboot

# cmakeのバージョン確認
cmake --version

cmakeのバージョンが表示されれば, インストール成功です.

OpenCV

OpenCVは顔認識の前処理に用いられます. しかし, Jetson nanoにおいてはOpenCVをpipでのインストールができないです. なので以下のサイトを参考にスクリプトでのインストールを行います.

#メモリ不足対策のためのswap領域を作成
fallocate -l 4G swapfile
chmod 600 swapfile
mkswap swapfile
sudo swapon swapfile
swapon -s

#スクリプトの実行
mkdir opencv
sh install_opencv4.1.0_Nano.sh opencv

#インストールできたか確認
python3
import cv2

無事importできればインストールが正常にできています.

dlib

dlibは機械学習ライブラリで, これを用いることで複雑なプログラムを作ることなく, 顔認識をすることができるようになります. 現在, NvidiaのCUDAライブラリにバグがあり, dlibに少し手を加えてからインストールする必要があります.

#dlibのソースを取得
wget http://dlib.net/files/dlib-19.17.tar.bz2 
tar jxvf dlib-19.17.tar.bz2
cd dlib-19.17

#バグ対策のための編集
sudo gedit dlib/cuda/cudnn_dlibapi.cpp

forward_algo = forward_best_algo;を検索後, コメントアウトしてください.

//forward_algo = forward_best_algo;

上記の変更を保存後, 以下を実行.

sudo python3 setup.py install

これでdlibが正常にインストールされます.

Face recognition

今回顔認識に用いるdlibベースで作成されたFace recognitionをインストールします.
Face_recognitionのgithubでは, オバマ大統領を顔認識するexampleが提供されています. USBカメラをJetson nanoにつなぎ, exampleを実行して, オバマ大統領を認識できれば, 正常にインストールできたといえるでしょう.

#Face recognitionのインストール
sudo pip3 install face_recognition

#exampleの実行
git clone https://github.com/ageitgey/face_recognition.git
python3 ./face_recognition/examples/facerec_from_webcam_faster.py

Jetson.GPIO

Jetson nano用のモータを簡単に駆動させるパッケージです. 配線をしてサンプルを実行し, モータが回転すれば正常にインストールされています. 以下のサイトを参考にしました.

Jetson Nano の 2 つのハードウェア PWM を使用してみた。

#パッケージのインストール
sudo pip install Jetson.GPIO

#設定
sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name

sudo cp venv/lib/pythonNN/site-packages/Jetson/GPIO/99-gpio.rules /etc/udev/rules.d/

sudo udevadm control --reload-rules && sudo udevadm trigger

#bashrcを編集
sudo gedit ~/.bashrc

最終行に以下を追加

#33pinに割り当て
sudo busybox devmem 0x70003248 32 0x46
sudo busybox devmem 0x6000d100 32 0x00

#再起動
sudo reboot

#サンプル実行
python3 ./jetson-gpio/samples/simple_pwm.py

Blynk

BlynkはスマートフォンアプリからJetson nanoやRaspberrypi等のIoTデバイスへ簡単にアクセスできるようになるライブラリです. 美しいUIのアプリを作成できるのが特徴です.

スマートフォン側の準備

アプリをインストールします.

Blynk - IoT for Arduino, ESP8266/32, Raspberry Pi

Blynk – IoT for Arduino, ESP8266/32, Raspberry Pi

Blynk Inc無料posted withアプリーチ

ユーザー登録を行い, New Projectを選択, 以下のように設定する.
Create選択後, AuthToken(ユーザ識別子)が登録したEメールに送られてきます.

Jetson nano側の準備

#パッケージをインストール
sudo pip install blynklib

#サンプルをダウンロード
git clone https://github.com/blynkkk/lib-python.git

#AuthTokenを自分のものに変更するために編集
gedit ./lib-python/examples/03_connect_disconnect.py

BLYNK_AUTH = 'YourAuthToken’のYourAuthTokenを自分のEメール宛てに送られてきたものに変更

#サンプルを実行
python3 ./lib-python/examples/03_connect_disconnect.py

このサンプルは繰り返し接続と切断を繰り返すものです. スマートフォンアプリ側で「Connected」と「Disconnected」を繰り返し続けているようになれば, 正常にセットアップされています.

3Dプリンタ

以下のサイトを参考にセットアップしました.
流れとしては3Dプリンタ本体の組み立て⇒台の高さ調整⇒設計図作成⇒設計図データをプリントできるファイル形式に変換(stl⇒gcode)⇒3Dプリンタでプリントとなります.

3Dプリンタ本体のセットアップ
[ANYCUBIC MEGA-S]セットアップつまずきポイントまとめ[3万円3Dプリンター]

3Dプリンタの設計図作成ソフト
https://www.autodesk.co.jp/products/fusion-360/overview

STL⇒GCODE変換ソフト
https://ultimaker.com/ja/software/ultimaker-cura

セットアップが完了したら, 次は実際に作成していきましょう.

複数記事に分けて解説しています.

AIで顔認証スマートロック! – 機能とセットアップ編 – 今ここ
AIで顔認証スマートロック! – 作成編 –
AIで顔認証スマートロック! – 検証編 –