Windows 10 における動作環境作成とファイルの説明

アイキャッチ画像

動作環境を作成する

Font の確認

face01 では「BIZ-UDGOTHICR.TTC」フォントを指定しています。
October 2018 Update(1809)でインストールされているはずですが、もし顔認証するタイミングでエラーが出る場合このフォントが確実にインストールされているか確認をお願いします。
確認の仕方は「Windowsでフォントの「表示」設定を変更して全てのフォントを表示させる」をご参照ください。

余談ですが、Linux 環境の構築の場合には小さなフォントでも見やすいように「mplus-1mn-regular.ttf」を指定しています。
こちらからインストールをしておいてください。

CMake のインストール

環境を整えるために、まず「CMake」をインストールします。
https://cmake.org/
から下図の赤丸で囲まれた「Download Latest Release」をクリックします。

CMake ダウンロードサイト
CMake ダウンロードサイト

下図のサイトから最終安定版のインストーラ(赤線)をダウンロードします。

インストーラのダウンロード
インストーラのダウンロード

クリックしたら「実行」を選び、インストールを行います。

インストールオプション
インストールオプション

インストール先はデフォルトでもいいです

ここまで終わったら後はインストールするだけです。時間がかかるかも知れませんのでこの間に Python3 をインストールする準備をします。

インストール画面
インストール画面

Python3 のインストール

Python3 の Windows 版は
https://www.python.org/downloads/windows/
を参照してください。
下の図では赤線の 64 ビット版インストーラーを選択します。

64 ビットのインストーラーを選択
64 ビットのインストーラーを選択
Python3 のインストール画面
Python3 のインストール画面

上図の Python3 のインストール画面では赤丸で示したところを選択してください。

Python3 のインストール画面
Python3 のインストール画面

Python3 インストールの検証

インストールが終わったら、コマンドプロンプトから以下のように確認をしましょう。

py -V
インストールの確認画面
インストールの確認画面

環境変数の確認

インストール後に「パスを通せませんでした」とのエラーメッセージが出たため、コントロールパネルから下図の環境設定ボタンを押します。

パスを通す画面
パスを通す画面

今回は
C:\Python37\Scripts\
C:\Python37\
C:\CMake\bin
の3つのパスが通っているようにします。(下図赤丸)
インストール先は管理者が把握していればどこでも構いません。パスが通っているかどうかだけ確認してください。

パスを通しておく
パスを通しておく

Python3 のテストコード

Python3 のテストコードを書いておきましょう。内容は

print ('hello world')
input ()

コレをメモ帳で入力した後に「test.py」と名前を変更してください。
コレをダブルクリックするとマシンによっては色々な開き方をするので予め決め打ちをしておきます。右クリックからプロパティを選んで下図のウインドウを出します。「プログラム」のところが Python になっているようにしてください

test.py のプロバティ画面
test.py のプロバティ画面

プログラム:の部分に Python を指定しておきます。下図のように表示されればOKです。

hello world が表示された画面
hello world が表示された

Python モジュールのインストール

次にライブラリのインストールをします。予め必要なライブラリは pip freeze で書き出しておきました(下図)。ファイル名は「requirements.txt」にしてください。コマンドプロンプトから操作します。

requirements.txt 画面
requirements.txt

requirements.txt の中身は以下のとおりです。下の内容をコピーしてメモ帳にペースト、その後ファイル名を「requirements.txt」にして使ってもらっても大丈夫です。

 Click==7.0
 click-plugins==1.0.2
 click-threading==0.4.4
 dlib==19.17.0
 face-recognition==1.2.3
 face-recognition-models==0.3.0
 glob2==0.5
 netifaces==0.10.4
 numpy==1.16.4
 opencv-python==4.2.0.32
 Pillow==6.1.0
pip install -r requirements.txt
requirements.txt から一括インストールしている画面
requirements.txt から一括インストール

インストールできました。

各ファイル・フォルダの働き

次は必要なフォルダについて解説していきます。
あらかじめダウンロードしておいた Face01.zip をユーザフォルダで展開してください

以下のようにフォルダが作成されれば成功です。下の図だと赤丸で囲ってある部分になります。

ユーザーディレクトリ直下に Face01 フォルダを展開・作成
ユーザーディレクトリ直下に Face01 フォルダを展開・作成

Face01 フォルダの中には「newFaceRecognitionFolder」が入っています。これをダブルクリックで開いてみましょう

newFaceRecognitionFolder
newFaceRecognitionFolder

さらに newFaceRecognitionFolder をダブルクリックして中身を見てみましょう

newFaceRecognitionFolder のなかみ
newFaceRecognitionFolder のなかみ

それではひとつひとつのフォルダを見ていきましょう。

check_images フォルダ

  • check_images フォルダ
    (face01_imager.py で使用します)
    色々な静止画が入っています。
    ファイル名にはアスキー文字のみを使用してください。
    この静止画はサーバがカメラからの静止画をポンポンとこのフォルダに投げ込むことを想定しています。
    ですので face01_imager では起動している間はこのフォルダを常に監視しています。
    処理された静止画は
    ・顔部分は output フォルダへ
    ・静止画自体は recognated フォルダへ移動
    ・標準出力には人物名と処理時間が表示
    されていきます。
    このフォルダは常に監視されているので、一度 recognated フォルダに移動された静止画をもう一度このフォルダに放り込むと、再度同じ処理をします。どのように face01_imager が動くのか何回か試してみてください。

npKnown.txt ファイル

  • npKnown.txt ファイル
    face01_imager.py や face01.py を動作させると出来る、顔画像を 128次元化した数字が羅列してあるテキストファイルです。対象となる顔画像は「pictures_of_people_i_know フォルダ」に入っている顔画像です。2回目の起動からはこのテキストファイルを読み込んで動作するので起動が極めて早くなります。動作確認時にはあえてゴミ箱に捨てたり、「pictures_of_people_i_know フォルダ」の顔を入れ替えたりすることで様子を確認してみてください。
    pictures_of_people_i_know フォルダをいじったときには、必ず npKnown.txt をゴミ箱に捨ててください。整合性が取れなくなった場合、エラーとしてアプリケーションが落ちるようにしてあります。
npKnown.txt ファイル
npKnown.txt ファイル
npKnown.txt ファイルのなかみ
npKnown.txt ファイルのなかみ

pictures_of_people_i_know フォルダ

  • pictures_of_people_i_know フォルダ
    認識させたい顔画像を予め入れておきます。npKnown.txt がない状態でこのフォルダをいじってください。npKnown.txt が存在する場合はそちらを読みに行きますのでこのフォルダは無視されます。
    それぞれのファイルは拡張子を除去してあります。
    繰り返しになりますが、pictures_of_people_i_know フォルダをいじったときには、必ず npKnown.txt をゴミ箱に捨ててください。pictures_of_people_i_know フォルダと npKnown.txt の整合性が取れない場合はエラーとしてアプリケーションを落とします。
    正常に起動しないな…と思ったときには npKnown.txt を捨ててください。
pictures_of_people_i_know フォルダのなかみ
pictures_of_people_i_know フォルダのなかみ

noFace フォルダ

  • noFace フォルダ
    pictures_of_people_i_know フォルダに入れた顔画像のうち、顔が認識できなかったものはこのフォルダに移動させられます。勿論その場合は顔画像の数値化が出来ません。
noFace フォルダ
noFace フォルダ

pictForPeople フォルダ

  • pictForPeople フォルダ
    色々な顔画像が入っています。テストに使ってください。拡張子は除去してあります。
pictForPeople フォルダのなかみ
pictForPeople フォルダのなかみ

output フォルダ

  • output フォルダ
    face01_imager.py や face01.py を動作させた時にここにクロップされた顔画像が溜まっていきます。
    ファイル名には認識した人名とその時間が入ります。
output フォルダの中身
output フォルダの中身

recognated フォルダ

  • recognated フォルダ
    face01_imager.py を動作させた時に処理された静止画がこちらに格納されていきます。
recognated フォルダのなかみ
recognated フォルダのなかみ

主要なフォルダの説明は以上です。次にファイルを見ていきましょう。

test.mp4

test.mp4
test.mp4

アプリケーションについて

Face01

  • face01.py
    pictures_of_people_i_know フォルダの中身を解析して test.mp4 ファイルを読み込み顔部分に四角形と名前を表示します。また標準出力には人物名と検出時間を出力します。クロップされた顔画像は output フォルダに格納されていきます。npKnown.txt がある場合は pictures_of_people_i_know フォルダを読みに行かないことに気をつけてください。
    動作中に止める場合にはキーボードの「q」を押してください
顔を検出している様子
顔を検出している様子

Face01_imager

  • face01_imager.py
    check_images フォルダを常に監視し、中に入った静止画から顔の解析を行います。
    対象とする顔画像は pictures_of_people_i_know フォルダですが、npKnown.txt ファイルがある場合には無視されます。

    output フォルダにクロップした顔画像を名前と検出時間のファイル名で保存していきます。
    標準出力には検出した人物名と検出時間が表示されます。
    処理された静止画は recognated フォルダに移動されます。

    常に監視し続けるので終了したい場合は標準出力画面で「Cnt+C」を押してください。
    recognated フォルダからcheck_images フォルダへ画像をいくつか移動させると即座に処理する様子をみることが出来ます。
pictures_of_people_i_know フォルダから顔画像をエンコードしている様子
pictures_of_people_i_know フォルダから顔画像をエンコードしている様子
検出した顔の人物名と時刻を表示している様子
検出した顔の人物名と時刻を表示している様子

Face01_usb

  • face01_usb.py
    face01.py は test.mp4 を解析しましたが、こちらは USB カメラからの画像を解析します。その他は face01.py と代わりはありません。
    USB カメラからの映像ウィンドウが開かない場合は、そもそも USB カメラが使える状態にあるのか他のソフトなどで試してみてください。
USB カメラからの顔画像解析の様子
USB カメラからの顔画像解析の様子

まとめ

以上です。
アプリケーションは端末から起動しても良いし、サンプルスクリプトを作ってそこから import して呼び出してもらっても大丈夫です(Windows 10 でのテストスクリプト)。
(お約束ですが import する場合はバージョン番号をとってください。)
色々試してみてください。

Follow me!