3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AITRIOSのDevSiteで公開されているサンプルアプリケーションを触ってみた

Last updated at Posted at 2024-08-02

こんにちは。
ソニーセミコンダクタソリューションズの細井です。

今回はAITRIOSのDeveloper Siteで公開されているサンプルアプリの一つ、Keypoint Detectionを用いてKeypoint Detectionのサンプルアプリを動かしてみたという記事を投稿します。

visualize_keypoint_1.png

この記事の要約

  • AITRIOS Developer SiteのGuideでは数種類のサンプルアプリケーションが公開されている
  • GitHub Codespacesを用いることで簡単にサンプルアプリケーションが試せる

始めに

今回の記事では下記のステップでサンプルアプリを試してみようと思います。

  1. Developer SiteからKeypoint DetectionのGitHubにアクセスする
  2. Readme.mdをもとに、学習済みのPoseNetをImportする
  3. Developer SiteからKeypoint DetectionのEdgeApp(Vision and Sensing Application)をDownloadする
  4. Consolec上でエッジデバイスにPoseNetのAIモデルとKeypoint DetectionのEdgeAppをデプロイする
  5. お試しで推論をしてみる
  6. Keypoint DetectionのGitHubリポジトリからCodespacesを実行し、可視化する

1. Developer SiteからKeypoint DetectionのGitHubにアクセスする

AITRIOSのDeveloper Siteでは下記のように複数のサンプルアプリを公開しています。

Developer_Site_Guide_sample_app.png

今後も要望に応じて、様々なサンプルアプリが公開されていく予定なのでご期待ください!
今回はその中のKeypoint Detection: Sample Application on AITRIOSにアクセスします。

Keypoint-detecton-github.png

画面右上の「Code」→「Codespaces」→ 「Create codespace on main」をクリックしてcodespacesを起動します。

CodespacesはGitHubの個人アカウントで利用可能な開発環境です。利用にはアカウント登録が必要ですが、無料アカウントでも月あたり2コア・60時間まで利用できるのでおすすめです。詳しくは公式ページをご覧ください。GitHub Codespaces

2. Readme.mdをもとに、学習済みのPoseNetをImportする

tutorialフォルダのReadmeをもとにエッジデバイスへImportするAIモデル(学習済みのPoseNet)をImportします。

まず、下記のような記載がある通り、Google Coral repositoryからposenet_mobilenet_v1_075_353_481_quant.tfliteをダウンロードします。

import_pose_net.png

GitHub上の下記のボタンを押すことでダウンロードできます。

import_pose_net_2.png

次にAITRIOS Consoleを開き、「Create Model」から「Import」をクリックし、ダイアログを入力します。
私はModel IDをposenet_for_keypointとし、Import ModelのLocal Importで先ほどダウンロードしたtfliteファイルを選択しました。

import_pose_net_console.png

「Next」ボタンをクリックし、Model required Applicationを「ON」、Converted Modelを「OFF」、Metadata Format IDに何も入力せず、「Import」ボタンをクリックしました。

import_pose_net_console_2.png

次にListに表示されたPoseNetのAIモデルをクリックし、右Paneの「Convert」ボタンをクリックします。ダイアログが出て来ますので再度ダイアログの「Convert」ボタンを押してください。
ListのSatusがBefore ConversionからConvertingに変わったことが確認できればConsoleへのAIモデルのImportは完了です。
5 ~ 10分ほどでConvertingからAdd to configuration completedというStatusに変わりますと、エッジデバイスへのDeployが可能になったことを示しています。

現在のConsoleは自動ではStatusは更新されません。都度ヘッダ―近くにあるReloadを押して、画面更新を行ってください。

3. Developer SiteからKeypoint DetectionのEdge Application(Vision and Sensing Application)をDownloadしImportする

AITRIOSのDeveloper SiteにおけるDownloadページにおいてあるSample Keypoint Detection Posenet Edge App V1.1.2.1をダウンロードします。
Developer SiteのDownloadページはAITRIOSアカウントをお持ちの方のみ見ることができます。

keypoint_detection_dev_site.png

ダウンロードしたEdge Applicationのzipファイルを解凍します。
zipファイルの中は下記の構成になっているはずです。

- sample_keypoint-detection-posenet_edge-app_v1.1.2.1
  - edge_app_posenet_v1.1.2.wasm
  - LICENSE
  - PosenetPPLParameterSample.json
  - Readme.txt

ConsoleのSettings -> Applicationをクリックし、Importを押します。ダイアログが出てくるので、私は先ほどダウンロードしたedge_app_posenet_v1.1.2.wasmを選択、Nameはedge_app_keypoint、versionは1.1.2としました。こちらは自分の管理用なのでバージョンはなんでも良いです。

import_edge_app.png

「Next」ボタンを押すと次のページに移行しますが、今回はMetadata Format IDには何も入力せず「Create」ボタンを押しました。
ListにEdge Applicationが表示されます。StatusがProcessingとなっているのは、Console内部でWASMコンパイルが走っているためです。
WASMコンパイルが完了したら、StatusがReadyに変わります。

4. Consolec上でエッジデバイスにPoseNetのAIモデルとKeypoint DetectionのEdgeAppをデプロイする

Deploy to DeviceでAIモデルをデプロイするためのConfigファイルを作成します。
ConfigファイルではAIモデルとFirmwareを同時に一つのConfigファイルでデプロイ可能ですが、今回はAIモデルのみデプロイします。
Configタブを押し、New Configを押します。

Deploy to Deviceではv2と記載のあるタブがありますが、今回は利用しません。
v2タブは今後利用できるようになります。

先ほどインポートしたAIモデルを選択し「Create」を押します。

create_config.png

作成されたConfigファイルを選択し、右Paneに表示された「Deploy」ボタンを押します。
ダイアログが表示されるので、Deployしたいエッジデバイスを選択し、「Next」→「Deploy」を押してください。

deploy_by_config_0.png

deploy_by_config.png

デプロイする際に、「Add new AI model」と「Replace other AI model」が選択できますが、まだ一度もデプロイしたことがない人は「Add new AI model」で問題ありません。
エッジデバイスには最大4つまでAIモデルをデプロイできますが、4つすでにAIモデルをデプロイしている場合やモデルを入れ替えたい場合は「Replace other AI model」からモデルを入れ替えることができます。

次に、Keypoint DetectionのEdgeAppをデプロイします。
Deploy to Deviceを押して、Applicationタブをクリックします。

Application v2ではありません

先ほどインポートしたedge_app_keypointを選択すると、右PaneにDeployボタンがでるので押すとダイアログが出ます。
デプロイしたいデバイスを選択し「Deploy」ボタンを押します。

edge_app_deploy.png

デプロイ状況はManage Deviceにおけるデバイスの右Pane → Status -> Deploymentで確認できます。
図のようにそれぞれSuccessになっていることが確認できました!

5. お試しで推論をしてみる

つぎに実際にConsole上で推論を試してみます。
Developer Siteでダウンロードした、フォルダの中にPosenetPPLParameterSample.jsonというものがあります。
こちらは推論をする時に設定するパラメータファイルの一部です。
Usermanualを参考に下記のCommandParameterファイルをテキストエディタで作成しました。

{
  "commands": [
    {
      "command_name": "StartUploadInferenceData",
      "parameters": {
        "MaxDetectionsPerFrame": 5,
        "Mode": 2,
        "NumberOfInferencesPerMessage": 1,
        "PPLParameter": {
          "header": {
            "id": "00",
            "version": "01.01.00"
          },
          "input_width" : 481,
          "input_height" : 353,
          "output_width" : 31,
          "output_height" : 23,
          "score_threshold" : 0.5,
          "iou_threshold" : 0.28,
          "nms_radius" : 20,
          "max_pose_detections" : 15,
          "heatmap_index" : 0,
          "offset_index" : 1,
          "forward_displacement_index" : 2,
          "backward_displacement_index" : 3
        },
        "UploadInterval": 30,
        "UploadMethodIR": "MQTT"
      }
    }
  ]
}

こちらをjson形式で保存し、Settings -> Command ParameterからImportを押し上で作成したcommand parameter fileをインポートしてください。

console_import_comparam.png

私はめんどくさかったのでもともとあるファイルを上書きしてしまったので、名前はPosenetPPLParameterSample.jsonになっています。

次にManage Device -> Settings -> Command Parameter fileで先ほどインポートしたファイルをBindします。

bind_comparam.png

Bindをしてチェックマークがついたら、同じく、Settings -> Infernece Control -> Get Inference DataのトグルをOnにします。

start_comparam.png

しばらく待ちます・・・

Check Dataで自分のデバイスを選択し、Meta Dataを開くと推論データがあることができます。ただしこちらのデータはDeserializeされており、よくわからないですね・・・

see_checkdata.png

実際にこの後、SampleAppを用いて可視化してみます!!!

6. Keypoint DetectionのGitHubリポジトリからCodespacesを実行し、可視化する

ここからCodespecesに戻ります!
Sample Appを実行するために、backend/src/config/console_access_settings.yaml.sample.sampleを除き、それぞれプロジェクトに紐づいた設定値を入力します。

console_endpointとportal_authorization_endpointはそれぞれ、AITRIOS Developer SiteのPortal / Console Endpoint Informationを参考に取得してください
console_endpoint = Console Endopoint、portal_authorization_endpoint = Portal Endpointです。
また、client_id、client_scretについてはGet Started 3.6.2. AITRIOSにアクセスするためのクライアントを取得するを参考にしてください。

codespaces_config_yaml.png

ターミナル上でdocker compose up -dを実行します。

docker_compose_up.png

codespaces_port.png

dockerが立ち上がったら、ポートをクリックし、5000番の表示範囲を右クリック→Portの表示範囲→Publicに変更してください。

Publicに変更したら、右下に出ているダイアログからブラウザで開くを押してください。
もしくはPort上の3000番の地球マークでもよいです。

docker_compose_up_2.png

別タブでSampleAppが開くはずです!!!

まずはデバイスを選択しましょう。

select_device.png

次にAIモデルを選択しましょう。
今回は1つしかデプロイしていないので、選択肢は1つしかありません。

select_ai_model.png

次にCommandParameterを設定しましょう。
既にBindしているので、あらかじめ入力されていましたが、こちらでParameterの値を手動で変更することもできます。
変更した場合は下のBind Command Parameterを押してください。

set_comparam.png

Start Infrenceを押しましょう。
少し待つと、右側に推論結果が出るはずです!!!
出ない場合はDocker Composeを再度立ち上げたり、Command Parameterのscore_thresholdを下げてみると出てくるかもしれません。

visualize_keypoint_1.png

Deserializeされた推論結果も見ることができます。

visualize_keypoint_2.png

以外と近くでも検出されることが分かります。

visualize_keypoint_3.png

以上でサンプルアプリケーションを触ってみたの記事は終わりです。
お付き合いいただきありがとうございました。

困った時は

もし、記事の途中でうまくいかなかった場合は、気軽にこの記事にコメントいただいたり、以下のサポートのページもご覧ください。
コメントのお返事にはお時間を頂く可能性もありますがご了承ください。

また、記事の内容以外で AITRIOS についてお困りごとなどあれば以下よりお問い合わせください。

さいごに

今回はAITRIOSのDeveloper Siteで公開されているサンプルアプリケーションの一部を触ってみました。
AITRIOSではこれらのサンプルアプリケーションのソースコードもGitHub上で公開しているので、このアプリケーションからオリジナルのアプリケーションも比較的簡単に作れると思います。
ぜひ作ってみてください!そしてQiitaに投稿してください。

長い記事となりましたが改めて、見ていただきありがとうございました!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?