【顔領域検出】Openfaceの使い方
今回は顔検出のオープンソースであるOpenfaceをインストールしたので実際に動かしてみます。
参考:https://github.com/TadasBaltrusaitis/OpenFace/wiki
その中で少しつまづいたりしたので、ここに残すことに決めました。
実行した時の手順
さっそく実行。
$ 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にファイルが置かれていたので、このURLからファイルをダウンロード。
To download the C++ and matlab models go to –
https://www.dropbox.com/sh/o8g1530jle17spa/AADRntSHl_jLInmrmSwsX-Qsa?dl=0
以下、ダウンロード結果。
$ 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の下に置くように指示されています。
しかしそれで実行するとなぜか最初と同じようなエラーが出ます。
$ mv *.dat ../OpenFace/lib/local/LandmarkDetector/model/patch_experts
$ 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の下に置かなければならないようです。
というわけで再配置。
$ mv lib/local/LandmarkDetector/model/patch_experts/*.dat build/bin/model/patch_experts
→実行成功しました。
実行結果は下記のようにOpenFace/processedの下に配置されます。
私の場合は以下のような2つの画像に対して実行しましたが、認識に失敗した場合はcsvファイルは作成されません。認識に成功した場合は計5つのファイルが確認できるはずです。
~/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の実行結果を下に示します。
フリー素材:https://www.pakutaso.com/
最後に
上の結果のように少々傾いた顔に対しても有効であることが分かりました。
まだ数多くは試してはいませんが、画角をオーバーするほどアップされた顔や、目を閉じた顔には認識されにくい傾向があるように見受けられます。
また、はっきりした正面を向いた顔でも垂直になっていないとうまく反応してくれないようです。
しかし、正面を向いており、まっすぐに映っている顔であれば、画素が荒かったり、遠くに移っている小さな顔に対してもしっかり反応してくれます。
集合写真に対しても複数人の顔を一度に認識してくれました。
他にもいろいろなパターンを考えて試してみようと思います。
皆さんもぜひ参考にしてください。
最後まで、ありがとうございました。
関連記事