ailia SDKを試す<第26回> 評価版ailia SDKとUnity6.2でAndroidアプリを作る

 今回はAILIA Trial 1.5.0とUnity 6.2を組み合わせて,Android向けのオブジェクト検出アプリを作成します.まず,AndroidアプリをビルドするためのUnity側の設定手順を解説し,続いて実際にAiliaDetectorSampleを用いたアプリ実装を行います.ailia SDKは,PCだけでなくモバイル環境でもAI推論を動作させられる点が大きな特徴です.今回紹介する手順を通じて,スマートフォン上でのリアルタイム物体検出を体験してみましょう.
 なお,Unityのインストール手順やAILIA Trialの導入方法については,前回の記事(https://interface.cqpub.co.jp/ailia025/)を参照してください.

 

●ビルド・プロファイルの追加と設定
 まず,ailia SDKを利用したAndroid向けのビルド・プロファイル(図1)を作成します.手順は次の通りです.
***
・1,UnityのメニューからPlatformsリストを開き,一覧の中から「Android」を選択
・2,右側にある「Add Build Profile」をクリックして,新しいビルド・プロファイルを追加
***
 次に追加したビルド・プロファイルを選択した状態で,「Switch Profile」をクリックしてアクティブにします(図2).


図1 Androidのビルド・プロファイル画面


図2 追加したビルド・プロファイル画面

 

 続いて,作成したプロファイルでビルド対象のシーンを設定します.
***
・ailia_sample_selector
・ailia_detector
***
をシーン・リストに追加してください(図3).


図3 シーン・リストにシーンを追加

 

●PCとスマートフォンとの接続
 次に,Unityで作成したアプリを実機で動作させるために,AndroidスマートフォンをPCに接続します(図4).
***
・1,AndroidスマートフォンをUSBケーブルでPCに接続
・2,スマートフォン側でUSBデバッグ・モードとファイル転送を有効にする
・3,正しく認識されると,Unity側のRun Device設定にスマートフォン名が表示される
・4,Run Deviceに接続した端末を指定する
***


図4 Android USBの設定しスマートフォンをRunDeviceに登録

 

 次にConfigurationタブで「IL2CPP」を選択します(図5).ここまでが,AILIA TRIALのAndroiアプリ作成に関する基本的な設定です.


図5 Configurationタブで「IL2CPP」を選択

 

●ビルドと実行
 全ての設定が完了したら,画面右下にある「Build And Run」をクリックします(図6).これにより,Android用アプリのビルド,スマートフォンへのインストール,アプリの自動起動が順に実行されます.

図6 「Build And Run」をクリック

 

●サンプル・アプリの異常現象とスマートフォンのログ対応
 アプリを実行すると,最初は正常に物体を認識しますが,途中で突然認識結果が異常になることがあります(図7).動作を確認したところ,識別用バッファのクリア処理がうまく動作していない可能性があることが分かりました.


図7 正常に認識した状態(左)と認識が異常な状態(右)

 

▲スマートフォン上のログ確認
 AILIAのサンプル・プログラム内の画像認識関連箇所にDebug.Logを追加し,問題の詳細を確認したいところですが,スマートフォン上で動作しているアプリでは通常,Unity Editorのコンソールにログが出力されません.そこで,Android用ログ・ツール・パッケージAndroid Logcat(図8)をインストールし,実機でのログを取得できるようにします.

図8 AndroidLogcat パッケージをインストール

 

 UnityのBuild Profiles画面で「Development Build」にチェックを入れ(図9),ログ出力を有効にします.さらに,AILIAのサンプル・プログラム内の画像認識関連部分へDebug.Log(図10) を追加し,再度「Build And Run」をクリックします.これにより,Android側のログがUnityのコンソールに表示されるようになります.


図9 「Development Build」にチェックを入れる


図10 DebugLogのコンソール

 

▲原因の推定
 ログを確認すると,突然認識オブジェクト数が増加する現象が確認できました.原因としては,カメラから入力される画像情報,または判定処理部分のロジックのいずれかに問題があると考えられます.AILIA Trialには,画像処理関連のソースとしてDetectorのメイン処理および カメラ情報を管理するソース・コードが含まれています.これらのソース・コードを確認し,問題箇所を検証することとします.
▲対応結果
 修正を行った結果,問題が解消されて安定してオブジェクトを認識できるようになりました(図11).実行速度はおよそ6.6FPSで動作しています.検証に使用したスマートフォンはSharp AQUOS sense6s(Snapdragon 695/RAM 4GB)です.決して高性能な端末ではありませんので,この結果は十分に良好といえるでしょう.

図11 ソースの修正後は安定してオブジェクト認識ができるようになった

 

 今回の修正内容には,Android OSのバージョンやスマートフォン本体のハードウェア構成に依存する部分もあるため,元の障害が必ずしもAILIAのソース・コードだけに起因するとは限りません.また,修正したソース・コードのライセンスはAILIA に帰属しますので,ここで修正版の内容を掲載することは控えます.
 ただし,修正箇所そのものは比較的シンプルなものでした.読者の皆さんも,ソース・コードの内容を確認/検証しながらご自身の環境に合わせて調整してみることで,より深い理解が得られると思います.ぜひ実際に試してみてください.

 

●まとめ
 今回は,AILIA TrialとUnity 6.2を利用してAndroid向けのオブジェクト検出アプリを作成し,実機上での動作とデバッグ手法を紹介しました.ailia SDKはクロス・プラットフォーム対応が進んでおり,同一プロジェクトをWindows/Android双方で動かせる点が大きな魅力です.今後は,他のモデルやリアルタイム処理の最適化など,さらなる応用も試してみてください.

 

氏森 充(うじもり・たかし)
約30年間,(株)構造計画研究所にてIoT,ビッグデータ,機械学習,AI関連のシステム開発や実務応用に従事.退職後はLLM(大規模言語モデル)関連の情報収集や技術動向の調査・発信に注力し,雑誌「Interface」でもLLM技術に関する記事を執筆中.