【要約】Are you Spookies?? 機械学習で顔の画像認識をしよう [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
IoT開発部の西村氏が、既存の顔認識プロジェクトをアップデートするために、メンバーの顔を識別するモデルの構築を試みた。しかし、実用化に向けて以下の技術的課題に直面した。
- ・学習に利用できる顔写真の絶対的な不足。
- ・収集した元画像の品質が低く、特徴抽出が困難であること。
- ・データセットの規模不足による、特定の人物への誤判定(過学習)。
// Approach
西村氏は、限られた画像リソースで学習を行うため、OpenCVとKerasを組み合わせたパイプラインを構築した。
- ・OpenCVのCascade Classifierを用いて、合宿写真から顔領域のみを自動抽出。
- ・データ不足を補うため、画像の反転やコントラスト調整によるデータ水増しを実施。
- ・KerasのSequential APIを用い、Conv2D、BatchNormalization、Dropoutを含むCNNモデルを定義。
- ・MacBook Proを用いて、約2時間の学習を実行。
// Result
モデルの構築には成功したが、実機での検証では精度が極めて低い結果となった。
- ・特定の人物(takano氏)に誤判定が集中する現象が発生。
- ・原因は、元画像の低品質および学習データ量の圧倒的な不足と分析。
- ・今後は精度向上を図り、Raspberry Piへの組み込みを目指す。
Senior Engineer Insight
> プロトタイプ開発のスピード感は評価できる。しかし、実運用への投入には以下の改善が必須である。
- ・データ不足に対し、転移学習(Transfer Learning)の採用を検討すべき。
- ・エッジデバイス(Raspberry Pi)への展開を見据えるなら、MobileNet等の軽量モデルへの移行が望ましい。
- ・現状の誤判定は、データ不均衡の典型的な兆候である。クラスごとのサンプル数を揃える必要がある。