組み込みAIによる顔認証・表情認識アプリを使ってみよう

Snapdragon 820eで顔認証・表情認識

顔認証・表情認識アプリケーションは、コンスーマ製品をはじめ、世界中で利用されているデジタルサイネージなどに搭載される、AIを象徴するアプリケーションのひとつです。こうしたアプリケーションには、情報を手元で解析する「エッジコンピューティング」が採用されています。ネットワークの影響を受けることのないエッジコンピューティングは、たとえ動画のような大きなデータであってもリアルタイムに解析できます。

VIAは、これら組み込みAIに最適なエッジコンピューティング用ボードをSOM(System-On-Module)として提供しています。今回は、SOMによって実現できるAIアプリケーションの例と、その利用方法を紹介いたします。AIアプリケーションの使い方マニュアルとしても、お役立てください。

VIA SOM-9X20(後述)の実力を、組み込みAIによる顔認証・表情認識のサンプル・アプリケーションを冒頭の動画でご紹介しました。4K映像の中から、顔を抽出し、男女推定、年齢推定、個人の特定をリアルタイムに解析、4Kディスプレイに出力します。まさにサイネージなどに最適なハードウェアと言えるでしょう。また、全ての処理がエッジデバイス上で完結していることから、ネットワークやサーバを必要としないことも、大きな魅力です。

Snapdragon 820eを搭載したSOM

VIA SOM-9X20は、小型で高性能なエッジコンピューティング用ボードです。そのまま製品に組み込むことのできる高い品質はもとより、手軽さと使いやすさが特長となっています。必要なハードウェアとソフトウェアをすべてワンストップで入手できるため、簡単に製品開発を始めることができます。
SOM-9X20

メインのSoCにはSnapdragon 820eを採用。内蔵GPUは、AI処理や3D/2Dグラフィクス処理など、高い演算性能を求めるアプリケーションの実行に最適です。Snapdragon 820eは、産業用途向けデバイスのため、長期供給が保証された安心の産業向けAIアプリケーション実行環境です。

図

ハードウェアの構成(サンプルアプリケーション)

SOM-9X20はPC互換のインタフェースを搭載しているため、HDMIディスプレイ、USBマウス、USBキーボードを簡単に接続できます。今回のデモでは、下記のハードウェア構成を利用しています。MIPI接続の4Kカメラにより室内を撮影、認識結果をHDMIにて4Kディスプレイへと出力。MIPI接続カメラにはVIA Edge AI Developer Kitに同梱されている「VT6093-CAM-T」を利用しました。操作用には、市販のUSBキーボードとUSBマウスを接続しています。

図

SOM-9X20の開封から、アプリケーション実行までの手順

SOM-9X20の魅力は、ハードウェアの特長だけでなく、使いやすい開発環境一式を簡単に入手できることもポイントです。SOM-9X20の開発環境の構築から、OSの準備、アプリケーションのインストールと実行までの流れを紹介いたします。

開発用PCを準備する

開発用PCとしてLinux PCが必要となります。ここでは、Ubuntu 16.04 LTS(ubuntu-16.04.5-desktop-amd64.iso)をインストールしたノートPCを開発用PCとした手順を掲載しています。

開発ツールをダウンロードする

まず、Linux上のWebブラウザで、開発ツールをダウンロードします。Androidを含むBSP(Boot-Support-Package)と、Android用アプリケーション開発ツールであるEVKを、VIA SOM-9X20のWebページから入手しましょう。2018年9月現在、最新のBSP v2.1.4にはEVKも同梱されているため、本手順はBSPのzipファイルを中心に進めた手順となります。最新のバージョンに対応する手順は、zip内Documents以下のPDFのマニュアルをご参照ください。

  • Android 8.0 BSP v2.1.4
  • Android 8.0 EVK v2.1.4

図

図

ZIPアーカイブを解凍する

開発用PCにダウンロードしたzipアーカイブを解凍し、内容を確認しましょう。

$ cd ~/
$ ls 
SOM-9X20_Android_8.0_BSP_V2.1.4_20180831.zip
$ unzip SOM-9X20_Android_8.0_BSP_V2.1.4_20180831
$ cd ~/SOM-9X20_Android_8.0_BSP_V2.1.4_20180831

以下2つのファイルが含まれています。

  • Firmware/VT6093_Android8.0_EVK_v2.1.4_180608.tgz
  • Sourcecode/VT6093_Android8.0_BSP_v2.1.4_180608.tgz

開発に必要なパッケージをインストールする

次に、Linux上でBSP/EVKを利用するために必要なパッケージをインストールします。

●BSP用:リポジトリから必要なツールをダウンロード

$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1gdev
gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev
lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

●BSP用:GoogleAPIレポジトリへの接続を準備する

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ sudo apt-get install git
$ git config --global user.name “Your Name”
$ git confit --global user.email “you@example.com”

●EVK用:リポジトリから必要なツールをダウンロード

$ sudo apt-get install android-tools-adb
$ sudo apt-get install android-tools-fastboot

●環境変数を設定

$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
$ export CLASSPATH=.:$JAVA_HOME/bin
$ export PATH=$CLASSPATH:$PATH

以上で、開発用PCが準備できました。

Android8.0をビルドする

それでは、VIA SOM-9X20用Android8.0をビルドしていきましょう。VT6093_Android8.0_BSP_v2.1.4_180608.tgzを使います。

●Android OSビルド用tgzファイルを展開し、スクリプトへ実行属性を追加

$ cd ~/SOM-9X20_Android_8.0_BSP_V2.1.4_20180831
$ cd ./Sourcecode
$ tar -zxvf ./VT6093_Android8.0_BSP_v2.1.4_180608.tgz
$ cd ./BSP/Software/Android
$ chmod a+x ./download_sync_build.sh

●Android OSのビルドを開始します。初回のビルドはCore i3-7100UのノートPCで8時間程かかりました。

$ ./download_sync_build.sh vt6093_8.0.0 yes yes
…
=====================================================
 ====== Build BSP Done - otapackage ==================
 =====================================================
 Notes: Below commands can be used to build the source
 cd /home/ins/SOM-9X20_Android_8.0_BSP_V2.1.4_20180831/Sourcecode/BSP/Software/Android/vt6093_8.0.0_release
 source build/envsetup.sh
 lunch vt6093-userdebug
 make -j4

ビルド完了メッセージの後、Android OSのバイナリファイルとして、下記のimgファイルが生成されます。

$ ls ./vt6093_8.0.0_release/out/target/product/vt6093/
boot.img cache.img recovery.img system.img userdata.img system.img vendor.img

SOMにAndroid8.0をインストールする

続いて、VIA SOM-9X20へAndroid OSをインストールしましょう。VT6093_Android8.0_EVK_v2.1.4_180608.tgzを使います。

●EVKのtgzファイルを展開し、スクリプトへ実行属性を追加

$ cd ~/SOM-9X20_Android_8.0_BSP_V2.1.4_20180831
$ cd ./Firmware
$ tar -zxvf ./VT6093_Android8.0_EVK_v2.1.4_180608.tgz
$ cd ./EVK/FirmwareInstall/
$ cp bspinst/fastboot_bspinst_ufs.sh . -rfv
$ chmod +x fastboot_bspinst_ufs.sh

OSイメージを作業ディレクトリにコピーする

OSイメージを、bspinstディレクトリへコピーします。

$ cp ~/SOM-9X20_Android_8.0_BSP_V2.1.4_20180831/Sourcecode/vt6093_8.0.0_release/out/target/product/vt6093/*.img bspinst/ -rfv

SOMと開発用PCを接続し、インストールモードで起動する

SOMの電源をOFFにした後に、背面のブートモード選択スイッチ(BOOT1)にて 「UFSモード[OFF,OFF,ON,OFF]」 を選択します。

図

SOMのMicro USB 2.0 OTGコネクタと、開発用PCを、Micro USBケーブル(別売)で接続します。

図

SOMのVolume Downボタンを押したまま、Powerボタンを押してSOMの電源を投入し、以下のようにVIAのロゴが表示されたら両方のボタンを離します。この状態がOSインストールモードです。SOMが開発用PCからの操作を待っている状態です。

図

開発用PCとSOMの接続は、開発用PC上の「dmesg」や「fastboot」コマンドを使って確認できます。

●dmesgコマンドで表示できるSOMの接続情報

$ sudo dmesg -c
[66724.112486] usb 1-3: new high-speed USB device number 9 using xhci_hcd
[66724.277813] usb 1-3: unable to get BOS descriptor
[66724.278448] usb 1-3: New USB device found, idVendor=18d1, idProduct=d00d
[66724.278453] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[66724.278457] usb 1-3: Product: Android
[66724.278461] usb 1-3: Manufacturer: Google
[66724.278464] usb 1-3: SerialNumber: 19db0efa

●fastbootコマンドで表示できるSOMの接続情報

$ sudo fastboot devices
19db0efa  fastboot

開発用PC上でAndroidのインストールを実行します。完了すると、SOMのHDMIにAndroidのデスクトップ画面が表示されます。

$ sudo ./fastboot_bspinst_ufs
…
finished. total time: 0.018s
rebooting...
finished. total time: 0.064s
$ 

これでAndroidのインストールは完了となります。

アプリケーションをインストールする

最後に、apk(Android-application-PacKage)形式にコンパイル済みの、顔認証・表情認証アプリケーションをインストールします。ソースコードからのコンパイル手順は、次回以降に紹介いたします。USBメモリに下記のファイルを格納し、SOMのUSBポートへ接続します。File BrowserでUSBメモリを開き、インストール対象のapkファイル2個をクリック、Installを選択しインストールします。

  • VIAFace_1.0.08.0830-J.apk
  • config_app_v3.0_apk

顔認証アプリケーションの設定

VIA Secure ID Configアプリケーションを開き、顔認証の設定を行います。UPDATEボタンで設定を保存します。

フィールド 設定内容 設定値
Camera カメラの選択 Camera2
ID 顔認証 ON
最小 Cameraとの距離 [10-60] 10
閾値 人物判定閾値 0.6
Emotion 表情認識 ON
Age 世代推定 ON
Gender 男女推定 ON
Socket comm 顔認識時間[ms] 1000
GroupSet 顔認証登録グループ DefaultGroup

組み込みAIアプリケーションを実行する

以上で、全ての準備が整いました。VIA Secure IDを実行すると顔認証・表情認識が開始されます。是非、SOMの実力をお試しください!

様々なAIアプリケーションをSOMで実行してみよう

このように、VIAのSOMを使うことで、簡単に、品質の高いAI実行環境を構築できます。汎用PCで課題となるハードウェア選定作業や、対応OSや個々のハードウェアドライバを探す作業がないため、より早く製品開発に着手できることもVIAのSOMならではの魅力です。

今回は、顔認証・表情認識アプリケーションを実行する手順を紹介しました。次回は、実際にアプリケーションを開発する方法を紹介いたします。今回の手順とあわせて、是非お手元でお試しください。