###### tags:`ものものテック`
# 推論走行
## 概要
特定物体が進行方向に出現したときに前後退するロボットカーの作成。
成果物↓↓↓
{%youtube uMcvNrYMAhs %}
## 仕様
- 特定の物体がカメラに映ったとき前進
- 特定の物体がカメラに映ったとき後退
- 学習データは自分で作成
## コード
下記のコードに演習で用いた処理を追加します。
```python=
import cv2
import numpy as np
import keras
from keras.models import model_from_json
from keras.preprocessing.image import img_to_array, load_img
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
key = cv2.waitKey(1)
if key == ord('q'):
break
left_v = 0.84561
right_v = 0.96232
cv2.putText(frame, str(left_v), (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 0), 2)
cv2.putText(frame, str(right_v), (50, 100), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 0), 2)
cv2.imshow("image", frame)
cap.release()
cv2.destroyAllWindows()
```
## 最終課題の感想
最終課題では、中間課題で使用した技術を元に簡単な推論走行を実施するものだった。
この課題をこなすまでは、機械学習・強化学習・AIなどは完璧に近いもので綺麗に動くものだと思っていたが、実際は違うことを学んだ。
学習を行う環境やサンプル数で結果が大きく変わってしまう。
普段コードを書いているとコードを書いた結果は必ず同じものになる。
それは、数学の証明のようなものでなにか異なる結果が出る時は人間が間違っていると場合が多い。
このような感覚で学んだ推論は、新鮮で面白かった。
動画でも、かなり変な動きをしているがこれはサンプル数の不足と周りの背景が学習データと似通ってしまってることから起こるものだと思う。
改善できるところは多そう。
## 全体的なの感想
今回のコンテンツはかなりハードに寄せた内容だと感じた。
その分ソフトを扱うところが少なくソフト的に物足りなかった。
ただ、モーターやカメラの使用方法を学べたのでこれらを利用して他の電子工作で遊べそうだと思った。
ディープラーニングのチャプターは、なんとか動くようにできたが理論をまだしっかり理解できておらず、自分で1から書くにはさらに勉強が必要だと思う。
しかし、理解できるとディープラーニングを利用できるものが多く浮かぶので積極的に学習したい。