即できる!初めてのJetson nanoでAI入門:DeepStream編

Jetson nanoはAI入門におすすめ

こんにちは。

AI coordinator管理人の清水秀樹です。

コロナが猛威を奮っていますね。

健康には十分気をつけていきましょう。

さて、本日はAI初心者に大変オススメのJetson nanoを使ったAI体験を簡単に実現できる方法をご紹介致します。

Jetson nanoはNvidia社が開発したGPU搭載の小型マイコンになります。

なぜAI初心者にオススメなのかというと、セットアップが滅茶苦茶楽ちんだからです。

通常のPCですといちいちAI開発用にセットアップが必要となりますが、Jetson nanoはもともとAIを活用することを前提に開発したマイコンになっているため、Jetson nano用のOSイメージを活用すればすぐにでもAIを体験できるようになっています。

しかもマイコンそのものは1万ちょっとと金額も安い。

通常のGPU搭載のPCを購入すると、簡単に10万円以上のコストが発生するので、この金額でAIを体験できることは非常にありがたいですね。

なので、AI初心者にオススメの製品となります。

このページでは、そんなJestson nanoを使って、必要な機材からAIを実行するまでの手順を説明しています。

基本的にこのページの流れに沿ってセットアップして頂ければ、躓くことなくAIを体験できるはずです。

ぜひ参考にしてみてください。

また、動画でもJetson nanoのセットアップ方法について紹介しています。

こちらも参考にして頂ければ幸いです。

 

必要な機材の紹介

Jetson nano単体では機能しません。

Jetson nanoを起動するために周辺機器を揃えていく必要があります。

それを紹介します。

Jetson nano本体

これがないと始まりません。

本体を購入しましょう。

micro SDカードやAC電源、HDMIケーブル等も購入が必要になるので、すべてセットになっている商品を購入することをおすすめします。

Jetson nanoは通常はUSBから電源を取る形になりますが、がっつりAIを起動したい場合はAC電源から電力を供給したほうが安定します。

特に初めてJetson nanoを扱う場合はAC電源から始めることをおすすめします。

USB電源ではGPUをフルパワーで扱うことが出来ないからです。

 

電源スイッチ

Jetson nanoは電源をつなげた瞬間から自動起動します。

それはそれで問題ないのですが、PCのように起動スイッチでJetson nanoを起動したい場合には電源スイッチを購入しましょう。

これは必須ではありませんが、あると色々便利です。

 

ジャンパーピン

電源スイッチやAC電源を使用できるようにするために、ジャンバー品が必要になります。特に電源スイッチやAC電源ではなくUSB電源で起動する場合は必要ありません。

 

冷却ファン

GPU冷却用です。

なくても問題ありませんが、Jetson nanoには熱管理機能があり、GPUが熱くなるとパワーを自動的に制御します。

冷却用ファンがあれば安定してGPUが働いてくれるようになるため、取り付けておきましょう。

 

マウス/キーボード/LANケーブル/HDMIディスプレイ/USBカメラ

マウスとキーボードとLANケーブルとHDMIディスプレイが必要です。

ノートPCをお使いの方の場合は持っていないことが殆どだと思います。

Jetson nanoに限らずラズパイ等でも同様に必要になるので、小型マイコンを積極的に使っていこうと考えているなら良いものを購入しましょう。

まあ、動けば何でも良いかと思います。

 

ハードで必要になるものは以上です。

Jetson nano OSイメージ作成

OSイメージの準備

Jetson nano用のOSイメージを準備します。

Nvidiaの公式サイトからダウンロード出来ます。

Jetson nano用のイメージをダウンロードしましょう

5Gバイト以上あるので気長に待ちましょう。

SDカードをフォーマットする

次はダウンロードしたSDカードイメージを焼くSDカードをフォーマットします。

SDメモリカードフォーマッターを使用しましょう。

Windows用とMac用があるので、お使いの機種に合わせてダウンロードして使用します。

カードを選択し、クイックフォーマットしましょう。

わからない方は動画を参考にしてください。

SDカードに書き込む

MicroSDカードにJetson Nano Developer Kitを書き込みます。

OSイメージをMicroSDカードに書き込むのに便利なソフトがあります。

balenaEtcherというソフトです。

無料で使えます。

ソフト名の読み方は不明です。

バレナエッチャーかな?

シンプルなUIなので迷わずできるかと思いますが、わからない場合は動画を参照してください。

書き込みには時間がかかるので気長に待ちます。

30分ぐらいでしょうか。

書き込みが終わればOSイメージ作成は以上となります。

 

Jetson組み立て

次はハードウェアの組立です。

HDMIディスプレイやマウス、キーボードの取り付けやMicroSDの差込は説明するまでもないと思いますので、割愛します。

LANケーブルとUSBカメラも取り付けは難しくないと思います。

ここではそれ以外の電源周りや冷却ファンについて説明します。

AC電源からの供給と、電源スイッチから起動できるようにするためには、数カ所にジャンパーピンを取り付ける必要があります。

まずAC電源からの供給ですが、それを実現するためにはJ48ピンにジャンパーピンを取り付ける必要があります。

動画や写真を参考にしてください。

続いて、電源スイッチの取り付けです。

J40ピンに取り付けます。

取り付けるのは、

  • 電源スイッチ
  • リセットスイッチ
  • 自動電源ONの停止

の3箇所になります。

写真から分かりますでしょうか?

  • 右が電源スイッチ
  • 一つ飛ばして真ん中がリセットスイッチ
  • 左が自動電源ONの停止

となります。

続いて冷却ファンの取り付けです。

J15ピンに取り付けます。

写真を参考にしてください。

以上で準備は完了です。

Ubuntu起動後の準備

ハードウェアの準備が完了したら、いよいよJetson nanoを起動します。

電源スイッチをオンにしてUbuntuを起動しましょう。

コマンドを起動してまずは定番のアップデートから。

だいたい10分ぐらいかかります。

sudo apt-get update
sudo apt-get upgrade

その他にも初期状態ではGPUをフルパワーに使えないなど色々あるので、AIを試す前に環境のセットアップを行います。

とはいってもただコマンドを打つだけなのです難しくないです。

フルパワー化

sudo nvpmodel -m 0
sudo jetson_clocks

swap領域の増加

シェルスクリプトを準備して下さっている方がいるので、ありがたく利用させて頂きます。

git clone https://github.com/JetsonHacksNano/installSwapfile
cd installSwapfile
./installSwapfile.sh

pip3のインストール

sudo apt install python3-pip

GPU使用率確認ツール

Jetson nanoではnvidia-smiコマンドが使えません。

代わりのツールがあるので、それで確認できます。

sudo -H pip3 install jetson-stats
sudo jtop

起動後はキーボードの1〜5のボタンで状況を確認できるようになります。

Ctrl-Cで終了できます。

DeepStream

DeepStream SDKのセットアップ

DeepStream SDKが公式サイトからダウンロードできます。

Jetson nano用のDownload.devをダウンロードしましょう。

これ以降は基本的に公式サイトにあるガイド通りに進めていきます。

以下のコマンドで必要なパッケージを一気にインストールします。

sudo apt install \
    libssl1.0.0 \
    libgstreamer1.0-0 \
    gstreamer1.0-tools \
    gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-bad \
    gstreamer1.0-plugins-ugly \
    gstreamer1.0-libav \
    libgstrtspserver-1.0-0 \
    libjansson4

次に以下コマンドを打ち込みましょう。

sudo apt-get install librdkafka1=0.11.3-1build1

ダウンロードしたSDKをhomeフォルダに保管して、以下を実行します。

ターミナルもhomeに戻しましょう。

バージョンIDは必要に応じて変更してください。

数分でインストールは完了します。

sudo apt-get install ./deepstream-4.0_4.0.2-1_arm64.deb

DeepStream SDKのインストールが完了したらデモを実行してみましょう。

ただし、ここまで完了したら、一度再起動しましょう。

このままデモを実行しても十中八九メモリ不足で実行できません。

再起動が完了したら、以下のコマンドでデモを実行しましょう。

起動するまでに数十秒かかります。

cd /opt/nvidia/deepstream/deepstream-4.0/samples
deepstream-app -c configs/deepstream-app/source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt

8画面の映像が流れましたでしょうか?

これが出来ればひとまずはセットアップ完了です。

YOLOを実行してみよう

物体検出の大御所であるYOLOを実行してみましょう。

まずはモデルのダウンロードを行います。

これ以外と時間かかります。

cd ../sources/objectDetector_Yolo
./prebuild.sh

続いてcudaのversionを確認します。

/usr/local/cuda/bin/nvcc -V

確認できたCUDAのバージョンを指定してコンパイルします。

私の場合は10.0でした。

コンパイルは1分程度ですね。

export CUDA_VER=10.0
make -C nvdsinfer_custom_impl_Yolo

さあ、準備が完了しました。

yolov2-tinyモデルでデモを実行してみましょう。

deepstream-app -c deepstream_app_config_yoloV2_tiny.txt

USBカメラで実行

いよいよ自前のUSBカメラで実行します。

まずはUSBカメラ用のコンフィグファイルを作成する必要があるので、以下のコマンドを使って、ベースとなるコンフィグファイルをコピーしましょう。

cp deepstream_app_config_yoloV3_tiny.txt deepstream_app_config_yoloV3_tiny_usb_camera.txt

コピーして新たに作成したコンフィグファイルを編集します。

42行目にある[source0]の箇所を変更していきます。

[source0]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI
type=3
uri=file://../../samples/streams/sample_1080p_h264.mp4
num-sources=1
gpu-id=0
# (0): memtype_device - Memory type Device
# (1): memtype_pinned - Memory type Host Pinned
# (2): memtype_unified - Memory type Unified
cudadec-memtype=0

上記を以下のように変更しましょう。

[source0]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI
type=1
camera-width=640
camera-height=480
camera-fps-n=30
camera-fps-d=1
camera-v4l2-dev-node=0
#uri=file://../../samples/streams/sample_1080p_h264.mp4
#num-sources=1
#gpu-id=0
# (0): memtype_device - Memory type Device
# (1): memtype_pinned - Memory type Host Pinned
# (2): memtype_unified - Memory type Unified
#cudadec-memtype=0

変更したら実行しましょう。

deepstream-app -c deepstream_app_config_yoloV3_tiny_usb_camera.txt

無事起動出来ましたでしょうか?

認識率は低いですが、このように簡単に物体検出を試すことが出来ます。

Jetson nanoはAI入門機としてはオススメ

通常のPCで同じことをやろうとするとコストもかかる上に、環境構築も大変なので、お手軽にAIを試してみるならJetson nanoが大変オススメですね。

しかもロボット作成していくなら、JetsonはGPIOも搭載しているため、モーター等も簡単に取り付けていくことができます。

近いうちに、その辺りについても紹介していきたいと思います。

それではまた!

 

あなたにオススメの記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP