docs
docs
[2]: import os
import cv2
import numpy as np
CLASSES_LIST = [
("aadhar", "C:/Users/Ananya Gupta/Downloads/aadhar_card"),
("pan", "C:/Users/Ananya Gupta/Downloads/pancard"),
("voter", "C:/Users/Ananya Gupta/Downloads/voterid"),
("dl", "C:/Users/Ananya Gupta/Downloads/dl")
]
IMG_SIZE = 224
# Creating dataset
def create_dataset():
s = []
labels = []
for class_index, (class_name, folder_path) in enumerate(CLASSES_LIST):
files_list = os.listdir(folder_path)
for file_name in files_list:
path = os.path.join(folder_path, file_name)
try:
image = cv2.resize(cv2.imread(path), (IMG_SIZE, IMG_SIZE))
s.append(np.array(image))
labels.append(class_index)
except Exception as e:
print(f"Error processing file {file_name} in {class_name}: {e}")
continue
features = np.asarray(s)
labels = np.array(labels)
return features, labels
# Example usage
features, labels = create_dataset()
1
to_categorical
[4]: import tensorflow as tf
from tensorflow.keras import datasets,layers,models
import matplotlib.pyplot as plt
import numpy as np
import os
import cv2
from tensorflow.keras.models import Sequential
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.utils import to_categorical
import random
seed_constant=27
np.random.seed(seed_constant)
random.seed(seed_constant)
tf.random.set_seed(seed_constant)
[5]: print(features.shape)
print(labels.shape)
[7]: labels
␣
↪test_size = 0.056, shuffle = True,
␣
↪random_state=seed_constant
)
[9]: labels_train
y_classes = [np.argmax(element) for element in labels_test]
y_classes[:5]
[9]: [2, 2, 1, 2, 0]
[10]: print(len(labels_train))
print(len(features_test))
2
1458
87
[11]: features_train=features_train/255
features_test=features_test/255
])
data_augmentation
layers.MaxPooling2D((2,2)),
layers.Dropout(0.10),
layers.Conv2D(64 ,(3, 3), activation='relu'),
layers.MaxPooling2D((2,2)),
layers.Dropout(0.10),
layers.Conv2D(128, (3, 3), activation='relu'),
layers.MaxPooling2D((2,2)),
layers.Dropout(0.10),
layers.Conv2D(256, (3, 3), activation='relu'),
layers.MaxPooling2D((2,2)),
layers.Conv2D(512, (3, 3), activation='relu'),
layers.Flatten(),
layers.Dense(512,activation='relu'),
layers.Dropout(0.07),
layers.Dense(256,activation='relu'),
layers.Dropout(0.07),
layers.Dense(128,activation='relu'),
layers.Dropout(0.07),
layers.Dense(64,activation='relu'),
layers.Dropout(0.07),
layers.Dense(4, activation='softmax')
])
[22]: cnn.summary()
Model: "sequential_2"
_________________________________________________________________
3
Layer (type) Output Shape Param #
=================================================================
conv2d_5 (Conv2D) (None, 112, 112, 32) 896
4
dense_9 (Dense) (None, 4) 260
=================================================================
Total params: 4,101,124
Trainable params: 4,101,124
Non-trainable params: 0
_________________________________________________________________
cnn.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
Epoch 1/40
35/35 [==============================] - 12s 350ms/step - loss: 0.0439 -
accuracy: 0.9854 - val_loss: 0.0655 - val_accuracy: 0.9753
Epoch 2/40
35/35 [==============================] - 16s 468ms/step - loss: 0.0486 -
accuracy: 0.9826 - val_loss: 0.1359 - val_accuracy: 0.9644
Epoch 3/40
35/35 [==============================] - 16s 445ms/step - loss: 0.0491 -
accuracy: 0.9817 - val_loss: 0.0749 - val_accuracy: 0.9781
Epoch 4/40
35/35 [==============================] - 15s 423ms/step - loss: 0.0754 -
accuracy: 0.9771 - val_loss: 0.1258 - val_accuracy: 0.9616
Epoch 5/40
35/35 [==============================] - 15s 420ms/step - loss: 0.0677 -
accuracy: 0.9790 - val_loss: 0.0557 - val_accuracy: 0.9808
Epoch 6/40
35/35 [==============================] - 14s 392ms/step - loss: 0.0508 -
accuracy: 0.9872 - val_loss: 0.2489 - val_accuracy: 0.9534
Epoch 7/40
35/35 [==============================] - 14s 393ms/step - loss: 0.0634 -
accuracy: 0.9844 - val_loss: 0.1506 - val_accuracy: 0.9671
Epoch 8/40
35/35 [==============================] - 14s 405ms/step - loss: 0.1827 -
accuracy: 0.9405 - val_loss: 0.2319 - val_accuracy: 0.9370
Epoch 9/40
35/35 [==============================] - 14s 399ms/step - loss: 0.1581 -
accuracy: 0.9515 - val_loss: 0.1408 - val_accuracy: 0.9726
5
[27]: cnn.evaluate(features_test,labels_test)#bs=4
[29]: model.evaluate(features_test,labels_test)
[31]: [2, 2, 1, 2, 2]
# Normalize the image (if needed, depending on how your model was trained)
# Assuming your model was trained on normalized data
6
print(label)