Jetson nano 購入から物体認識(リンゴとミカン)までの手順
Jetson nanoが最近話題になっています。
私も、発表からずっと気になって、購入することになりました。
先日Jetson nanoが届いて、早速リポートさせていただきたいと思います。
目次
Jetson nanoの購入
私は、Physical Computing Labから購入しました。最近ですと、在庫が増えていて、秋葉原のお店でも購入できますし、ネット上でも、割と苦労せずに購入できます。
アマゾンも購入できるようになっています。こちらも手軽でいいかもしれません。
[amazonjs asin=”B07R6K7FF2″ locale=”JP” title=”NVIDIA JetpackがサポートするAI開発のための小型で強力なコンピュータ ジェットソン ナノデベロッパーキット”]
Physical Computing Labに注文した時に、5月分がすでになく、6月分の仕入れで、発送しますよと言うことだったのですが、結局予想より早く5月中届きました。
https://www.physical-computing.jp/product/1739
私が1万7000円のスタートキットを含むセットを購入しましたが、今考えれば、電源やLANケーブル、など全部個別に調達することも可能です。しかし、なるべくすぐ試したいので、スタートキットの方が、すぐ始められますので、特に電源の相性等もある程度保証されているので、いいかと思います。皆さんは周辺のものがあれば、Jetson nano本体のみ購入した方が経済的かもしれません。
ダンボールに「Physical Computing Lab」と書いています。
Jetson nano開封の儀
開封の儀ということで!早速開けてみましょう!
中は、箱が2つ入っています。
Jetson nano本体と、スタートキットですね。電源、microSDカード、LANケーブル、ジャンパーピンが入っています。
電源をつける前に、必ずジャンパーピンを設置してください。設置しないと電源が入らないです(試さない方がいいですよ、笑)。
スタートキットの箱です。
ジャンパーピンが見えますか?
続いて、Jetson nanoの本体です。黒いプラスチックの袋に入っています。しっかりカード!
この白いボードがあとで、Jetson nanoの台になります。
Jetson nanoの箱も廃棄しないで、この台をダンボールの箱に配置しますから、ネット上で、これを分からず、くちゃくちゃにしたケースがあります。笑。留意してください。
付属している箱の正しい使い方!笑 pic.twitter.com/LGvfTmfYBl
— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月24日
出てきました!
Jetson nanoをじっくりみましょう
もうちょっとしっかり見ていきましょう!(カメラモジュールが付いていますが、気にしないでください。笑)
熱シンクが大きいですね。
あとで、また触れますが、Jetson nano使用時結構発熱します。
まだ何もしていないのに、結構熱い! pic.twitter.com/LkE4DWKzZZ
— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月26日
好奇心に負けて、
を外してみました。丁寧に、ネジを外して、分解しましょう。
熱シンクの付いていない、背面
写真の中に、私がすでにmicroSDカードを装着しています。
あと、OSの起動からサンプルプログラムを動かすまで、説明します。
電源、HDMI、USB、LANなどの接続が可能です。
私がすでに、カメラモジュールを接続していますが、こちらは実はRaspberry Piのカメラモジュールです!刺してすぐ使えます!
カメラモジュールのスロットの右側、こちらはスタートキットの電源を使えるためのシャンパーピン。こう言うふうに設置しておいてください。
最後もう一枚、Jetson nano
一通り観察しましたので、Jetson nano
戻りました!
Jetson nanoとRaspberry Pi 3Bの背比べ
サイズ感を把握するために、ちょっとRaspberry Pi 3Bと比較してみます。
隣において、こんな感じです(Raspberry PiにLoraWanのHATが付いていますが、気にしないでください)。
Jetson nano専用のOSを用意しましょう
Jetson nanoは実はUbuntuを使っています。
起動させる前には、microSDカードに、OSのイメージを焼く必要があります。
Jetson nano専用のmicroSDのイメージはこちらのページに記載されています。
https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write
SDカードのイメージを焼くに使っているのは、Etcherです。ダウンロードしたイメージファイルをEtcherを使って、microSDカードに書き込みます。
書き込みが完了したら、次のステップに進みます。
Jetson nano Power ON!
microSDカードをJetson nanoに挿入して、周辺のキーボード、マウス、LANケーブル、モニター全部接続したら、いよいよ電源をしれましょう!
そうすると、Ubuntuのインストール画面が表示されます!
来ました!
Ubuntuですね!もちろん#Jetson pic.twitter.com/goy89bivup— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月24日
Jetson nano Ubuntuの起動
ほぼ全てがそのままにインストールを完了させたら、初めて、Jetson nanoのOS(Ubuntu)が起動します!
起動できました! pic.twitter.com/G42DcTWPZl
— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月24日
Jetson nano OSの更新
いつも恒例の手順です。
sudo apt-get update sudo apt-get upgrade
まずいつも恒例の
システム更新 pic.twitter.com/EzjJUVk06a— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月24日
当たり前ですが Jetson nanoは普通にUbuntu/Linuxマシンとして使えます。しかもすごいGPUが付いています!これから機械学習、深層学習を勉強したい、あるいは、ちょっと遊びたい人にとっては専属のマシンがあるととても便利ですね。
Jetson nanoサンプルコード
Jetson nanoのみならず、Jetson家族のサンプルコードをNvidiaが用意してくれています。
今回は、まずこちらから、スタートしてみます!
https://github.com/dusty-nv/jetson-inference
最初は、サンプルを動かすために JetPackのインストールが必要云々があったのですが、実は今回使っているmicroSDカードのイメージにはすでに全て必要なパッケージ、ライブラリなどが含まれています!
いきなり、サンプルコードをコンパイルして、動かすことが可能です!
まずは
sudo apt-get install git cmake
gitとコンパイルに必要なcmakeをとってきます。
次は
git clone https://github.com/dusty-nv/jetson-inference cd jetson-inference git submodule update --init
レポジトリをcloneをします。場所はホームディレクトリで問題ないでしょう。
それから、cloneしたディレクトリに入って、依存するモジュールも全部とってきます。
次は
mkdir build cd build cmake ../
buildというビルド用のフォルダを作って、buildディレクトリに入って、cmakeでコンパイルの準備をします。
Jetson nano チョットソースコンパイルの準備を! pic.twitter.com/1Ssdijz3fn
— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月26日
Jetson nanoサンプルコードのコンパイル
次は
cd jetson-inference/build make sudo make install
jetson-inference/buildのディレクトリにいることを確認して、makeでコンパイルします。その後、make installでインストールを完成させます。
コンパイルとインストールは割とすぐ終わります。数分程度だった気がします。
Jetson nanoサンプルコードを動かそう!
次は
cd jetson-inference/build/aarch64/bin
上のディレクトリに移動します。
ここにいくつかのプログラムがすでに(コンパイルとインストールで)用意されています。
まず1回目下記のコマンドを実行しましょう(Terminalで)
./imagenet-console orange_0.jpg output_0.jpg
orange_0.jpgという写真をインプットとして、認識した結果をoutput_0.jpgに書き込みます。
推論用のニューラルネットワークを最適化中。。。。
結構熱い!ベーコン焼けるかも!笑🥓 pic.twitter.com/Xa6MR0gOHM
— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月26日
1回目の実行は、ニューラルネットワークの最適化で数分かかります。2回目からは早くなります。数秒で結果が出ます。
できましたよ!
ミカンの認識!笑
ドキュメント通りですが、楽しい!
例のミカンと名付けようか?笑君、例のミカンを出したカイ?笑 pic.twitter.com/NmJsIK7Tzx
— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月26日
ミカンだけではなく、リンゴも認識できます!
もちろんりんごも!
1回目のミカンはニューラルネットワークの初期化が数分かかりましたが、2回目のりんごは数秒で結果が出ました。 pic.twitter.com/s6H2m6Loqq— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月26日
Jetson nanoとRaspberry Piのカメラモジュール
前の写真にすでにネタバレしましたが、実はJetson nanoはそのままRaspberry Piのカメラモジュールが使えます!
#RaspberryPi のカメラモジュールが使えましたよ!
ラズパイもうそうですけど、固定用のプラスチックの小さい部品が力を加えすぎると、一部壊れます。気をつけてください。 pic.twitter.com/hy4IefSgu7— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月26日
実際に、Jetson nanoでビデオストリームから物体認識させるのは下記のコマンドとなります。すぐ試せます!
./imagenet-camera googlenet # googlenetを使う場合 ./imagenet-camera alexnet # alexnetを使う場合
そうすると、画面に物体を認識する文字が表示されるはずです。
ビデオから物体認識
Jetson nano pic.twitter.com/o7MtXEL1BZ— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月28日
ちなみに、これ実行しっぱなしにすると、Jetson nanoの熱シンクが相当熱くなります!火傷しないように注意してください!
まとめ
いかがですか?
SDカードのイメージを用意することで、事前に様々なツールやライブラリなど用意してくれて、面倒な設定とインストールもほぼなしで、すぐサンプルコードを試すことができました。
また、Raspberry Piと比べて少し大きいですが、それでも人の手に収まる程度の大きさで、Raspberry Piを拡張する方法もありますが、こちらのNvidiaの技術も入って、4GBまでメモリが用意されて、Ubuntuの環境というメリットもあります。
また、Raspberry Piと同様に、40の 拡張ピンも用意されて、たくさんの可能性が秘めています。
これからも色々実験して、またその知見を共有したいと思います!
[amazonjs asin=”B07R6K7FF2″ locale=”JP” title=”NVIDIA JetpackがサポートするAI開発のための小型で強力なコンピュータ ジェットソン ナノデベロッパーキット”]
[amazonjs asin=”B06XPFH939″ locale=”JP” title=”NVIDIA Jetson tx2開発キット”]
[amazonjs asin=”B07BFH96M3″ locale=”JP” title=”RSコンポーネントRaspberry Pi 3 B +マザーボード”]
[amazonjs asin=”B01ER2SKFS” locale=”JP” title=”Raspberry Pi Camera Module V2 カメラモジュール (Daylight – element14)”]