d-satoです。「Jetson AI Specialist」はNVIDIA社が提供する「Jetson AI Certification」という認定資格の1つです。この度「Jetson AI Specialist」に認定されましたので、この認定資格の紹介と認定されるまでの流れを前編と後編の2回に分けて共有します。この記事は後編です。
認定までの流れ(再掲)
「Jetson AI Specialist」の認定を受けるためには、まずは「Jetson AI Fundamentals コース」というNVIDIA社が公開しているJetsonを使ったAIの講座を受講します。
次にAIを活用した自作のプロジェクトをオープンソースソフトウェアとして公開し、デモを実行した動画と共に提出すると、審査を経て認定を受けられます。
Jetson AI Fundamentals コース
前編にて紹介しています。
プロジェクトベースの評価
今回この記事で紹介する内容です。
以下の4つの指標で評価されるそうです。
- AI (5 ポイント)
- インパクトとオリジナリティ (5 ポイント)
- 再現性 (5 ポイント)
- プレゼンテーションとドキュメント (5 ポイント)
私は普段ROSを活用したソフトウェア開発をしているのでROSと絡めてプロジェクトを作成し、プロジェクトベースの評価を受けるための申請を出すことにします。
たとえば、「独自のデータセットを収集して特定のアプリケーション用の新しい DNN モデルをトレーニングする」、「JetBot に新しい自律動作を追加する」、「AI を活用したスマート ホーム/IoT デバイスを作成する」などです。内容はこのコースで取り上げられているトピックでなくてもかまいません。
Jetson AI Courses and Certification (JA-JP) | NVIDIA Developer:https://developer.nvidia.com/ja-jp/embedded/learn/jetson-ai-certification-programs#submit_project
プロジェクトベースの評価に必要なもの
Jetsonを活用したオープンソースプロジェクトを提出し、審査を受けます。申し込みには以下の情報が必要です。
- 名前やメールアドレスなどの連絡先情報
- Jetsonを活用したオープンソースプロジェクト公開先のURL
- Jetsonを活用したオープンソースプロジェクトの動画
- Jetsonを活用したオープンソースプロジェクトについてのNVIDIAのフォーラムへの投稿のURL
- Jetson AI Fundamentals コース認定証のURL
今回はJetson AI Specialist申請用にソフトウェアを作成し※1、申請を出しました。準備から実際に認定証を受け取るまでの流れについて説明します。
※1 実際にはそのソフトウェアだけでなく、関連するソフトウェアとあわせて2つを申請しました。その理由については後述します。
オープンソースプロジェクトの作成
今回開発したプロジェクトはJetson NanoのCSIカメラの画像をROSのトピックとして配信するROSパッケージです。既存のソフトウェアのいいところを組み合わせてJetson Nano Mouseで使いやすくすることを目的に開発しました。
ROSという単語を使わずに説明すると、CSIカメラから画像を取得し、取得したデータを変換し、配信するためのソフトウェアです。データ変換にCUDAを使って処理をしており、「Jetsonを活用したオープンソースプロジェクト」に該当します。
Jetson Nano Mouseで使いやすくするために必要な要素
Jetson Nano Mouseで使いやすくするために必要な要素と、既存のソフトウェアとの違いについて説明します。まず、Jetson Nano Mouseで使いやすくするために必要な要素は以下の2点であると考えています。
- CSIカメラ2台分の映像を配信できること
- Jetson Nanoにインストールしやすいこと
「CSIカメラ2台分の映像を配信できること」については、カメラの向きにあわせて画像の向きが変えられること、画像処理しながらロボットが走行するために20[fps]程度安定して配信できることが求められます。
「Jetson Nanoにインストールしやすいこと」についてはCLIだけでもインストールできることやインストールに必要とするデータ容量が少ないことなどが挙げられます。Jetson NanoはmicroSDカードをメインのストレージとしており、たとえ数GBであったとしても使用する容量が少ないほうが望ましいです。
既存のソフトウェア
これらの条件について、既存のソフトウェアだと部分的に満たすものはありますが、ちょうどいいものは見つかりませんでした。部分的に満たしているソフトウェアについて紹介します。
rt-net/jetson_nano_csi_cam_ros
rt-net/jetson_nano_csi_cam_rosはpeter-moran/jetson_csi_camの派生プロジェクトで、Jetson Nano Mouseのカメラ画像配信に特化したROSパッケージです。gscamというGStreamerライブラリを使ってCSIカメラの画像をROSトピックとして配信するROSパッケージがあります。このgscamを呼び出すlaunchファイル中心に構成されています。Jetson Nano Mouseのカメラ画像配信用を目的としたものではあるのですが、Jetson Nanoのスペックでは10〜30[fps]ぐらいが上限あるという課題がありました(画像サイズや環境に依存します)。
dusty-nv/ros_deep_learning
dusty-nv/ros_deep_learningというCUDAを利用してCSIカメラの画像を高速に配信できるROSパッケージもあります。こちらはNVIDIA社が公開しているものです。入門用のROSパッケージという位置づけのためか、物体検出用の学習済みモデルも一緒にインストールするようになっており※2インストールに少し手間がかかります。
※2 設定を変えればインストールしないように進めることもできます。Dockerを使えば簡単に動かせます。
Jetson Nano MouseではROSやロボットについてフォーカスして学べるようにDockerは極力使わないようにしたいという事情があり、Dockerを使わなくても簡単にインストールできることも重要です。
またカメラの取り付け向きに応じた画像の回転をするにはソースコードを修正する必要があります。これらがJetson Nano Mouseで使うには少々扱いにくいポイントであると感じていました。
作成し公開したプロジェクト
そこで、dusty-nv/ros_deep_learningをベースにROSトピックとしてカメラの画像を配信することに特化したソフトウェアを開発するに至りました。rt-net/jetson_nano_cuda_csi_cam_rosとしてApache-2.0ライセンスで公開しています。このROSパッケージはrt-net/jetson_nano_csi_cam_rosと同様にJetson Nano Mouseで使うことを想定しています。画像回転もオプションで簡単に指定できるようになっており、インストールもCLIで完結します。
プロジェクトのデモ動画の公開
オープンソースプロジェクトが完成したら動作の様子を撮影します。
詳しくは後述しますが、動画撮影前にNVIDIAのフォーラムでどう紹介しようかな……と考えていたところrt-net/jetson_nano_cuda_csi_cam_rosとrt-net/jnm_jupyternotebookの2つのJetsonを活用したプロジェクトを紹介することになったので、今回は見栄えの良いrt-net/jnm_jupyternotebookのデモ動画を投稿することにしました。rt-net/jnm_jupyternotebookのデモ動画はすでに撮影してYouTubeに投稿済みだったためこちらを再利用することにしました。
NVIDIAのフォーラムへの投稿
オープンソースプロジェクトが完成したらNVIDIAのフォーラムのJetson projectsのカテゴリへ投稿します。
当初はrt-net/jetson_nano_cuda_csi_cam_rosについてのみを投稿しようと考え、下書きをしていました。下書きを進めていくと、このパッケージがJetson Nano Mouse向けであることを説明するためにはJetson Nano Mouseの説明も必要であることに気づきました。Jetson Nano MouseはJetBotと互換性のあるPythonパッケージがあり、JetBot用のJupyter Notebookが扱えるという特徴があります。ここまで説明すると、rt-net/jnm_jupyternotebookの説明とほぼ同じになるため、せっかくなのでrt-net/jnm_jupyternotebookについても紹介することにしました。
rt-net/jnm_jupyternotebookはNVIDIA-AI-IOT/jetbotの派生プロジェクトで、JetPack 4.5.1まで対応しています。またJetBotプロジェクトでIssueとして課題になっている不具合についても修正しています※3。
※3 JetBotプロジェクトは2021年夏頃から更新が止まっているようです。Jetson Nano Mouseの開発でわかった問題解決方法についてはJetBotプロジェクトに還元するようにしています。
rt-net/jetson_nano_cuda_csi_cam_rosとrt-net/jnm_jupyternotebookの2つのJetsonを活用したプロジェクトとJetson Nano Mouseの紹介およびJetson Nano MouseをJupyter Notebookから動かしている動画を以下のページに投稿しました。
申請
JETSON AI コース & 認定プログラムページから提出フォームにアクセスし、申請します。
申請にはこの記事で用意した情報を記載します。
- 名前やメールアドレスなどの連絡先情報
- Jetsonを活用したオープンソースプロジェクト公開先のURL
- Jetsonを活用したオープンソースプロジェクトの動画
- Jetsonを活用したオープンソースプロジェクトについてのNVIDIAのフォーラムへの投稿のURL
- Jetson AI Fundamentals コース認定証のURL
提出フォームは必要項目を埋めて「Submit」ボタンを押せば提出完了です。10〜14日ほどで審査結果が返ってくる旨の説明が書かれていました。
認定証
しばらく待っていると、申請時に記載したメールアドレス宛に合格した旨と認定証のPDFが届きました。
2021年12月28日に申請して2022年1月6日に認定証を受け取ったので、年末年始を挟んだにもかかわらず10日かからず審査してもらえたことになります。また「Year issued」に2021と表記されているので審査自体は2021年中に終了したようです。かなり早いですね!
まとめと所感
NVIDIA社が提供する「Jetson AI Certification」という認定資格の1つである「Jetson AI Specialist」の認定を受けるにあたって必要な内容と、申請するまでの流れを紹介しました。Jetsonを活用したオープンソースプロジェクトのプロジェクトを公開し、デモ動画とともにNVIDIAのフォーラムに投稿するまでが申請に必要となる主な内容です。
前半の記事で紹介したJetson AI Fundamentalsコースとあわせて今回の申請のための学習と開発を通じて以下の知識・情報を整理できました。
- Jetsonデバイス
- PyTorch
- 深層学習
- オープンソースソフトウェア
NVIDIAのフォーラムに投稿した内容だけを見れば、今回私は審査を受けるに当たってプロジェクト作成したというよりも、既存のプロジェクトの紹介を記載して認定を受けたと言ったほうが実態に即しているかもしれません。それでも今回の申請に合わせて開発した内容では普段は後回しにしがちな英語版ドキュメントを作成したり、また既存のプロジェクトについてもドキュメントの情報を整理したりと普段だと後回しになりがちなところまで丁寧に作業する機会になりました。
AIについて学ぶこと、オープンソースのプロジェクトの公開のきっかけを探している方はぜひこれを機にチャレンジしてみてはいかがでしょうか。
PR
アールティでは今回紹介したJetson Nano Mouse、ROS、オープンソースについて学べるセミナーも開催しています。