画像データからの感情認識や年齢・性別推定の実装には様々な手段がありますが、ailia SDK(アイリアSDK)を使えば複数のモデルを数分で簡単に試すことができます。
この記事は、以下のような方におすすめです:
● 感情認識や年齢・性別推定の各種モデルを実際に試してみたい方
● プログラミング初心者でAIに興味がある方
● 感情認識や年齢・性別推定を自社サービスに組み込みたい方
本記事では、Apple Silicon搭載Macで、Pythonを使って環境構築から感情認識・年齢/性別推定モデルの実践までを10分で実装する手順を解説します。

1. ailia SDKとは?
AIモデルの実装を簡単に行えるSDKです。以下の特徴があります:
- 高速な推論エンジンによる、スムーズな実行
- 画像認識、物体検出、姿勢推定など、370以上の豊富な事前学習済みモデル
- Mac、Windows、Linux、組み込みボード(Jetson、Raspberry Pi)まで対応したクロスプラットフォーム
- 多言語対応(Python/C++/Unity(C#)/Java(JNI)/Kotlin/Rust/Flutter)
- GPU対応(CUDA、Vulkan、Metal)
2. 環境構築(所要時間:約2分)
動作条件
- Python 3.6 以降
インストール手順
- まず、ailia SDKをインストールします:
pip3 install ailia
- サンプルコードをダウンロードして、移動します:
git clone https://github.com/axinc-ai/ailia-models
cd ailia-models - 依存ライブラリをインストールします:
pip3 install -r requirements.txt
3. 概要把握
今回は5つのモデルを順番に紹介していきます。用途に応じて最適なモデルを選択してください:
- hsemotion: 感情分析(確率値付き)
- ferplus: シンプルな感情分析
- face_classification: 感情・性別分析
- age-gender-recognition-retail: 年齢・性別分析
- mivolo: 年齢・性別分析(確率値付き)
4. モデル実装
4.1 出力値も簡単に得られる感情認識モデル(所要時間:約3分)
- 概要:
- 顔の画像データから、高速で感情認識ができます。
- 環境を整えます:
- まずはailia-modelsリポジトリ内の該当フォルダに移動します。
cd face_recognition/hsemotion
- まずはailia-modelsリポジトリ内の該当フォルダに移動します。
- サンプル画像で試してみましょう
- 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
python3 hsemotion.py
- 無事に実行されれば、下記の出力をターミナル内で確認できるはずです。
INFO hsemotion.py (121) : lenna.png
INFO hsemotion.py (132) : Start inference…
INFO hsemotion.py (146) : emotion_class_count=4
INFO hsemotion.py (150) : + idx=0
INFO hsemotion.py (151) : category=5 [ Neutral ]
INFO hsemotion.py (153) : prob=0.6241492033004761
INFO hsemotion.py (150) : + idx=1
INFO hsemotion.py (151) : category=4 [ Happiness ]
INFO hsemotion.py (153) : prob=0.15087740123271942
INFO hsemotion.py (150) : + idx=2
INFO hsemotion.py (151) : category=7 [ Surprise ]
INFO hsemotion.py (153) : prob=0.07534907758235931
INFO hsemotion.py (150) : + idx=3
INFO hsemotion.py (151) : category=6 [ Sadness ]
INFO hsemotion.py (153) : prob=0.05992703512310982
INFO hsemotion.py (154) :
INFO hsemotion.py (155) : Script finished successfully.
- 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
- 自分の画像データや動画データで試してみましょう:
- ご自身の画像データを 同フォルダに test.png として保存してください。その後、以下のコマンドを実行します。
python3 hsemotion.py --input test.png
- 同様に、ご自身の動画データについては、下記実行で出力を確認できます。
python3 hsemotion.py --video VIDEO_PATH
- 最も手軽な検証方法では、自身のウェブカメラを起動する形でしょう。VIDEO_PATH に 0 を指定するだけで、動画ファイルの代わりにウェブカメラからの入力を利用できます。なお、スクリプトを実行しているターミナル上で Ctrl キーと C キーを同時に押せば、スクリプトは停止します。
python3 hsemotion.py --video 0
- ご自身の画像データを 同フォルダに test.png として保存してください。その後、以下のコマンドを実行します。
4.2 よりシンプルな感情認識モデル(所要時間:約1分)
- 概要:
- 顔の画像データから、高速で感情認識ができます。
- 顔の画像データから、高速で感情認識ができます。
- 環境を整えます:
- まずはailia-modelsリポジトリ内の該当フォルダに移動します。
cd face_recognition/ferplus
- まずはailia-modelsリポジトリ内の該当フォルダに移動します。
- サンプル画像で試してみましょう:
- 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります。
$ python3 ferplus.py
- 無事に実行されれば、下記の出力をターミナル内で確認できるはずです。前述のhsemotionより、シンプルな出力になっています。
INFO ferplus.py (218) : emotion: happiness
INFO ferplus.py (220) : Script finished successfully.
- 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります。
- 自分の画像データや動画データで試してみましょう:
- ご自身の画像データを 同フォルダに test.png として保存してください。その後、以下のコマンドを実行します。
python3 ferplus.py --input test.png
- 同様に、ご自身の動画データについては、下記実行で出力を確認できます。
python3 ferplus.py --video VIDEO_PATH --savepath SAVE_VIDEO_PATH
- 最も手軽な検証方法では、自身のウェブカメラを起動する形でしょう。VIDEO_PATH に 0 を指定するだけで、動画ファイルの代わりにウェブカメラからの入力を利用できます。なお、スクリプトを実行しているターミナル上で Ctrl キーと C キーを同時に押せば、スクリプトは停止します。
python3 ferplus.py --video 0
- ご自身の画像データを 同フォルダに test.png として保存してください。その後、以下のコマンドを実行します。
4.3 感情と性別を認識するモデル(所要時間:約1分)
- 概要:
- 顔の画像データから、高速で感情/性別認識ができます。
- 環境を整えます:
- まずはailia-modelsリポジトリ内の該当フォルダに移動します。
cd face_recognition/face_classification
- まずはailia-modelsリポジトリ内の該当フォルダに移動します。
- サンプル画像で試してみましょう:
- 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
python3 face_classification.py
- 無事に実行されれば、下記の出力をターミナル内で確認できるはずです。
INFO face_classification.py (90) : lenna.png
INFO face_classification.py (99) : Start inference…
INFO face_classification.py (90) : lenna.png
INFO face_classification.py (99) : Start inference...
INFO face_classification.py (112) : emotion_class_count=3
INFO face_classification.py (116) : + idx=0
INFO face_classification.py (118) : category=6 [ neutral ]
INFO face_classification.py (120) : prob=0.410888671875
INFO face_classification.py (116) : + idx=1
INFO face_classification.py (118) : category=4 [ sad ]
INFO face_classification.py (120) : prob=0.1993408203125
INFO face_classification.py (116) : + idx=2
INFO face_classification.py (118) : category=0 [ angry ]
INFO face_classification.py (120) : prob=0.1951904296875
INFO face_classification.py (121) :
INFO face_classification.py (136) : gender_class_count=2
INFO face_classification.py (140) : + idx=0
INFO face_classification.py (142) : category=0 [ female ]
INFO face_classification.py (144) : prob=0.79931640625
INFO face_classification.py (140) : + idx=1
INFO face_classification.py (142) : category=1 [ male ]
INFO face_classification.py (144) : prob=0.2005615234375
INFO face_classification.py (145) : Script finished successfully.
- 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
- 自分の画像データや動画データで試してみましょう:
- ご自身の画像データを 同フォルダに test.png として保存してください。その後、以下のコマンドを実行します。
python3 face_classification.py --input test.png
- 同様に、ご自身の動画データについては、下記実行で出力を確認できます。
python3 face_classification.py --video VIDEO_PATH
- 最も手軽な検証方法では、自身のウェブカメラを起動する形でしょう。VIDEO_PATH に 0 を指定するだけで、動画ファイルの代わりにウェブカメラからの入力を利用できます。なお、スクリプトを実行しているターミナル上で Ctrl キーと C キーを同時に押せば、スクリプトは停止します。
python3 face_classification.py --video 0
- ご自身の画像データを 同フォルダに test.png として保存してください。その後、以下のコマンドを実行します。
4.4 年齢と性別を認識するモデル(所要時間:約1分)
- 概要:
- 顔の画像データから、高速で年齢/性別認識ができます。下記は、テスト動画です。
- 顔の画像データから、高速で年齢/性別認識ができます。下記は、テスト動画です。
- 環境を整えます:
- まずはailia-modelsリポジトリ内の該当フォルダに移動します。
cd face_recognition/age-gender-recognition-retail
- まずはailia-modelsリポジトリ内の該当フォルダに移動します。
- サンプル画像で試してみましょう:
- 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
python3 age-gender-recognition-retail.py
- 無事に実行されれば、下記の出力をターミナル内で確認できるはずです。
INFO age-gender-recognition-retail.py (201) : demo.jpg
INFO age-gender-recognition-retail.py (219) : Start inference...
INFO age-gender-recognition-retail.py (243) : gender is: Female (98.73)
INFO age-gender-recognition-retail.py (244) : age is: 25
INFO age-gender-recognition-retail.py (246) : Script finished successfully.
- 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
- 自分の画像データや動画データで試してみましょう:
- ご自身の画像データを 同フォルダに test.png として保存してください。その後、以下のコマンドを実行します。
python3 age-gender-recognition-retail.py --input test.png
- 同様に、ご自身の動画データについては、下記実行で出力を確認できます。
python3 age-gender-recognition-retail.py --video VIDEO_PATH --savepath SAVE_VIDEO_PATH
- 最も手軽な検証方法では、自身のウェブカメラを起動する形でしょう。VIDEO_PATH に 0 を指定するだけで、動画ファイルの代わりにウェブカメラからの入力を利用できます。なお、スクリプトを実行しているターミナル上で Ctrl キーと C キーを同時に押せば、スクリプトは停止します。なお、筆者が試した場合、実年齢より5〜10歳若めの出力値が出ておりました。
python3 age-gender-recognition-retail.py --video 0
- ご自身の画像データを 同フォルダに test.png として保存してください。その後、以下のコマンドを実行します。
4.5 複数の顔から年齢と性別を認識するモデル(所要時間:約2分)
- 概要:
- 顔の画像データから、高速で年齢/性別認識ができます。
- 環境を整えます:
- まずはailia-modelsリポジトリ内の該当フォルダに移動します。
cd face_recognition/mivolo
- まずはailia-modelsリポジトリ内の該当フォルダに移動します。
- サンプル画像で試してみましょう:
- 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
python mivolo.py
- 無事に実行されれば、下記の出力をターミナル内で確認できるはずです。下記出力画像の通り、男性36歳、女性28歳、男性8歳、男性7歳を認識しているのがわかります。
INFO mivolo.py (372) : input.jpg
np.max(input_data) = 1.0
output_YOLO.shape =
(8400, 6)
output_YOLO =
[[218.41 361.33 166.76 557. 0.9 0. ]
[218.49 361.18 166.43 557.11 0.9 0. ]
[218.4 361.18 166.69 557.05 0.89 0. ]
...
[218.84 360.85 166.74 557.41 0. 0. ]
[218.19 362.1 166.62 555.28 0. 0. ]
[311.41 445.52 151.74 387.32 0. 0. ]]
bbox_face.shape =
(40, 5)
bbox_person.shape =
(40, 5)
INFO mivolo.py (502) : saved at : output.png
INFO mivolo.py (505) : Script finished successfully.
- 以下のコマンドを実行します。なお、初回実行時は、 onnx ファイルと prototxt ファイルの自動ダウンロードが行われ、多少時間が掛かります
- 自分の画像データや動画データで試してみましょう:
- ご自身の画像データを 同フォルダに test.png として保存してください。その後、以下のコマンドを実行します。
python3 mivolo.py --input test.png --savepath test_output.png
- 同様に、ご自身の動画データについては、下記実行で出力を確認できます。
python3 mivolo.py --video VIDEO_PATH --savepath SAVE_VIDEO_PATH
- 最も手軽な検証方法では、自身のウェブカメラを起動する形でしょう。VIDEO_PATH に 0 を指定するだけで、動画ファイルの代わりにウェブカメラからの入力を利用できます。なお、スクリプトを実行しているターミナル上で Ctrl キーと C キーを同時に押せば、スクリプトは停止します。なお、筆者が試した場合、実年齢より5歳は若めの出力値が出ておりました。
python3 mivolo.py --video 0
- ご自身の画像データを 同フォルダに test.png として保存してください。その後、以下のコマンドを実行します。
5. 実用上の注意点
- 精度への影響要因
- 照明条件:明るさや光の方向により精度が変化
- 顔の角度:正面からの撮影が最も精度が高い
- 画像品質:解像度が低いと精度が低下
- モデル選択のポイント
- 感情分析ならhsemotion、ferplus、face_classification
- 性別分析ならface_classification、age-gender-recognition-retail、mivolo
- 年齢分析ならage-gender-recognition-retail、mivolo
- プライバシーへの配慮
- 個人情報の取り扱いに関する適切な同意取得
- データの保存・管理における適切な暗号化
6. まとめ
わずか10分で、感情認識と年齢・性別推定モデルを実装できました!
ailia SDKでは、この他にも370以上の事前学習済みモデルを活用でき、画像認識、物体検出、自然言語処理など幅広い分野に対応しています。
「高速」「使いやすさ」「豊富なモデル」を特徴とするailia SDKは、AIを実装する際の強力なツールとなるでしょう。ぜひ、ご自身の開発プロジェクトでお試しください。
7. 参考リンク

土橋克寿
証券会社、ビジネス誌副編集長を経て2013年に独立。欧米中印のスタートアップ取材や、各国首脳・テック企業幹部へのインタビューを多数実施。Yahoo!ニュース エキスパートなど国内外メディアで執筆。2018年より株式会社クロフィー代表取締役として、AI開発・PRコンサルティングなどを手掛ける。
https://news.yahoo.co.jp/expert/authors/dobashikatsutoshi
https://x.com/dobatty