Jetson Nano + DeepLearning
世の中AI,エーアイ...と、AIが(第三次)ブームになり、DeepLearningが一般に知れわたるようになって7,8年(IBMワトソンがクイズで人間に勝った2011年起算)経つわけですが、なんとなくのアルゴリズムについてはちょっとかじった程度で、実際に学習させたり学習データを活用するところまでは至っていません。
買ってちょっと読んで積んでる本は有名どころですがこのあたり。
ゼロから作るDeepLerningで計算処理について半分くらいは写経してみたものの、数学あまり強くない私にとってはかなりハードル高い。
TensorFlowについても環境構築面や実際学習させるところで、なかなか難しく、プログラミングにおいて最大の挫折ポイントは環境構築という言葉が身にしみます。
そこでJetson Nano
大雑把に言えばCUDAが使えるRaspberry PI のようなワンボードPC。
Ubuntu LinuxイメージファイルをまるごとMicro SDにコピーして使えるため、環境構築することができる。そのためネットの情報を参照して動かしやすいはず…(nanoより先行してリリースされたTX2やXaviarが母艦PC側にもセットアップが必要なことを考えると手軽)
ということでセットアップして、DeepLearningサンプルを動かすところまでやってみました。
機材の確認
□ SDカード
□ ACアダプタ
USBで2A以上のもの
または、5V 2A以上の内径 2.1 mm 外径 5.5 mmプラグつきアダプタ
(後者の場合 J48ピンを通電させる必要があります)
□ キーボード & マウス
USB接続であれば問題ないはず
□ 有線LAN環境
Wifi接続したい場合、別途アダプタが必要
□ HDMI or DisplayPort ケーブルと対応モニター
OSイメージをmicroSDカードに焼き込む
この辺は公式ドキュメントに従うだけ。
Write Image to the microSD Cardの項目に従ってEtcher・Card Imageをダウンロードし焼く手法であれば事故も少なく、難しくないかと思います。
起動する
SDカードを本体に挿入し、電源接続すれば起動します。
初回起動時には言語設定とキーボード設定、ログインユーザー設定が必要です。DVDブートでLinuxインストールするよりお手軽ですね。
こんな小さなボードで4K出力ができるなんてすごい!
必要ツールのインストール & ビルド
このあたりから実際にDeepLearningを試してみる準備。
以下を参考にさせてもらいました。
Terminalを開いてコマンドにてインストールを進めます。
git, cmakeのインストール
sudo apt-get update
sudo apt-get install git cmake
jetson-inferenceのクローン
サブモジュールが含まれているのでDLしておく必要があります。
ここではホームディレクトリにDLして進めたいと思います。
cd ~/
git clone https://github.com/dusty-nv/jetson-inference
cd jetson-inference
git submodule update --init
build ディレクトリを作成し cmakeでmakeの準備
mkdir build
cd build
cmake ../
makeでビルド
この処理はそこそこ時間がかかると思います。
cd ~/jetson-inference/build
make
sudo make install
以下に実行ファイルが出来上がっているはずです。
cd ~/jetson-inference/build/aarch64/bin
ls -la # ファイルの確認したい場合はlsで
認識させる
サンプル画像も一緒に入ってるのですぐ試してみることができます。
以下はorange_0.jpgを読み込んで、output_0.jpgを出力するコマンド。
そこそこ時間がかかります。
./imagenet-console orange_0.jpg output_0.jpg
画像が大きく文字が見えづらいが、97.891%でOrangeという判定。
問題無さそうです。
最初から付属している画像以外にもダウンロードしたイラストでも試してみた。
レモン50%と判定されました。同じ柑橘類ではありますが違いますね。
同じところからDLしたイチゴのイラスト
画像が小さく、文字がはみ出てしまいましたが、イラストでもしっかりstraw(berry)と判定されていますね。ちなみにDLしたイラストは画像が小さいためかオレンジより処理が早かった。
リンゴのサンプル画像
なぜかpomegranate(ザクロ)という感じで、完璧とはいかないようです。
今日のところはここまでとして、カメラ入力から物を判別するなども試してみたいと思います。
この記事が気に入ったらサポートをしてみませんか?