0% found this document useful (0 votes)
16 views16 pages

DL - Project 2.ipynb Colab

The document outlines a Colab notebook for a machine learning project using ResNet-50 V2 to classify images of turmeric plant diseases. It includes code for loading and preprocessing images, encoding labels, and building a custom model with a classification head. The training and validation data shapes are printed, and the model summary is displayed.

Uploaded by

try.nahush
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views16 pages

DL - Project 2.ipynb Colab

The document outlines a Colab notebook for a machine learning project using ResNet-50 V2 to classify images of turmeric plant diseases. It includes code for loading and preprocessing images, encoding labels, and building a custom model with a classification head. The training and validation data shapes are printed, and the model summary is displayed.

Uploaded by

try.nahush
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

2/12/25, 9:42 PM DL_PROJECT-2.

ipynb - Colab

keyboard_arrow_down RESNET-50
from google.colab import drive
drive.mount('/content/drive')

Mounted at /content/drive

import os
import cv2
import numpy as np

def load_images_from_folder(folder):
images = []
labels = []
for class_folder in os.listdir(folder):
class_path = os.path.join(folder, class_folder)
if os.path.isdir(class_path):
for filename in os.listdir(class_path):
img_path = os.path.join(class_path, filename)
image = cv2.imread(img_path)
# Resize image to desired dimensions
image = cv2.resize(image, (224, 224))
images.append(image)
labels.append(class_folder) # Assign label based on folder name
return np.array(images), np.array(labels)

img, label = load_images_from_folder('/content/drive/MyDrive/Turmeric Plant Disease Augmented Dataset')

img.shape

(3235, 224, 224, 3)

import tensorflow as tf
from tensorflow.keras.applications import ResNet50V2
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D, Dropout
from tensorflow.keras.models import Model
from tensorflow.keras.utils import to_categorical
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from tensorflow.keras.optimizers import Adam

# Encode labels
label_encoder = LabelEncoder()
label_encoded = label_encoder.fit_transform(label)
num_classes = len(label_encoder.classes_)

# Convert labels to one-hot encoding


y = to_categorical(label_encoded, num_classes=num_classes)

# Normalize images (scale pixel values to [0, 1])


X = img.astype('float32') / 255.0

# Split data into training and validation sets


X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)

print(f"Training data shape: {X_train.shape}")


print(f"Validation data shape: {X_val.shape}")

Training data shape: (2588, 224, 224, 3)


Validation data shape: (647, 224, 224, 3)

# Load ResNet-50 V2 without the top layer


base_model = ResNet50V2(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

# Freeze the base model (optional, for transfer learning)


base_model.trainable = False

# Add custom classification head


x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(1024, activation='relu')(x)
x = Dropout(0.5)(x) # Add dropout for regularization

https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 1/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab
predictions = Dense(num_classes, activation='softmax')(x)

# Create the final model


model = Model(inputs=base_model.input, outputs=predictions)

# Print model summary


model.summary()

https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 2/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab

Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50v2_weights_tf_dim_ordering_tf_kern


94668760/94668760 ━━━━━━━━━━━━━━━━━━━━ 5s 0us/step
Model: "functional"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Layer (type) ┃ Output Shape ┃ Param # ┃ Connected to ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ input_layer (InputLayer) │ (None, 224, 224, 3) │ 0 │ - │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv1_pad (ZeroPadding2D) │ (None, 230, 230, 3) │ 0 │ input_layer[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv1_conv (Conv2D) │ (None, 112, 112, 64) │ 9,472 │ conv1_pad[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ pool1_pad (ZeroPadding2D) │ (None, 114, 114, 64) │ 0 │ conv1_conv[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ pool1_pool (MaxPooling2D) │ (None, 56, 56, 64) │ 0 │ pool1_pad[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_preact_bn │ (None, 56, 56, 64) │ 256 │ pool1_pool[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_preact_relu │ (None, 56, 56, 64) │ 0 │ conv2_block1_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_1_conv │ (None, 56, 56, 64) │ 4,096 │ conv2_block1_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_1_bn │ (None, 56, 56, 64) │ 256 │ conv2_block1_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_1_relu │ (None, 56, 56, 64) │ 0 │ conv2_block1_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_2_pad │ (None, 58, 58, 64) │ 0 │ conv2_block1_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_2_conv │ (None, 56, 56, 64) │ 36,864 │ conv2_block1_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_2_bn │ (None, 56, 56, 64) │ 256 │ conv2_block1_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_2_relu │ (None, 56, 56, 64) │ 0 │ conv2_block1_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_0_conv │ (None, 56, 56, 256) │ 16,640 │ conv2_block1_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_3_conv │ (None, 56, 56, 256) │ 16,640 │ conv2_block1_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_out (Add) │ (None, 56, 56, 256) │ 0 │ conv2_block1_0_conv[0… │
│ │ │ │ conv2_block1_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_preact_bn │ (None, 56, 56, 256) │ 1,024 │ conv2_block1_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_preact_relu │ (None, 56, 56, 256) │ 0 │ conv2_block2_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_1_conv │ (None, 56, 56, 64) │ 16,384 │ conv2_block2_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_1_bn │ (None, 56, 56, 64) │ 256 │ conv2_block2_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_1_relu │ (None, 56, 56, 64) │ 0 │ conv2_block2_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_2_pad │ (None, 58, 58, 64) │ 0 │ conv2_block2_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_2_conv │ (None, 56, 56, 64) │ 36,864 │ conv2_block2_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_2_bn │ (None, 56, 56, 64) │ 256 │ conv2_block2_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_2_relu │ (None, 56, 56, 64) │ 0 │ conv2_block2_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_3_conv │ (None, 56, 56, 256) │ 16,640 │ conv2_block2_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_out (Add) │ (None, 56, 56, 256) │ 0 │ conv2_block1_out[0][0… │
│ │ │ │ conv2_block2_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_preact_bn │ (None, 56, 56, 256) │ 1,024 │ conv2_block2_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_preact_relu │ (None, 56, 56, 256) │ 0 │ conv2_block3_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_1_conv │ (None, 56, 56, 64) │ 16,384 │ conv2_block3_preact_r… │
https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 3/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab
│ │ │ │ │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_1_bn │ (None, 56, 56, 64) │ 256 │ conv2_block3_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_1_relu │ (None, 56, 56, 64) │ 0 │ conv2_block3_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_2_pad │ (None, 58, 58, 64) │ 0 │ conv2_block3_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_2_conv │ (None, 28, 28, 64) │ 36,864 │ conv2_block3_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_2_bn │ (None, 28, 28, 64) │ 256 │ conv2_block3_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_2_relu │ (None, 28, 28, 64) │ 0 │ conv2_block3_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ max_pooling2d │ (None, 28, 28, 256) │ 0 │ conv2_block2_out[0][0] │
│ (MaxPooling2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_3_conv │ (None, 28, 28, 256) │ 16,640 │ conv2_block3_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_out (Add) │ (None, 28, 28, 256) │ 0 │ max_pooling2d[0][0], │
│ │ │ │ conv2_block3_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_preact_bn │ (None, 28, 28, 256) │ 1,024 │ conv2_block3_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_preact_relu │ (None, 28, 28, 256) │ 0 │ conv3_block1_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_1_conv │ (None, 28, 28, 128) │ 32,768 │ conv3_block1_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_1_bn │ (None, 28, 28, 128) │ 512 │ conv3_block1_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_1_relu │ (None, 28, 28, 128) │ 0 │ conv3_block1_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_2_pad │ (None, 30, 30, 128) │ 0 │ conv3_block1_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_2_conv │ (None, 28, 28, 128) │ 147,456 │ conv3_block1_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_2_bn │ (None, 28, 28, 128) │ 512 │ conv3_block1_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_2_relu │ (None, 28, 28, 128) │ 0 │ conv3_block1_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_0_conv │ (None, 28, 28, 512) │ 131,584 │ conv3_block1_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_3_conv │ (None, 28, 28, 512) │ 66,048 │ conv3_block1_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_out (Add) │ (None, 28, 28, 512) │ 0 │ conv3_block1_0_conv[0… │
│ │ │ │ conv3_block1_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_preact_bn │ (None, 28, 28, 512) │ 2,048 │ conv3_block1_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_preact_relu │ (None, 28, 28, 512) │ 0 │ conv3_block2_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_1_conv │ (None, 28, 28, 128) │ 65,536 │ conv3_block2_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_1_bn │ (None, 28, 28, 128) │ 512 │ conv3_block2_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_1_relu │ (None, 28, 28, 128) │ 0 │ conv3_block2_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_2_pad │ (None, 30, 30, 128) │ 0 │ conv3_block2_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_2_conv │ (None, 28, 28, 128) │ 147,456 │ conv3_block2_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_2_bn │ (None, 28, 28, 128) │ 512 │ conv3_block2_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_2_relu │ (None, 28, 28, 128) │ 0 │ conv3_block2_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ 3 bl k2 3 │ (N 28 28 512) │ 66 048 │ 3 bl k2 2 l [0 │
https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 4/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab
│ conv3_block2_3_conv │ (None, 28, 28, 512) │ 66,048 │ conv3_block2_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_out (Add) │ (None, 28, 28, 512) │ 0 │ conv3_block1_out[0][0… │
│ │ │ │ conv3_block2_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_preact_bn │ (None, 28, 28, 512) │ 2,048 │ conv3_block2_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_preact_relu │ (None, 28, 28, 512) │ 0 │ conv3_block3_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_1_conv │ (None, 28, 28, 128) │ 65,536 │ conv3_block3_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_1_bn │ (None, 28, 28, 128) │ 512 │ conv3_block3_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_1_relu │ (None, 28, 28, 128) │ 0 │ conv3_block3_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_2_pad │ (None, 30, 30, 128) │ 0 │ conv3_block3_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_2_conv │ (None, 28, 28, 128) │ 147,456 │ conv3_block3_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_2_bn │ (None, 28, 28, 128) │ 512 │ conv3_block3_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_2_relu │ (None, 28, 28, 128) │ 0 │ conv3_block3_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_3_conv │ (None, 28, 28, 512) │ 66,048 │ conv3_block3_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_out (Add) │ (None, 28, 28, 512) │ 0 │ conv3_block2_out[0][0… │
│ │ │ │ conv3_block3_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_preact_bn │ (None, 28, 28, 512) │ 2,048 │ conv3_block3_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_preact_relu │ (None, 28, 28, 512) │ 0 │ conv3_block4_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_1_conv │ (None, 28, 28, 128) │ 65,536 │ conv3_block4_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_1_bn │ (None, 28, 28, 128) │ 512 │ conv3_block4_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_1_relu │ (None, 28, 28, 128) │ 0 │ conv3_block4_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_2_pad │ (None, 30, 30, 128) │ 0 │ conv3_block4_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_2_conv │ (None, 14, 14, 128) │ 147,456 │ conv3_block4_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_2_bn │ (None, 14, 14, 128) │ 512 │ conv3_block4_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_2_relu │ (None, 14, 14, 128) │ 0 │ conv3_block4_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ max_pooling2d_1 │ (None, 14, 14, 512) │ 0 │ conv3_block3_out[0][0] │
│ (MaxPooling2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_3_conv │ (None, 14, 14, 512) │ 66,048 │ conv3_block4_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_out (Add) │ (None, 14, 14, 512) │ 0 │ max_pooling2d_1[0][0], │
│ │ │ │ conv3_block4_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_preact_bn │ (None, 14, 14, 512) │ 2,048 │ conv3_block4_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_preact_relu │ (None, 14, 14, 512) │ 0 │ conv4_block1_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_1_conv │ (None, 14, 14, 256) │ 131,072 │ conv4_block1_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block1_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block1_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_2_pad │ (None, 16, 16, 256) │ 0 │ conv4_block1_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 5/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab
├ ┼ ┼ ┼ ┤
│ conv4_block1_2_conv │ (None, 14, 14, 256) │ 589,824 │ conv4_block1_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_2_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block1_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_2_relu │ (None, 14, 14, 256) │ 0 │ conv4_block1_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_0_conv │ (None, 14, 14, 1024) │ 525,312 │ conv4_block1_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_3_conv │ (None, 14, 14, 1024) │ 263,168 │ conv4_block1_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_out (Add) │ (None, 14, 14, 1024) │ 0 │ conv4_block1_0_conv[0… │
│ │ │ │ conv4_block1_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_preact_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block1_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_preact_relu │ (None, 14, 14, 1024) │ 0 │ conv4_block2_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_1_conv │ (None, 14, 14, 256) │ 262,144 │ conv4_block2_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block2_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block2_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_2_pad │ (None, 16, 16, 256) │ 0 │ conv4_block2_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_2_conv │ (None, 14, 14, 256) │ 589,824 │ conv4_block2_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_2_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block2_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_2_relu │ (None, 14, 14, 256) │ 0 │ conv4_block2_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_3_conv │ (None, 14, 14, 1024) │ 263,168 │ conv4_block2_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_out (Add) │ (None, 14, 14, 1024) │ 0 │ conv4_block1_out[0][0… │
│ │ │ │ conv4_block2_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_preact_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block2_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_preact_relu │ (None, 14, 14, 1024) │ 0 │ conv4_block3_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_1_conv │ (None, 14, 14, 256) │ 262,144 │ conv4_block3_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block3_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block3_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_2_pad │ (None, 16, 16, 256) │ 0 │ conv4_block3_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_2_conv │ (None, 14, 14, 256) │ 589,824 │ conv4_block3_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_2_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block3_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_2_relu │ (None, 14, 14, 256) │ 0 │ conv4_block3_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_3_conv │ (None, 14, 14, 1024) │ 263,168 │ conv4_block3_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_out (Add) │ (None, 14, 14, 1024) │ 0 │ conv4_block2_out[0][0… │
│ │ │ │ conv4_block3_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_preact_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block3_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_preact_relu │ (None, 14, 14, 1024) │ 0 │ conv4_block4_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_1_conv │ (None, 14, 14, 256) │ 262,144 │ conv4_block4_preact_r… │
│ (Conv2D) │ │ │ │
├ ┼ ┼ ┼ ┤
https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 6/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block4_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block4_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_2_pad │ (None, 16, 16, 256) │ 0 │ conv4_block4_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_2_conv │ (None, 14, 14, 256) │ 589,824 │ conv4_block4_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_2_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block4_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_2_relu │ (None, 14, 14, 256) │ 0 │ conv4_block4_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_3_conv │ (None, 14, 14, 1024) │ 263,168 │ conv4_block4_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_out (Add) │ (None, 14, 14, 1024) │ 0 │ conv4_block3_out[0][0… │
│ │ │ │ conv4_block4_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_preact_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block4_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_preact_relu │ (None, 14, 14, 1024) │ 0 │ conv4_block5_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_1_conv │ (None, 14, 14, 256) │ 262,144 │ conv4_block5_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block5_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block5_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_2_pad │ (None, 16, 16, 256) │ 0 │ conv4_block5_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_2_conv │ (None, 14, 14, 256) │ 589,824 │ conv4_block5_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_2_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block5_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_2_relu │ (None, 14, 14, 256) │ 0 │ conv4_block5_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_3_conv │ (None, 14, 14, 1024) │ 263,168 │ conv4_block5_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_out (Add) │ (None, 14, 14, 1024) │ 0 │ conv4_block4_out[0][0… │
│ │ │ │ conv4_block5_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_preact_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block5_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_preact_relu │ (None, 14, 14, 1024) │ 0 │ conv4_block6_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_1_conv │ (None, 14, 14, 256) │ 262,144 │ conv4_block6_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block6_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block6_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_2_pad │ (None, 16, 16, 256) │ 0 │ conv4_block6_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_2_conv │ (None, 7, 7, 256) │ 589,824 │ conv4_block6_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_2_bn │ (None, 7, 7, 256) │ 1,024 │ conv4_block6_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_2_relu │ (None, 7, 7, 256) │ 0 │ conv4_block6_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ max_pooling2d_2 │ (None, 7, 7, 1024) │ 0 │ conv4_block5_out[0][0] │
│ (MaxPooling2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_3_conv │ (None, 7, 7, 1024) │ 263,168 │ conv4_block6_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_out (Add) │ (None, 7, 7, 1024) │ 0 │ max_pooling2d_2[0][0], │
│ │ │ │ conv4 block6 3 conv[0 │
https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 7/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab
│ │ │ │ conv4_block6_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_preact_bn │ (None, 7, 7, 1024) │ 4,096 │ conv4_block6_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_preact_relu │ (None, 7, 7, 1024) │ 0 │ conv5_block1_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_1_conv │ (None, 7, 7, 512) │ 524,288 │ conv5_block1_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_1_bn │ (None, 7, 7, 512) │ 2,048 │ conv5_block1_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_1_relu │ (None, 7, 7, 512) │ 0 │ conv5_block1_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_2_pad │ (None, 9, 9, 512) │ 0 │ conv5_block1_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_2_conv │ (None, 7, 7, 512) │ 2,359,296 │ conv5_block1_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_2_bn │ (None, 7, 7, 512) │ 2,048 │ conv5_block1_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_2_relu │ (None, 7, 7, 512) │ 0 │ conv5_block1_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_0_conv │ (None, 7, 7, 2048) │ 2,099,200 │ conv5_block1_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_3_conv │ (None, 7, 7, 2048) │ 1,050,624 │ conv5_block1_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_out (Add) │ (None, 7, 7, 2048) │ 0 │ conv5_block1_0_conv[0… │
│ │ │ │ conv5_block1_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_preact_bn │ (None, 7, 7, 2048) │ 8,192 │ conv5_block1_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_preact_relu │ (None, 7, 7, 2048) │ 0 │ conv5_block2_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_1_conv │ (None, 7, 7, 512) │ 1,048,576 │ conv5_block2_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_1_bn │ (None, 7, 7, 512) │ 2,048 │ conv5_block2_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_1_relu │ (None, 7, 7, 512) │ 0 │ conv5_block2_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_2_pad │ (None, 9, 9, 512) │ 0 │ conv5_block2_1_relu[0… │
│ (ZeroPadding2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_2_conv │ (None, 7, 7, 512) │ 2,359,296 │ conv5_block2_2_pad[0]… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_2_bn │ (None, 7, 7, 512) │ 2,048 │ conv5_block2_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_2_relu │ (None, 7, 7, 512) │ 0 │ conv5_block2_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_3_conv │ (None, 7, 7, 2048) │ 1,050,624 │ conv5_block2_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_out (Add) │ (None, 7, 7, 2048) │ 0 │ conv5_block1_out[0][0… │
│ │ │ │ conv5_block2_3_conv[0… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_preact_bn │ (None, 7, 7, 2048) │ 8,192 │ conv5_block2_out[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_preact_relu │ (None, 7, 7, 2048) │ 0 │ conv5_block3_preact_b… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_1_conv │ (None, 7, 7, 512) │ 1,048,576 │ conv5_block3_preact_r… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_1_bn │ (None, 7, 7, 512) │ 2,048 │ conv5_block3_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_1_relu │ (None, 7, 7, 512) │ 0 │ conv5_block3_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ 5 bl k3 2 d │ (N 9 9 512) │ 0 │ 5 bl k3 1 l [0 │

https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 8/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab

# Compile the model


model.compile(optimizer=Adam(learning_rate=0.0001),
loss='categorical_crossentropy',
metrics=['accuracy'])

# Train the model


batch_size = 32
epochs = 10 # You can increase this for better performance

history = model.fit(
X_train, y_train,
batch_size=batch_size,
epochs=epochs,
validation_data=(X_val, y_val),
verbose=1
)

Epoch 1/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 41s 314ms/step - accuracy: 0.7126 - loss: 0.7079 - val_accuracy: 0.9536 - val_loss: 0.1265
Epoch 2/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 7s 84ms/step - accuracy: 0.9552 - loss: 0.1394 - val_accuracy: 0.9706 - val_loss: 0.0879
Epoch 3/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 8s 99ms/step - accuracy: 0.9690 - loss: 0.0935 - val_accuracy: 0.9753 - val_loss: 0.0754
Epoch 4/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 9s 85ms/step - accuracy: 0.9782 - loss: 0.0655 - val_accuracy: 0.9784 - val_loss: 0.0667
Epoch 5/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 11s 101ms/step - accuracy: 0.9865 - loss: 0.0452 - val_accuracy: 0.9815 - val_loss: 0.0581
Epoch 6/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 7s 84ms/step - accuracy: 0.9904 - loss: 0.0393 - val_accuracy: 0.9799 - val_loss: 0.0551
Epoch 7/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 7s 85ms/step - accuracy: 0.9940 - loss: 0.0278 - val_accuracy: 0.9799 - val_loss: 0.0548
Epoch 8/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 11s 100ms/step - accuracy: 0.9945 - loss: 0.0239 - val_accuracy: 0.9830 - val_loss: 0.0570
Epoch 9/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 10s 101ms/step - accuracy: 0.9953 - loss: 0.0219 - val_accuracy: 0.9845 - val_loss: 0.0510
Epoch 10/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 8s 102ms/step - accuracy: 0.9968 - loss: 0.0173 - val_accuracy: 0.9845 - val_loss: 0.0493

# Evaluate the model


loss, accuracy = model.evaluate(X_val, y_val, verbose=1)
print(f"Validation Loss: {loss}")
print(f"Validation Accuracy: {accuracy}")

21/21 ━━━━━━━━━━━━━━━━━━━━ 2s 68ms/step - accuracy: 0.9867 - loss: 0.0393


Validation Loss: 0.049319010227918625
Validation Accuracy: 0.984544038772583

import matplotlib.pyplot as plt

# Plot training & validation accuracy values


plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.title('Model Accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'], loc='upper left')
plt.show()

# Plot training & validation loss values


plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Model Loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'], loc='upper left')
plt.show()

https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 9/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab

from sklearn.metrics import classification_report


import numpy as np

# Step 1: Predict on the validation set


y_pred = model.predict(X_val) # Get predicted probabilities
y_pred_classes = np.argmax(y_pred, axis=1) # Convert probabilities to class labels

# Step 2: Convert one-hot encoded validation labels back to class labels


y_true_classes = np.argmax(y_val, axis=1)

# Step 3: Generate the classification report


class_names = label_encoder.classes_ # Get the original class names
report = classification_report(y_true_classes, y_pred_classes, target_names=class_names)

# Step 4: Print the classification report


print("Classification Report:")
print(report)

21/21 ━━━━━━━━━━━━━━━━━━━━ 9s 262ms/step


Classification Report:
precision recall f1-score support

Dry Leaf 0.99 0.99 0.99 153


Healthy Leaf 0.99 0.99 0.99 201
Leaf Blotch 0.97 0.98 0.97 184
Rhizome Rot 1.00 0.99 1.00 109

accuracy 0.98 647


macro avg 0.99 0.99 0.99 647
weighted avg 0.98 0.98 0.98 647

from sklearn.metrics import confusion_matrix

https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 10/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# Step 1: Predict on the validation set


y_pred = model.predict(X_val) # Get predicted probabilities
y_pred_classes = np.argmax(y_pred, axis=1) # Convert probabilities to class labels

# Step 2: Convert one-hot encoded validation labels back to class labels


y_true_classes = np.argmax(y_val, axis=1)

# Step 3: Generate the confusion matrix


cm = confusion_matrix(y_true_classes, y_pred_classes)

# Step 4: Plot the confusion matrix


plt.figure(figsize=(10, 8))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',
xticklabels=label_encoder.classes_,
yticklabels=label_encoder.classes_)
plt.xlabel('Predicted Labels')
plt.ylabel('True Labels')
plt.title('Confusion Matrix')
plt.show()

21/21 ━━━━━━━━━━━━━━━━━━━━ 1s 66ms/step

# Save the model


model.save('/content/drive/MyDrive/turmeric_Plant_disease_resnet50v2.h5')
print("Model saved!")

WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is c
Model saved!

Start coding or generate with AI.

keyboard_arrow_down EfficientNetB0 with ResNet50 Combined


from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(img,label,test_size=0.2)

https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 11/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab
import tensorflow as tf
from tensorflow.keras.applications import ResNet50, EfficientNetB0
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D, Concatenate
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
from sklearn.preprocessing import LabelEncoder

# Load ResNet50 model


resnet_model = ResNet50(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

# Load EfficientNetB0 model


efficientnet_model = EfficientNetB0(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

# Get the output of both models


resnet_output = resnet_model.output
efficientnet_output = efficientnet_model.output

# Add global average pooling layers to both models


resnet_output = GlobalAveragePooling2D()(resnet_output)
efficientnet_output = GlobalAveragePooling2D()(efficientnet_output)

# Concatenate both model outputs


combined_output = Concatenate()([resnet_output, efficientnet_output])

# Add fully connected layers


x = Dense(1024, activation='relu')(combined_output)
predictions = Dense(4, activation='softmax')(x) # Assuming 4 classes

# Create the combined model


model = Model(inputs=[resnet_model.input, efficientnet_model.input], outputs=predictions)

# Optionally, freeze the base layers to avoid modifying pre-trained weights


for layer in resnet_model.layers:
layer.trainable = False

for layer in efficientnet_model.layers:


layer.trainable = False

# Unfreeze the last few layers of both models for fine-tuning


for layer in resnet_model.layers[-10:]:
layer.trainable = True

for layer in efficientnet_model.layers[-10:]:


layer.trainable = True

# Set a lower learning rate (e.g., 0.0001)


optimizer = Adam(learning_rate=0.0001)

# Compile the combined model with the modified learning rate


model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])

# Convert string labels to numerical using LabelEncoder


label_encoder = LabelEncoder()
y_train_encoded = label_encoder.fit_transform(y_train)
y_test_encoded = label_encoder.transform(y_test)

# Convert numerical labels to one-hot encoded vectors


y_train_onehot = tf.keras.utils.to_categorical(y_train_encoded)
y_test_onehot = tf.keras.utils.to_categorical(y_test_encoded)

# Train the combined model (using your dataset)


history = model.fit([x_train, x_train], y_train_onehot, epochs=15, batch_size=64, validation_data=([x_test, x_test], y_test_onehot))

Epoch 1/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 88s 1s/step - accuracy: 0.8703 - loss: 0.3547 - val_accuracy: 0.9969 - val_loss: 0.0095
Epoch 2/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 28s 285ms/step - accuracy: 0.9995 - loss: 0.0039 - val_accuracy: 0.9985 - val_loss: 0.0063
Epoch 3/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 21s 288ms/step - accuracy: 1.0000 - loss: 0.0012 - val_accuracy: 0.9985 - val_loss: 0.0062
Epoch 4/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 20s 273ms/step - accuracy: 1.0000 - loss: 5.9944e-04 - val_accuracy: 0.9985 - val_loss: 0.0044
Epoch 5/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 21s 284ms/step - accuracy: 1.0000 - loss: 4.2384e-04 - val_accuracy: 0.9985 - val_loss: 0.0038
Epoch 6/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 20s 276ms/step - accuracy: 1.0000 - loss: 3.1228e-04 - val_accuracy: 0.9985 - val_loss: 0.0035
Epoch 7/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 21s 287ms/step - accuracy: 1.0000 - loss: 2.5735e-04 - val_accuracy: 0.9985 - val_loss: 0.0034
Epoch 8/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 12s 287ms/step - accuracy: 1.0000 - loss: 2.2545e-04 - val_accuracy: 0.9985 - val_loss: 0.0032
Epoch 9/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 20s 272ms/step - accuracy: 1.0000 - loss: 2.1402e-04 - val_accuracy: 0.9985 - val_loss: 0.0031
Epoch 10/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 21s 286ms/step - accuracy: 1.0000 - loss: 1.7322e-04 - val_accuracy: 0.9985 - val_loss: 0.0030

https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 12/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab
Epoch 11/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 20s 276ms/step - accuracy: 1.0000 - loss: 1.6765e-04 - val_accuracy: 0.9985 - val_loss: 0.0028
Epoch 12/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 20s 275ms/step - accuracy: 1.0000 - loss: 8.6853e-05 - val_accuracy: 0.9985 - val_loss: 0.0028
Epoch 13/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 12s 287ms/step - accuracy: 1.0000 - loss: 9.8932e-05 - val_accuracy: 0.9985 - val_loss: 0.0026
Epoch 14/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 20s 272ms/step - accuracy: 1.0000 - loss: 9.2357e-05 - val_accuracy: 0.9985 - val_loss: 0.0026
Epoch 15/15
41/41 ━━━━━━━━━━━━━━━━━━━━ 20s 272ms/step - accuracy: 1.0000 - loss: 8.0390e-05 - val_accuracy: 0.9985 - val_loss: 0.0024

# Save the model


model.save('/content/drive/MyDrive/turmeric_Plant_disease_EfficientNetB0 with ResNet50 Combined.h5')
print("Model saved!")

WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is c
Model saved!

Start coding or generate with AI.

keyboard_arrow_down VIT
from google.colab import drive
drive.mount('/content/drive')

Mounted at /content/drive

import os
import cv2
import numpy as np

def load_images_from_folder(folder):
images = []
labels = []
for class_folder in os.listdir(folder):
class_path = os.path.join(folder, class_folder)
if os.path.isdir(class_path):
for filename in os.listdir(class_path):
img_path = os.path.join(class_path, filename)
image = cv2.imread(img_path)
# Resize image to desired dimensions
image = cv2.resize(image, (224, 224))
images.append(image)
labels.append(class_folder) # Assign label based on folder name
return np.array(images), np.array(labels)

img, label = load_images_from_folder('/content/drive/MyDrive/Turmeric Plant Disease Augmented Dataset')

from sklearn.model_selection import train_test_split


x_train,x_test,y_train,y_test=train_test_split(img,label,test_size=0.2)

pip install timm

https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 13/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab
Found existing installation: nvidia curand cu12 10.3.6.82
Uninstalling nvidia-curand-cu12-10.3.6.82:
Successfully uninstalled nvidia-curand-cu12-10.3.6.82
Attempting uninstall: nvidia-cufft-cu12
Found existing installation: nvidia-cufft-cu12 11.2.3.61
Uninstalling nvidia-cufft-cu12-11.2.3.61:
Successfully uninstalled nvidia-cufft-cu12-11.2.3.61
Attempting uninstall: nvidia-cuda-runtime-cu12
Found existing installation: nvidia-cuda-runtime-cu12 12.5.82
Uninstalling nvidia-cuda-runtime-cu12-12.5.82:
Successfully uninstalled nvidia-cuda-runtime-cu12-12.5.82
Attempting uninstall: nvidia-cuda-nvrtc-cu12
Found existing installation: nvidia-cuda-nvrtc-cu12 12.5.82
Uninstalling nvidia-cuda-nvrtc-cu12-12.5.82:
Successfully uninstalled nvidia-cuda-nvrtc-cu12-12.5.82
Attempting uninstall: nvidia-cuda-cupti-cu12
Found existing installation: nvidia-cuda-cupti-cu12 12.5.82
Uninstalling nvidia-cuda-cupti-cu12-12.5.82:
Successfully uninstalled nvidia-cuda-cupti-cu12-12.5.82
Attempting uninstall: nvidia-cublas-cu12
Found existing installation: nvidia-cublas-cu12 12.5.3.2
Uninstalling nvidia-cublas-cu12-12.5.3.2:
Successfully uninstalled nvidia-cublas-cu12-12.5.3.2
Attempting uninstall: nvidia-cusparse-cu12
Found existing installation: nvidia-cusparse-cu12 12.5.1.3
Uninstalling nvidia-cusparse-cu12-12.5.1.3:
Successfully uninstalled nvidia-cusparse-cu12-12.5.1.3
Attempting uninstall: nvidia-cudnn-cu12
Found existing installation: nvidia-cudnn-cu12 9.3.0.75
Uninstalling nvidia-cudnn-cu12-9.3.0.75:
Successfully uninstalled nvidia-cudnn-cu12-9.3.0.75
Attempting uninstall: nvidia-cusolver-cu12
Found existing installation: nvidia-cusolver-cu12 11.6.3.83
Uninstalling nvidia-cusolver-cu12-11.6.3.83:
Successfully uninstalled nvidia-cusolver-cu12-11.6.3.83
Successfully installed nvidia-cublas-cu12-12.4.5.8 nvidia-cuda-cupti-cu12-12.4.127 nvidia-cuda-nvrtc-cu12-12.4.127 nvidia-cuda-ru

import torch
from torch.utils.data import DataLoader, Dataset
from transformers import ViTForImageClassification, ViTFeatureExtractor, AdamW
from sklearn.metrics import accuracy_score

# Custom Dataset for PyTorch


class CustomDataset(Dataset):
def __init__(self, images, labels):
self.images = images
self.labels = labels

def __len__(self):
return len(self.images)

def __getitem__(self, idx):


return {
"pixel_values": torch.tensor(self.images[idx], dtype=torch.float32),
"labels": torch.tensor(self.labels[idx], dtype=torch.long),
}

# Load Feature Extractor


feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224-in21k")

# Preprocess Data
def preprocess_data(images, labels):
images = feature_extractor(images=list(images), return_tensors="pt")["pixel_values"]
label_mapping = {label: idx for idx, label in enumerate(np.unique(labels))}
labels = np.array([label_mapping[label] for label in labels])
return images, labels, label_mapping

x_train_processed, y_train_processed, label_mapping = preprocess_data(x_train, y_train)


x_test_processed, y_test_processed, _ = preprocess_data(x_test, y_test)

# Create PyTorch DataLoaders


train_dataset = CustomDataset(x_train_processed, y_train_processed)
test_dataset = CustomDataset(x_test_processed, y_test_processed)

train_loader = DataLoader(train_dataset, batch_size=16, shuffle=True)


test_loader = DataLoader(test_dataset, batch_size=16)

# Initialize the ViT Model


model = ViTForImageClassification.from_pretrained(
"google/vit-base-patch16-224-in21k",
num_labels=len(label_mapping),
id2label={idx: label for label, idx in label_mapping.items()},
label2id=label_mapping,
)

https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 14/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab

# Set Device
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)

# Optimizer and Loss


optimizer = AdamW(model.parameters(), lr=5e-5)
criterion = torch.nn.CrossEntropyLoss()

# Training Loop
epochs = 5
for epoch in range(epochs):
model.train()
train_loss = 0
correct = 0
total = 0
for batch in train_loader:
optimizer.zero_grad()
pixel_values = batch["pixel_values"].to(device)
labels = batch["labels"].to(device)

outputs = model(pixel_values)
loss = criterion(outputs.logits, labels)
loss.backward()
optimizer.step()

train_loss += loss.item()
_, preds = torch.max(outputs.logits, dim=1)
correct += (preds == labels).sum().item()
total += labels.size(0)

train_acc = 100 * correct / total


print(f"Epoch {epoch + 1}/{epochs}, Loss: {train_loss:.4f}, Accuracy: {train_acc:.2f}%")

# Evaluation Loop
model.eval()
correct = 0
total = 0
with torch.no_grad():
for batch in test_loader:
pixel_values = batch["pixel_values"].to(device)
labels = batch["labels"].to(device)

outputs = model(pixel_values)
_, preds = torch.max(outputs.logits, dim=1)
correct += (preds == labels).sum().item()
total += labels.size(0)

test_acc = 100 * correct / total


print(f"Test Accuracy: {test_acc:.2f}%")

# Save Model
model.save_pretrained("./vit_model")
feature_extractor.save_pretrained("./vit_model")

https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 15/16
2/12/25, 9:42 PM DL_PROJECT-2.ipynb - Colab

/usr/local/lib/python3.11/dist-packages/huggingface_hub/utils/_auth.py:94: UserWarning:
from sklearn.metrics import does
The secret `HF_TOKEN` classification_report, confusion_matrix,
not exist in your Colab secrets. roc_curve, auc
import
Tonumpy as np
authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as s
You
import will be able to as
matplotlib.pyplot reuse
plt this secret in all of your notebooks.
Please
import note
seaborn as that
sns authentication is recommended but still optional to access public models or datasets.
warnings.warn(
# Get preprocessor_config.json:
Predictions and True100% Labels 160/160 [00:00<00:00, 11.6kB/s]
true_labels = []
/usr/local/lib/python3.11/dist-packages/transformers/models/vit/feature_extraction_vit.py:28: FutureWarning: The class ViTFeatureExt
pred_labels = []
warnings.warn(
pred_probs = []
config.json: 100% 502/502 [00:00<00:00, 30.9kB/s]

model.eval()
model.safetensors: 100% 346M/346M [00:01<00:00, 239MB/s]
with torch.no_grad():
Some weights of ViTForImageClassification were not initialized from the model checkpoint at google/vit-base-patch16-224-in21k and ar
for batch in test_loader:
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.
pixel_values = batch["pixel_values"].to(device)
/usr/local/lib/python3.11/dist-packages/transformers/optimization.py:591: FutureWarning: This implementation of AdamW is deprecated
labels = batch["labels"].to(device)
warnings.warn(
outputs = model(pixel_values)
<ipython-input-4-8708d9259d53>:17: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detac
probs = torch.nn.functional.softmax(outputs.logits,
"pixel_values": dim=1)
torch.tensor(self.images[idx], dtype=torch.float32),
_, preds
Epoch = torch.max(probs,
1/5, Loss: dim=1)
40.7884, Accuracy: 97.10%
Epoch 2/5, Loss: 6.0971, Accuracy: 100.00%
Epoch 3/5, Loss: 3.5657, Accuracy: 100.00%
true_labels.extend(labels.cpu().numpy())
Epoch 4/5, Loss: 2.3541, Accuracy: 100.00%
pred_labels.extend(preds.cpu().numpy())
Epoch 5/5, Loss: 1.6590, Accuracy: 100.00%
pred_probs.extend(probs.cpu().numpy())
Test Accuracy: 100.00%
['./vit_model/preprocessor_config.json']
# Classification Report
print("Classification Report:")
print(classification_report(true_labels, pred_labels, target_names=label_mapping.keys()))

# Confusion Matrix
cm = confusion_matrix(true_labels, pred_labels)
plt.figure(figsize=(8,6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=label_mapping.keys(), yticklabels=label_mapping.keys())
plt.xlabel("Predicted")
plt.ylabel("True")
plt.title("Confusion Matrix")
plt.show()

# ROC Curve (for multi-class, we use one-vs-rest approach)


n_classes = len(label_mapping)
y_true = np.eye(n_classes)[true_labels] # Convert labels to one-hot encoding
fpr, tpr, roc_auc = {}, {}, {}
for i in range(n_classes):
fpr[i], tpr[i], _ = roc_curve(y_true[:, i], np.array(pred_probs)[:, i])
roc_auc[i] = auc(fpr[i], tpr[i])

# Plot ROC Curves


plt.figure(figsize=(10, 6))
for i in range(n_classes):
plt.plot(fpr[i], tpr[i], label=f'Class {list(label_mapping.keys())[i]} (AUC = {roc_auc[i]:.2f})')
plt.plot([0, 1], [0, 1], 'k--') # Diagonal line
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("ROC Curve")
plt.legend()
plt.show()

<ipython-input-4-8708d9259d53>:17: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detac

https://colab.research.google.com/drive/14_oaNkbOYMNPK7Q0zpR7n715elYBTwUx#scrollTo=MjeNQmYiVqre&printMode=true 16/16

You might also like