この記事では、ARMベースのAI/IoTデバイスを使用して顔認証用デバイスを構築する上で考慮すべき重要事項についてご案内します。
まず、ARMベースのAI/IoTデバイスの定義ですが、AI/IoTデバイスはインターネットに接続され、AIアルゴリズムを実行してタスクを処理するデバイスを意味します。デバイスの内部には、ARMベースのSOC(Systems-on-a-chip)またはSOM(Systems-on-a-module)があり、これらは一般的な処理を行うCPUと、高速化用のGPUを備えています。また多くのAI/IoTベンダーは、AIアプリケーションを(クラウドサーバーではなく)エッジでより効率よく実行できるように、APU(AI Processing Unit)またはNPU(Neural Processing Unit)をSOC/SOMに搭載しています。
ARMベースのデバイスはエネルギー効率が高く、x64コンピューターよりもはるかに低消費電力です。ARMプロセッサーは、シンエッジベースのAI/IoTデバイス、キオスク端末、産業タブレット、デジタルサイネージ、ウェアラブルデバイス、モバイルデバイスなどでよく使用されています。
AI/IoTデバイスの主要な使用例をご紹介しましたので、次は顔認証用のAI/IoTデバイスを構築する際に考慮すべき事項についてご案内します。用途や環境などによって、必要とされるAI/IoTデバイスの仕様は異なってくるため、パフォーマンス、コスト、消費電力などの様々な要素を考慮する必要があります。
パフォーマンスの要件を決定するためには、まず、デバイスが何に使用されるかを明確にする必要があります。顔認証によって何を行いたいか、タスクがどれほど複雑になるかを考慮しなければなりません。また、1秒間にどれだけの顔を検出して識別する必要があるかどうかを検討する必要があります。想定されるのは、一度に1つの顔を識別する必要のある用途でしょうか?それとも複数の顔を同時に識別する必要のある用途でしょうか?一例として、スマートロックによるドアアクセス制御では、ドアの目の前に立っている人物の顔のみを識別すればいいので、一度に1つの顔を識別するだけでよく、負荷が比較的低い軽量AIモデルで十分です。このような用途では、FaceMe® のH(高精度)モデルが適しています。しかし、ショッピングモールの入口など、多くの人が行き交う場所にカメラを設置し、ブラックリストに登録された人物を特定したい場合などは、より多くの処理能力が必要となります。
また、用途において個人の識別が必要なのか、あるいは単に統計情報を収集したいだけなのかを判断する必要があります。例えば、デジタルサイネージなどでは、年齢や性別などの統計情報のみを識別するだけでいい場合も多いため、このような場合に必要とされる処理能力は比較的低くて済みます。しかし、顔認証と個人の識別を行う必要がある場合は、より高い処理能力が必要となります。
一般的に、AI/IoTデバイスに必要な処理能力が高いほど、コストも高くなります。したがって、AIおよび顔認証プロジェクトにおいてコストが重要な考慮事項である場合は、パフォーマンス要件を考慮する必要があります。
NVIDIA、Intel、Qualcommなどのチップベンダーは、性能や装備するインターフェース(Wi-Fi、HDMI、USBなど)に応じて、複数の価格ラインの製品ラインナップを提供しています。例えば、NVIDIA Jetsonソリューションは、優れたパフォーマンスで人気の高いチップセットですが、そのぶんコストも比較的高価です。
フォームファクターについて考える際は、サイズを考慮するべきです。ドアに内蔵する必要のあるスマートロックなど、AI/IoTデバイスを特定の寸法内に納める必要がある場合、サイズは大きな制限事項となります。また、デジタルサイネージなど大型ディスプレイが必要な用途では、AI/IoTデバイスとは別に、ディスプレイ用の電源装置も含めたサイズの検討が必要となります。
パフォーマンスと消費電力は密接に関わっています。一般的に、デバイスのパフォーマンスが高ければ高いほど、より多くの電力を消費します。ただし、ビジョンテクノロジーとAIアルゴリズムを専用チップによって高速化することにより、電力効率を向上させることもできます。
例えば、APU(AI Processing Unit)を追加したMediaTek i350チップセットでは、APUとNeuroPilotプラットフォームが連携して動作し、消費電力を抑えながらAIアルゴリズムのパフォーマンスを向上させています。汎用CPUの命令セットと比較すると、APUは、コンピュータービジョンAIアルゴリズムの画像処理で一般的に使用される、複数のデータポイントの積和演算などの大規模な並列データ処理の効率が大きく向上しています。
MediaTek Pumpkin 開発者向けボード
出典: MediaTek
顔認証用に使用される最も一般的な4つのAI/IoTデバイス構成を、パフォーマンスとコストの順にご紹介します。
Jetsonは、NVIDIAによって2014年にJetson TXとして最初にリリースされました。以来、NVIDIAは数世代にわたって製品を急速に発展させてきました。最新世代の製品はJetson Xavier NXで、AI推論のパフォーマンス、消費電力、コストのバランスに優れています。そして次世代モデルのJatson Orinは2022年末までに市場に出回るでしょう。Jetsonプラットフォームは、他のアプリケーションとともに、一度に複数のビデオ入力を処理して顔認証を実行することができます。デバイスで一度に複数のタスクを実行する必要がある場合、Jetsonは最適な選択肢です。
NVIDIAはCUDA、TensorRT、DeepStreamなどのツールとSDKを提供しており、現在市場で入手可能なプラットフォームの中でも成熟度は群を抜いています。これらのツールによってAIアルゴリズムをスムーズに実行できるようになるため、Jetsonを使用して顔認証を容易に実装することができます。また、NVIDIAは、開発パッケージであるJetPackを提供しており、これにはUbuntuのカスタマイズバージョンと、必要なすべてのツールチェーン、およびライブラリが含まれています。
FaceMe® のVH(Very High)モデルを使用したテストでは、Jetson Xavier NXを使用して、1秒間に約72枚の画像に対して顔認証を実行しています。(画像解像度:1080p、1画像あたり1つの顔がある場合)
Jetsonデバイスはサイズも非常に小さく、フォームファクターは5インチ四方で、消費電力10W未満のミニPCと同等のサイズです。ただし、これらのデバイスは比較的高価でもあります。
NVIDIA Jetsonファミリー
出典: NVIDIA
Qualcommは、Snapdragonシリーズのようなスマートフォンやタブレット向けの製品から、QCS410/610のようなAI/IoTエッジ製品に至るまで、幅広いSOCを提供しています。AIアルゴリズムをSOC上のGPUまたはDSPチップで実行できるようにするQualcomm Neutral Processing SDK(SNPE)によって、AIアルゴリズムと顔認証の実行速度を向上させることのできる、最も優れたプラットフォームの一つです。
Snapdragon 660を搭載したAdvantechの産業Androidタブレットを使用したテストでは、AIアルゴリズムをSNPEによりGPUで実行することによって、エンドツーエンドの顔認証処理時間が約40%短縮され、CPU使用率も約64%低減しました。FaceMe® のVHモデルを使用した場合は1秒間で約16枚、Hモデルを使用した場合は1秒間で約24枚の画像に対し顔認証を実行しています。(画像解像度:720p、1画像あたり1つの顔がある場合)
MediaTek i350は、コストパフォーマンスに非常に優れたAI/IoTデバイス向けのチップセットです。POS端末、スマートロック、産業タブレット、スマート家電、フィットネス機器に装備されたディスプレイパネルなど、様々なタッチスクリーンデバイスでの使用に適しています。またMediaTekは、中小メーカー向けにスマートフォンソリューションを提供していることでも知られています。SDK、サンプルコード、ツールが提供されているため、誰でも容易に独自のアプリケーションを構築できます。i350はAndroidとUbuntuの両方をサポートしています。
MediaTek i350を使用したテストでは、FaceMe® のVHモデルを使用した場合は1秒間で約8枚、Hモデルを使用した場合は1秒間で約18枚の画像に対して顔認証を実行しています。(画像解像度:720p、1画像あたり1つの顔がある場合)
NXP Semiconductorsは、セキュリティ、認証、自動車、ネットワーク、ラジオ、電力などの幅広い分野向けに製品を提供しています。NXP i.MX8M Plusは、現在試作段階にある製品で、2021年初頭に登場する予定です。NXPによるSOCにNPUを組み込んだ初の製品で、これにより、AIアルゴリズムが効果的に高速化されるとともに、AIアプリケーションを実行する際のCPU負荷を低減させることができます。
NXPのチップセットでAPUをサポートするために、TensorFlow Liteフレームワークと推論エンジンが使用されています。TensorFlow Liteはオープンソースプロジェクトで、主にGoogleによって開発されており、多くのAIアプリケーションで使用されている、機能が豊富かつ安定、成熟したプラットフォームです。i.MX8M Plusは、多くのAIアプリケーションをプラットフォームに移植するのに最適です。
i.MX8M Plusを使用したテストでは、FaceMe® のVHモデルを使用した場合は1秒間で約5枚、Hモデルを使用した場合は1秒間で約6.3枚の画像に対して顔認証を実行しています。(画像解像度:720p、1画像あたり1つの顔がある場合)
以下の表は、各プラットフォームのパフォーマンスをまとめたものです。
* 画像1枚あたり1つの顔がある場合
顔認証用AI/IoTデバイスで使用される最も一般的なオペレーティングシステムとして、Linux(Ubuntu、Debian)とAndroidの2つがあります。どちらのOSが適切かを判断するためには、顔認証の用途とニーズを考慮することが重要です。FaceMe® は、最も幅広い用途に対応した顔認証エンジンの一つであり、Linux、Ubuntu、Redhat、CentOS、Android、iOS、Windowsなどの10種類以上のOSをサポートしています。LinuxとAndroidの主な違いは次の通りです。
Linuxはカスタマイズが可能で柔軟性に優れています。用途に合わせてOSのコンポーネントをカスタマイズすることで、システムを可能な限りスリムにすることができます。不要なサービスを容易に削除できるため、ソフトウェアをより高速に実行するとともに、消費電力を節約することができます。Ubuntuは最も人気のあるLinuxディストリビューションの一つで、エッジデバイスからクラウドサーバーに至るまで幅広く使用されています。Ubuntu Linuxは、基盤となるテクノロジーを最新の状態に保つため、最大5年間のサポートが提供される長期サポートバージョン(LTS)を約2年ごとにリリースしています。オープンソースであることから、豊富なコードライブラリのセットが使用可能で、プロジェクトの開発を大幅にスピードアップすることができます。
AndroidはGoogleによって開発されており、そのカーネルはLinuxのカスタマイズバージョンをベースとしています。スマートフォンやタブレットでは最も一般的なOSです。Androidは開発者によって使いやすいソリューションであり、多くのAI/IoTデバイスに適したOSといえます。Androidツールチェーン、IDE(Android Studio)、SDKなどの充実したツールにより、容易に開発を行うことができます。プロフェッショナルツールは無料で使用可能です。Androidアプリケーションは、Javaプログラミング言語で開発されることが多く、C++と比較して、リソースやメモリのコーディングと管理がはるかに容易です。また、C++で記述されたコンポーネントのJavaプログラムへの統合もサポートされているため、両方の言語においてメリットを得ることができます。
顔認証用のシステムを構築する際に使用できるAI/IoTデバイスの構成は数多くありますが、選択に際して難しく考える必要はありません。どの構成を選択するかを評価する場合、まず顔認証の用途を理解することが非常に重要です。次に、パフォーマンス、フォームファクター、拡張性、および予算などの要件について考えていきます。
用途に適した構成ができたら、アプリケーションを導入して実際に使用し始める前に、実証実験(POC)を実施することをおすすめします。実証実験によって、本稼働の前に改善する必要がある点を洗い出し、調整することができます。