変わりモノがいい!

変わりモノには価値がある・・・ハズ?

Pi式Jetracer Pro奮闘記 続編‐1

やっと判りました。

Pi式Jetracer Proを走行させて学習のためのデータを採取し、それを使っての学習をやったところエラーが出て処理が止まりました。
ここまでが前回の記事に無いようになります。
悩みました。
原因を見つけるのに2日ばかりかかりました。
エラーになった原因は驚くものでした。
それでは内容を紹介しましょう。

f:id:ken2017:20210611114030j:plain

メーカの手順書を信じてはいけないの?

僕はwaveshareのJetracer Proを買って、普通はJetson nanoを搭載すべきではあるものの費用削減目的で手持ちのRaspberry Pi4とPicameraを搭載してPi式Jetracer Proとして立上中です。
従って、アプリは当然ながらPiracer Proのものを使うわけでして、waveshareのPiracer pro wikiの記事にそった手順で作業を行っています。
学習のためのデータ取りまでは、ささいな問題はあったものの大きな問題もなく作業を進めることができました。
データを採取できたのでホストPCでの学習作業に入りました。
参考にした記事はコチラ。

www.waveshare.com

ところが、学習処理を開始し、モデルが出来上がったものの、データ数がゼロと認識されてデータ不足で処理ができないという旨のエラーが出ました。
??? データは10000個以上あるよ、何故? ということでハマってしまいました。
前回の記事で、学習のためのデータを取ったが、途中で止めて画像データだけ削除して学習のデータ取りを再開したことが原因かな、と書きましたが全く違っていました。
原因が判るまでに2日かかったわけですが、この間に、Pi式Jetracer Proの車側のコードも、ホストPC側のコードも見ました。
似たような問題が起きたとの記事もあるのですが、データのファイルタイプが違うのです。

github.com

僕が取ったデータは、画像データは当然jpg形式で、フォルダdataの中のimagesというフォルダに入っており、dataの中にはそのほかに以下のようなファイルがありました。
catalog_0.catalog
catalog_0.catalog_manifest
・・・
catalog_11.catalog
catalog_11.catalog_manifest
manifest.json
でも、上の記事では、画像データはフォルダdataの中に例えば tub_1_19-09-23のような形で日付を使ったフォルダ名のフォルダの中に入っているとのことでした。
また、その画像データに対応したjsonファイルが存在するとのことでした。
また、画像データとjsonファイルは同じフォルダ内にあるような感じです。
そんなばかな?
メーカ指定の手順に従っているのに何故違うの?
Donkey Carの公式ドキュメントを見てもメーカ指定の記事と同じような内容になっています。

docs.donkeycar.com


ますまず頭は混乱です。
途方に暮れてメーカ指定の手順書を再度見ていると、あれれ???不思議なものを見つけました。
車側にもホストPCにも仮想環境を作り、そこにアプリをインストールしていくのですが、共通でインストールするものがあります。
その一つに、Donkey Carのアプリがあります。
それが何と車側であるRaspberry Piにインストールしろと言われているものとホストPCにインストールしろと言われているものが違っています。
それがコレです。
Raspberry Piへのインストール指示

f:id:ken2017:20210611121834j:plain
ホストPCへのインストール指示

f:id:ken2017:20210611121952j:plain
Raspberry Piにはautoropeのdonkeycarをインストールしろと言い、
ホストPCにはwaveshareのdonkeyvcarをインストールしろと言っています。
これが、Piracerなら両者ともwaveshareのdonkeycarなのですが、
Piracer ProはRaspberry Pi側のみautoropeのdonkeycarになっています。
そこでwaveshareのdonkeycarとautoropeのdonkeycarを調べましたが、違っていました。
これが原因?
そんなばかな、ホストPCへのアプリのインストールの記載を間違えたってこと?
まあ、やってみよう、ということでホストPCにautoropeのdonkeyvcarを入れなおして学習をやってみました。
python ~/mycar/manage.py train --model ~/mycar/models/mypilot.h5
するとエラーは発生しませんでしたが、train.pyを動かせとメッセージがでました。
指示の通り、
python ~/mycar/train.py --model ~/models/mypilot.h5
と入力すると、今度はtubに関する記載がない旨のエラーが出ました。
幾つか試行錯誤の末、
python ~/mycar/train.py -- tub ~/mycar/data --model ~/mycar/models/mypilot.h5
と入力すると別のエラーが発生するも一歩前進。
上の所でも書きました、画像データとjson他のファイルは同じフォルダ内にあるはずのようなのでフォルダimagesにjsonファイル他を移動しました。
そして再度、
python ~/mycar/train.py -- tub ~/mycar/data --model ~/mycar/models/mypilot.h5
と入力すると、なんと、動きました。

f:id:ken2017:20210611123609j:plain
モデルもちゃんと出来ています。

f:id:ken2017:20210611123704j:plain
画像データ数もちゃんと認識されています。
無事、学習も開始されました。

f:id:ken2017:20210611123756j:plain
ところがepoch7で終了。

f:id:ken2017:20210611123929j:plain
結果を見る限り、キチンと学習できていません。
そんなバカな、と思い、画像データを見てみると、理由が判らないのですが、全ての画像データが全く同じものでした。
全く同じ写真でした。
どうやったらこんなことが起きるのか不明ですが、まずは学習が動くところまでは確認ができました。
Piracer Proを買う人は多くないと思いますが、買って立ち上げようとしたら間違いなく同じ問題にぶち当たると思います。
waveshareは記事の修正を行う必要がありますね。

今日は、ここまで。
次回は学習のデータを取り直して、学習処理を行いたいと思います。
では、また。

 

プライバシーポリシー お問い合わせ