
ゆうき( @BASEBALLY15 )です^^
ついに,顔認証アプリが完成しました!
この章では,第1章で作った顔検知と,
第2章で作ったニューラルネットワークモデルを組み合わせます.

第1章から第3章までの構成要素

図1
第1章では,カスケードファイルを使って,自分の顔と他人の顔を検知し,画像として保存しました.
そして,第2章は前半と後半に分け,前半では,顔画像を畳み込みニューラルネットワークによって学習させました.
後半では,学習させたデータを使って,自分の顔画像や他の人の顔画像を判定しました.
それでは,第3章のコードを見ていきましょう^^
ついに顔認証アプリの完成だ!
ファイル名:face_detect_colabo.py
ライブラリ
今回は,今までの章で作ったファイルを使うための,ライブラリを用意します.
例えば,my_face.pyのデータを使いたい場合,
import my_face
と書きます.
#my_face.pyを呼び出すためのライブラリ
import my_face
#other_face.pyを呼び出すためのライブラリ
import other_face
#other_face2.pyを呼びだすためのライブラリ
import other_face2
#face_generatedata_aug.pyを呼び出すためのライブラリ
import face_generatedata_aug
#face_cnn.pyを呼びだすためのライブラリ
import face_cnn
#face_predict.pyを呼びだすためのライブラリ
import face_predict
#待機時間を設定するためのライブラリ
from time import sleep
コード
今回ご紹介するコードの流れを,図に表しました.
顔認証アプリの操作手順

図2
まず,自分の顔を検知した後に,10秒間待機し,他の2人の顔を検知します.
次に,10秒待機し,検知した顔画像を学習用とテスト用に分けます.
そして,2秒待機し,分けたデータを畳み込みニューラルネットワークで学習させます.
最後に,画像が自分の顔かどうかを判定します.
待機時間を設定しよう!
まず,上の図であった,待機時間を作ります.
#カウントの関数を作っておく(何回でも使えるようにするため)
#zを引数にして,それぞれの場所で,時間を変える
def time_count(z):
#カウントダウン表示かつ一時停止
def count(i):
print("{}秒経過".format(i+1))
#最大時間
max_time = z
#1秒ごと
secs = 1
for i in range(max_time):
sleep(secs)
count(i)
待機時間の作り方に関しては,以下の記事で紹介しています^^
場合分けをしよう!
次に,コマンドプロンプト上でこのように,
ニューラルネットワークで学習させた場合と,学習させていない場合に分けます.

ニューラルネットワークで学習させていない場合は,ディレクトリ内に学習データが無いので,このように場合分けを行います.
print()
print("a:まだ,ニューラルネットワークで学習させていません")
print()
print("b:既に,ニューラルネットワークで学習させています")
print()
#コマンドプロンプトでaかbを選択し,nとする
n = (str(input("『a』か『b』を選択してください!")))
#nの結果を表示
print(n)
n = (str(input(“『a』か『b』を選択してください!”)))
と書くことで,図3のように,コマンドプロンプトで打ち込んだ文字を読み込ませることが出来ます.
次に,aとbそれぞれで処理を分けます.
もし,aが選択された場合,図2の順番に作業が行われます.
もし,bが選択された場合,すぐに判定を行います.
それでは,コードを見ていきましょう⤵
#もし,aが選択されたら,
if n == "a":
time_count(2)
#my_face.pyを実行
my_face.my_face()
#カウントする関数を呼び出す
time_count(10)
#other_face.pyを実行
other_face.other_face()
time_count(10)
#other_face2.pyを実行
other_face2.other_face2()
time_count(2)
#face_generatedata_aug.pyを実行
face_generatedata_aug.generate()
time_count(2)
#face_cnn.pyを実行
face_cnn.cnn_main()
#face_predict.pyを実行
face_predict.main_predict()
#もしbが選択されたら,
elif n == "b":
#face_predict.pyを実行する
face_predict.main_predict()
aを選択した場合,このように,顔の検出から始まります.

図4
そして,bを選択した場合,判定してほしい画像を入れると,このようにすぐに判定を行ってくれます.
本人の場合⤵

図5
他人の場合⤵

図6
本人の顔画像を入れると,『本人です!』と表示され,
他人の顔画像を入れると, 『あなたではないです!』と表示されます^^
終わりに
今回は,第1章と第2章で作ったファイルを組み合わせて,実行しました.
ただ,組み合わせるだけでなく,待機時間を設けることで, 次の実行までにゆとりを持たせました.
第1章から第3章まで見ていただき,ありがとうございました^^
今後も,引き続き作品を投稿していきます!
それでは・・・