Prediksi CNN bekerja dari set pengujian tetapi tidak memiliki gambar
Saya mencoba melakukan pengklasifikasi gender CNN dan berfungsi dengan baik dengan gambar dari set pengujian tetapi ketika saya memasukkan iamges dari google yang selalu mengklasifikasikan sebagai laki-laki. Saya mencoba mendapatkan jawabannya dari sini tetapi tidak menyelesaikannya.
data = pd.read_csv('/content/age_gender.csv')
## Converting pixels into numpy array
data['pixels']=data['pixels'].apply(lambda x: np.array(x.split(), dtype="float32"))
classification = ['Male', 'Female']
X = np.array(data['pixels'].tolist())
## Converting pixels from 1D to 3D
X = X.reshape(X.shape[0],48,48,1)
X = X / 255.0
y = data['gender'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.22, random_state=37)
model = Sequential..... # create the CNN and compile it
history = model.fit..... # fit the model and evaluate it gives me val_accuracy: 0.8902
Kerugian pengujian: 0.24722696840763092 Akurasi Pengujian: 0.8912960290908813
Ketika saya memprediksi gambar dari set pengujian menggunakan kode berikut, itu berfungsi dengan baik.
index = 5009
image = X_test[index]
pred = model.predict(image.reshape(1, 48, 48, 1), batch_size=1)
print(classification[pred.argmax()])
Tetapi ketika saya mencoba memprediksi gambar dari google, itu selalu kembali sebagai laki-laki.
file = "/content/female-2.jpeg"
image = cv.imread(file, cv.IMREAD_GRAYSCALE)
image = cv.resize(image, (48, 48))
image = image.reshape(1, 48, 48, 1)
image = image.astype('float32')
image = 255-image
image /= 255
pred = model.predict(image.reshape(1, 48, 48, 1), batch_size=1)
print(classification[pred.argmax()])
Saya telah mencoba sejumlah besar gambar berbeda yang perempuan dan SELALU kembali sebagai laki-laki. Apa yang kulewatkan di sini?
Jawaban
Anda melakukan praproses gambar dari Google secara berbeda dibandingkan dengan saat Anda melatih model. Normalisasi nilai piksel inilah yang menyebabkan masalah.
image = 255-image
image /= 255
Ini seharusnya menjadi:
image /= 255.0