【AI自由研究】画像中の人に対して性別・年齢を推定してみた。
8月が終わっちゃいましたね。
今年も暑い日々が続き、私の家のエアコンはずっと働き続けました。
涼しい気候になれば、掃除をして労わってあげたいです。
今回の投稿は「夏」ということで、私の夏休みの自由研究について紹介します!ぜひ、最後までお付き合いください。
(noteのハートマークをクリックしてもらえると嬉しいです!)
はじめに
2度目の登場!
データビジネス推進部の柴田です。(部署名が変わりました)
前回の記事はこちらです。
今回の投稿内容はタイトルにある通り「性別・年齢推定」です。
みなさんも、スマートフォンアプリなどで性別・年齢推定をしてみたことがあるのではないでしょうか。今回はそのような性別・年齢推定は、どういった処理が内部で行われているのか知りたいと思い、実際に動かしてみました。
※実装については、以下のウェブページを参考にしました。
性別・年齢推定の概要
今回の性別・年齢推定では、画像中に映っている人物の顔に対して性別と年齢を推定していきます。大まかには、2つのステップが存在します。
顔を検出する
検出した顔に対して、性別・年齢推定を行う
1. 顔を検出する
画像に映っている顔から年齢推定を行うために、まずは顔検出を行う必要があります。
今回、顔検出を実現するにあたって、MTCNN[1]という手法を用いました。
MTCNNは3段階のネットワーク(P-Net、R-Net、O-Net)から構成されており、段階的に顔を捉えていきます。
イメージとしては、以下の通りです。
※詳細については後述の 参考文献[1] をご参照ください。
2. 検出した顔に対して、性別・年齢推定を行う
性別および年齢の推定には、こちらのページで公開されているモデルを使用しました。
本モデルは、IMDB-WIKIデータセット を用いて構築されています。
そして、このデータセットは50万枚もの顔画像が含まれているとのことです。
年齢推定の部分は、0歳~100歳の101クラスの確率値が出力され、各年齢クラスと確率値の積を算出し、それらの和を年齢推定結果とします。
具体的には、以下のイメージです。
各年齢クラスとその確率の積を求め、その和から20歳と予測している様子を表しています。
※詳細については後述の 参考文献[2] をご参照ください。
それでは、実際に性別・年齢を推定してみます!!
性別・年齢を推定してみた!
年齢推定実験は「ぱくたそ」に登録されている画像を使用しました。
まずは、正しく推定できたと思われる例です。
顔検出、性別推定が正しく推定できていることがわかります。
年齢推定については、撮影時のモデルの方の年齢にもよると思いますが、いかがでしょうか。
次に、正しく推定できなかった例を紹介します。
モデルの目や持っているスマートフォンを顔として誤検出した場合がありました。また、顔を横から撮影した画像では顔検出ができなかった場合が多く見受けられました。
近年では、マスクをしている状態でも推定したい場合があります。
左側2枚はマスクをしている状態でも正しく推定できている様子ですが、右側の画像のように、マスクをした状態では顔検出が難しい様子が見受けられます。
性別推定については、男性を女性と判定する例が見られました。左側の画像は帽子も性別推定を難しくする原因になったのでしょうか。
まとめ
今回、実際に性別・年齢推定を行ってみた感想は以下の通りです。
顔検出の精度をさらに上げるためには、横から撮影した画像やマスクをした状態の画像を学習させることが必要と思われます。また、性別・年齢推定では、顔だけでなく服装やアクセサリーも考慮させることができれば良いかもしれません。
また秋にお会いしましょう
甲子園で行われている高校野球全国大会も終わり、夏休みも終わり、もうすぐ秋ですね。
私は2022年春、夏と1シーズンに1回ペースで発信していますが、また秋にも発信できるようにネタ探しをしなくては…