目次
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も搭載しているため、モーター等も簡単に取り付けていくことができます。
近いうちに、その辺りについても紹介していきたいと思います。
それではまた!
この記事へのコメントはありません。