組み込みAI開発初心者でも、簡単に使える開発環境を手順付きで紹介

組み込みAIの開発環境とは?

今回は、はじめての組み込みAI開発でも安心して利用できる開発環境を紹介いたします。

開発環境の選択は、組み込みAI開発の難易度に大きく影響します。例えば、学術分野などで人気の高いアドバンスドな開発環境では、高度な設計を可能にする機能が揃っているため、ADAS(先進運転支援システム)など、最先端のAIアプリケーションを実現することができます。

一方で、こうした開発環境を利用する場合、すべての要素技術について広い理解が必要となるため、開発を立ち上げるための工数は大きくなります。はじめて組み込みAIを開発したい、手早く新しいサービスをリリースしたい、といった場合には、簡単にサンプルコードが入手でき、直ぐに動きを見ることができる開発環境を選択したほうが良いでしょう。

今回は、VIA SOM-9X20上で動作する組み込みAIアプリケーションの開発手順を通して、簡単に使い始めることのできる組み込みAI開発環境を紹介いたします。本手順は、実際に手元で試していただける内容となっています。はじめて組み込みAIを開発される方はもちろん、効率的な開発が実現できず困っている方も、是非ご活用ください。

▼目次

組み込みAI開発の全体像を理解しよう

それではまず、組み込みAI開発について、考えてみましょう。

組み込みシステム開発と組み込みAI開発

組み込みシステム開発とは

IoTやスマートデバイスにより、組み込みシステムの開発は非常に身近なモノとなりました。組み込みシステム開発の面白いところは、小型で高性能なハードウェアプラットフォームを思う存分活用できることや、Androidを利用しグラフィカルなインタフェースをデザインできること、世界のどこかで生み出された高機能なライブラリを利用することで手間を掛けずに自分だけのサービスの創出ができる、といったところでしょう(図1)。

図
図1:組み込みシステムの開発

組み込みAI開発とは

一方、難しいと思われている組み込みAIの開発ですが、実は組み込みシステム開発とほぼ同じ工程で実現できます。唯一の違いといえば、アプリケーションに搭載する機能をAIに設計させることだけです。AI技術を活用することにより、コンピュータの力を借りて、人間が考える以上に最良のルールやパラメータをもった機能を設計できます。これにより、高精度な認証、認識、予知などの機能を新しいサービスに取り込み、より良いサービスや製品を実現できます(図2)。

図
図2:組み込みAIの開発

組み込みAIの開発環境を導入するには

次に、組み込みシステムの開発環境にAIを取り入れる方法を見ていきましょう。その方法は、大別すると3種類であり、ライブラリ型AI、オープンソース型AI、フルスクラッチ型AIになります(図3)。

図
図3:組み込みAIを導入する方法

ライブラリ型AIを利用する

最も簡単に組み込みAIを実現する方法は、ライブラリ型AIを活用することです。今回、後半で紹介するVIA SOM-9X20の開発環境は、ライブラリ型AIを利用できる開発環境です。

さまざまなベンダーがAIの学習に必要なデータを準備し、AIを活用することで、最適化した機能ライブラリを生成。ユーザは提供されたライブラリを利用することにより、AIが最適化した機能を、自身のアプリケーションに取り込むことができます。

また、ベンダーが設計したハードウェアに最適な実装も含まれているため、ユーザは簡単に高性能なハードウェアの恩恵を受けることができます。さらに、ユーザは、AIの学習に必要となるビッグデータ(学習データ)を扱う必要がないため、こうしたデータの収集・管理コストを削減できるメリットもあります。

フルスクラッチ型AIとオープンソース型AIを利用する

これに対して、フルスクラッチ型AIは、全開発工程を自社で開発する設計方法です。全てを自社で手がけることにより、自動運転などの未来の技術を設計できますが、高度なアルゴリズムの検討やビッグデータを管理・運用が必要となるため、莫大な開発リソースや、膨大な検証リソースが必要となります。

また、これらの中間に位置するオープンソース型AIは、ベンダーが提供したアプリケーションのサンプルを利用することにより、ゼロからAIを設計することなく、ユーザ自身でカスタマイズも可能です。ただし、AIの学習はユーザが行う必要があるため、ビッグデータの管理コストや、開発リソース、検証リソースが必要となります。

組み込みAI開発を簡単にスタートできるVIA SOM-9X20を利用してみよう

VIA SOM-9X20を利用することにより、顔認証をはじめとする、AIによって最適化されたライブラリ(ライブラリ型AI)を利用することができます。さまざまな機能のライブラリが用意、追加されているため、多彩な組み込みAIを開発できます。今回は、こうしたライブラリのひとつである、ViaFaceSDKと、ViaFaceSDKを利用した組み込みAIの開発方法を紹介いたします。

顔認証・表情認識ソフトウェア

ViaFaceSDK(顔認証・表情認識のためのSDK)

ViaFaceSDKは、顔認証・表情認識用のSDK(ソフトウェア開発キット)です。ライブラリが下記の機能を提供しているため、ユーザは簡単に高精度な顔認証・表情認識をアプリケーションに開発できます。また、SOM-9X20に搭載されたSnapDragon 820eのGPUに最適化された実装を内蔵しているため、ハードウェアの最大性能も簡単に体感いただけます。

ライブラリの機能 概要 API
顔位置の特定 画像中に顔が含まれている位置を特定します。 extract
データベースへ顔画像を登録 顔画像をデータベースへ登録します。 addFace, delFace
データベースを利用した顔照合 検出した顔がデータベースに含まれているか照合します。 extract
性別の推定 顔から性別を推定します。 extract
年齢の推定 顔から年齢を推定します。 extract
表情の認識 顔から表情を認識します。 extract
距離の推定 カメラと顔の間の距離を推定します。 extract

viaFaceDemo(顔認証・表情認識をするサンプルアプリケーション)

今回、開発手順を紹介するviaFaceDemoは、ViaFaceSDKを利用した顔認証・表情認識のサンプルアプリケーションです。本講座では、viaFaceDemo v1.01(2018年10月現在の最新版)の仕様を紹介しています。viaFaceDemoの異なるバージョンに関する仕様や動作の詳細については、サンプルアプリケーションの入手元へお問い合わせください。

主な機能はDetection.javaとDraw.javaに実装されています。Detection.javaは、ViaFaceSDK(viaFace-release.aar:Androidライブラリ形式)を参照し、組み込みAIの機能を利用します。Draw.javaは、SOMのディスプレイを利用して、アプリケーションの表示機能を実現しています。

処理の概要を図4に記載します。まず、Detection.javaは、アプリケーション起動時に組み込みAI機能をinit APIにより初期化します。次に、定期処理を行うProcessThreadを開始します。ProcessThreadは定期的に起動し、ViaFaceSDKのextract APIを利用してカメラ画像を解析する機能です。ProcessThreadは、解析結果をDraw.javaへ通知します。最後に、Draw.javaが解析結果とカメラ動画を合成することにより、顔認証・表情認識アプリケーションを実現しています。

図
図4:viaFaceDemoの動作概要

組み込みAIアプリケーションを開発しよう

それでは、組み込みAIの開発をはじめましょう。VIA SOM-9X20のサポートOSであるAndroid 8.0のアプリケーションを開発します。Androidは、グラフィカルな組み込みシステムの開発に最適なOSです。はじめてAndroidを触る方にも親しんでいただけるよう、すべての手順を掲載しました。是非、お試しください。

Android Studioの開発環境を準備する

今回も開発用PCにはUbuntu 16.04 LTSをインストールしたPCを利用します。まず、開発用PCにAndroidアプリケーション開発環境である、Android Studioをインストールします。

Android Studioのダウンロード

Android StudioはGoogleから提供されています。ダウンロードページから、Linux版のAndroid Studioを入手します。今回はandroid-studio-ide-181.5014246-linux.zipを入手しました。

図
図5:Android Studioのダウンロードページ

Android Studioのインストール

ダウンロードしたzipファイルを展開し、/usr/local以下に格納します。

$ unzip android-studio-ide-181.5014246-linux.zip
$ sudo mv android-studio /usr/local/android-studio
$ sudo chmod 777 /usr/local/android-studio
$ export PATH=”$PATH:/usr/local/android-studio/bin”

Android Studioの起動スクリプトであるstudio.shを実行すると、Android Studioが起動します。初回の起動時にはインストーラが開始されます。Standardインストールを選択してください。インストール完了後、図6の起動画面が表示されます。

$ studio.sh &

図
図6:Android Studioの起動画面

追加パッケージのインストール

続いて、Android Studio実行に必要な追加パッケージをインストールします。起動画面の右下の「Configure」から「Setting」を選択、開いたウィンドウにて「Appearance&Behavior」「System Settings」「Android SDK」と選択し、SDKの設定画面を開きます。下図の項目にチェックを入れ、右下のApplyをクリックし、パッケージをインストールします。

図
図7:SDKの設定(SDK Platforms)

図
図8:SDKの設定(SDK Tools)

以上で、Android Studioを使う準備ができました。

Android Studioでサンプルプロジェクトを開く

それでは、サンプルアプリケーションviaFaceDemoの開発をはじめましょう。

本手順では、viaFaceDemo_1.01を「/home/ins/via_demo/viaFaceSDK_1.01/demo/viaFaceDemo」に格納しています。Android Studioの起動画面から「Open an existing Android Studio project」をクリックし、格納先ディレクトリを選択します(図9)。

図
図9:プロジェクトの選択画面

プロジェクトを開くと、開発用PCとプロジェクトの同期が開始され、開発に必要となるツールが自動でインストールされます。手動インストールが必要なツールは、画面下コンソールに「Failed to find ~」とエラーが出るため(図10)、メッセージ中のリンクをクリックし、適宜インストールしてください。

図図10:追加ツールのインストールを要求するメッセージ

NDK STL shared object fileに関するエラーが発生した場合、build.gradle(Module:app)にて下記を設定してください。

設定項目 設定値
-DANDROID_TOOLCHAIN g++
-DANDROID_STL c++_shared

図図11:NDK STLの参照先を修正

以上で、プロジェクトを使う準備ができました。

Androidアプリケーションを生成する

最後に、Androidのアプリケーションを生成します。プロジェクトから、アプリケーションをインストールするためのapkファイル(インストーラ:配布形式ファイル)を作成します。

アプリケーション開発用のパスワードを設定する

SOM-9X20のアプリケーション開発にはパスワードが必要となります。「app/java/com.via.viaFace.demo/view/ Detector.java」にpasswd値(SOMに同梱されるユーザーズガイドに記載されたパスワード)を設定してください(図12)。

ビルド方法をReleaseに切り替える

Build Variantsウィンドウでapp値をreleaseに設定します(図12)。

図図12:Detector.javaの編集とビルド方法の選択

アプリケーションインストール用の鍵情報を生成する

Androidのアプリケーションインストーラ(apkファイル)には、アプリケーションを識別するための鍵情報が含まれています。同名の異なるアプリケーションを破壊しないよう、保護するためです。そのため、アプリケーション開発時は、最初に鍵情報を生成します。「Build」「Generate Signed Bundle/APK 」「APK」を選択し、「Create New」で新しい鍵のストア(keystore)と、鍵(Key)を生成します。

●Key Storeの設定

設定項目 設定内容 設定値
Key store path Key storeを保存するファイル名 /home/ins/Android/Sdk/licenses/key.jks
Password, Confirm Key store全体にかける鍵 (任意の文字列を設定ください)

●Keyの設定

設定項目 設定内容 設定値
Alias アプリケーションの名前 via_mobile360
Password, Confirm アプリケーション更新用の鍵 (任意の文字列を設定ください)
Validity 有効年数 25
First and Last Name 名前 (名前を入力してください)
Organizational Unit 部署名 (所属部署を入力してください)
Organization 組織名 (会社名/団体名を入力してください)

図
図13:鍵情報の設定

インストーラを生成し、アプリケーションをインストールする

以上で、すべてのリソースが揃いました。「Destination Folder」にインストーラの出力先を指定し(図14)、「Signiture Versions」にV1、V2を選択、「Finish」をクリックし、インストーラを生成します。Destination Folderにoutputsというディレクトリが生成され、インストーラ「app-release.apk」が格納されます。

図
図14:インストーラの生成

最後に、生成されたインストーラをUSBメモリへ格納し、アプリケーションをSOM-9X20へインストールしてください(図15)。アプリケーションのインストール方法と実行手順は前回の手順をご参照ください。

組み込みAI編:組み込みAIによる顔認証・表情認識アプリケーションを使ってみよう

図図15:Android上でインストーラを開く

まとめ

今回は、最も簡単に導入できる組み込みAIの開発環境を紹介いたしました。是非、今回の手順を参考に、Android StudioとVIA SOM-9X20を使って、組み込みAI開発をはじめてみましょう。次回は、オープンソースとして人気の高いLinuxを利用した、組み込みAIについて紹介いたします。

フルスクラッチ型AIやオープンソース型AIの開発手順

フルスクラッチ型AIやオープンソース型AIを活用する場合、VIA提供ライブラリ(ViaFaceSDK)に相当する機能を、自身で開発することになります。つまり、フルスクラッチ型AIやオープンソース型AIの開発工程は、今回の手順をベースとして、AIを設計しライブラリを生成する手順を追加した工程になります。是非、SOM-9X20を活用し、はじめてのAI開発から、高度な組み込みAI設計まで、チャレンジしてみてください。