Openfaceを使ってみた

はじめに

今回は顔検出のオープンソースであるOpenfaceをインストールしたので実際に動かしてみます。

参考:https://github.com/TadasBaltrusaitis/OpenFace/wiki

その中で少しつまづいたりしたので、ここに残すことに決めました。

手順

さっそく実行。

tk@tk-VirtualBox:~/OpenFace$ build/bin/FaceLandmarkImg -f ../face_120000.jpg

すると、下記のようなエラーメッセージが、、。

ERROR: Could not load the landmark detector<
Reading the intensity CEN patch experts from: build/bin/model/patch_experts/cen_patches_0.25_of.dat....Could not find CEN patch experts, for instructions of how to download them, see https://github.com/TadasBaltrusaitis/OpenFace/wiki/Model-download

build/bin/model/patch_expertsのディレクトリの下にモデルがダウンロードされていないと表示されました。

丁寧にURLも示してくれていたので、そのサイトに飛ぶ。

そのURL先で下記のように示されており、dropboxにファイルが置かれていたので、これをダウンロード。

To download the C++ and matlab models go to – https://www.dropbox.com/sh/o8g1530jle17spa/AADRntSHl_jLInmrmSwsX-Qsa?dl=0

以下、ダウンロード結果。

tk@tk-VirtualBox:~/ダウンロード$ ls
cen_patches_0.25_general.mat 
cen_patches_0.25_menpo.mat 
cen_patches_0.25_of.dat 
cen_patches_0.25_of.mat 
cen_patches_0.35_general.mat 
cen_patches_0.35_menpo.mat 
cen_patches_0.35_of.dat 
cen_patches_0.35_of.mat 
cen_patches_0.50_general.mat
cen_patches_0.50_menpo.mat
cen_patches_0.50_of.dat
cen_patches_0.50_of.mat
cen_patches_1.00_general.mat
cen_patches_1.00_menpo.mat
cen_patches_1.00_of.dat
cen_patches_1.00_of.mat

しかし、これらのファイルを適切な場所に配置しなければなりません。

上のサイトではdatファイルは

OpenFace/lib/local/LandmarkDetector/model/patch_experts

matファイルはOpenFace/matlab_version/models/cenの下に置くように指示されています。

しかしそれで実行するとなぜか最初と同じようなエラーが出ます。

 tk@tk-VirtualBox:~/ダウンロード$ mv *.dat ../OpenFace/lib/local/LandmarkDetector/model/patch_experts
tk@tk-VirtualBox:~/ダウンロード$ mv *.mat ../OpenFace/matlab_version/models/cen

→実行しても先ほどのようなエラーが出る。

Reading the intensity CEN patch experts from: build/bin/model/patch_experts/cen_patches_0.25_of.dat....Could not find CEN patch experts

エラーメッセージをよく見ると、datファイルは

Openface/build/bin/model/patch_expertsの下に置かなければならないようです。

というわけで再配置。

tk@tk-VirtualBox:~/OpenFace$ mv lib/local/LandmarkDetector/model/patch_experts/*.dat build/bin/model/patch_experts

→実行成功しました。

実行結果は下記のようにOpenFace/processedの下に配置されます。

私の場合は以下のような2つの画像に対して実行しましたが、認識に失敗した場合はcsvファイルは作成されません。認識に成功した場合は計5つのファイルが確認できるはずです。

 tk@tk-VirtualBox:~/OpenFace/processed$ ls
face_120000.hog 
face_120000.jpg 
face_120000_aligned 
face_120000_of_details.txt
sample.hog 
sample.jpg
sample_aligned
sample_of_details.txt
sample.csv

実行結果

フリー素材によるOpenfaceの実行結果を下に示します。

f:id:tk0137:20200630193914j:plain

f:id:tk0137:20200630193907j:plain

f:id:tk0137:20200630193859j:plain

f:id:tk0137:20200630193855j:plain

フリー素材:https://www.pakutaso.com/

考察

上の結果のように少々傾いた顔に対しても有効であることが分かりました。

まだ数多くは試してはいませんが、画角をオーバーするほどアップされた顔や、目を閉じた顔には認識されにくい傾向があるように見受けられます。

また、はっきりした正面を向いた顔でも垂直になっていないとうまく反応してくれないようです。

しかし、正面を向いており、まっすぐに映っている顔であれば、画素が荒かったり、遠くに移っている小さな顔に対してもしっかり反応してくれます。

集合写真に対しても複数人の顔を一度に認識してくれました。

他にもいろいろなパターンを考えて試してみようと思います。

皆さんもぜひ参考にしてください。

最後まで、ありがとうございました。