dotnet / dotnet/machinelearning-modelbuilder
Can't reduce val_loss when teaching computer vision
- Dominant language
- Dockerfile
- Stars
- 285
- Forks
- 66
- PR merge metrics
- No merged PRs in 30d
Description
I tried everything, improved the architecture, added layers, neurons, but it doesn’t work.
Could this be because I'm training images at 384x384 resolution?
```
import cv2
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D
from keras.utils import to_categorical
import os
import tensorflow as tf
from sklearn.utils.class_weight import compute_class_weight
from sklearn.model_selection import train_test_split
classes = 5
def load_images_from_folder(folder):
images = []
labels = []
class_names = os.listdir(folder)
for class_name in class_names:
class_path = os.path.join(folder, class_name)
for filename in os.listdir(class_path):
img = cv2.imread(os.path.join(class_path, filename))
if img is not None:
img = cv2.resize(img, (32, 32)) # Изменение размера до 64x64
img = img.astype('float32') / 255
images.append(img)
labels.append(class_names.index(class_name))
return np.array(images), to_categorical(np.array(labels), classes), labels
dataset_folder = 'E:\\MSHI_2_KYRS_2_SIM\\5.v5\\dataset\\train'
x_train, y_train, y_labels = load_images_from_folder(dataset_folder)
x_train, x_test, y_train, y_test = train_test_split(x_train, y_train, test_size=0.3, random_state=42)
class_weights = dict(enumerate(compute_class_weight(class_weight='balanced', classes=np.unique(y_labels), y=y_labels)))
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(5, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=32, epochs=50, verbose=1, validation_data=(x_test, y_test), class_weight=class_weights)
save_path = 'E:\\MSHI_2_KYRS_2_SIM\\5.v5\\my_model.keras'
model.save(save_path)
loaded_model = tf.keras.models.load_model(save_path)
img_path = 'E:\\MSHI_2_KYRS_2_SIM\\5.v5\\dataset\\train\\healthy\\20220101_085747_jpg.rf.8e8f3a8931b9f5a43b77e87937b875a7.jpg'
img = cv2.imread(img_path)
img = cv2.resize(img, (32, 32))
img = img.astype('float32') / 255
img = np.expand_dims(img, axis=0)
predictions = loaded_model.predict(img)
class_names = ['algal', 'brown_blight', 'gray_blight', 'healthy', 'red_spot']
predicted_class = np.argmax(predictions)
predicted_class_name = class_names[predicted_class]
predicted_prob = predictions[0][predicted_class]
print('Predicted class:', predicted_class_name)
print('Probability:', predicted_prob)
```
Problem:
`Epoch 1/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 3s 47ms/step - accuracy: 0.1800 - loss: 1.6678 - val_accuracy: 0.3012 - val_loss: 1.5612
Epoch 2/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.3546 - loss: 1.4837 - val_accuracy: 0.3775 - val_loss: 1.3366
Epoch 3/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.3527 - loss: 1.4189 - val_accuracy: 0.4458 - val_loss: 1.2974
Epoch 4/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.4015 - loss: 1.2905 - val_accuracy: 0.5582 - val_loss: 1.1519
Epoch 5/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.4741 - loss: 1.2249 - val_accuracy: 0.6345 - val_loss: 1.0815
Epoch 6/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.5274 - loss: 1.1392 - val_accuracy: 0.6305 - val_loss: 1.0546
Epoch 7/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.5744 - loss: 1.0751 - val_accuracy: 0.6345 - val_loss: 0.9895
Epoch 8/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.6253 - loss: 1.0424 - val_accuracy: 0.6345 - val_loss: 0.9201
Epoch 9/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.5834 - loss: 1.0626 - val_accuracy: 0.6747 - val_loss: 0.9016
Epoch 10/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.6576 - loss: 0.8760 - val_accuracy: 0.6747 - val_loss: 0.8456
Epoch 11/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 33ms/step - accuracy: 0.6317 - loss: 0.8696 - val_accuracy: 0.6586 - val_loss: 0.8808
Epoch 12/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.6426 - loss: 0.8469 - val_accuracy: 0.7068 - val_loss: 0.8178
Epoch 13/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.6738 - loss: 0.7729 - val_accuracy: 0.5904 - val_loss: 1.0304
Epoch 14/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 32ms/step - accuracy: 0.6776 - loss: 0.8323 - val_accuracy: 0.7149 - val_loss: 0.8181
Epoch 15/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 32ms/step - accuracy: 0.7252 - loss: 0.6729 - val_accuracy: 0.6867 - val_loss: 0.7835
Epoch 16/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 32ms/step - accuracy: 0.7558 - loss: 0.6813 - val_accuracy: 0.7269 - val_loss: 0.8004
Epoch 17/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.7109 - loss: 0.6636 - val_accuracy: 0.6867 - val_loss: 0.8329
Epoch 18/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 33ms/step - accuracy: 0.7475 - loss: 0.6015 - val_accuracy: 0.7108 - val_loss: 0.8273
Epoch 19/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 32ms/step - accuracy: 0.7663 - loss: 0.6021 - val_accuracy: 0.7229 - val_loss: 0.7504
Epoch 20/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 33ms/step - accuracy: 0.7462 - loss: 0.5803 - val_accuracy: 0.6667 - val_loss: 0.9694
Epoch 21/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.7682 - loss: 0.5598 - val_accuracy: 0.7028 - val_loss: 0.8124
Epoch 22/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.8133 - loss: 0.4916 - val_accuracy: 0.7269 - val_loss: 0.7957
Epoch 23/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 33ms/step - accuracy: 0.8201 - loss: 0.4763 - val_accuracy: 0.6988 - val_loss: 0.8507
Epoch 24/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 33ms/step - accuracy: 0.8063 - loss: 0.4616 - val_accuracy: 0.7309 - val_loss: 0.7837
Epoch 25/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 35ms/step - accuracy: 0.8704 - loss: 0.3862 - val_accuracy: 0.7108 - val_loss: 0.8784
Epoch 26/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 33ms/step - accuracy: 0.8719 - loss: 0.3722 - val_accuracy: 0.7028 - val_loss: 0.9467
Epoch 27/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.8673 - loss: 0.3757 - val_accuracy: 0.7349 - val_loss: 0.8438
Epoch 28/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 32ms/step - accuracy: 0.8545 - loss: 0.3687 - val_accuracy: 0.6867 - val_loss: 1.0415
Epoch 29/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.8504 - loss: 0.3589 - val_accuracy: 0.7229 - val_loss: 0.8642
Epoch 30/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 32ms/step - accuracy: 0.8945 - loss: 0.3146 - val_accuracy: 0.7149 - val_loss: 0.8812
Epoch 31/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.8421 - loss: 0.3840 - val_accuracy: 0.7108 - val_loss: 1.0181
Epoch 32/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 30ms/step - accuracy: 0.9033 - loss: 0.2608 - val_accuracy: 0.7108 - val_loss: 0.9892
Epoch 33/50
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 31ms/step - accuracy: 0.9207 - loss: 0.2226 - val_accuracy: 0.6787 - val_loss: 1.0831
Epoch 34/50
15/19 ━━━━━━━━━━━━━━━━━━━━ 0s 26ms/step - accuracy: 0.8765 - loss: 0.2960Traceback (most recent call last):`
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.