ailia SDKを試す<第3回> ailia SDK(ailia mode)をWindows 11+VSCodeのデバッガで動かす

 前回は,ailia SDK(ailia-models)をラズベリー・パイ4 上で動作させました.今回は環境をWindows 11に移し,統合開発環境としてVisual Studio Code(以降,VSCode)を利用して実行と検証を行います.
 プログラム開発や試験を進める際には,実行中の状態を逐次観察しながら原因を切り分けたい場面が多くあります.特に初めて扱うモジュールやライブラリでは,関数の入出力や処理の前後関係を細かく確認できることが品質向上と開発効率の両面で重要です.検証方法としてログ出力を用いることも可能ですが,ログの挿入によってコードを改変するリスクや,出力の抜け漏れといった課題が生じます.
 そこで本稿では,VSCodeのデバッガを活用し,ailia SDK/ailia-modelsを実行中に追跡できる環境設定を紹介します.ailiaはWindowsを含むマルチプラットフォームに対応しており,Python/C++/C#/JNIなど複数のAPIを提供しています.本稿ではその中でも導入が容易なPython版を用いた実施例を取り上げます.

●Windows環境へのインストール手順
 まず,今回のシステム構成を表1に示します.次に手順ですが,リスト1にWindows 11上にailia SDKを導入し,ailia-modelsを取得するまでの流れを示します.最後にVSCodeを起動して開発準備を整えます.

名称 内容
OS Windows11 Pro
CPU インテル® プロセッサ N100
RAM 16GB
Python python-3.10.11-amd64
VSCode Version 1.103.1

表1 システム構成一覧

*******
PS> python –version
Python 3.10.11
PS>git clone https://github.com/axinc-ai/ailia-models.git
PS>cd ailia-models.
PS> python.exe -m venv .venv
PS> .venv/Scripts/activate
PS>pip3 install ailia
Collecting ailia
  Downloading ailia-1.5.0.0-py3-none-win_amd64.whl (34.8 MB)
          ━━━━━━━━━━━━━━━━━ 34.8/34.8 MB 1.9 MB/s eta 0:00:00
Installing collected packages: ailia
Successfully installed ailia-1.5.0.0
PS> pip install -r requirements.txt

PS> code . <- VScode 起動
*******
リスト1 ailia SDKを導入し,ailia-modelsを取得するまでの流れ

●VSCodeのデバッグ設定
 ailia-modelsに含まれるサンプル・プログラムは,共通ライブラリを相対パスで参照しているため,必ずサンプル・ファイルのあるディレクトリで実行する必要があります.そのままVSCodeから実行すると,カレント・ディレクトリが異なるためライブラリが見つからず,エラーになることがあります.また,カメラを入力に利用する場合には,デバイス番号などを引数で指定しなければなりません.
 これらの条件を反映させた,VSCodeのlaunch.json(リスト2)がailia-modelsには用意されています.

********
{
    “version”: “0.2.0”,
    “configurations”: [
        {
           “name”: “Python: Camera”,
            “type”: “python”,
            “args”: [“-v”,”0″],
            “request”: “launch”,
            “program”: “${file}”,
            “console”: “integratedTerminal”,
            “cwd”: “${fileDirname}”
        },
    ]
}
********
リスト2 設定例1…launch.jsonで設定(Python 版)


図1 設定例2…デバッグのメニューで選択

●実行と結果確認
 次に,driver-action-recognition-adas.pyをVSCodeで開き,[F5]キー(デバッグ開始)を押して実行します.初回はモデル・ファイルのダウンロードに時間がかかりましたが,無事に起動し,プログラムの動作確認とブレーク・ポイントでの状態観察を行うことができました.テストには生成AIで作成した画像を用いました.
 推論結果は 「Drinking eating」で,判定内容は「飲みながら食べている」と解釈されました.


図2 推論結果

 ラベル一覧を確認すると,「食べる」という動作を直接示す項目は 「Drinking eating」のみでした.入力画像は食べているようにも飲んでいるようにも見える内容だったため,今回の推論結果はラベル定義と画像の特徴が一致しており,妥当な判定であると考えられます.

●Intel N100での実行環境による違い
 今回使用したCPUはIntel N100なので,Intel MKLによるCPU最適化と内蔵GPU[Intel(R) UHD Graphics]を利用した実行が可能です.表2に実行環境ごとのフレーム・レート(fps)の違いを示します

ENV_ID 利用環境 fps
0 CPU 21
1 CPU-IntelMKL 27
2 VulkanDNN-Intel(R) UHD Graphics (FP32) 15
3 VulkanDNN-Intel(R) UHD Graphics (FP16) 16
4 VulkanDNN-Intel(R) UHD Graphics (FP32) 15
5 VulkanDNN-Intel(R) UHD Graphics (FP16) 16

表2 実行環境によるフレーム・レート(fps)の違い

 GPUを利用する場合の切り替えは,起動時の引数 –env_id ENV_IDで設定します.なお,特に指定を行わなかった場合,Intel N100ではデフォルトでenv_id: 5が選択されました.
 GPUを使用すると遅くなるという結果になっていますが,この件については,改めて検証することとします.

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