MediaPipe、DeepFaceによる顔検出、感情分析 Colab プログラムによる実験・研究スキルの基礎

【概要】静止画像から人物の顔を検出し、感情を7分類(怒り、嫌悪、恐怖、喜び、悲しみ、驚き、無表情)で自動判定するプログラムの利用ガイドです。MediaPipeとDeepFaceを組み合わせた二段階処理により、顔の位置特定と感情推定を実現します。実験計画の立て方から結果の検証方法まで、研究スキルの基礎を学べます。

Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/11JxfeS_V-xO6ihy38rwNpTWalhQxyysy?usp=sharing

【目次】

  1. プログラム利用ガイド
  2. プログラムコードの説明
  3. 実験・研究スキルの基礎

プログラム利用ガイド

1. このプログラムの利用シーン

静止画像に写る人物の顔を検出し、その感情状態を自動的に判定するプログラムです。写真に写る人物の表情を客観的に分析したい場合や、複数の人物が写る集合写真で各人の感情状態を比較したい場合に利用できます。

2. 主な機能

3. 基本的な使い方

  1. プログラムの実行

    コードセルを実行すると、必要なライブラリ(MediaPipe、DeepFace、OpenCV)が自動的に読み込まれます。

  2. Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/11JxfeS_V-xO6ihy38rwNpTWalhQxyysy?usp=sharing

  3. 公式サンプル画像での動作確認

    プログラムはOpenCVの公式サンプル画像をインターネットから取得し、処理結果を表示します。

  4. 画像のアップロード

    「画像ファイルを1つアップロードしてください」というメッセージが表示されたら、表示されるファイル選択ダイアログから分析したい画像を選びます。

  5. 結果の確認

    アップロードした画像の処理が完了すると、元画像(左)と検出結果(右)が並んで表示されます。

4. 便利な機能

プログラムコードの説明

1. 概要

このプログラムは、静止画像から顔領域を検出し、検出された顔の感情を7つのカテゴリ(怒り、嫌悪、恐怖、喜び、悲しみ、驚き、無表情)に分類します。MediaPipeによる顔検出とDeepFaceによる感情分析を組み合わせることで、顔の位置特定と感情推定を実現します。

2. 主要技術

BlazeFace

Google Researchが2019年に開発したモバイルGPU推論向けの顔検出アルゴリズムです[1]。MobileNetV1/V2から着想を得た特徴抽出ネットワークと、Single Shot MultiBox Detector(SSD)を改良したアンカー方式を採用します。MediaPipe Face Detectionの基盤技術として実装されています。

DeepFace

複数の学習済みモデルを統合した顔認識・属性分析フレームワークです[2]。感情認識では畳み込みニューラルネットワーク(CNN)を用いて、顔画像から感情を表す特徴ベクトルを抽出し、7つの感情カテゴリに分類します。

3. 技術的特徴

4. 実装の特色

Google Colabでの実行を前提とし、以下の機能を備えます。

5. 参考文献

[1] Bazarevsky, V., Kartynnik, Y., Vakunov, A., Raveendran, K., & Grundmann, M. (2019). BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs. arXiv preprint arXiv:1907.05047. https://arxiv.org/abs/1907.05047

[2] Serengil, S. I., & Ozpinar, A. (2024). A Benchmark of Facial Recognition Pipelines and Co-Usability Performances of Modules. Journal of Information Technologies, 17(2), 95-107. https://doi.org/10.17671/gazibtd.1399077

実験・研究スキルの基礎:Google Colabで学ぶ顔検出と感情分析実験

1. 実験・研究のスキル構成要素

実験や研究を行うには、以下の5つの構成要素を理解する必要があります。

1.1 実験用データ

このプログラムでは人物が写っている画像ファイルが実験用データです。

1.2 実験計画

何を明らかにするために実験を行うのかを定めます。

計画例:

1.3 プログラム

実験を実施するためのツールです。このプログラムはMediaPipeの顔検出モデルとDeepFaceの感情分析モデルを使用しています。

1.4 プログラムの機能

このプログラムは顔検出と感情分析を二段階で実行します。

入力パラメータ:

出力情報:

処理の流れ:

1.5 検証(結果の確認と考察)

プログラムの実行結果を観察し、検出精度や感情分析の妥当性を考察します。

基本認識:

観察のポイント:

2. 間違いの原因と対処方法

2.1 プログラムのミス(人為的エラー)

プログラムがエラーで停止する

画像が表示されない

モデルのダウンロードに時間がかかる

2.2 期待と異なる結果が出る場合

明らかに顔が写っているのに検出されない

顔でないものが誤検出される

感情が実際の表情と異なる

感情の確率値が低い

3. 実験レポートのサンプル

顔の角度が検出精度と感情分析に与える影響

実験目的:

顔の角度(正面、斜め、横向き)が顔検出の成功率と感情分析の精度に与える影響を調べます。

実験計画:

検出信頼度閾値をxxxxに固定し、同一人物の異なる角度の顔画像を用いて検出結果と感情分析結果を比較します。

実験方法:

プログラムを実行し、以下の基準で評価します。

実験結果:

顔の角度 検出成否 検出信頼度 推定感情 感情確率 備考
xxxx x x x x x
xxxx x x x x x
xxxx x x x x x
xxxx x x x x x

考察:

結論:

(例文)本実験により、顔検出と感情分析の精度は顔の角度に強く依存することが確認できた。実用的な用途では正面から斜めxxxx度程度までの範囲で使用することが望ましい。斜めxxxx度を超える角度では感情分析の信頼性が著しく低下するため、結果の解釈には注意が必要である。また、完全な横向きの顔は検出対象外となることを理解した上でシステムを設計する必要がある。