Jetson Nanoで自律走行ラジコンを作る(6)
Jetson Nanoで自律走行ラジコンを作る(5)
今回は、TensorRTというDNNの推論エンジンを利用して前回作成したモデルをJetson Nano上で実行する。
「Jetson Nanoで自律走行ラジコンを作る」シリーズのまとめ記事は以下。
続きを読むJetson Nanoで自律走行ラジコンを作る(4)
Jetson Nanoで自律走行ラジコンを作る(3)
「Jetson Nanoで自律走行ラジコンを作る」シリーズのまとめ記事は以下。
モデルの訓練に必要なデータをGoogle Driveにアップロードできたので、ブラウザ上からPyhonが使える実行環境であるGoogle Colabを利用してモデルを作成しようと思う。
今回は前回機体から収集したデータの内容を確認しつつTensorFlow上でデータセットを作成する。
やり方はTensorFlowのチュートリアルを参考にした。
「Jetson Nanoで自律走行ラジコンを作る」シリーズ 記事一覧
「Jetson Nanoで自律走行ラジコンを作る」の各記事のリンク・簡単な内容のまとめです。
記事を追加するたびに更新予定です。
Jetson Nanoで自律走行ラジコンを作る(2)
前回記事は以下。
Jetson Nanoで自律走行ラジコンを作る(1) - 自由課題
今回は、機内で収集したデータをGoogle Driveにアップロードするスクリプトを作成してみようと思う。今回はPythonで書く。
Google DriveにアクセスするためのAPIはDrive APIというらしく、APIの説明は以下にある。
APIを使用したい場合はGCPのプロジェクトを作成していろいろな設定をする必要があるので、心を無にして言われた通りにする。クレデンシャル作成時にアプリケーションの種類を何となく"TVs and limited input device"にした*1。
簡単な動作確認を行うためのスクリプトが用意されているので、これを実行する。
上記を実行するには以下が必要だった。
$ sudo apt-get install python3-pip $ pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
スクリプトを実行すると、Google Drive内のファイルが10個表示される。ここまで確認できたら、最終的には何かデータをアップロードするので、いろいろ調べながら適当なファイルをアップロードするスクリプトを書いてみる。以下の公式ドキュメントが参考になった*2。
Upload file data | Google Drive API | Google Developers
google-api-python-client/media.md at master · googleapis/google-api-python-client · GitHub
API Documentation
https://googleapis.github.io/google-api-python-client/docs/dyn/drive_v3.files.html
ちなみに、Google DriveのAPIを使用するためには単に自分のGoogleアカウントのパスワードを用意するだけではダメで、GCP上にアプリケーションを作成する必要があるのでちょっと面倒ではある。
いろいろドキュメントを読んだり実際の動作を確認したところによると、少なくともこの記事執筆時点では、ファイルのアップロード速度はそれほど速くなく複数ファイルをバッチアップロードする機能もないように見える。今回のケースでは秒間30個のファイル*3が生成されるので、訓練データの生成時にリアルタイムで各ファイルをGoogle Driveにアップロードするのは無理そうだ。何となく走行中リアルタイムにデータをアップロードするのを想像してテンションを上げていたので残念である*4。
仕方がないので、訓練データを収集し終わった時点で一旦データをtarballにして、このファイルをアップロードすることにする。Google Drive側でフックを掛けるか学習スクリプト内で前処理するかしてデータを展開する予定である。
tarballを作成するのは標準のtarfile
パッケージを使えばよい。Pythonにはこのような基本的なものはバンドルされているのでちょっとしたものを作りやすい。
スクリプトは以下にpushしてある。
今回の実装追加でデータフローは以下のようになった。
Jetson NanoにSSHで接続してスクリプトを実行してもよいのだが、実行するコマンドはいつも同じなのでゲームパッドのSELECTボタンを押すと実行されるようにした。
あまり考えていないが、おそらく手動走行と自律走行の切り替えは何らか必要なので無駄になることはない気がする。
ということで、数分間自宅のリビングを適当に走行させて5500セットくらいの訓練データを収集・アップロードした。画像(360x240)は1枚20〜30KB程度で、展開後のデータサイズは総計200MB程度のようだった。
うまくいくか分からないが、次回はいよいよモデルを作り始めてみる。
Jetson NanoでFPVラジコンを作るシリーズ 記事一覧
「Jetson NanoでFPVラジコンを作るシリーズ」の各記事のリンク・簡単な内容のまとめです。
続きを読む