こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
この記事ではNVIDIA Jetson AGX OrinにOSとJetpack SDKをインストールし、カメラを接続し、学習済みモデルによる推論AIのサンプルを動作させます。
NVIDIA Jetson AGX Orinの基本的なセットアップ作業を見ていきます。64GBの内蔵eMMCストレージにOSとSDKをインストールし、USBカメラを用いる公式のサンプルプログラムを動かして動作確認をします。
Jetson GPU-accelerated System-on-Module (SoM)ファミリへの入門として, 歴史と現在のフラッグシップモデルであるAGX Orinの性能仕様を知りたい場合は、前回の記事をご覧ください。
インストール
インストールするソフトウェアは主にOSとJetpack SDKの2つです。OSはボードサポートパッケージ(BSP)などとも呼ばれており、Jetson向けの設定が施された使いやすいUbuntuベースのデスクトップ環境が提供されています。一方でJetpack SDKはCUDA toolkitなど、GPU高速化を用いるアプリケーションのビルドに必要なもの、及びそれを使ったAI開発フレームワークやその動作サンプルなどを提供します。
インストール方法の選択肢
Jetson AGX Orin Developer Kitをセットアップするには主に2つの方法があります。
- 内蔵ストレージに最初から入っているUbuntuを使ってセットアップを行う。(デフォルトセットアップ)
- Linux上かWSL上でSDKマネージャを動かし、それを使ってセットアップを行う。
前者の方がはるかに手っ取り早いので、ここではこちらを使います。後者のセットアップ方法ではNVIDIA SDK Managerというツールを使います。これはJetsonなどのようなデバイス上ではなく適当な別のコンピュータで動かすツールです。Linux for Tegra(L4T) BSPやNVIDIA JetPack SDKのコンポーネントなどの設定をカスタムした上でそれを各種デバイスに書き込むことができます。 今回はOS等を内蔵ストレージにインストールするので必要ありませんが、後付けのSSDやUSBメモリにインストールしたい場合はSDKマネージャを用いることになります。
デフォルトセットアップであればキーボードやマウスで行うことができます。またあるいは「ヘッドレス」で行うこともできます。キーボードやマウスでセットアップを行う場合は、DisplayPortモニタをデバイスに繋ぐ必要があります。一方でヘッドレスでセットアップを行う場合は逆にモニタを繋いではいけません。 モニタを繋ぐ代わりに、付属のUSBケーブルのTypeC側の口を40ピンのピンヘッダの横にあるソケットに挿し、USB-A側の口を別のコンピュータに挿して、そのコンピュータでターミナルを起動してセットアップ作業を行います。
最初のセットアップをどちらで行うかは特にこの後には影響しません。キーボードとマウスでやっても、ヘッドレスでやっても同じです。どちらでやったとしても、また後からモニタを繋いでグラフィカルな操作を行うこともできますし、USBケーブルで繋いでUSBシリアルでログインして操作することもできます。
OS
ここでは最初のセットアップをデフォルトセットアップ、ヘッドレスモードで行うことにしました。NVIDIA公式のGetting Started Guideでは、今回のようにヘッドレスで行う場合とキーボードやマウスを使用した場合の両方の詳細を説明しています。
ヘッドレス設定で先に説明したようにUSBケーブルで別のLinuxコンピュータと接続した場合、AGX Orinの電源を入れて少ししてから/dev/ttyACM0
が現れます。そうするとscreenもしくはminicomなどを用いてポートに接続することができます。
$ sudo apt install screen
$ sudo screen /dev/ttyACM0 115200
もしWindowsコンピュータを使って接続している場合は、Puttyなどのフリーのターミナルエミュレータを使うと良いでしょう。
注意点ですが、もしリセットボタンを押してしまった場合はUSBシリアル接続は切断されてしまいます。その場合はシリアルポートが再び現れるのを待ってから再接続する必要があります。
接続すると、まず言語選択画面が出て、それから利用許諾契約への同意を求められます。あとはUbuntuほか一般的なコンピュータと大体同じようなステップで初期設定を行っていきます。全て詳細に説明すると大変なので、ここでは要約にとどめます。
いくつかのキーボードが選択肢として出ていますが、これはUSB接続されたキーボードをどう認識するかのオプションです。(つまり、ヘッドレスモードでは関係のない設定です。)
パーティションサイズなどは大体デフォルトの値が入っています。
デフォルトではdummy0が選ばれていますが、eth0に変更しました。
ここで最初のユーザーを作成します。このユーザーは管理者権限を持ったユーザーになります。
適当なホスト名を入力しました。
以上でOSのインストール作業は終わりです。
ここで設定したユーザー名とパスワードを入力すればシステムにログインすることができます。
しかし、今はAGX Orinはネットワークに繋がりsshdも動いています。この後のセットアップ作業は別のPCからsshで繋いだ方がより便利でしょう。
Jetpack SDK
Getting Started Guideによれば、もしもR34以前のリリースを動かしている場合、まずAPTリポジトリの設定をする必要があります。筆者の場合はR35がインストールされていたため、このステップを行う必要はありませんでした。Ubuntu distribution packagesをアップデートしてJetpackをAPTでインストールします。
$ sudo apt update
$ sudo apt dist-upgrade
$ sudo reboot
$ sudo apt install nvidia-jetpack
最後のコマンドは完了までに少し時間がかかります。Jetpack SDKはかなりのサイズのソフトウェアをまとめているので、ダウンロードと解凍にもそれなりの時間がかかります。
ところで、一般的にNVIDIAのGPUが接続されたPCでドライバとCUDAのバージョン、およびGPU温度や使用状況などを確認したい場合はnvidia-smiというコマンドラインツールを使います。しかしJetsonにはこれが入っていません。そこで、nvidia-smiと同等の情報が取得できる別のユーティリティをコンパイルして使用します。
$ cd /usr/local/cuda/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery
Jetson AGX Orin 64GBでの出力結果は上記の通りです。
さあ、これでUbuntu OSのインストールとJetpack SDKの設定が完了し、CUDAが使えるようになりました。
さて、配布されているサンプルプログラムの多くのものは動画データからの推論処理を含んでいます。次はカメラ接続のセットアップを見ていきましょう。
カメラ設定
もしもJetson AGX OrinにCSIカメラを繋げたい場合、最大で8台のカメラを接続することができ、6台まで同時に動作させることができます。その場合は裏面にあるSamtec ハイスピードデジタルコネクタにインタフェースボードを取り付け、そこからFFCコネクタを伸ばして接続します。
しかし、ここでは単なるお試し用途なので、USBで挿すだけで使えるUVCカメラを利用します。
カメラ動作を確認する一番楽な方法は、モニタを接続してログインし、カメラキャプチャを表示するコマンドを打つことです。
$ nvgstcapture-1.0 --camsrc=0 --cap-dev-node=0
これで接続している最初のデバイスから動画を受信することができます。2台以上のカメラを繋いでいる場合は、オプションで例えば--cap-dev-node=1
などと指定すればよいでしょう。
動画・静止画のキャプチャについてより詳しく知りたい場合はTaking Your First Picture with CSI or USB Cameraを参照してください。
Hello AI World
Getting Startedにはセットアップが終わった後の様々な次のステップへのリンク集が置いてあり、NVIDIAのAI入門コース(NVIDIA AI tutorials and courses)などもあります。初心者がAIアプリケーションの開発を始めていくのに十分な内容の資料があり、DeepStream SDKやTriton Inference Server、TAO Toolkitといった各種ソフトウェアを使うための案内も揃っています。
私たちは以前にHands on with the NVIDIA Jetson Nanoという記事で「Helo AI World」の内容を見てきました。ここでは手短に最初の推論AIのサンプルを動かしてみましょう。
以下のコマンドで依存パッケージのインストール、jetson-inferenceリポジトリのクローン、プロジェクトのビルドが行えます。
$ sudo apt-get install git cmake libpython3-dev python3-numpy
$ git clone --recursive --depth=1 https://github.com/dusty-nv/jetson-inference
$ cd jetson-inference
$ mkdir build
$ cd build
$ cmake ../
$ make -j$(nproc)
$ sudo make install
$ sudo ldconfig
サンプルのビルドとインストールが終わったら、あとは動かすサンプルとパラメータ(どのモデルを使うかなど)を選ぶだけです。
適当に選んだものとして、live camera segmentation exampleのC++実装バージョンを学習済みmulti-human parsing(MHP)モデルで動かしてみます。動かすためのコマンドは以下の通りです。出力のファイル録画も入れています。
$ segnet --network=fcn-resnet18-mhp /dev/video0 output.mp4
もし録画が要らない場合は単にoutput.mp4の部分を消してください。
筆者の姿をモデルが人の形として上手く認識していることが分かります。残念ながら他の人を連れて来れなかったので、複数の人間を認識する能力を試すことはできませんでした。
動いている間、ターミナルにタイミングレポートが出力されているのを見ることができます。
まとめ
この記事では、Jetson Orin AGXにおける基本的なソフトウェアのインストール方法とその選択肢を見てきました。そしてここでは「デフォルトセットアップ」をヘッドレス設定で行いました。そして次にカメラ機能を見てきて、USBカメラを使って動作確認を行いました。そしてその上でHello AI Worldの推論AIのサンプルをビルドし、カメラ動画を使ってmulti-human parsingモデルによる人認識を動作させました。
Jetson AGX Orinのセットアップはもう完了しているので、この後は公開されているチュートリアルや資料を辿ってみたり、あるいはCUDAを用いて高速化した組み込みアプリ開発などを行っていくこともできることでしょう。ぜひ試してみてください。
コメント