2023.3.16

顔認証AIの学習用データの元になる顔写真を集める

技術

SCROLL DOWN SCROLL DOWN SCROLL DOWN

こんにちは!AIサービス開発室の鈴木生雄です。先日3/12に名古屋シティマラソンに参加してきました。報道によるとハーフと10kmの両方の部門合わせて約8,300人が参加したようです。私はハーフの部門に出場して1:39:25で完走しました。記録については自己ベストではないものの、実力通りのタイムが出せたと思います。課題は15km過ぎたくらいから極端に足が重くなることです。明らかに心肺能力の問題ではなく脚力の問題と感じているので、練習での走行距離を増やすこととスクワットをメニューに加えることで記録の向上を目指します。やはりこういうイベントがあるとテンションが上がりますね。コロナの影響でここ数年開催がなかったスポーツイベントの多くが集客に苦戦しているようですが、盛り上がってほしいと思います。

さて、今回は「顔認証AIの学習用データの元になる顔写真を集める」をテーマに据えて、当社で開始した取組についてご紹介したいと思います。以前に、顔認証のDNNに学習させる①顔認証のDNNに学習させる② のエントリーで投稿したとおり、当社では顔認証AIの開発をしています。その際の課題として学習用データの元になる顔写真をいかにして大量に集めるかということがありました。この点について、NECフェローの今岡氏が書かれた 顔認証の教科書 には、一人のあたりに1時間近くかけて100枚から200枚の写真を撮影したという記載がありました。被写体となる人に、少し笑ってもらったり、眼鏡をかけてもらったり、角度を変えたりというふうにして、いろいろなバージョンを撮影するとそのような時間と枚数になるのだそうです。顔認証の世界のトップランナーともなるとそれくらいコストをかけて学習用データを作っているということです。しかし、さすがに今の当社はその域にはありませんので、まずはバリエーションにこだわらずできるだけたくさんの顔写真を集めることにしました。

社員に対するスナップ写真の提供お願い

できるだけたくさんの顔写真を集めるために、私たちAIサービス開発室は、当社の全社員に対してプライベートで撮影したスナップ写真の提供をお願いをすることにしました。この方法をで写真を集めようと思った理由は二つあります。一つは比較的取り掛かかりやすいから、もう一つは社員のみんなと一緒に顔認証AIを育てるというスキームを作ることにより、この事業を社員全員の夢にしたいと思ったからです。後者については、経営理念 の中に全員経営を挙げている当社らしさにもつながるところがあると思っています。

写真収集アプリのリリース

前述のような経緯があって、写真をアップロードするWebアプリ(以降、写真収集アプリと言う)を社内向けにリリースして、3/11より顔写真の収集を開始しました。(注意:社内向けリリースのため現在のところ社員以外の方は利用できません。)

画面イメージ

写真収集アプリは2画面から成るとてもシンプルなWebアプリケーションです。

トップページでは、当社で開発中の顔認証AI(=顔検出AI+顔照合AI)の性能指標を表示しています。社員のみなさんに顔写真をたくさん提供してもらえれば学習用のデータが増やせるので、結果として顔認証AIの性能を高めることが期待できます。今後、AIの学習を進める中で、その成長過程を数値で共有できるようになっています。

図1:トップページ

アップロードページでは、利用規約とアップロードのための入力フォームを配置しています。ファイルを選択して[アップロード]ボタンを押すだけの簡単操作で写真をアップロードしてもらえます。

図2:アップロードページ

アーキテクチャ

写真収集アプリは Microsoft Azure のいくつかのサービスを組み合わせて構築しました。工夫した点としては、① Azure Active Directory (Azure AD)による認証機能の実現と② サーバーレス方式によるアップロード機能の実現の二つがあります。

① Azure ADによる認証機能の実現

写真収集アプリは、アプリ自体に認証機能を持っていません。代わりにAzure ADの認証サービスを利用しています。認証機能はスクラッチで作成するとそれなりに工数がかかるものですが、今回は用意されたサービスを利用することでその工数を削減することができました。

② サーバーレス方式によるアップロード機能の実現

写真収集アプリは、仮想サーバーを立ち上げる方法ではなく、Azure Blob Storage上にSPA(Single Page Application)は配置する方法で稼働させています。利用者が同SPAにアクセスすると以降同SPAは利用者のブラウザで動作します。そして、利用者によってファイルアップロードのボタンが押された場合にのみ Azure Functions のプログラムを起動してファイルのアップロードを開始します。このようにアップロード処理を行う時にだけクラウド上のプログラムを動作させる、いわゆるサーバーレス方式にすることで、仮想サーバーを常時起動する方法に比べてランニングコストを抑えることができました。

上記で登場した技術スタックを図に表すと以下のようになります。

図3:写真収集アプリ技術スタック

まとめ

本エントリーでは、顔認証AIの学習用データと元になる顔写真を集めるため取組とそのために開発した写真収集アプリについて説明しました。当社において顔認証AIの開発は、今はまだ緒に就いたばかりといったところですが、この先は全社員の協力も得て加速していきます。次回以降のいつかに、今回のエントリーの続きとして、収集した写真を加工してAIに学習させる仕組みについてのエントリーを投稿したいと思っています。どうぞご期待ください。