-
Notifications
You must be signed in to change notification settings - Fork 0
/
Test_model.py
58 lines (44 loc) · 1.37 KB
/
Test_model.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
print('model test starting')
import numpy as np
import socketio
import eventlet
from flask import Flask
import tensorflow as tf
import base64
from io import BytesIO
from PIL import Image
import cv2
sio = socketio.Server()
app = Flask(__name__) #'__main__'
max_speed = 10
def preprocessing_img(img):
img = img[60:135,:,:]
img = cv2.cvtColor(img,cv2.COLOR_BGR2YUV)
img = cv2.GaussianBlur(img,(3,3),0)
img = cv2.resize(img,(200,66))
img = img/255
return img
@sio.on('telemetry')
def telemetry(sid,data):
speed = float(data['speed'])
image = Image.open(BytesIO(base64.b64decode(data['image'])))
image = np.asarray(image)
image = preprocessing_img(image)
image = np.array([image])
steering = float(model.predict(image))
throttle = 1.0 - speed/max_speed
print(f"Steering:{steering}\nThrottle{throttle}\nSpeed{speed}")
sendControl(steering,throttle)
@sio.on('connect')
def connect(sid,environ):
print('connected')
sendControl(0,0)
def sendControl(steering,throttle):
sio.emit('steer', data={
'steering_angle': steering.__str__(),
'throttle': throttle.__str__()
})
if __name__ == '__main__':
model = tf.keras.models.load_model('Alastor.h5')
app = socketio.Middleware(sio, app)
eventlet.wsgi.server(eventlet.listen(('',4567)),app)