added image recognition

This commit is contained in:
karoel2 2020-06-15 01:16:32 +02:00
parent a0efdc2215
commit de49a9d56b
6 changed files with 67 additions and 6 deletions

Binary file not shown.

Binary file not shown.

BIN
final1 Executable file

Binary file not shown.

BIN
food_10_64x3_test.hdf5 Normal file

Binary file not shown.

1
food_10_64x3_test.txt Normal file
View File

@ -0,0 +1 @@
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9

72
main.py
View File

@ -10,8 +10,64 @@ import numpy as np
from data import * from data import *
from choice_tree import * from choice_tree import *
import tensorflow as tf
from keras import *
import h5py
pygame.init() pygame.init()
WIN = 0
LOSSE = 0
DEFINE = 0
IMG_SIZE = 64
COLOR_CHANNELS = 3
CATEGORIES = [
"apple_pie",
"club_sandwich",
"greek_salad",
"hamburger",
"hot_dog",
"ice_cream",
"lasagna",
"pizza",
"steak",
"waffles"
]
model = tf.keras.models.load_model('final1')
with h5py.File('food_10_64x3_test.hdf5', "r") as f:
a_group_key = list(f.keys())[0]
data = list(f[a_group_key])
# print(len(data))
data = np.array(data)
X = np.array(data).reshape(-1, 64, 64, 3)
with open('food_10_64x3_test.txt', 'r') as f:
y = f.read().split()
temp = []
for item in y:
temp.append(int(item))
# print(len(X))
# print(len(y))
menu = []
for i in range(len(X)):
menu.append([X[i], y[i]])
random.shuffle(menu)
def image_recognition():
LOSSE += 1
for _ in range(100):
photo = random.choice(menu)
prediction = model.predict(np.expand_dims(photo[0], axis=0))
max_value = prediction[0].max()
idx = np.where(prediction[0]==max_value)
if CATEGORIES[idx[0][0]] == waiter.order_list[-1]:
WIN += 1
break
print(WIN, LOSSE - WIN)
# ai settings # ai settings
#S_IDLE = ("kitchen", "middle", "inplace") #S_IDLE = ("kitchen", "middle", "inplace")
#S_FIRST = ("order", "food") #S_FIRST = ("order", "food")
@ -160,6 +216,7 @@ class Agent:
self.orders = [] self.orders = []
self.food = False self.food = False
self.goal = (0,0) self.goal = (0,0)
self.order_list = []
def walk(self): def walk(self):
if self.path: if self.path:
@ -178,7 +235,7 @@ class Agent:
self.y = self.y - 1 self.y = self.y - 1
elif self.dir == 2: elif self.dir == 2:
self.x = self.x - 1 self.x = self.x - 1
elif self.dir == 3: elif self.dir == 3:
self.y = self.y + 1 self.y = self.y + 1
else: else:
self.x = self.x + 1 self.x = self.x + 1
@ -204,7 +261,7 @@ class Agent:
# if restaurant.tiles[y][x].canwalk and not restaurant.tiles[y][x].visited: # if restaurant.tiles[y][x].canwalk and not restaurant.tiles[y][x].visited:
# queue.append((x, y)) # queue.append((x, y))
# restaurant.tiles[y][x].parent = n # restaurant.tiles[y][x].parent = n
def canWalk(self, state): def canWalk(self, state):
x = state[0] x = state[0]
y = state[1] y = state[1]
@ -225,9 +282,9 @@ class Agent:
def succ(self, state): def succ(self, state):
s = [] s = []
r = state[2] - 1 r = state[2] - 1
if r == 0: if r == 0:
r = 4 r = 4
s.append((("rotate", "right"), (state[0], state[1], r))) s.append((("rotate", "right"), (state[0], state[1], r)))
@ -260,7 +317,7 @@ class Agent:
fringe = PriorityQueue() fringe = PriorityQueue()
explored = [] explored = []
start = Node((self.x, self.y, self.dir), False, False) start = Node((self.x, self.y, self.dir), False, False)
fringe.put((1, start)) fringe.put((1, start))
while True: while True:
if fringe.empty(): if fringe.empty():
@ -328,7 +385,7 @@ def drawScreen():
pygame.draw.rect(display, (128, 128, 128), (iw * 32 + 1, ih * 32 + 1, 32 - 1, 32 - 1)) pygame.draw.rect(display, (128, 128, 128), (iw * 32 + 1, ih * 32 + 1, 32 - 1, 32 - 1))
if tile.cost == 5: if tile.cost == 5:
pygame.draw.circle(display, (128, 128, 255), (iw * 32 + 17, ih * 32 + 17), 8) pygame.draw.circle(display, (128, 128, 255), (iw * 32 + 17, ih * 32 + 17), 8)
if tile.table: if tile.table:
if tile.clientState: if tile.clientState:
if tile.clientState == "decide": if tile.clientState == "decide":
pygame.draw.rect(display, (0, 128, 0), (iw * 32 + 1, ih * 32 + 1, 32 - 1, 32 - 1)) pygame.draw.rect(display, (0, 128, 0), (iw * 32 + 1, ih * 32 + 1, 32 - 1, 32 - 1))
@ -494,6 +551,8 @@ while True:
if not waiter.orders and restaurant.tiles[waiter.y][waiter.x].clientState == "order" and not waiter.path: if not waiter.orders and restaurant.tiles[waiter.y][waiter.x].clientState == "order" and not waiter.path:
restaurant.tiles[waiter.y][waiter.x].clientState = "wait" restaurant.tiles[waiter.y][waiter.x].clientState = "wait"
waiter.orders = (waiter.x, waiter.y) waiter.orders = (waiter.x, waiter.y)
DEFINE += 1
waiter.order_list.append(random.choice(CATEGORIES))
if (waiter.x, waiter.y) == KITCHEN: if (waiter.x, waiter.y) == KITCHEN:
if waiter.orders: if waiter.orders:
restaurant.kitchen.append([waiter.orders[0], waiter.orders[1], 50]) restaurant.kitchen.append([waiter.orders[0], waiter.orders[1], 50])
@ -501,6 +560,7 @@ while True:
elif not waiter.food: elif not waiter.food:
for t in restaurant.kitchen: for t in restaurant.kitchen:
if not t[2]: if not t[2]:
image_recognition()
waiter.BFS((t[0], t[1])) waiter.BFS((t[0], t[1]))
restaurant.kitchen.remove(t) restaurant.kitchen.remove(t)
waiter.food = True waiter.food = True