Я пытаюсь построить модель Q-Learning, используя Reinforcement Learning, чтобы играть в простую "Chrome Dino Game". Но я застрял при попытке использовать функцию OpenCV для легкой фильтрации изображений. Вот мой код CNN:
class ConvolutionalNeuralNetwork:
def __init__(input_shape, action_space): # Removed Self
model = models.Sequential()
model.add(Conv2D(32,
8,
strides=(4, 4),
padding="valid",
activation="relu",
input_shape=input_shape,
data_format="channels_first"))
model.add(Conv2D(64,
4,
strides=(2, 2),
padding="valid",
activation="relu",
input_shape=input_shape,
data_format="channels_first"))
model.add(Conv2D(64,
3,
strides=(1, 1),
padding="valid",
activation="relu",
input_shape=input_shape,
data_format="channels_first",))
model.add(Flatten())
model.add(Dense(512, activation="relu"))
model.add(Dense(action_space))
model.compile(loss="mean_squared_error",
optimizer=RMSprop(lr=0.00025,
rho=0.95,
epsilon=0.01),
metrics=["accuracy"])
return cur_input
model.build(input_shape=(80,80))
model.summary()
Я добавил эту простую функцию для эффективной предварительной обработки моего вывода до желаемого уровня, однако не могу понять, как и где соединить их оба в коде
def process_img(image):
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image = image[:300, :500]
return image
Для наглядной демонстрации я пытаюсь сделать что-то вроде этого (игнорировать последний набор):
Примечание: Я предпочитаю использовать OpenCV, если это возможно, но если есть какая-то другая альтернатива, которая является FAST и эффективной и может быть легко использована, я приму ее