Jetson Nanoを使って物体検出(YOLO) -①Jetson Nanoの設定編-


はじめに

会社の同僚とJetson Nanoを使用して、YOLOによる物体検出にチャレンジしてみました。

①【基本】Jetson Nanoの設定
②【基本】Jetson Nano上で物体検出YOLOの実行
③【発展】オリジナルモデルを作成して実行

今回は①Jetson Nanoの設定編となります。
実際に購入したもののリンクも貼り付けますので、参考にしてみてください。

1. 用意するもの

  • NVIDIA Jetson nano開発者kit
  • Wifi 無線LAN 子機
    →無線LANを使用するなら必要。こちらを購入しました。
  • microSDカード
    →64GBのものを使用
  • USBカメラ
    →Amazonで1,000円くらいのものを購入しました。
     解像度が高すぎると、処理が重くなりますので、こんな感じの低いものでいいです。
  • HDMIケーブル、HDMI接続可能なモニター
    →モニターについては、TVがHDMI接続可能であれば、TVでも大丈夫です。
  • 電源アダプター
    →USB給電もできますが、物体検出を行うなら電力不足になります。
     4A-5VのJ25電源アダプターが必要となります。
  • USBマウス、USBキーボード

2. ジャンパーピンのセッティング

電源アダプターからの給電を行うために、J48ヘッダーに2.54mmピッチのジャンパーピンを取り付ける必要があります。
ジャンパーピンは開発者キットに付属していました。
付属していないときもあるみたいなので、なければ購入が必要です。

3.microSDへOSのインストール

Windowsパソコンを使用してmicroSDにOSをインストールしましょう。

OS「JetPack」のダウンロード

NVIDIA公式サイトから「JetPack」をダウンロードします。NVIDIA社のJetPackページにパソコンでアクセスし、公式サイトから最新版のOSイメージをダウンロードします。下記画像のJETSON NANO DEVELOPER KITSのDownload the SD Card Imageをクリックを選択します。
zipファイルがダウンロードされますので、展開しておきましょう。
拡張子が.imgとなっているファイルがあるはずです。この後使用します。
https://developer.nvidia.com/embedded/jetpack

SDカードのフォーマット

microSDカードを初期化(フォーマット)します。SD Associationが提供する「SDカードフォーマッター」をダウンロードしてインストール後、クイックフォーマットでフォーマットします。
https://www.sdcard.org/jp/downloads/formatter/

SDカードに書き込む

balenaEtcherというソフトを使用するため、下記サイトからインストールをしてください。
balenaEtcherを起動後、Select imageをクリックして、先ほどダウンロードした「~.img」ファイルを選択します。
Select targetでは、先ほどのSDカードを選択します。
最後にFlash!を選択すれば、書き込みが開始されます。時間がかかるので、気長に待ちます。
https://www.balena.io/etcher/

4. Jetson Nanoの初期設定

microSDカードを挿入し、USBポートにWifi無線LAN子機/キーボード/マウス、HDMIでディスプレイを接続した状態で電源アダプターを差し込むと電源が入ります。
あとは表示内容に従って、設定を行いましょう。
注意事項ですが、言語選択についてはEnglishを選択しましょう。
日本語にすると、ディレクトリが日本語になってしまい、余計なことで悩まされることになります。

5. Swapの設定

Jetson Nanoには4GBのメモリが積まれていますが、物体検出を行うためには、不十分な容量となります。microSDを仮想メモリとして利用するために、Swapファイルを作成しましょう。
以下のコマンドを実行すれば、4GBのSwapファイルを作成することができます。

# Swapファイルの作成
sudo dd if=/dev/zero of=/var/swapfile bs=1G count=4 #4GB
sudo mkswap /var/swapfile #Swapファイルの初期化
sudo chmod 600 /var/swapfile #ファイル権限の変更(rootユーザーのみがアクセス可能)

countの値を変更することで、Swapファイルの大きさを変更することができます。

また、Jetson Nano起動時に、自動的にSwapファイルをマウントするためには/etc/fstabファイルを開き、末尾に下記の一行追加します。
/var/swapfile none swap swap 0 0
ここで再起動するか、再起動せずにSwapファイルを有効化するためには下記コマンドを実行してください。

# Swapファイルの有効化
sudo swapon /var/swapfile

free -mコマンドを実行すれば割り当てられているSwap領域のサイズを確認することができます。(初期状態で2GBのSwap領域が割り当てられているので、6GBになるはずです。)

※参考:【Linux】スワップ領域の作成

6. パフォーマンス最大化

最大パフォーマンスを発揮するために、パワーモードを変更しましょう。
下記を実行するだけでパフォーマンスを最大化することができます。

sudo nvpmodel -m 0
sudo jetson_clocks

まとめ

以上でJetson Nanoの設定は完了です。
次回はJetson Nano上で物体検出を実行してみます。
https://qiita.com/Kim_Burton/items/455d21c8eb9da687aecc

参考文献

謝辞

本内容については、会社の同僚の三原さんと一緒に検証した内容になります。
また、コネクタ周りは元同僚の崔さんに確認いたしました。
この場をお借りして御礼申し上げます。