Jetson Nanoをセットアップしてディープラーニングで画像認識を試してみた

f:id:karaage:20190416225202j:plain:w640

Jetson Nano ファーストインプレッション

 謎の半導体メーカーのボード型コンピュータ、Jetson Nanoを購入しました。

 少し出遅れたので、届くのが遅くなりましたがようやくゲットできました。

f:id:karaage:20190416225202j:plain:w640
 ジャーン

f:id:karaage:20190416225255j:plain:w640
 裏側をみてみる

 ん…??

f:id:karaage:20190416225254j:plain:w640
 え、えーーー!

 どうかしてるぜNVIDIA、じゃなかった謎の半導体メーカーさん。

 ちなみに、Jetson Nanoの箱は台としても使えるので、大切にとっておきましょう。私のように何も考えずバキバキに破壊しながら開けたら、無残な状況になりますゆえ。

f:id:karaage:20190417004050j:plain:w640
 無残な状況

Jetson Nanoセットアップ

 些細なこと?は気にせず、セットアップしていきます。

ハードウェアの準備

 電源、HDMIケーブル等、ラズパイの周辺機器がほぼそのまま使えました。あと、カメラモジュールはV2のみ対応らしいので、間違えてV1買わないように注意して下さい。

基本的なセットアップ

 基本的なセットアップは以下の公式のサイト通りです。

 手っ取り早くSDカードのイメージの場所とSDカードの書き込み方法が知りたい人は以下参照下さい。

 注意点として、日本語環境は色々問題が出やすいという情報がネットにあったので、英語(English)環境でセットアップしています(まだ私自身は日本語環境では試していません)。

 基板の形からして、Raspberry Piを意識していると感じましたが、SDからブートするところや、Etherでイメージ書き込むところなど、使い勝手もまさにラズパイですね。何せラズパイのカメラモジュールまで使えますからね。

 無事以下のような起動画面が出たらOKです。

f:id:karaage:20190426001119p:plain:w640
 どうみてもUbuntuです、本当にありがとうございました

エディタ環境

 エディタは、VS Codeを使いたいところですが、JetsonはArm系なのでパッケージで簡単にインストールはできません。ホストPCを用意して、SSH経由でJetson Nano上のファイルをVS Codeで編集するのが良いです。

 以下の記事は、ラズパイ用ですが全く同じことがJetson Nanoに対して可能です。

 もしくは、Vimエディタですかね。

Jetson Nanoでディープラーニング

 何はともあれ、ディープラーニングしてみたいと思います。TensorFlowのセットアップ方法は以下の通りです。

 面倒くさいので、セットアップを手軽にできるスクリプトを用意しました。

 以下コマンドを実行すると、TensorFlowとその他必要なパッケージが一通り入ります。

$ git clone https://github.com/karaage0703/jetson-nano-tools
$ cd jetson-nano-tools
$ ./install-tensorflow.sh
$ ./install-tools.sh

 追記:上記スクリプトは、JetPack 4.3以前を想定しています。最新のJetPack 4.4を使用する場合は、./install-tensorflow.shの代わりに以下を実行してください。

$ ./install-tensorflow-v44.sh

 画像認識ソフトは、過去にTensorFlow + Kerasで作って、自前のデータを学習させたものを使うことにしました。Jetson NanoではKeras単体をうまくインストールできませんでしたが、最新のTensorFlowでは、Kerasが組み込まれているのでそちらに対応させるコードを書くことで動作させることができました。

 具体的には、Jetson Nanoのターミナルで以下3行のコマンドを実行するだけで、画像認識のソフトが走り出します。プログラムは、画像を犬、猫、カメラの3つに分類するソフトです。

$ git clone https://github.com/karaage0703/keras-pi
$ cd keras-pi
$ python3 inspect_camera.py -d='jetson_nano_raspi_cam'

 実行している様子です。

 最初、認識のスピードがあまりに遅くて悩んだのですが、カメラの設定を詰めたら爆速になりました(カメラを大きい解像度で表示しているとそっちでGPUを消費してしまうようです)。

 噂通りかなりのスピードでした。速度は計っていないので正確な比較はできませんが、体感は過去試したRaspberry Pi + Intel Movidius(下記記事参照)の同等以上ですね。

 ちなみに自前データの学習に関しては、Google Colabで実行しています。学習に関しては、Jetson Nano用に特別にプログラムを組んだわけでなく、以前Mac/Raspberry Pi用に作成して学習させたモデルがそのまま使えました。モデルの学習方法に関しては、以下チュートリアルを作成下さい。

 有料チュートリアルはどうしても買いたく無いという人は、以下の無料チュートリアルをこなしていくと、そのうちできるようになるかもしれません。

まとめ

 Jetson Nanoが届いたので早速ディープラーニングしてみました。Raspberry Piでディープラーニングすると、そのままでは激遅ですし、Intel Movidius使うと学習から専用にソフト書き直す必要があったりとなかなか辛かったのですが、Jetson NanoだとTensorFlow + Kerasで書いたコードがわりとそのまま動いてくれるので良いですね。今回も、昔MacやRaspberry Piで使った学習モデルがそのままJetson Nanoで動きました。これがデファクトの強さですね。

 小型のデバイスでディープラーニングで画像認識したいときは、ほぼ決定版といって良いかもしれませんね。結構楽しくなってきたので、これから色々試して何か作ってみたいなと思います。

 とりあえず、しばらく細かいTIPSなどは以下のQiita記事にまとめていこうと思いますので、興味ある方は参照下さい。

 Jetson Nanoの購入先、スイッチサイエンスさんの他、秋月電子さん他、Amazonでも値段が正規価格とほぼ近くなってきたようです。価格や納期を見比べて購入下さい。

 Jetson Nanoのおすすめ周辺機器も以下記事にまとめていますので、よろしければご参考にして下さい。

書籍の宣伝「Jetson Nano超入門」

 「Jetson Nano超入門」というJetson Nano初心者向けの本を書きました!

 最短でJetson Nanoをある程度使えるようになりたいという人には絶好の本です。よろしければ是非。詳しくは以下リンク等参照下さい。

共著で書いた本「Jetson Nano超入門」が12/21に発売されます

Jetson Nano 超入門

Jetson Nano 超入門

書籍の宣伝「からあげ先生のとにかく楽しいAI自作教室」

 AIの初心者向け本「からあげ先生のとにかく楽しいAI自作教室」を執筆しました。

 文系でAI素人の私の妻も、実践できて理解を深められるような、初学者向けの内容になっています。Jetson Nanoが主体ではないですが、Raspberry Piを用いたエッジコンピューティングに関しても、まるまる1章解説しています。以下に紹介記事を書いていますので、興味ある方は是非ごらんください。

参考リンク

NVIDIA Jetson Nano 開発者キットに TensorFlow をインストールする - Qiita

Deep Learning Inference Benchmarking Instructions - Jetson Nano - NVIDIA Developer Forums

Getting Started with ROS on Jetson Nano – Stereolabs

Jetson Nanoにカメラを接続してリアルタイム画像類推を行うには | 日記というほどでも

Autonomous Machines | NVIDIA Developer

Two Days to a Demo | NVIDIA Developer

GitHub - dusty-nv/ros_deep_learning: Deep learning inference nodes for ROS with support for NVIDIA Jetson TX1/TX2/Xavier and TensorRT

GitHub - NVIDIA-AI-IOT/jetbot: An educational AI robot based on NVIDIA Jetson Nano.

Jetson Nanoの機械学習ベンチマークテスト - Qiita

GitHub - antmicro/jetson-nano-baseboard: Antmicro's open hardware baseboard for the NVIDIA Jetson Nano and Jetson Xavier NX

関連記事

変更履歴

  • 2020/12/20 AI書籍の執筆に関して追記
  • 2020/05/31 JetPack4.4対応に関して追記
  • 2019/11/20 関連記事に周辺機器に関するリンク追加
  • 2019/07/04 SDカードのイメージと書き込み方に関して追記
  • 2019/07/01 セットアップ時の言語設定に関して追記
  • 2019/06/29 購入先に関して追記