FPGAの部屋

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ご利用ください。 http://marsee101.web.fc2.com/index.html

カテゴリ: Donkey Car

Donkey Car のキャリブレーション、教師データの取得を行った”の続き。

前回は、Donkey Car のキャリブレーションを行って、コースを走らせて教師データを取得した。今回は、教師データをGoogle Colaboratory で学習して、学習したモデルをDonkey Car に移して自動走行させてみよう。

Donkey Car の ~/mycar/data/ ディレクトリを見ると、tub_.... というディレクトリが並んでいた。
7b38c51c.png


今回使用するのは、tub_6_19-07-29 と tub_7_19-07-29 だ。両方合わせて 10269 データある。これを datas.zip に圧縮してホストパソコンの ~/Donkey_Car/ ディレクトリにSFTP する。
3dad1445.png


Colabでの学習(GPU)

Donkey Car のGoogle Colab を起動した。

”ドライブにコピー”をクリックして、自分のGoogle Drive にコピーした。
38fcf63f.png


Google Drive にDonkey Car のJupyter Notebook がコピーされたので、それを起動した。
8f1c37d8.png


Donkey Car のJupyter Notebook を実行していった。
08244b49.png

8dcfa654.png

ff81b704.png

datas.zip をアップロードして、解凍し、学習データとしてニューラルネットワークを学習した。

fd3364e7.png

loading config file: /content/mycar/config.py
loading personal config over-rides

config loaded
"get_model_by_type" model Type is: categorical
training with model type <class 'donkeycar.parts.keras.KerasCategorical'>
Model: "model_1"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
img_in (InputLayer)             [(None, 120, 160, 3) 0                                            
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 58, 78, 24)   1824        img_in[0][0]                     
__________________________________________________________________________________________________
dropout_6 (Dropout)             (None, 58, 78, 24)   0           conv2d_1[0][0]                   
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 27, 37, 32)   19232       dropout_6[0][0]                  
__________________________________________________________________________________________________
dropout_7 (Dropout)             (None, 27, 37, 32)   0           conv2d_2[0][0]                   
__________________________________________________________________________________________________
conv2d_3 (Conv2D)               (None, 12, 17, 64)   51264       dropout_7[0][0]                  
__________________________________________________________________________________________________
conv2d_4 (Conv2D)               (None, 5, 8, 64)     36928       conv2d_3[0][0]                   
__________________________________________________________________________________________________
dropout_8 (Dropout)             (None, 5, 8, 64)     0           conv2d_4[0][0]                   
__________________________________________________________________________________________________
conv2d_5 (Conv2D)               (None, 3, 6, 64)     36928       dropout_8[0][0]                  
__________________________________________________________________________________________________
dropout_9 (Dropout)             (None, 3, 6, 64)     0           conv2d_5[0][0]                   
__________________________________________________________________________________________________
flattened (Flatten)             (None, 1152)         0           dropout_9[0][0]                  
__________________________________________________________________________________________________
fc_1 (Dense)                    (None, 100)          115300      flattened[0][0]                  
__________________________________________________________________________________________________
dropout_10 (Dropout)            (None, 100)          0           fc_1[0][0]                       
__________________________________________________________________________________________________
fc_2 (Dense)                    (None, 50)           5050        dropout_10[0][0]                 
__________________________________________________________________________________________________
dropout_11 (Dropout)            (None, 50)           0           fc_2[0][0]                       
__________________________________________________________________________________________________
angle_out (Dense)               (None, 15)           765         dropout_11[0][0]                 
__________________________________________________________________________________________________
throttle_out (Dense)            (None, 20)           1020        dropout_11[0][0]                 
==================================================================================================
Total params: 268,311
Trainable params: 268,311
Non-trainable params: 0
__________________________________________________________________________________________________
None
found 0 pickles writing json records and images in tub /content/mycar/data/tub_6_19-07-29
found 0 pickles writing json records and images in tub /content/mycar/data/tub_7_19-07-29
/content/mycar/data/tub_6_19-07-29
/content/mycar/data/tub_7_19-07-29
collating 10269 records ...
train: 8215, val: 2054
total records: 10269
steps_per_epoch 64
Epoch 1/100
63/64 [============================>.] - ETA: 0s - loss: 3.3674 - angle_out_loss: 2.2257 - throttle_out_loss: 2.2545 - angle_out_acc: 0.2696 - throttle_out_acc: 0.3826
Epoch 00001: val_loss improved from inf to 3.13174, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 12s 184ms/step - loss: 3.3630 - angle_out_loss: 2.2232 - throttle_out_loss: 2.2514 - angle_out_acc: 0.2706 - throttle_out_acc: 0.3831 - val_loss: 3.1317 - val_angle_out_loss: 1.9923 - val_throttle_out_loss: 2.1356 - val_angle_out_acc: 0.3462 - val_throttle_out_acc: 0.3809
Epoch 2/100
63/64 [============================>.] - ETA: 0s - loss: 3.1067 - angle_out_loss: 2.0148 - throttle_out_loss: 2.0993 - angle_out_acc: 0.3323 - throttle_out_acc: 0.3932
Epoch 00002: val_loss improved from 3.13174 to 2.98889, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 53ms/step - loss: 3.1063 - angle_out_loss: 2.0139 - throttle_out_loss: 2.0994 - angle_out_acc: 0.3337 - throttle_out_acc: 0.3938 - val_loss: 2.9889 - val_angle_out_loss: 1.9188 - val_throttle_out_loss: 2.0295 - val_angle_out_acc: 0.3452 - val_throttle_out_acc: 0.3862
Epoch 3/100
63/64 [============================>.] - ETA: 0s - loss: 3.0231 - angle_out_loss: 1.9465 - throttle_out_loss: 2.0499 - angle_out_acc: 0.3960 - throttle_out_acc: 0.4428
Epoch 00003: val_loss improved from 2.98889 to 2.92830, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 3.0233 - angle_out_loss: 1.9471 - throttle_out_loss: 2.0497 - angle_out_acc: 0.3971 - throttle_out_acc: 0.4431 - val_loss: 2.9283 - val_angle_out_loss: 1.8372 - val_throttle_out_loss: 2.0097 - val_angle_out_acc: 0.4624 - val_throttle_out_acc: 0.4546
Epoch 4/100
62/64 [============================>.] - ETA: 0s - loss: 2.8735 - angle_out_loss: 1.8158 - throttle_out_loss: 1.9656 - angle_out_acc: 0.4970 - throttle_out_acc: 0.4946
Epoch 00004: val_loss improved from 2.92830 to 2.69279, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.8727 - angle_out_loss: 1.8150 - throttle_out_loss: 1.9652 - angle_out_acc: 0.4966 - throttle_out_acc: 0.4950 - val_loss: 2.6928 - val_angle_out_loss: 1.6640 - val_throttle_out_loss: 1.8608 - val_angle_out_acc: 0.5469 - val_throttle_out_acc: 0.5000
Epoch 5/100
62/64 [============================>.] - ETA: 0s - loss: 2.7645 - angle_out_loss: 1.7299 - throttle_out_loss: 1.8995 - angle_out_acc: 0.5219 - throttle_out_acc: 0.5150
Epoch 00005: val_loss improved from 2.69279 to 2.65042, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 52ms/step - loss: 2.7651 - angle_out_loss: 1.7300 - throttle_out_loss: 1.9001 - angle_out_acc: 0.5222 - throttle_out_acc: 0.5144 - val_loss: 2.6504 - val_angle_out_loss: 1.6285 - val_throttle_out_loss: 1.8362 - val_angle_out_acc: 0.5547 - val_throttle_out_acc: 0.5249
Epoch 6/100
63/64 [============================>.] - ETA: 0s - loss: 2.6785 - angle_out_loss: 1.6660 - throttle_out_loss: 1.8455 - angle_out_acc: 0.5433 - throttle_out_acc: 0.5295
Epoch 00006: val_loss improved from 2.65042 to 2.55639, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.6771 - angle_out_loss: 1.6656 - throttle_out_loss: 1.8443 - angle_out_acc: 0.5436 - throttle_out_acc: 0.5295 - val_loss: 2.5564 - val_angle_out_loss: 1.5467 - val_throttle_out_loss: 1.7830 - val_angle_out_acc: 0.5791 - val_throttle_out_acc: 0.5322
Epoch 7/100
62/64 [============================>.] - ETA: 0s - loss: 2.6023 - angle_out_loss: 1.6173 - throttle_out_loss: 1.7936 - angle_out_acc: 0.5557 - throttle_out_acc: 0.5387
Epoch 00007: val_loss improved from 2.55639 to 2.53856, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.6040 - angle_out_loss: 1.6213 - throttle_out_loss: 1.7933 - angle_out_acc: 0.5535 - throttle_out_acc: 0.5383 - val_loss: 2.5386 - val_angle_out_loss: 1.5468 - val_throttle_out_loss: 1.7651 - val_angle_out_acc: 0.5542 - val_throttle_out_acc: 0.5347
Epoch 8/100
63/64 [============================>.] - ETA: 0s - loss: 2.5492 - angle_out_loss: 1.5788 - throttle_out_loss: 1.7598 - angle_out_acc: 0.5590 - throttle_out_acc: 0.5484
Epoch 00008: val_loss improved from 2.53856 to 2.48855, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.5489 - angle_out_loss: 1.5782 - throttle_out_loss: 1.7598 - angle_out_acc: 0.5591 - throttle_out_acc: 0.5487 - val_loss: 2.4886 - val_angle_out_loss: 1.5071 - val_throttle_out_loss: 1.7350 - val_angle_out_acc: 0.5752 - val_throttle_out_acc: 0.5439
Epoch 9/100
63/64 [============================>.] - ETA: 0s - loss: 2.4850 - angle_out_loss: 1.5364 - throttle_out_loss: 1.7168 - angle_out_acc: 0.5671 - throttle_out_acc: 0.5530
Epoch 00009: val_loss improved from 2.48855 to 2.45861, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.4876 - angle_out_loss: 1.5366 - throttle_out_loss: 1.7193 - angle_out_acc: 0.5669 - throttle_out_acc: 0.5521 - val_loss: 2.4586 - val_angle_out_loss: 1.4642 - val_throttle_out_loss: 1.7265 - val_angle_out_acc: 0.5908 - val_throttle_out_acc: 0.5547
Epoch 10/100
63/64 [============================>.] - ETA: 0s - loss: 2.4513 - angle_out_loss: 1.5038 - throttle_out_loss: 1.6994 - angle_out_acc: 0.5754 - throttle_out_acc: 0.5577
Epoch 00010: val_loss improved from 2.45861 to 2.42520, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 52ms/step - loss: 2.4534 - angle_out_loss: 1.5047 - throttle_out_loss: 1.7010 - angle_out_acc: 0.5748 - throttle_out_acc: 0.5569 - val_loss: 2.4252 - val_angle_out_loss: 1.4220 - val_throttle_out_loss: 1.7142 - val_angle_out_acc: 0.5820 - val_throttle_out_acc: 0.5449
Epoch 11/100
62/64 [============================>.] - ETA: 0s - loss: 2.4054 - angle_out_loss: 1.4839 - throttle_out_loss: 1.6635 - angle_out_acc: 0.5725 - throttle_out_acc: 0.5601
Epoch 00011: val_loss improved from 2.42520 to 2.36648, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 52ms/step - loss: 2.4062 - angle_out_loss: 1.4828 - throttle_out_loss: 1.6648 - angle_out_acc: 0.5730 - throttle_out_acc: 0.5603 - val_loss: 2.3665 - val_angle_out_loss: 1.3953 - val_throttle_out_loss: 1.6688 - val_angle_out_acc: 0.6045 - val_throttle_out_acc: 0.5698
Epoch 12/100
63/64 [============================>.] - ETA: 0s - loss: 2.3627 - angle_out_loss: 1.4525 - throttle_out_loss: 1.6365 - angle_out_acc: 0.5794 - throttle_out_acc: 0.5682
Epoch 00012: val_loss improved from 2.36648 to 2.31995, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.3616 - angle_out_loss: 1.4535 - throttle_out_loss: 1.6349 - angle_out_acc: 0.5793 - throttle_out_acc: 0.5680 - val_loss: 2.3199 - val_angle_out_loss: 1.3824 - val_throttle_out_loss: 1.6288 - val_angle_out_acc: 0.5928 - val_throttle_out_acc: 0.5635
Epoch 13/100
63/64 [============================>.] - ETA: 0s - loss: 2.3167 - angle_out_loss: 1.4297 - throttle_out_loss: 1.6018 - angle_out_acc: 0.5877 - throttle_out_acc: 0.5725
Epoch 00013: val_loss improved from 2.31995 to 2.31693, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.3165 - angle_out_loss: 1.4279 - throttle_out_loss: 1.6026 - angle_out_acc: 0.5880 - throttle_out_acc: 0.5724 - val_loss: 2.3169 - val_angle_out_loss: 1.3568 - val_throttle_out_loss: 1.6385 - val_angle_out_acc: 0.5928 - val_throttle_out_acc: 0.5605
Epoch 14/100
62/64 [============================>.] - ETA: 0s - loss: 2.2868 - angle_out_loss: 1.4144 - throttle_out_loss: 1.5796 - angle_out_acc: 0.5868 - throttle_out_acc: 0.5766
Epoch 00014: val_loss improved from 2.31693 to 2.24896, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.2894 - angle_out_loss: 1.4154 - throttle_out_loss: 1.5817 - angle_out_acc: 0.5872 - throttle_out_acc: 0.5752 - val_loss: 2.2490 - val_angle_out_loss: 1.3076 - val_throttle_out_loss: 1.5952 - val_angle_out_acc: 0.6035 - val_throttle_out_acc: 0.5737
Epoch 15/100
63/64 [============================>.] - ETA: 0s - loss: 2.2467 - angle_out_loss: 1.3801 - throttle_out_loss: 1.5566 - angle_out_acc: 0.5887 - throttle_out_acc: 0.5745
Epoch 00015: val_loss did not improve from 2.24896
64/64 [==============================] - 3s 50ms/step - loss: 2.2467 - angle_out_loss: 1.3810 - throttle_out_loss: 1.5562 - angle_out_acc: 0.5884 - throttle_out_acc: 0.5742 - val_loss: 2.2712 - val_angle_out_loss: 1.3112 - val_throttle_out_loss: 1.6156 - val_angle_out_acc: 0.6089 - val_throttle_out_acc: 0.5625
Epoch 16/100
63/64 [============================>.] - ETA: 0s - loss: 2.2113 - angle_out_loss: 1.3579 - throttle_out_loss: 1.5323 - angle_out_acc: 0.5946 - throttle_out_acc: 0.5812
Epoch 00016: val_loss improved from 2.24896 to 2.23349, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 50ms/step - loss: 2.2103 - angle_out_loss: 1.3572 - throttle_out_loss: 1.5316 - angle_out_acc: 0.5953 - throttle_out_acc: 0.5813 - val_loss: 2.2335 - val_angle_out_loss: 1.2920 - val_throttle_out_loss: 1.5875 - val_angle_out_acc: 0.6113 - val_throttle_out_acc: 0.5732
Epoch 17/100
62/64 [============================>.] - ETA: 0s - loss: 2.1604 - angle_out_loss: 1.3338 - throttle_out_loss: 1.4935 - angle_out_acc: 0.5997 - throttle_out_acc: 0.5882
Epoch 00017: val_loss improved from 2.23349 to 2.20767, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.1608 - angle_out_loss: 1.3312 - throttle_out_loss: 1.4952 - angle_out_acc: 0.6007 - throttle_out_acc: 0.5875 - val_loss: 2.2077 - val_angle_out_loss: 1.2500 - val_throttle_out_loss: 1.5827 - val_angle_out_acc: 0.6270 - val_throttle_out_acc: 0.5757
Epoch 18/100
62/64 [============================>.] - ETA: 0s - loss: 2.1226 - angle_out_loss: 1.3036 - throttle_out_loss: 1.4708 - angle_out_acc: 0.6040 - throttle_out_acc: 0.5903
Epoch 00018: val_loss improved from 2.20767 to 2.18893, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 50ms/step - loss: 2.1239 - angle_out_loss: 1.3017 - throttle_out_loss: 1.4730 - angle_out_acc: 0.6046 - throttle_out_acc: 0.5903 - val_loss: 2.1889 - val_angle_out_loss: 1.2589 - val_throttle_out_loss: 1.5595 - val_angle_out_acc: 0.6172 - val_throttle_out_acc: 0.5835
Epoch 19/100
62/64 [============================>.] - ETA: 0s - loss: 2.0955 - angle_out_loss: 1.2993 - throttle_out_loss: 1.4459 - angle_out_acc: 0.6119 - throttle_out_acc: 0.6006
Epoch 00019: val_loss improved from 2.18893 to 2.16634, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.1009 - angle_out_loss: 1.3013 - throttle_out_loss: 1.4503 - angle_out_acc: 0.6113 - throttle_out_acc: 0.5996 - val_loss: 2.1663 - val_angle_out_loss: 1.2460 - val_throttle_out_loss: 1.5433 - val_angle_out_acc: 0.6211 - val_throttle_out_acc: 0.5923
Epoch 20/100
63/64 [============================>.] - ETA: 0s - loss: 2.0628 - angle_out_loss: 1.2745 - throttle_out_loss: 1.4256 - angle_out_acc: 0.6136 - throttle_out_acc: 0.6017
Epoch 00020: val_loss did not improve from 2.16634
64/64 [==============================] - 3s 50ms/step - loss: 2.0644 - angle_out_loss: 1.2772 - throttle_out_loss: 1.4259 - angle_out_acc: 0.6121 - throttle_out_acc: 0.6019 - val_loss: 2.1808 - val_angle_out_loss: 1.2118 - val_throttle_out_loss: 1.5749 - val_angle_out_acc: 0.6313 - val_throttle_out_acc: 0.5771
Epoch 21/100
63/64 [============================>.] - ETA: 0s - loss: 2.0410 - angle_out_loss: 1.2611 - throttle_out_loss: 1.4104 - angle_out_acc: 0.6146 - throttle_out_acc: 0.6104
Epoch 00021: val_loss improved from 2.16634 to 2.15919, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.0427 - angle_out_loss: 1.2631 - throttle_out_loss: 1.4111 - angle_out_acc: 0.6147 - throttle_out_acc: 0.6101 - val_loss: 2.1592 - val_angle_out_loss: 1.2323 - val_throttle_out_loss: 1.5430 - val_angle_out_acc: 0.6284 - val_throttle_out_acc: 0.5903
Epoch 22/100
63/64 [============================>.] - ETA: 0s - loss: 2.0196 - angle_out_loss: 1.2475 - throttle_out_loss: 1.3958 - angle_out_acc: 0.6190 - throttle_out_acc: 0.6040
Epoch 00022: val_loss improved from 2.15919 to 2.09381, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 50ms/step - loss: 2.0210 - angle_out_loss: 1.2475 - throttle_out_loss: 1.3973 - angle_out_acc: 0.6200 - throttle_out_acc: 0.6041 - val_loss: 2.0938 - val_angle_out_loss: 1.1728 - val_throttle_out_loss: 1.5074 - val_angle_out_acc: 0.6406 - val_throttle_out_acc: 0.5923
Epoch 23/100
63/64 [============================>.] - ETA: 0s - loss: 1.9801 - angle_out_loss: 1.2206 - throttle_out_loss: 1.3698 - angle_out_acc: 0.6231 - throttle_out_acc: 0.6128
Epoch 00023: val_loss improved from 2.09381 to 2.08714, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 1.9815 - angle_out_loss: 1.2210 - throttle_out_loss: 1.3710 - angle_out_acc: 0.6224 - throttle_out_acc: 0.6121 - val_loss: 2.0871 - val_angle_out_loss: 1.1866 - val_throttle_out_loss: 1.4938 - val_angle_out_acc: 0.6401 - val_throttle_out_acc: 0.6104
Epoch 24/100
62/64 [============================>.] - ETA: 0s - loss: 1.9418 - angle_out_loss: 1.2092 - throttle_out_loss: 1.3372 - angle_out_acc: 0.6261 - throttle_out_acc: 0.6196
Epoch 00024: val_loss did not improve from 2.08714
64/64 [==============================] - 3s 50ms/step - loss: 1.9433 - angle_out_loss: 1.2085 - throttle_out_loss: 1.3391 - angle_out_acc: 0.6266 - throttle_out_acc: 0.6180 - val_loss: 2.0993 - val_angle_out_loss: 1.1816 - val_throttle_out_loss: 1.5085 - val_angle_out_acc: 0.6465 - val_throttle_out_acc: 0.5864
Epoch 25/100
62/64 [============================>.] - ETA: 0s - loss: 1.9338 - angle_out_loss: 1.2083 - throttle_out_loss: 1.3297 - angle_out_acc: 0.6255 - throttle_out_acc: 0.6216
Epoch 00025: val_loss improved from 2.08714 to 2.06859, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 50ms/step - loss: 1.9345 - angle_out_loss: 1.2086 - throttle_out_loss: 1.3302 - angle_out_acc: 0.6249 - throttle_out_acc: 0.6223 - val_loss: 2.0686 - val_angle_out_loss: 1.1483 - val_throttle_out_loss: 1.4944 - val_angle_out_acc: 0.6548 - val_throttle_out_acc: 0.5981
Epoch 26/100
62/64 [============================>.] - ETA: 0s - loss: 1.9065 - angle_out_loss: 1.1931 - throttle_out_loss: 1.3100 - angle_out_acc: 0.6347 - throttle_out_acc: 0.6264
Epoch 00026: val_loss improved from 2.06859 to 2.04724, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 50ms/step - loss: 1.9099 - angle_out_loss: 1.1940 - throttle_out_loss: 1.3129 - angle_out_acc: 0.6349 - throttle_out_acc: 0.6260 - val_loss: 2.0472 - val_angle_out_loss: 1.1247 - val_throttle_out_loss: 1.4849 - val_angle_out_acc: 0.6597 - val_throttle_out_acc: 0.6099
Epoch 27/100
63/64 [============================>.] - ETA: 0s - loss: 1.8839 - angle_out_loss: 1.1701 - throttle_out_loss: 1.2988 - angle_out_acc: 0.6394 - throttle_out_acc: 0.6255
Epoch 00027: val_loss did not improve from 2.04724
64/64 [==============================] - 3s 50ms/step - loss: 1.8852 - angle_out_loss: 1.1681 - throttle_out_loss: 1.3012 - angle_out_acc: 0.6398 - throttle_out_acc: 0.6250 - val_loss: 2.0572 - val_angle_out_loss: 1.1412 - val_throttle_out_loss: 1.4866 - val_angle_out_acc: 0.6479 - val_throttle_out_acc: 0.5933
Epoch 28/100
63/64 [============================>.] - ETA: 0s - loss: 1.8520 - angle_out_loss: 1.1541 - throttle_out_loss: 1.2749 - angle_out_acc: 0.6404 - throttle_out_acc: 0.6341
Epoch 00028: val_loss did not improve from 2.04724
64/64 [==============================] - 3s 50ms/step - loss: 1.8504 - angle_out_loss: 1.1530 - throttle_out_loss: 1.2740 - angle_out_acc: 0.6406 - throttle_out_acc: 0.6342 - val_loss: 2.0524 - val_angle_out_loss: 1.1295 - val_throttle_out_loss: 1.4877 - val_angle_out_acc: 0.6543 - val_throttle_out_acc: 0.5962
Epoch 29/100
62/64 [============================>.] - ETA: 0s - loss: 1.8219 - angle_out_loss: 1.1461 - throttle_out_loss: 1.2488 - angle_out_acc: 0.6444 - throttle_out_acc: 0.6342
Epoch 00029: val_loss did not improve from 2.04724
64/64 [==============================] - 3s 50ms/step - loss: 1.8202 - angle_out_loss: 1.1419 - throttle_out_loss: 1.2493 - angle_out_acc: 0.6456 - throttle_out_acc: 0.6344 - val_loss: 2.0724 - val_angle_out_loss: 1.1363 - val_throttle_out_loss: 1.5042 - val_angle_out_acc: 0.6602 - val_throttle_out_acc: 0.6060
Epoch 30/100
63/64 [============================>.] - ETA: 0s - loss: 1.8018 - angle_out_loss: 1.1369 - throttle_out_loss: 1.2334 - angle_out_acc: 0.6469 - throttle_out_acc: 0.6393
Epoch 00030: val_loss improved from 2.04724 to 2.03566, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 1.8012 - angle_out_loss: 1.1339 - throttle_out_loss: 1.2343 - angle_out_acc: 0.6475 - throttle_out_acc: 0.6389 - val_loss: 2.0357 - val_angle_out_loss: 1.1356 - val_throttle_out_loss: 1.4679 - val_angle_out_acc: 0.6475 - val_throttle_out_acc: 0.6104
Epoch 31/100
62/64 [============================>.] - ETA: 0s - loss: 1.7853 - angle_out_loss: 1.1236 - throttle_out_loss: 1.2235 - angle_out_acc: 0.6479 - throttle_out_acc: 0.6462
Epoch 00031: val_loss improved from 2.03566 to 2.02520, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 1.7898 - angle_out_loss: 1.1253 - throttle_out_loss: 1.2271 - angle_out_acc: 0.6472 - throttle_out_acc: 0.6450 - val_loss: 2.0252 - val_angle_out_loss: 1.1151 - val_throttle_out_loss: 1.4677 - val_angle_out_acc: 0.6616 - val_throttle_out_acc: 0.6143
Epoch 32/100
62/64 [============================>.] - ETA: 0s - loss: 1.7563 - angle_out_loss: 1.1123 - throttle_out_loss: 1.2002 - angle_out_acc: 0.6503 - throttle_out_acc: 0.6525
Epoch 00032: val_loss did not improve from 2.02520
64/64 [==============================] - 3s 50ms/step - loss: 1.7569 - angle_out_loss: 1.1140 - throttle_out_loss: 1.1998 - angle_out_acc: 0.6493 - throttle_out_acc: 0.6523 - val_loss: 2.0255 - val_angle_out_loss: 1.1203 - val_throttle_out_loss: 1.4654 - val_angle_out_acc: 0.6572 - val_throttle_out_acc: 0.6123
Epoch 33/100
63/64 [============================>.] - ETA: 0s - loss: 1.7554 - angle_out_loss: 1.1136 - throttle_out_loss: 1.1985 - angle_out_acc: 0.6458 - throttle_out_acc: 0.6498
Epoch 00033: val_loss did not improve from 2.02520
64/64 [==============================] - 3s 50ms/step - loss: 1.7560 - angle_out_loss: 1.1128 - throttle_out_loss: 1.1996 - angle_out_acc: 0.6458 - throttle_out_acc: 0.6493 - val_loss: 2.0505 - val_angle_out_loss: 1.1340 - val_throttle_out_loss: 1.4835 - val_angle_out_acc: 0.6592 - val_throttle_out_acc: 0.6099
Epoch 34/100
63/64 [============================>.] - ETA: 0s - loss: 1.7325 - angle_out_loss: 1.1067 - throttle_out_loss: 1.1791 - angle_out_acc: 0.6527 - throttle_out_acc: 0.6545
Epoch 00034: val_loss improved from 2.02520 to 1.99127, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 1.7275 - angle_out_loss: 1.1035 - throttle_out_loss: 1.1757 - angle_out_acc: 0.6533 - throttle_out_acc: 0.6553 - val_loss: 1.9913 - val_angle_out_loss: 1.0866 - val_throttle_out_loss: 1.4480 - val_angle_out_acc: 0.6636 - val_throttle_out_acc: 0.6226
Epoch 35/100
63/64 [============================>.] - ETA: 0s - loss: 1.7103 - angle_out_loss: 1.0837 - throttle_out_loss: 1.1684 - angle_out_acc: 0.6601 - throttle_out_acc: 0.6572
Epoch 00035: val_loss did not improve from 1.99127
64/64 [==============================] - 3s 50ms/step - loss: 1.7076 - angle_out_loss: 1.0810 - throttle_out_loss: 1.1672 - angle_out_acc: 0.6608 - throttle_out_acc: 0.6576 - val_loss: 1.9994 - val_angle_out_loss: 1.0877 - val_throttle_out_loss: 1.4555 - val_angle_out_acc: 0.6660 - val_throttle_out_acc: 0.6099
Epoch 36/100
63/64 [============================>.] - ETA: 0s - loss: 1.6924 - angle_out_loss: 1.0825 - throttle_out_loss: 1.1511 - angle_out_acc: 0.6592 - throttle_out_acc: 0.6610
Epoch 00036: val_loss did not improve from 1.99127
64/64 [==============================] - 3s 50ms/step - loss: 1.6950 - angle_out_loss: 1.0821 - throttle_out_loss: 1.1539 - angle_out_acc: 0.6593 - throttle_out_acc: 0.6594 - val_loss: 2.0371 - val_angle_out_loss: 1.1129 - val_throttle_out_loss: 1.4807 - val_angle_out_acc: 0.6567 - val_throttle_out_acc: 0.6104
Epoch 37/100
63/64 [============================>.] - ETA: 0s - loss: 1.6769 - angle_out_loss: 1.0704 - throttle_out_loss: 1.1417 - angle_out_acc: 0.6638 - throttle_out_acc: 0.6616
Epoch 00037: val_loss did not improve from 1.99127
64/64 [==============================] - 3s 50ms/step - loss: 1.6785 - angle_out_loss: 1.0716 - throttle_out_loss: 1.1427 - angle_out_acc: 0.6636 - throttle_out_acc: 0.6611 - val_loss: 2.0072 - val_angle_out_loss: 1.0874 - val_throttle_out_loss: 1.4635 - val_angle_out_acc: 0.6646 - val_throttle_out_acc: 0.6118
Epoch 38/100
63/64 [============================>.] - ETA: 0s - loss: 1.6569 - angle_out_loss: 1.0749 - throttle_out_loss: 1.1194 - angle_out_acc: 0.6618 - throttle_out_acc: 0.6710
Epoch 00038: val_loss did not improve from 1.99127
64/64 [==============================] - 3s 50ms/step - loss: 1.6566 - angle_out_loss: 1.0776 - throttle_out_loss: 1.1178 - angle_out_acc: 0.6605 - throttle_out_acc: 0.6713 - val_loss: 2.0223 - val_angle_out_loss: 1.0740 - val_throttle_out_loss: 1.4853 - val_angle_out_acc: 0.6782 - val_throttle_out_acc: 0.6196
Epoch 39/100
63/64 [============================>.] - ETA: 0s - loss: 1.6337 - angle_out_loss: 1.0643 - throttle_out_loss: 1.1015 - angle_out_acc: 0.6638 - throttle_out_acc: 0.6716
Epoch 00039: val_loss improved from 1.99127 to 1.94174, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 1.6348 - angle_out_loss: 1.0660 - throttle_out_loss: 1.1018 - angle_out_acc: 0.6639 - throttle_out_acc: 0.6718 - val_loss: 1.9417 - val_angle_out_loss: 1.1158 - val_throttle_out_loss: 1.3838 - val_angle_out_acc: 0.6641 - val_throttle_out_acc: 0.6177
Epoch 40/100
63/64 [============================>.] - ETA: 0s - loss: 1.6047 - angle_out_loss: 1.0482 - throttle_out_loss: 1.0806 - angle_out_acc: 0.6632 - throttle_out_acc: 0.6727
Epoch 00040: val_loss did not improve from 1.94174
64/64 [==============================] - 3s 50ms/step - loss: 1.6059 - angle_out_loss: 1.0478 - throttle_out_loss: 1.0820 - angle_out_acc: 0.6638 - throttle_out_acc: 0.6726 - val_loss: 2.1267 - val_angle_out_loss: 1.1378 - val_throttle_out_loss: 1.5578 - val_angle_out_acc: 0.6611 - val_throttle_out_acc: 0.5977
Epoch 41/100
63/64 [============================>.] - ETA: 0s - loss: 1.6027 - angle_out_loss: 1.0421 - throttle_out_loss: 1.0816 - angle_out_acc: 0.6705 - throttle_out_acc: 0.6760
Epoch 00041: val_loss did not improve from 1.94174
64/64 [==============================] - 3s 50ms/step - loss: 1.6017 - angle_out_loss: 1.0461 - throttle_out_loss: 1.0786 - angle_out_acc: 0.6697 - throttle_out_acc: 0.6770 - val_loss: 2.0650 - val_angle_out_loss: 1.0897 - val_throttle_out_loss: 1.5202 - val_angle_out_acc: 0.6782 - val_throttle_out_acc: 0.6074
Epoch 42/100
62/64 [============================>.] - ETA: 0s - loss: 1.6009 - angle_out_loss: 1.0586 - throttle_out_loss: 1.0716 - angle_out_acc: 0.6682 - throttle_out_acc: 0.6746
Epoch 00042: val_loss did not improve from 1.94174
64/64 [==============================] - 3s 51ms/step - loss: 1.5973 - angle_out_loss: 1.0587 - throttle_out_loss: 1.0679 - angle_out_acc: 0.6682 - throttle_out_acc: 0.6753 - val_loss: 2.0174 - val_angle_out_loss: 1.0967 - val_throttle_out_loss: 1.4690 - val_angle_out_acc: 0.6685 - val_throttle_out_acc: 0.6221
Epoch 43/100
63/64 [============================>.] - ETA: 0s - loss: 1.5671 - angle_out_loss: 1.0455 - throttle_out_loss: 1.0444 - angle_out_acc: 0.6656 - throttle_out_acc: 0.6837
Epoch 00043: val_loss did not improve from 1.94174
64/64 [==============================] - 3s 50ms/step - loss: 1.5656 - angle_out_loss: 1.0453 - throttle_out_loss: 1.0430 - angle_out_acc: 0.6660 - throttle_out_acc: 0.6840 - val_loss: 2.0173 - val_angle_out_loss: 1.1034 - val_throttle_out_loss: 1.4656 - val_angle_out_acc: 0.6606 - val_throttle_out_acc: 0.6128
Epoch 44/100
63/64 [============================>.] - ETA: 0s - loss: 1.5590 - angle_out_loss: 1.0230 - throttle_out_loss: 1.0475 - angle_out_acc: 0.6747 - throttle_out_acc: 0.6850
Epoch 00044: val_loss did not improve from 1.94174
64/64 [==============================] - 3s 50ms/step - loss: 1.5619 - angle_out_loss: 1.0276 - throttle_out_loss: 1.0481 - angle_out_acc: 0.6736 - throttle_out_acc: 0.6849 - val_loss: 2.0355 - val_angle_out_loss: 1.0995 - val_throttle_out_loss: 1.4858 - val_angle_out_acc: 0.6763 - val_throttle_out_acc: 0.6069
Epoch 00044: early stopping
Training completed in 0:02:31.


donkey_car_45_190730.png

68 % 程度の精度だった。低い。。。やはり、家の中を白線無しで学習させたのが良くなかったのかも?

学習済みデータ mypilot.h5 をダウンロードした。
273b0f8b.png


自動走行
Donkey Car のRaspberry Pi に mypilot.h5 をアップロードした。
dc7a8155.png


myconfig.py を表示して、

DEFAULT_MODEL_TYPE="categorical"

に変更した。
1a76b938.png


mycar ディレクトリで下のコマンドを実行して自動走行させた。
python manage.py drive --model ~/mycar/models/mypilot.h5
d793c880.png

(env) pi@donkeypi:~/mycar $ python manage.py drive --model ~/mycar/models/mypilot.h5
using donkey v3.0.2 ...
loading config file: /home/pi/mycar/config.py
loading personal config over-rides

config loaded
cfg.CAMERA_TYPE PICAM
PiCamera loaded.. .warming camera
Adding part PiCamera.
Starting Donkey Server...
Adding part LocalWebController.
Adding part ThrottleFilter.
Adding part PilotCondition.
Adding part RecordTracker.
"get_model_by_type" model Type is: categorical
loading model /home/pi/mycar/models/mypilot.h5
finished loading in 12.697422981262207 sec.
Adding part FileWatcher.
Adding part FileWatcher.
Adding part DelayedTrigger.
Adding part TriggeredCallback.
Adding part KerasCategorical.
Adding part DriveMode.
Adding part AiLaunch.
Adding part AiRunCondition.
Init ESC
Adding part PWMSteering.
Adding part PWMThrottle.
Tub does NOT exist. Creating new tub...
New tub created at: /home/pi/mycar/data/tub_8_19-07-30
Adding part TubWriter.
You can now go to <your pi ip address>:8887 to drive your car.
Starting vehicle...
8887
/usr/lib/python3/dist-packages/picamera/encoders.py:544: PiCameraResolutionRounded: frame size rounded up from 160x120 to 160x128
  width, height, fwidth, fheight)))
WARNING: Logging before flag parsing goes to stderr.
W0730 20:43:33.409733 1518576752 web.py:2246] 404 GET /favicon.ico (192.168.3.7) 11.80ms


ブラウザで 192.168.3.34:8887 を見るとカメラ画像が表示されていた。
9bcdaa47.png


Mode & Pilot を Local Pilot (d) に変更したところ、自動走行がスタートした。
精度が低いので、自動走行では正しく走らなかったが、正しい方向に曲がる意志は確認できた。

^CShutting down vehicle and its parts...
stoping PiCamera
Part Profile Summary: (times in ms)
+--------------------+------------------+-------+--------------+
|        part        |       max        |  min  |     avg      |
+--------------------+------------------+-------+--------------+
|    PWMThrottle     |      20.27       |  1.46 |     2.60     |
|    FileWatcher     |       7.28       |  0.08 |     0.23     |
|    PWMSteering     | 1564516404941.14 |  1.55 | 128660891.52 |
| LocalWebController |       0.63       |  0.04 |     0.11     |
|     DriveMode      |       0.80       |  0.04 |     0.08     |
|   AiRunCondition   |       0.46       |  0.02 |     0.05     |
|   ThrottleFilter   |       0.49       |  0.03 |     0.06     |
|   PilotCondition   |       0.26       |  0.02 |     0.05     |
|   RecordTracker    |       0.30       |  0.02 |     0.05     |
|  KerasCategorical  |     2200.69      | 42.03 |    72.93     |
| TriggeredCallback  |       0.29       |  0.02 |     0.03     |
|      PiCamera      |       0.50       |  0.02 |     0.07     |
|      AiLaunch      |       0.76       |  0.03 |     0.06     |
|    FileWatcher     |       1.64       |  0.04 |     0.08     |
|   DelayedTrigger   |       0.18       |  0.02 |     0.04     |
+--------------------+------------------+-------+--------------+


tub_7_19-07-29 ディレクトリの最初の学習データ (160 x 120 ピクセル)を示す。
donkey_car_51_190731.png

そのJSON ファイル、record_1.json を示す。

{"user/mode": "user", "user/angle": 0.0, "user/throttle": 3.051850947599719e-05, "cam/image_array": "1_cam-image_array_.jpg", "milliseconds": 323}


Donkey Car のMicroSD カードを作成した”の続き。

前回は、Donkey Car のMicro SDカードを作成し、Donkey Car のRaspberry Pi 3B+ に無線LAN経由でログインすることができた。今回は、Donkey Car のキャリブレーションを行って、コースを走らせて教師データを取得した。

キャリブレーション
最初にモーターのキャリブレーションを行った。
donkey calibrate --channel 0 --bus 1
2f3d10ac.png


370 を停止状態として、前進が 420 、後進が 330 くらいにした。

~/mycar/myconfig.py に記述した。
b00657c4.png


ただし、実際に動かしてみた時に動かなかったので 450 と 300 に変更した。

次に、ステアリングのキャリブレーションを行った。
donkey calibrate --channel 1 --bus 1
2192bb60.png


左 440、右 340 とした。
この値を~/mycar/myconfig.py に記述した。
9e8cbab8.png


Cameraの有効化
~/mycar/myconfig.py のカメラ部分のコメントを外して、設定した。
bc5751df.png


教師データの作成
Donkey Car のUSB ポートにジョイスティックのドングルを取り付けた。

教師データの取得
cd ~/mycar
python manage.py drive --js

77bcae9d.png

c8acec8f.png


d8a569f3.png


教師データを取得している間、コースを走らせてみた。
b7be1145.jpg


コースが狭くて、うまく走らせることができなかった。
でも、データは取得できた。JPEGの画像ファイルと、その時のスロットルやステアリングの情報が書かれたJSON ファイルの組になっている。
eb26e4b8.png


c1ac1f44.png


なお、Donkey Car に nautilus をインストールした。
sudo apt install nautilus
でインストールすることができた。

Donkey Car を組み立てた”の続き。

前回は、Donkey Car を組み立てた。今回は、Donkey Car のMicro SDカードを作成する。

FaBo DonkeyCar Docs の RaspPi3用のイメージ作成”を参考にする。

まずは、MicroSD カードにイメージを焼く Etcher をインストールした。インストールの参考にしたのは、”balena-io/etcher
Ubuntu 18.04 には、
echo "deb https://deb.etcher.io stable etcher" | sudo tee /etc/apt/sources.list.d/balena-etcher.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
sudo apt-get update
sudo apt-get install balena-etcher-electron

でインストールできた。
起動のコマンドは、
balena-etcher-electron
だった。
「Google Colaboraotoryと連携するために、DonkeyCar 3.0.2, TernsorFlow 2.0.0 beta1をインストールしたRaspberryPi用イメージ」を”balena-io/etcher”からダウンロードして、Etcher で書いた。
Etcher では、ZIPファイルのまま指定するようだ。
c2282e69.png


書き込み後、カードリーダーを抜いて挿すと、boot 、 rootfs の 2 つのパーティションがUbuntu 18.04 にマウントされた。
4e866541.png


d2a18cc3.png


boot の容量は 44.3 MB。その内の 23.4 MB を使用している。
85651774.png


rootfs の容量は、 3.5 GB で、その内の 2.6 GB を使用している。32 GB のMicroSD カード使っているので、容量を拡張したいと思ったが、Raspberry Pi で起動したら容量が増えていた。
52cdadb4.png


Wifi の設定
FaBo DonkeyCar Docs の”Wifi の設定”に基づいて、Raspberry Pi 3 B+ のWifi の設定を行った。
2f7934a8.png


SSHでRaspberryPiのログイン
ここで、Raspberry Pi 3 B+ のIP アドレスを調べる方法だが、IP アドレスのスキャンのarp-scan コマンドを使用することにした。
”LAN内で利用されているIPアドレスを調べる『arp-scan』コマンド”を参照しながら、arp-scan をインストールした。
sudo apt install arp-scan

Donkey Car の Raspberry Pi 3B+ を起動しておいて、arp-scan を行うと、Raspberry Pi 3B+ が見えた。
c918f2fd.png


Raspberry Pi 3B+ の IP アドレスは、192.168.3.34 だった。

Raspberry Pi 3B+ の IP アドレスが分かったので、ホストパソコンから接続する。
ssh 192.168.3.34 -X -l pi
パスワードは raspberry だった。
05651618.png


Projectの作成
donkey createcar --path ~/mycar
を実行した。
616d26be.png

今日はDonkey Car を組み立てた。

組み立て”を見ながらDockey Car を組み立てていった。

まずは、プレートにスペーサを立てて、Raspberry Pi 3B+ を固定した。
5cf737ee.jpg


プレートにアクリルのスペーサを入れて、プラネジで降圧型変換器内蔵電圧計を取り付けた。
5ba596bc.jpg


降圧型変換器内蔵電圧計からRaspberry Pi 3B+ に電源を接続した。
0f9b8d11.jpg


降圧型変換器内蔵電圧計の入力ポートを接続した。
4538a874.jpg


Donkey アームを取り付けた。
14558261.jpg


PiCameraを取り付けた。
a3b513d6.jpg


Donkey アームを固定ピンでポートに固定した。
44954074.jpg


モーターとハンドル制御用のI2C ポートを接続した。
6ec508d2.jpg


完成。だけど、バッテリーは接続されていません。
4bbcc30d.jpg


2511728a.jpg


8058c6ed.jpg


次には、MicroSD カードを焼こう。

「AI RCカー勉強会@柏の葉「Donkey Carハンズオン」」に行ってきました”でハンズオンしたDonkey Car を思い切って買っちゃいました。お値段は、4万円ですが、消費税 3,200円に送料が 2,500 円付いて、総額 45,700 円でした。
それで、先週の木曜日6月27日に届きました。

箱を開けるとラジコンカーの箱とジョイスティックが入ってました。
79eb74c1.jpg


箱の中身です。
6b5bf77d.jpg


ラジコンカーの箱を開けるとDonkey Car の部品が入っていました。
d96b3184.jpg


Donkey Car を作って、まずはノーマルで走らせてみたいです。十分遊んだら、Ultra96 + Pcam5C に載せ替えてシステム構築してみたいですね。。。

↑このページのトップヘ