Apple が私たち全員にちょっとした秘密を明かしました。それは、ディープラーニング ベースの顔検出ソフトウェアが iOS 10 以降でどのように機能するかということです。
クパチーノを拠点とするこの巨大企業は、今週公開されたブログ記事で、自社のアルゴリズムの動作についてかなり詳細に説明した。同社は、そのコードがニューヨーク大学の研究者によって開発されたモデル「OverFeat」に基づいていることを明らかにした。これは、深層畳み込みニューラルネットワーク(DCN)に画像内の物体を分類、位置特定、検出する能力を学習させるものだ。
この機能は、バイナリ分類器を使用して画像内のどこかに顔が存在するかどうかを検出し、境界ボックス回帰ネットワークを使用してスナップ内の顔の位置を特定する実際の作業を実行し、たとえばアプリでタグ付けできるようにします。
画像は特徴抽出器に通されて形状と部分に分解され、バイナリ分類器と回帰器に渡されて処理されます。
分類器を学習させるため、ソフトウェアには、顔が写っていない、写真の背景によく見られるものの大量の写真(ネガティブクラス)と、人間の顔が写っている様々な写真(ポジティブクラス)が提示されました。課題は、写真に少なくとも一人の人物の顔が含まれているかどうかをソフトウェアが自信を持って判断できるように学習させることでした。
一方、回帰モデルには、写真上の顔をバウンディングボックスでマークする方法が学習されました。このソフトウェアは、1枚の画像から複数の顔を検出することが可能でした。
特徴抽出システムが分類器と回帰器にどのように入力されるか...出典: Apple
ディープラーニングアルゴリズムは、今日の比較的高性能なモバイルプロセッサやコプロセッサでさえ、膨大な計算量を必要とする場合があります。AppleのシステムのDCNは複数のコンポーネントで構成されており、中には20層を超えるニューラルネットワーク層を持つものもあり、バッテリー駆動のiThingにこれだけの専門知識を詰め込むのは容易ではありません。
そこでAppleは、携帯端末やフォンドルスラブ上で顔検出を実行するために必要なリソースを削減するため、教師と生徒の学習手法を採用しました。基本的には、教師モデルを開発し、より高性能なコンピュータで学習させます。その後、より小規模な生徒モデルを学習させ、与えられた入力セットに対して教師モデルと同じ出力を生成するようにします。
小型の生徒モデルは速度とメモリを最適化し、iOS端末に詰め込むことができます。その結果、各レイヤーの処理に1ミリ秒もかからず、瞬時に顔認識が可能になるそうです。
「これらすべての戦略を組み合わせることで、ユーザーは自分の携帯電話が毎秒数百ギガフロップスのニューラルネットワークを実行していることを意識することなく、ローカルで低遅延のプライベートなディープラーニング推論を利用できるようになります」とアップルは誇らしげに語った。
iGiantの兵器級の秘密主義は、学術界のオープンな性質を好む機械学習の専門家の採用を阻んでいます。今週のブログ投稿は、もう少しオープンになり、新たな才能を引きつけようとする試みです。
全体として、このドキュメントはAppleの顔検出ソフトウェアの仕組みを分かりやすく説明しています。ブログ記事で参照されている学術論文と比較すると、DCNの具体的な詳細については触れられていません。アプリケーションプログラマーは、Vision APIを介してiThingsの顔検出システムにアクセスできます。®
編集者注:この記事は公開後に修正され、記載されている技術はAppleの顔検出APIであり、当初報じられたFace IDのセキュリティメカニズムではないことが明確になりました。Face IDは、iPhone Xに搭載されている赤外線センサーを用いてデバイス所有者を識別・認証する別の技術です。この違いを明確にさせていただきます。