Spaces:
Sleeping
Sleeping
from tensorflow.keras import layers, models, optimizers | |
import cv2 | |
import numpy as np | |
from sklearn.model_selection import train_test_split | |
from sklearn.preprocessing import LabelEncoder | |
from tensorflow.keras import layers, models, optimizers | |
from tensorflow.keras.preprocessing.image import ImageDataGenerator | |
import os | |
# Function to load images and labels from folders | |
def load_data(folder_path): | |
images = [] | |
labels = [] | |
for label in os.listdir(folder_path): | |
label_path = os.path.join(folder_path, label) | |
if os.path.isdir(label_path): | |
for filename in os.listdir(label_path): | |
img_path = os.path.join(label_path, filename) | |
img = cv2.imread(img_path) | |
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # Convert to RGB | |
images.append(img) | |
labels.append(label) | |
return np.array(images), np.array(labels) | |
# Load data from folders | |
data_path = r"C://Users//Admin//Downloads//webappml//data" | |
images, labels = load_data(data_path) | |
# Encode labels | |
label_encoder = LabelEncoder() | |
encoded_labels = label_encoder.fit_transform(labels) | |
# Split data into training and testing sets | |
X_train, X_test, y_train, y_test = train_test_split(images, encoded_labels, test_size=0.2, random_state=42) | |
# Normalize pixel values to be between 0 and 1 | |
X_train, X_test = X_train / 255.0, X_test / 255.0 | |
# Data Augmentation | |
datagen = ImageDataGenerator( | |
rotation_range=20, | |
width_shift_range=0.2, | |
height_shift_range=0.2, | |
shear_range=0.2, | |
zoom_range=0.2, | |
horizontal_flip=True, | |
fill_mode='nearest' | |
) | |
# Fit the ImageDataGenerator on the training data | |
datagen.fit(X_train) | |
model = models.Sequential() | |
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 3))) | |
model.add(layers.MaxPooling2D((2, 2))) | |
model.add(layers.Conv2D(64, (3, 3), activation='relu')) | |
model.add(layers.MaxPooling2D((2, 2))) | |
model.add(layers.Conv2D(64, (3, 3), activation='relu')) | |
model.add(layers.Flatten()) | |
model.add(layers.Dense(64, activation='relu')) | |
model.add(layers.Dense(len(set(labels)), activation='softmax')) | |
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) | |
# Train the model with augmented data | |
model.fit(datagen.flow(X_train, y_train, batch_size=32), epochs=10, validation_data=(X_test, y_test)) | |
# Save the model | |
model.save("harisankar.h5") | |
print("Model trained with data augmentation and saved successfully.") | |