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

 今回は,ailia SDKの評価版であるailia_1_5_0_trialをUnity6.2上で動作させる手順を紹介します.なお,Unity 6.2のインストール手順については,前回記事(https://interface.cqpub.co.jp/ailia024/)を参照してください.

 

●ライセンス・ファイルの入手と配置
 まず,ailia SDKを利用するには,AILIA評価ライセンス申し込みサイトから評価ライセンスを申請する必要があります.次の公式サイトにアクセスし,必要事項を入力して申し込みを行います.
***
https://axip-console.appspot.com/trial/terms/AILIA?lang=jp
***
 申し込み後,登録したメール・アドレス宛にダウンロード・サイトの案内が届きます.案内に従ってAILIA_trial_1.5.0およびライセンス・ファイルをダウンロードしてください.ライセンスファイルの有効期限は1か月程度と短いですが,同梱されているailia_1_5_0_trialのサンプル・プログラムを通じて,SDKでどのような処理が可能かを一通り確認できます.
 ライセンス取得後に送られてくるメールには,「WindowsでUnityを使用する場合,ライセンスファイルをAssets/Plugins/x86_64/ に配置してください」と記載されています.しかし,ダウンロードしたailia_1_5_0_trialには該当のフォルダが存在しません.その場合は,Unity Editorのインストール・フォルダ にライセンス・ファイルをコピーしてください.例えば,Unity Editorのバージョンが6000.2.9f1の場合,次のパスになります.
***
C:\Program Files\Unity\Hub\Editor\6000.2.9f1\Editor
***
 この設定を行うことで,ailia SDKの評価版をUnity環境で正しく動作させることができます.
 ここで参考情報として,さらに詳細な情報を確認したい場合は,次のGitHubを参照するとよいでしょう.
***
・Core Library Documentation::https://github.com/axinc-ai/ailia-sdk
・ailia-models(サンプル・モデル集):https://github.com/axinc-ai/ailia-models
***

 

●ダウンロードしたファイルをUnityプロジェクトに登録
 ダウンロードしたailia_1_5_0_trial.zipを解凍すると,フォルダ内にunityという名前のフォルダがあります.このフォルダが,Unity用プロジェクトのフォルダです.Unity Hubを起動し,プロジェクト一覧画面から 「追加」→「ディスクから加える」 を選択し,解凍した unityフォルダを指定して登録します.プロジェクトの「追加」をクリックすると,フォルダ選択画面が開くので,正しいパスを選択してください(図1).


図1 プロジェクトの追加から対象フォルダを選択する

 

●トラブル対応
▲警告画面
 フォルダを開くと,「Unity:警告画面」が表示されます(図2).これは,プロジェクトが作成されたUnityのバージョンと現在使っているUnityのバージョンが異なる場合に表示される警告です.本稿では,最新バージョンであるUnity 6.2(6000.2.9f1)を使用します.表示された警告ダイアログで 「バージョンを変更」を選択し,プロジェクトを開いてください.


図2 警告画面がでたら「バージョンを変更」をクリック

 

▲プロジェクトが認識されない
 フォルダを指定してプロジェクトを読み込むだけでは,Unityがプロジェクト構成を完全に認識できない場合があります.そのため,読み込み時にセーフ・モード起動ダイアログが表示されることがあります(図3).このダイアログが表示されたら,「EnterSafeMode」を選択してください.
 セーフ・モードでは,スクリプトやアセットの読み込みを最小限に抑えてプロジェクトを開くことができるため,初回のセットアップ時に発生するエラーを安全に確認できます.


図3 セーフ・モード起動ダイアログ

 

▲エラー・ログ
 セーフ・モードでプロジェクトを開くと,エラー・ログが表示される場合があります(図4).今回のエラーでは,次のメッセージでした.
***
The type or namespace name ‘RawImage’ could not be found
***
 このエラーは,RawImageコンポーネントが見つからないことを示しています.RawImageはUnityのUIシステム(UnityEngine.UI 名前空間)に含まれるコンポーネントであり,Unity UIパッケージが未登録であることが原因です.

図4 読み込んだプロジェクトの問題が表示される

 

 この問題を解消するには,Package Manager(図5)を使ってUnity UIパッケージをインストールします.手順を次に示します.
***
・1,Projectビューの上部タブから「Packages」をクリック
・2,Unityメニューの「Assets」→「View in Package Manager」を開く
・3,Package Manager画面が表示されたら,Unity RegistryのリストからUnity UIを選択
・4,「Install」をクリックしてインストールを実行
***
 Package Manager画面のUnity Registryリストから「Unity UI」を選択し,パッケージをインストールします(図6).


図5 Package Managerの表示メニュー


図6 Unity Registryリストから「Unity UI」を選択する

 

●Unity UIインストール後の状態
 Unity UIパッケージのインストールが完了すると,RawImage に関するエラーが解消され,Unity Editorのメイン画面が正しく表示されるようになります(図7).これで,UIシステムに関連する初期エラーは全て修正されました.ただし,この時点では,ailia SDK関連のライブラリやアセットはまだ読み込まれていません.次の工程として,ailia SDKのパッケージをUnityに読み込む作業を行います.

図7 Unity Editorのメイン画面

 

●ailia SDKパッケージの読み込みと設定
 続いて,ailia SDKをUnityに組み込むためのパッケージを読み込みます.ailia SDK用のパッケージは,Custom Packageとして追加します.Unity Editorのメニューから「Assets」→「Import Package」→「Custom Package」 を選択します.解凍したailia_1_5_0_trialフォルダ内のunityフォルダを開くと,ailia SDKのUnity用パッケージ・ファイル(.unitypackage)が存在します.これを選択して開きます(図8).

図8 unitypackegeの登録

 

●パッケージ内容の確認とインポート
 ファイルを選択すると,パッケージに含まれるアセットやスクリプトの一覧が表示されます(図9).全ての項目を確認したうえで,「Import」をクリックします.これにより,必要なailia SDK関連のファイルがプロジェクトにインポートされます.インポートが完了すると,UnityのProject ビューにailia関連のフォルダが追加されます.このフォルダが確認できれば,SDKの導入は成功です.これで,Unity 6.2 上で ailia SDK を利用する準備 が整いました.


図9 インポートするパッケージ一覧画面

 

●任意のシーンの表示
 パッケージのインポートが完了しても,Unity Editorの画面には特に変化がありません(図10).しかし,Projectビューの「Assets」→「Samples」→「Scenes」といったフォルダ内に,ailia SDKのサンプル・シーン・ファイルが追加されています.これらの中から任意のシーンを開くには,該当フォルダ内に表示されているシーン・アイコンをダブルクリックします.すると,選択したサンプル・シーンがエディタ上に読み込まれ,アプリの画面がGameタブに表示されます.これで,Unity 6.2環境におけるailia SDKサンプルの読み込みと表示準備は完了です.
 ここで補足として,パッケージのインポート直後は,シーンが読み込まれていない状態のためシーン・ビューが空白になります.シーン・アイコンをダブルクリックしてロードすることで,初めてGameビューに画面が表示されます.

図10 起動直後の画面とシーンを選択した画面

 

●シーン・プログラムの実行
 サンプル・シーンを読み込んだ状態で,Unity Editor上部にある「Play」をクリックすると,選択したシーンのプログラムが実行されます.これにより,ailia SDKを利用した推論サンプルの動作を実際に確認できます(図11).実行中は,Gameビューにアプリ画面が表示され,物体検出や画像分類など,サンプルごとに異なるAI処理が動作します.停止する際は,再度「Play」をクリックするとプログラムが終了します.

図11 ailia SDKアプリ画面

 

●画面が表示されない場合の対処
 「Game」タブにailia SDKアプリの画面が表示されない場合は,まずコンソール画面を開き,発生しているエラー内容を確認してください(図12).典型的な原因として,ライセンス・ファイル(AILIA.lic)が見つからないというエラーが発生するケースがあります.このエラーが出ている場合は,ailia SDK評価版をダウンロードした際に同梱されているAILIA.lic ファイルを,次のフォルダにコピーしてください.
***
C:\Program Files\Unity\Hub\Editor\6000.2.9f1\Editor
***
 コピーが完了したら,Unityを再起動し,再び「Play」をクリックしてシーンを実行します.これで,ライセンス関連のエラーが解消され,サンプル・シーンが正常に動作するはずです.


図12 コンソール画面を表示してエラー内容を確認

 

●アプリの作成
 ここまでで,Unity上でailia SDKのサンプル・シーンを実行し,動作を確認できるようになりました.次は,これを実際のWindowsアプリとして動作させるために,ビルド・プロファイル(Build Profile)を作成します.
▲ビルド・プロファイルの作成
 Unity Editorのメニューから「File」→「Build Profiles」を選択し,ビルド・プロファイル画面を開きます.ここで,新しい ビルド・プロファイルを作成します(図13).作成が完了すると,現在のプロジェクト設定に基づいたビルド・プロファイルが追加されます.このプロファイルを編集することで,アプリの出力形式や動作環境を自由に設定できます.

図13 ビルド・プロファイルの作成画面

 

▲ビルド・プロファイルをアクティブにする
 作成したビルド・プロファイルを使用するには,一覧に表示されている「Switch Profile」をクリックし,プロファイルをActive状態に切り替えます(図14).この操作により,現在のプロジェクトが新しいビルド設定を使用するようになります.プロファイルをアクティブにすると,以降のビルドや設定変更はこのプロファイルに反映されます.次に,画面の表示モードや解像度などの設定をカスタマイズしていきます.

図14 ビルドプロファイルのActive化

 

▲プロファイルの設定(画面の設定)
 次に,アプリの画面表示に関する設定を行います.Build Profiles画面の右側にある 「Customize Player Settings」をクリックすると,Player設定が展開されます(図15).


図15 Customize Player Settings の展開

 

 Player 設定の中にある「Resolution and Presentation」 項目を開き,次のように設定します(図16).
***
・Fullscreen Mode:リストから「Windowed 」を選択
・Default Screen Width:任意の横幅(例:1024)
・Default Screen Height:任意の高さ(例:768)
***
 この設定により,アプリを起動した際にウィンドウ・モードで動作し,画面サイズを固定できます.デバッグやUI調整を行う際にも見やすく,開発環境に適したウィンドウ表示が可能になります.


図16 Fullscreen Mode の設定

 

▲アプリに表示するシーンの登録
 最後に,アプリ起動時に表示する SCREEN(シーン)を登録します.この設定を行うことで,ビルド後のアプリで最初に表示される画面や,利用可能なシーンを指定できます.シーンの登録手順は次の通りです.
***
・1,Unity Editorで登録したいシーン(Screen)を開く
・2,メニューから「File」→「Build Profiles」を選択し,ビルド設定画面を表示
・3,画面右側にある「Override Global Scene List」のチェックを外すと,「Scene List」(シーン一覧) 項目が表示される
・4,ここにビルド対象とするシーンを追加していく
***
▲シーン・リストへの追加方法
 続いて,シーン・リストへの追加方法は次の通りです.
***
・1,エディタ画面で目的のシーンを開いた状態で,Build Profiles画面の「Add Open Scenes」をクリック(図17)
・2,これにより,現在開いているシーンがシーン・リストに登録される
・3,同様の手順で,ほかのシーンも順番に追加していく
***
 同様の手順で,他のシーンも順番に追加します.

図17 登録したいシーン画面を表示した状態で 「Add Open Scenes」をクリック

 

▲起動時のシーン設定
 これにより,アプリ内で利用可能な全てのシーンをシーン・リストに登録できます(図18).なお,アプリ起動時に最初に表示されるシーンは,シーン・リストの先頭に登録されたものになります.最初にailia_sample_selectorを配置しておくと,起動時にサンプル選択画面が自動的に表示されるようになります.


図18 複数シーンの追加例

 

●アプリのビルド
 ここまでの設定が完了したら,いよいよアプリをビルドします.Build Profiles画面の右下にある「Build」をクリックすると,現在の設定に基づいてアプリが作成されます.
 次にDEVELOPMENT BUILDの設定をします.ビルドを実行する前に,Windows Settings 内の「Development Build」にチェックを入れておきます(図19).この設定を有効にすると,実行中のアプリでログ出力 が行われ,動作中のメッセージやエラー内容を確認できるようになります.開発段階では,このログが非常に有用です.もし実行時に問題が発生した場合も,出力されたログから原因をすぐに特定できます.
 「Build」をクリックすると,Unity がプロジェクトの内容をコンパイルし,指定した出力先フォルダにアプリケーションを生成します.ビルドが完了すると,指定したフォルダ内に実行ファイル(.exe) が作成されます(図20).出力されたアプリケーションをダブルクリックすると,これまでUnity Editor上で確認していたシーンが,独立したWindowsアプリとして起動します.


図19 Development Buildにチェックをいれる


図20 ビルド完了後の出力フォルダ構成

 

●アプリの起動
 ビルドが完了したら,出力先フォルダに作成された実行ファイル(.exe)をダブルクリックしてアプリを起動します(図21).起動すると,まずトップ画面が表示され,ここから利用したいサンプル機能を選択できます.最初に,メニューから「Detector」を選択してみます.

図21 起動したアプリの画面

 

●ライセンス・ファイルが見つからない場合
 この段階で,ライセンス・ファイルが存在しないというエラーが表示されることがあります(図22).この場合は,ビルド時に作成されたアプリのフォルダに,評価版で取得したAILIA.licファイルを配置してください(図23).
 ライセンス・ファイルをコピーしたあと,再度アプリを起動して「Detector」を選択すると,正常に画面が表示されます(図24).これで,ailia SDKを使用した推論処理がアプリ上で動作することを確認できます.

図22 ライセンス・ファイルのエラー


図23 ビルドしたフォルダにライセンス・ファイルを配置


図24 Unityアプリ上でailia SDKを実行

 

●便利なライセンスファイル配置方法
 毎回手動でライセンス・ファイルをコピーするのは手間がかかります.そのため,Assets\Samples\Scenesフォルダ内にAILIA.licを配置しておくのがおすすめです(図25).この場所にライセンス・ファイルを置いておくと,ビルド時に自動的に出力先フォルダへコピーされます.そのため,アプリを再ビルドしても手動でコピーする必要がなくなり,作業効率が大幅に向上します.

図25 ライセンス・ファイルの配置

 

●まとめと注意点
 今回は,ailia SDK(ver.1.5.0 trial)をUnity 6.2で動作させる手順を紹介しました.評価版ライセンスの取得からUnityプロジェクトへの組み込み,サンプル・シーンの実行,そしてWindowsアプリとしてのビルド/起動までを一通り体験できたと思います.ailia SDKは,画像認識/物体検出/姿勢推定などのAI推論を簡単に実装できる強力なライブラリです.Unityと組み合わせることで,インタラクティブなAIアプリケーションを手軽に構築できるのが大きな魅力です.ぜひこの機会に,AILIA_trialを試してみてください.
 なお,Unityはバージョン・アップにより仕様変更が頻繁に行われていますが,適切な設定を行えば,最新環境でもailia SDKを利用できます.ただし,ここで紹介した手順は筆者の環境に基づく試作例であり,Ailia公式が保証するものではありません.環境やUnityのバージョンによっては,設定箇所や動作が異なる場合がありますので,その点に留意してください.

 

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