model for image classification from file

This commit is contained in:
Jakub-Prus 2022-06-02 11:11:57 +02:00
parent e67aa84f1f
commit c5e0b65445
7 changed files with 10 additions and 35 deletions

View File

@ -103,7 +103,7 @@ class ForkliftAgent(AgentBase):
stations = dict(self.graph.packingStations)
if i.real_type == ItemType.SHELF:
packing_station = stations[PatchType.packingA]
elif i.real_type == ItemType.REFRIGERATOR:
elif i.real_type == ItemType.FRIDGE:
packing_station = stations[PatchType.packingB]
elif i.real_type == ItemType.DOOR:
packing_station = stations[PatchType.packingC]

View File

@ -21,8 +21,6 @@ from decision.ActionType import ActionType
from pathfinding.PathfinderOnStates import PathFinderOnStates, PathFinderState
from util.PathByEnum import PathByEnum
from util.PathDefinitions import GridLocation, GridWithWeights
from imageClasification.Classificator import image_clasification
class Phase(Enum):
@ -190,13 +188,13 @@ class GameModel(Model):
def recognise_item(self, item: Item):
# TODO IMAGE PROCESSING
val = image_clasification(self.picture_visualization.img, self.classificator)
val = self.classificator.image_clasification(self.picture_visualization.img)
print("VAL: {}".format(val))
if val == ItemType.DOOR:
item.guessed_type = ItemType.DOOR
elif val == ItemType.REFRIGERATOR:
item.guessed_type = ItemType.REFRIGERATOR
elif val == ItemType.FRIDGE:
item.guessed_type = ItemType.FRIDGE
elif val == ItemType.SHELF:
item.guessed_type = ItemType.SHELF

View File

@ -4,4 +4,4 @@ from enum import Enum
class ItemType(Enum):
DOOR = "door"
SHELF = "shelf"
REFRIGERATOR = "refrigerator"
FRIDGE = "fridge"

View File

@ -1,23 +0,0 @@
import numpy as np
import tensorflow as tf
def image_clasification(image_path, model):
# loaded_model = keras.models.load_model("my_model")
class_names = ['door', 'refrigerator', 'shelf']
img = tf.keras.utils.load_img(
image_path, target_size=(180, 180)
)
img_array = tf.keras.utils.img_to_array(img)
img_array = tf.expand_dims(img_array, 0) # Create a batch
predictions = model.predict(img_array)
score = tf.nn.softmax(predictions[0])
# print(
# "This image most likely belongs to {} with a {:.2f} percent confidence."
# .format(class_names[np.argmax(score)], 100 * np.max(score))
# )
return class_names[np.argmax(score)]

View File

@ -9,7 +9,7 @@ from tensorflow.keras import layers
from tensorflow.keras.models import Sequential
class ClassificatorInside():
class Classificator():
def __init__(self, data_dir: str) -> None:
super().__init__()

View File

@ -2,7 +2,6 @@ import random
from mesa.visualization.ModularVisualization import ModularServer
from mesa.visualization.modules import CanvasGrid
from tensorflow import keras
from ForkliftAgent import ForkliftAgent
from GameModel import GameModel
@ -10,6 +9,7 @@ from PatchAgent import PatchAgent
from PatchType import PatchType
from PictureVisualizationAgent import PictureVisualizationAgent
from data.enum.Direction import Direction
from imageClasification.Classificator import Classificator
from util.PathDefinitions import GridWithWeights
from visualization.DisplayAttributeElement import DisplayAttributeElement
from visualization.DisplayItemListAttribute import DisplayItemListAttributeElement
@ -88,13 +88,13 @@ if __name__ == '__main__':
ordersText = DisplayOrderList("orderList")
fulfilled_orders = DisplayOrderList("fulfilled_orders")
loaded_model = keras.models.load_model("./imageClasification/my_model")
classificator = Classificator("imageClasification/images")
server = ModularServer(GameModel,
[grid, readyText, provided_itesm, recognised_items, ordersText,
fulfilled_orders],
"Automatyczny Wózek Widłowy",
dict(width=gridHeight, height=gridWidth, graph=diagram, items=50, orders=3, classificator=loaded_model))
dict(width=gridHeight, height=gridWidth, graph=diagram, items=50, orders=3, classificator=classificator))
server.port = 8888
server.launch()

View File

@ -9,7 +9,7 @@ class PathByEnum:
if item == ItemType.DOOR:
a = str(random.randint(1, 10))
return "item_images/door/drzwi" + a + ".jpg"
if item == ItemType.REFRIGERATOR:
if item == ItemType.FRIDGE:
a = str(random.randint(1, 10))
return "item_images/refrigerator/lodowka" + a + ".jpg"
if item == ItemType.SHELF: