顔認証techはじめに顔画像データセットを作成する際、一昔前まで一般的にクローリングによって作成されていたかと思います。この方法だと様々な問題が山積します。自撮り加工が多すぎる関連した別人が混ざる年齢差が大きすぎるデータが混ざるぼやけているこれらを解決する方法として、インタビュー形式の動画から顔画像データを抽出する方法が存在します。この記事では後者の「インタビューなどの動画から顔画像データを抽出する方法」について、FACE01[1]を使って行います。[!NOTE]なおこの記事で取り扱うサンプル動画は記事を作成するための例であって、このサンプルを使って顔学習モデルを作製しているわけではないことをおことわりします。阿部監督の試合後インタビュー【巨人×DeNA】【CSファイナル第5戦】をinterview.mp4として使用します。FACE01はRTSP、HTTPなどの入力を使用できますが、今回はそこが主眼ではないので予めinterview.mp4として用意しました。FACE01とはFACE01はオープンソースの顔認識フレームワークです。https://github.com/yKesamaru/FACE01_DEVFACE01顔認識フレームワークは、RTSP・HTTP・USBなどの入力プロトコルから顔認識・画像処理をかんたんに行えます。詳細なドキュメントと多くのエグザンプルコードの他に、初心者の方を対象にした「ステップ・バイ・ステップ」が付属するので、どんな方でもかんたんに顔認識に付随する処理を行えます。V1[2])は日本人専用として学習されており、フリーで使える顔学習モデル[3]としては、おそらく日本一の精度を誇ります。日本人の顔認証に特化した学習モデルは、一般的な顔認証システムが抱える問題(若年日本人女性に対する偽陽性)を解決しました。一般的な学習モデルの場合、以下に示すような若年日本人女性の判別が難しい場合があります。FACE」(下のグラフではefficientnetv2_arcface.onnx)では、精度を落とすことなく判別できていることが示されました。FACEは0.98を達成しています⭐️''。くわしくは、「Dlib顔学習モデルの、若年日本人女性データセットにおける性能評価」からご覧いただけます。この記事では「動画ファイル中の任意の人物の顔画像ファイルを、フレームごとに抽出・保存する」機能を使用します。imageをプルします。tokaikaoninsho/face01_gpuダウンロードしたイメージを確認します。imageがリストされています。22.3GBドキュメントにあるように、GUIを使えるようにしておきます。+local:この部分がよくわからない方は以下を参考にしてください。DockerでGUIアプリケーションを開く基本的な押さえどころhttps://zenn.dev/ykesamaru/articles/add7d844f56516コンテナを起動するホストと共有するフォルダを指定しておきたいので、以下のようにしてコンテナを起動します。id>/home/user/ドキュメント/Face_Extraction/assets/ディレクトリにinterview.mp4としてテスト用動画を用意してあります。今回はこの動画ファイルから顔画像ファイルを抽出したいので、このディレクトリを指定してコンテナを起動します。ce2952ad62d6コンテナを上記のように指定して起動すると、ホスト側の/home/user/ドキュメント/Face_Extraction/assetsディレクトリがコンテナ側の/mnt/dataディレクトリに接続されます。interview.mp4/mnt/data/interview.mp4に対して、顔画像ファイル抽出処理をしていきます。config.iniを調整するFACE01では多様な使い方を想定してconfig.iniファイルを使って初期設定を行います。config.ini編集のために、FACE01のDOCKERイメージにはgeditテキストエディタが付属します。vimも付属するので好きな方を選んで起動してください。config.iniデフォルトで幾つかのセクションが用意されています。すべてのセクションは[DEFAULT]セクションを継承します。新しいセクションを作成するには[DEFAULT]セクションから変更する部分だけを抽出して設定します。くわしくはこちらをご参照ください。今回は本格的な運用ではないため、予め用意されている[DISPLAY_GUI]セクションを直接編集しました。0顔画像ファイルを設置する顔画像ファイルを設置します。(224x224px)これを~/FACE01_DEV/preset_face_images/ディレクトリにコピーします。コピーする際パスワードを聞かれたらdockerと入力します。エグザンプルコードを動作させるコードはexample/display_GUI_window.pyを使用します。./example/display_GUI_window.py実行すると以下のようなウィンドウが開き、処理が進んでいきます。ホスト側に顔画像ファイルを移動するコンテナからホストのディスクに顔クロップ画像をコピーしましょう。/mnt/data/output/これによって、以下のように顔クロップ画像が収集できました。おわりにFACE01顔認識フレームワークを使用すると、dockerに抵抗ない方なら顔認識関連の処理がかんたんに行えます。じつは大量の動画ファイルから顔画像をクロップして保存する作業があり、FACE01のドキュメントを見ながら作業を行いました。とっかかりは面倒くさそうですけど、コンテナに入ってしまえば後は楽ちんでした。皆様もつかってみてください。最後までお読み頂きありがとうございました。FACEと、Pythonで書かれたオープンソースのリファレンス実装・顔認識フレームワークです。アパッチライセンスです。くわしくはLICENSEを参照してください。↩︎yKesamaru主に顔認識まわりを扱っています。バッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。バッジを贈るDiscussionyKesamaru主に顔認識まわりを扱っています。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。