変わりモノがいい!

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

PiCar-V Self-driving チャレンジ ステップバイステップで進めます。

進め方を見直しました。

Chainerを使った、PiCar-VのSelf-drivingがあまりに順調に進んだので実力を超えたチャレンジをしていたかも知れません。
Tensorflow + Keras + Coral Edge TPU を使ったSelf-drivingは幾つもの課題を持っており、今の実力ではかなりハードルが高いものだということを痛感しました。
ということで、考え方を変え、ステップバイステップで進めることとしました。
最初のステップは、Chainerに近いプラットフォームであるPytorchへの移植をすることにしました。

f:id:ken2017:20200916155647p:plain

この目的は、Chainerに近いプラットフォームに変更することで、Chainerから別のプラットフォームに移る時に発生する課題を抽出、対応し(否が応でも対応することになる)、プラットフォームの変更に慣れることです。
実際問題として、Chainerではできるがkerasではできないという問題も発生しており、こういう課題への対応方法を見つける必要があります。
これを似ていないプラットフォームでやることは結構大変なので、まずは似ているプラットフォームから着手することとしました。
Pytorchの正式ドキュメントは以下。

pytorch.org

ChainerとPytorchの機能対応表が以下。

https://chainer.github.io/migration-guide/#h.mkuuagm60br0

プラットフォームを変えてのDeep Learningコードのサンプルがあるのがこちら。
Chainer、Pytorch、Tensorflo、Kerasなどが載っています。

qiita.com

思ったより大変!

親戚のように近い関係のChainerとPytorchの移行でさえ時間がかかりました。
当然ではありますが、ChainerとPytorchでは機能が違うのでコードの書き換えが必要です。
概ね同じ記載でいけますが、幾つかのものは記載の変更が必要で、更に数は少ないですが、幾つかのものはChainerにはあってPytorchには無い機能があります。
Pytorchの古いバージョンでは動いていたが新しいバージョンでは動かない(エラーになる)という機能もありました(新しいバージョンでは0次元データの結合ができない、古いバージョンでは0次元の認識をしていなかったので結合できていた)。
モデルの作り方も当然違います。
コードを動かしてはエラーを発生させ、ネットで調べ、上や下にある記事を見つけてはコードをお試しで修正し、そして動かし、またエラーを出す。
これを延々と繰り返し、朝から始めてまともに動き始めたのは午後3時30分過ぎ。
7時間程度はかかっています。

qiita.com

qiita.com

今もSurface Laptop2が一生懸命に学習動作をしていますが、ステアリングのLossの数値が思ったより大きく(epoch数250の段階でLossが277)、上手くいっているのかどうかは不明です。
epoch数を1000としていますので終わるのを待ちたいと思います。
うまく行ったようであれば学習で求められたモデルをPiCar-Vに搭載してSelf-drivingをしてみたいと思います。
Chainerとの違いがあるか興味津々です。
今日はここまで。

では、また。

 

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