Bonjour, J’essaye de reconnaitre des pièces d’échecs à l’aide d’un réseau de neurone. J’ai pris pour label de chaque pièce un numéro compris entre 0 et 11, malheureusement mon réseau me prédit à chaque fois 1.0, alors que je devrais avoir une prédiction du type 0,0,0…,1,1,1…,2,2,2…etc Je ne sais pas si le problème vient du design de mon réseau ou si il vient simplement d’une erreur dans mon code comme par exemple des dimensions de mes arrays. Voici ce que j’ai fait:
import cv2
import os
import numpy as np
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.utils import to_categorical
def model(x_train):
model = Sequential()
model.add(Flatten(input_shape=x_train.shape[1:]))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
return model
def preprocessing(x_train,rep_img,label,path): #Passe les images en noir et blanc puis les ajoute a la liste train avec leur label
for i in rep_img:
img=cv2.imread(path+"//"+i)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img=np.array(img)
img=img.astype('float32')
img/=255
x_train.append([label,cv2.resize(img,(taille_image,taille_image))])
return x_train
taille_image=150
x_train=[]
x_test=[]
rep_liste=[]
rep_test=[]
#Dossier des images
.....
#Chargement des fichiers
#fin des chargements des fichiers
#Ajout des images traités dans le dossier de train
for rep in rep_liste:
x_train=preprocessing(x_train,rep[1],rep[0],rep[2])
for rep in rep_test:
x_test=preprocessing(x_test,rep[1],rep[0],rep[2])
X_train=[]
Y_train=[]
X_test=[]
Y_test=[]
for i in range(len(x_train)):
X_train.append(x_train[i][1])#Creation de liste avec images pour train
Y_train.append(x_train[i][0])#Creation de liste avec labels pour train
for i in range(len(x_test)):
X_test.append(x_test[i][1])#Creation de liste avec images pour test
Y_test.append(x_test[i][0])#Creation de liste avec labels pour test
#cv2.imshow('img', X_train[0])
X_train=np.array(X_train)
Y_train=np.array(Y_train)
model=model(X_train)
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
model.fit(X_train, Y_train, epochs=50, batch_size=256)
print(model.predict(np.array(X_test)))
Auriez vous une idée de comment résoudre mon problème ?
Merci d’avance pour votre aide
+0
-0