昨年(2019/07/29)、当社では、本社エントランスに顔を検出し、年齢と性別を推定するモデルを作成し、デモ機として、設置した。しかし、データが少ないせいか、角度や画像の明度・カメラまでの距離によって、年齢予測精度が極端に低下し、全員10代に表示されるという問題があった。また、速度面についても、動画の一時遅れ感が強く出てしまっていた。そこで今回は、最新の技術トレンドを取り入れたモデル構造の刷新と、学習データ増強により、精度と速度の大幅な改善を試みた。
従来、ディープラーニングを用いた画像認識では、画面をいくつかのスケールでグリッド状に分割し、その中に写っている物体の予測を行うという方式が主流であった。しかし、一昨年あたりから徐々に、キーポイントと呼ばれるヒートマップのような形での予測方式が効率的で、速度面で成果を上げていることから、利用が広がっている。
今回は速度面の改良も行うため、そういったトレンドを取り入れ、昨年使用していたYoLoV3から”CenterNet”(参考文献[1])と呼ばれる手法に置き換えた。この手法は、対象の中心をキーポイントとして、抽出し、顔の範囲を計算することで、物体を検出する。
年齢推定モデルを学習する際に、使用するデータによっては、特定の年齢のデータが過剰に存在していたり、化粧や遺伝的に実年齢より大きく外れた年齢に見えやすい顔が存在するといった要因から、全体の精度低下を招いていたことが考えられる。そこで今回は、学習時の損失関数の誤差の計算の仕方に対し、顔年齢推定において、”Mean-Variance Loss for Deep Age Estimation from a Face”(参考文献[2])の論文で有効性が確認された手法を取り入れた。この手法は、回帰問題もしくは分類問題として1つの正解年齢値を予測する従来手法に対し、年齢を推定分布として予測し、その分布の平均値が正解年齢に一致するように学習させるというものである。これにより、化粧や遺伝的な違いにより一意に推定するのが難しい年齢推定において精度よく学習が可能になっている。
モデルとして、画像以外の入力を追加できるわけではない。そこで、前回のモデルは顔の検出と年齢・性別推定のネットワークを別々に定義していた。それに対して、今回のモデルでは、EndtoEndの学習となっており、それにより、顔検出を行うCenterNetの中間層の情報を年齢推定のネットワークに取り入れることが可能となった。これによって、今まで個々の顔画像のみであった特徴量に加え、顔検出のために畳みこまれた情報から、周辺の人物や背景画像に写りこんだ情報などを取り込むことが可能となった。
昨年実装した際には、性別と年齢の推定をする部分を、ResNet50と呼ばれるもので実装していた。今回は、その改良で、精度を若干向上させつつ、速度の向上をした『TResNet』(参考文献[3])を用いた。
今回はモデルの比較では、顔の検出精度ではなく、年齢ラベルが存在する一人のみを比較に用いるため、有名なデータセットのIMDBとWIKIから、YoloV3の顔検出器で顔が1枚だけ写っていると判定された画像を使用した。検証に用いたデータセットは表1のようになっている。
画像枚数 | inout size |
---|---|
6749枚 | 480*480 |
検証結果が表2のようになっている。
昨年のモデル | 今回のモデル | |
---|---|---|
フレームレート | 22.50FPS | 29.20FPS |
性別判定の正解率 | 80.42% | 97.21% |
年齢推定誤差 | 10.23歳 | 6.24歳 |
22.50FPS(昨年のモデル)は「映画等のフィルムのコマ数の換算。」の23.98 fpsをわずかに下回るのに対し、 29.20FPS(今回モデル)は「PAL規格のコンポジット映像信号。ヨーロッパ、オーストラリアなどのアナログテレビ放送・ビデオソフトなど。」の25 fps を大きく上回り、 さらに「NTSC規格のコンポジット映像信号。日本、北米などのアナログテレビ放送・ビデオソフトなど。」の29.97 fpsに漸近する結果になった。
今回目標として、昨年2019年のCVPRにおいて同じようにIMDB-WIKIを用いて検証を行った論文”C3AE: Exploring the Limits of Compact Model for Age Estimation“(参考文献[4])
の年齢誤差精度に匹敵するモデルの構築を目指した。この結果と年齢誤差の比較を実施すると、年齢誤差が6.44(IMDB)と6.53(WIKI)とのことから、今回作成したモデルの6.24と大きく上回る結果となり、世界一の精度に到達できたのではないかと思う
今回用いた年齢ごとのデータの分布は表3のようになっている。
年齢 | 0代 | 10代 | 20代 | 30代 | 40代 | 50代 | 60代 | 70代 | 80代 | 90代 |
画像枚数 | 12 | 352 | 1990 | 2166 | 1161 | 561 | 292 | 158 | 46 | 11 |
上表のデータ分布において、年齢ごとの精度の比較を行った。
年齢ごとの性別推定精度については、すべての年齢において、下記の表4のようになった。
年齢 | 0代 | 10代 | 20代 | 30代 | 40代 | 50代 | 60代 | 70代 | 80代 | 90代 |
昨年のモデル | 75% | 74% | 78% | 80% | 81% | 88% | 84% | 83% | 89% | 100% |
今回のモデル | 75% | 94% | 97% | 98% | 97% | 98% | 98% | 98% | 100% | 100% |
上記の表4からわかるように、すべての年齢において、同等若しくはより良い精度となった。
年齢ごとの年齢推定精度については、表5のようになった。
年齢 | 0代 | 10代 | 20代 | 30代 | 40代 | 50代 | 60代 | 70代 | 80代 | 90代 |
昨年のモデル | 18.84 | 16.55 | 10.42 | 8.64 | 9.73 | 9.32 | 11.1 | 15.9 | 22.1 | 25.04 |
今回のモデル | 8.44 | 8.23 | 4.82 | 4.58 | 6.51 | 6.80 | 11.02 | 20.46 | 29.51 | 36.37 |
上記表5を見る限り、0代~60代までの間において、大幅な改善がみられた。逆に70代以降については、サンプルデータが少ないこともあり、逆に精度が低下する結果となった。
今回、昨年作成した年齢と性別を推定するモデルについて、構造の刷新と学習データ増強により、精度と速度の大幅な改善を試みた。精度については、学習データを増やすことで、これまでのモデルで発生していた、角度や明るさによる年齢精度の極端な低下はかなり軽減され、全員が10代と表示されるような問題は解決された。70代以降の精度が悪化したことについても、今回はエントランスでの使用時の精度の問題を解決する目的であり、エントランスでの使用に限れば、70代以降の来客が少ないため、結果として、来客視点で見た場合の精度を向上することに成功した。
また速度についても、30%程度改善され、テレビ放送レベルのフレームレートに到達し、エントランスのデモ機において、1秒あたりに画面に提示可能なフレーム枚数が増加し、よりリアルタイムに年齢と性別の推定を提示することが可能となった。
上記の課題解決と速度向上に加え、トップクラスの学会であるCVPRに採択された昨年の論文の精度と比較し、年齢誤差精度の面で上回り、世界一と呼べるような精度を出すことが出来た。今回の結果については、論文投稿サイトarXivにプレプリントを投稿しており、学会投稿を予定している。(FOSS: Multi-Person Age Estimation with Focusing on Objects and Still Seeing Surroundings)また後日、そのプレプリントについて、詳細な日本語解説のコラムページを作成予定となっている。
[1]CenterNet: Keypoint Triplets for Object Detection
Kaiwen Duan, Song Bai, Lingxi Xie, Honggang Qi, Qingming Huang, Qi Tian. 2019.
[2]Mean-Variance Loss for Deep Age Estimation from a Face
Hongyu Pan, Hu Han, Shiguang Shan, Xilin Chen. 2018.
[3]TResNet: High Performance GPU-Dedicated Architecture
Tal Ridnik, Hussam Lawen, Asaf Noy, Emanuel Ben Baruch, Gilad Sharir, Itamar Friedman. 2020.
[4]C3AE: Exploring the Limits of Compact Model for Age Estimation
Chao Zhang, Shuaicheng Liu, Xun Xu, Ce Zhu. 2019.