{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":70497,"databundleVersionId":7713244,"sourceType":"competition"},{"sourceId":8344310,"sourceType":"datasetVersion","datasetId":4956531},{"sourceId":8412605,"sourceType":"datasetVersion","datasetId":5007094},{"sourceId":176479644,"sourceType":"kernelVersion"},{"sourceId":176483088,"sourceType":"kernelVersion"},{"sourceId":176548378,"sourceType":"kernelVersion"},{"sourceId":177539517,"sourceType":"kernelVersion"},{"sourceId":177539900,"sourceType":"kernelVersion"},{"sourceId":177540008,"sourceType":"kernelVersion"},{"sourceId":177540526,"sourceType":"kernelVersion"},{"sourceId":177564369,"sourceType":"kernelVersion"},{"sourceId":177566965,"sourceType":"kernelVersion"},{"sourceId":177645677,"sourceType":"kernelVersion"},{"sourceId":177645942,"sourceType":"kernelVersion"},{"sourceId":177720088,"sourceType":"kernelVersion"},{"sourceId":177720135,"sourceType":"kernelVersion"},{"sourceId":177720225,"sourceType":"kernelVersion"},{"sourceId":177720283,"sourceType":"kernelVersion"}],"dockerImageVersionId":30699,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Two-Stage Ensemble Approach for Fruits Categorical Classification - Inference\n\n## Introduction\nThis code implements a two-stage ensemble approach for the categorical classification of fruits. The approach involves utilizing pre-trained deep learning models to classify fruits into different categories.\n\n## 1. Data Preparation\n- The `ImageDataGenerator` class from `keras.preprocessing.image` is used for data-preparation\n- horizontal_flip, vertical_flip, samplewise_center, zoom_range, width_shift_range, height_shift_range, rotation_range are applied for data augmentation\n    \n## 2. Ensemble of Models\n- The models to classify the fruit types as well as the individual models for each fruit category (e.g., apple, banana, orange) are grouped into lists.\n- An ensemble prediction function takes an input image array and a list of models as input. This function predicts the class label for the input image using a majority voting scheme (hard voting) among the predictions of all models in the list.\n- The ensemble includes mobileNetV2, InceptionV3, Xception, and InceptionV3 models as in the architecture shown below.\n![!Screenshot 2024-05-28 at 10.33.30 AM.png](attachment:83cec35a-0b61-498d-9422-83a3d3726142.png)\n\n## 3. Submission Preparation\n- A DataFrame is created from the prediction results and saved to a CSV file named `submission_2Stage_updated.csv`.\n\n## Conclusion\nThis code demonstrates the implementation of a two-stage ensemble approach for the categorical classification of fruits. By combining predictions from multiple pre-trained models, the approach aims to improve classification accuracy and robustness.\n","metadata":{},"attachments":{"83cec35a-0b61-498d-9422-83a3d3726142.png":{"image/png":"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0KVLF7flL4MOsYoAAggggAACMRCYPn266cXf2hhgUgQCCEQloMAdv3OioiITAnElUKJECVdfNZZK67RlyxbXqm7FihXuUortNGzY0IoWLWp//vmnayB177332urVq+2yyy5zwbsGDQ4OyZDauqV33OZIr5elAnennHJKunZZrVu3rulFil5Af9D1LXHXrl3dt3LR/IFX/mnTplmtWrWivxA5EUAAAQTiVmDw4MH222+/WceOHd09HDhwwLRP3742bdrUrr766pB7U97evXtb8+bNrVKlSiHHsuOG/l7q76z+fqoFTDR/a7OjU3a+53z58pgmb7jkouha5GVnK+4dAQQQyM4CCtjp84RexYsXt7QM4L388svmB+2WLl1q+kLATyeeeKLVr1/fvv76axeDWbBggWl8Xu076qij/GwxX+ozaPj4szG/SBQFZstZZYcNG2YJCQk2efJkGzlypIvqVq5c2XHdfvvt7ti6detC+H799Ve3X8f9NHToUBcBVjPNzZs3u+NTp051hx955BGCej5U2FL/iVDy/1PBfyjCgNhEAAEEsrnAkCFDrEePHgEFfXmjluwaV3b37t2B/f6KulW88MIL9tNPP/m7sv2Sv7XZ/i1wSID8+fJa3+cftSbXXXHIfBxEAAEEEEBAATslxUgUwCvxXyu8WMr89ddf1q1bN1fk888/HxK0C75OgQIFTAE+JQX3FNNRmjlzpovHPPvss247+Ic+Iyr+ozyHitvoumrht2jRIuvevbtdeOGFLiiocfUGDhwYXGRMrhdSYAob2TJwpzecupA8+eST7pt7DXr477//Oqo5c+a4Yzt27Aih00wmOkfH/aQ3yscff2xr1qxx52tbfa+VNmzYYD/++KOflWWQQHigjgBeEA6rCGQDAVrPZoOHHONb1N9XJX272qRJkxiXnjWL07+z4H9r/K3Nms+Zu0IAAQQQQCCtBcJb2aVFAG/hwoWB27jvvvsC65FWqlWrZhdccIE79O23Byd6UjdbxWv8z4zB5y1fvtwdUx7FfZKL26gOiu+oG65iRcuWLXOTYnzzzTduQoyHHnooUGwsrhcoLIqVLBW4U1/nZ555JuIr0qyz+g+A+kSrv7Ee8pEkzVir6O11113nitFkGQrekSIL+C0Bgo/yn4pgDdYRyJoCCiSo9RQJgWgFNJuYP0CxWtwtXrw42VPVneHd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FEN7YOnCEDp08qOPPpKpU6c6ytAN7SGmc+/pPT/44APZsGGDDB482OTX4b3JmXRIqA7jdH/9/PPPLrdxd7l8+bKZl07boj0Xtded9nLUpK7abk3aPl0cZOTIkaLOmkeHL7/wwguiw0XtpM8sa9as8vnnn8usWbNMrzUriJXoUGbtwdetWzfRRTS055k+GyuQZ+x1fj7tJWknfTZDhgwxrlZA1z7s8ftff/0lunCFlmMFIkzPTL347bffNs9bPy/a63Dz5s3y7LPPihXslQEDBkihQoVM7zoroGnarb3ydO7FGTNmmHtbwWFH7ztvnrsOsz1x4oT8+OOPphefDnnW7aVLl3rcJjIigAACCASoQPLGASkNAQQQQAABBEJFwPrqQ4+7UHnYft5Oa9EF0xPJGpqYaE2twJrJN2fOHJNPe4vp59gaXuu4Tnu4PfroozFWMM5xTDcee+wxk/fvv/82x7XHnV47f/58R76TJ0+aY3pO0w8//GD227dv78ijG1ZAyBy3e9xpTz8t64svvnDJZwWEzHErSOZyPCk7do87vU98L+15Zqf4XKwgprnOCkLZ2cz7J598Yo7bvR21F5iW72xqrfAb06tXrxhriKu5xr6/FUR0lGUFR811apNQsnvyWYFNlyy2kxXEMse195vewwqyueSLb8fucae98uyX3X4tIzw8PMYKSppLrSGtplw9bwVwHcVZQc0Y+zOovfQ0aR7tMWknK1BprtXed3by9LnH56WfOz3+3nvv2cXxjkCqC9DjLtUfARUIUoH/Juqw/s9PQgABBBBAAAEEEEAg0ASyZ88uVmDKLESRWN21t5mm22+/3ZFNV1q95557HPs6H5muIqp5tcedzqemc7B9/fXXjjzOG3Xq1HHsag8yK2Aj2ltLk/bG0mQNczTv9g/tRffqq6/au45FDHQetTFjxjiOW8MgzbbOaaarn7qn77//XiIjI10O67H06dO7HHPe0d5v7tfoea27c3J30R5umrTHoXMdtdebJrvX40MPPWR6gmmPMF1B9f7775cHHnjA9FQzGa/90F5zVqDMcahw4cJm235GjhPXNqzfxUxPPvXVNjgn7WmpPR+1B1zt2rUdp1q2bOnYvt6G8zx5V69eNc9d58bTOfK096GuBGsvLKG9I53nHtS5D2vWrClW4FX27Nlj5t273v30vL14hSfPXT2dvew5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"}}},{"cell_type":"code","source":"!pip install rembg","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:18:36.169243Z","iopub.execute_input":"2024-05-28T03:18:36.169656Z","iopub.status.idle":"2024-05-28T03:18:55.890623Z","shell.execute_reply.started":"2024-05-28T03:18:36.169625Z","shell.execute_reply":"2024-05-28T03:18:55.889195Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nfrom pathlib import Path\nimport numpy as np\nimport pandas as pd\nfrom keras.callbacks import LearningRateScheduler\nimport matplotlib.pyplot as plt\nfrom keras import backend as K \nfrom zipfile import ZipFile\nfrom os import listdir, walk\nfrom os.path import isfile, join\nfrom tensorflow.keras.layers import Dropout\nfrom rembg import remove\nfrom PIL import Image\nfrom collections import Counter\nimport tensorflow as tf\nfrom tensorflow.keras import Input, Model\nfrom tensorflow.keras.applications import ResNet101V2, Xception, InceptionV3, MobileNetV2\nfrom tensorflow.keras.applications.imagenet_utils import preprocess_input\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator, load_img, img_to_array\nfrom tensorflow.keras.layers import GlobalAveragePooling2D, Dense\nfrom tensorflow.keras.optimizers import Adam, SGD\nfrom tensorflow.keras import layers\nfrom sklearn.utils.class_weight import compute_class_weight\nfrom sklearn.ensemble import VotingClassifier\n\nimport os \nK.clear_session()  # Clear any previous models and sessions in Keras\n\n# Set seeds for reproducibility\nos.environ[\"CUDA_VISIBLE_DEVICES\"] = '0'  # Use the first GPU\nnp.random.seed(42)  # Set NumPy random seed for reproducibility\ntf.random.set_seed(42)  # Set TensorFlow random seed for reproducibility","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:18:55.893431Z","iopub.execute_input":"2024-05-28T03:18:55.893906Z","iopub.status.idle":"2024-05-28T03:20:15.640557Z","shell.execute_reply.started":"2024-05-28T03:18:55.893862Z","shell.execute_reply":"2024-05-28T03:20:15.639244Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"IMG_SIZE = 224  # Define the target image size for resizing images\n\n# Create an instance of ImageDataGenerator for data augmentation\ndatagen = ImageDataGenerator(\n        rescale=1/255.,  # Rescale pixel values to be between 0 and 1\n        horizontal_flip=True,  # Randomly flip images horizontally\n        vertical_flip=True,  # Randomly flip images vertically\n        samplewise_center=True,  # Center each sample\n        zoom_range=0.1,  # Randomly zoom in on images\n        width_shift_range=0.1,  # Randomly shift images horizontally\n        height_shift_range=0.1,  # Randomly shift images vertically\n        rotation_range=10,  # Randomly rotate images by up to 10 degrees\n        )","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:15.642736Z","iopub.execute_input":"2024-05-28T03:20:15.643352Z","iopub.status.idle":"2024-05-28T03:20:15.651153Z","shell.execute_reply.started":"2024-05-28T03:20:15.643299Z","shell.execute_reply":"2024-05-28T03:20:15.649896Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Create a data generator for the training set\ntrain_it = datagen.flow_from_directory(\n    '/kaggle/input/rotten-and-fresh-mixed/rotten-and-fresh-mixed/train/train',  # Path to training data\n    target_size=(IMG_SIZE, IMG_SIZE),  # Resize images to target size\n    color_mode='rgb',  # Load images in RGB color mode\n    class_mode=\"categorical\",  # Use categorical labels for multi-class classification\n    shuffle=True,  # Shuffle the data\n    seed=42  # Set seed for reproducibility\n)","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:15.653915Z","iopub.execute_input":"2024-05-28T03:20:15.654327Z","iopub.status.idle":"2024-05-28T03:20:19.944464Z","shell.execute_reply.started":"2024-05-28T03:20:15.654296Z","shell.execute_reply":"2024-05-28T03:20:19.943298Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Get the class counts from the training data\nclass_counts = train_it.classes\n\n# Get unique class labels\nunique_classes = np.unique(class_counts)\n\n# Compute the frequency of each class\nclass_frequency = {class_name: np.sum(class_counts == class_idx) for class_name, class_idx in train_it.class_indices.items()}\n\n# Print the frequency of each class\nprint(\"Class frequency:\")\nfor class_name, count in class_frequency.items():\n    print(f\"{class_name}: {count} items\")","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:19.946091Z","iopub.execute_input":"2024-05-28T03:20:19.946546Z","iopub.status.idle":"2024-05-28T03:20:19.958152Z","shell.execute_reply.started":"2024-05-28T03:20:19.946506Z","shell.execute_reply":"2024-05-28T03:20:19.957097Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"valid_it = datagen.flow_from_directory('/kaggle/input/rotten-and-fresh-mixed/rotten-and-fresh-mixed/test/test', \n                                       target_size=(IMG_SIZE, IMG_SIZE), \n                                       color_mode='rgb', \n                                       class_mode=\"categorical\",\n                                       shuffle=False)","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:19.959892Z","iopub.execute_input":"2024-05-28T03:20:19.960350Z","iopub.status.idle":"2024-05-28T03:20:21.420371Z","shell.execute_reply.started":"2024-05-28T03:20:19.960315Z","shell.execute_reply":"2024-05-28T03:20:21.419117Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Create a data generator for the validation set\nvalid_it = datagen.flow_from_directory(\n    '/kaggle/input/rotten-and-fresh-mixed/rotten-and-fresh-mixed/test/test',  # Path to validation data\n    target_size=(IMG_SIZE, IMG_SIZE),  # Resize images to target size\n    color_mode='rgb',  # Load images in RGB color mode\n    class_mode=\"categorical\",  # Use categorical labels for multi-class classification\n    shuffle=False  # Do not shuffle the validation data\n)","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:21.422454Z","iopub.execute_input":"2024-05-28T03:20:21.422825Z","iopub.status.idle":"2024-05-28T03:20:21.550465Z","shell.execute_reply.started":"2024-05-28T03:20:21.422794Z","shell.execute_reply":"2024-05-28T03:20:21.548906Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Get a batch of images and labels from the train and test datasets\ntrain_images, train_labels = next(train_it)\ntest_images, test_labels = next(valid_it)","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:21.552330Z","iopub.execute_input":"2024-05-28T03:20:21.552928Z","iopub.status.idle":"2024-05-28T03:20:23.015283Z","shell.execute_reply.started":"2024-05-28T03:20:21.552875Z","shell.execute_reply":"2024-05-28T03:20:23.014221Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## To Classify whether the given fruit is Apple, Banana, Orange","metadata":{}},{"cell_type":"markdown","source":"#### MobileNetV2 inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained MobileNetV2 model with weights trained on ImageNet, excluding the top layer\nallfruits_mobileNetV2 = MobileNetV2(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\nallfruits_mobileNetV2.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = allfruits_mobileNetV2(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to the number of classes in the training dataset\noutputs = Dense(len(train_it.class_indices), activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\nallfruits_mobileNetV2 = Model(inputs, outputs)\n\n# Set the number of epochs for training\nepochs = 10\n\n# Define the optimizer with specific learning rate, decay, momentum, and Nesterov acceleration\nopt = tf.keras.optimizers.SGD(learning_rate=0.0001, decay=0.01 / 40, momentum=0.9, nesterov=True)\n\n# Load pre-trained weights for the model\nallfruits_mobileNetV2.load_weights('/kaggle/input/allfruits-mobilenetv2/Allfruits-mobileNetV2.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\nallfruits_mobileNetV2.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:23.016778Z","iopub.execute_input":"2024-05-28T03:20:23.017219Z","iopub.status.idle":"2024-05-28T03:20:26.266419Z","shell.execute_reply.started":"2024-05-28T03:20:23.017177Z","shell.execute_reply":"2024-05-28T03:20:26.265446Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### ResNet101V2 inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained ResNet101V2 model with weights trained on ImageNet, excluding the top layer\nallfruits_ResNet101V2 = ResNet101V2(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\nallfruits_ResNet101V2.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = allfruits_ResNet101V2(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to the number of classes in the training dataset\noutputs = Dense(len(train_it.class_indices), activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\nallfruits_ResNet101V2 = Model(inputs, outputs)\n\n# Set the number of epochs for training\nepochs = 10\n\n# Define the optimizer with specific learning rate, decay, momentum, and Nesterov acceleration\nopt = tf.keras.optimizers.SGD(learning_rate=0.0001, decay=0.01 / 40, momentum=0.9, nesterov=True)\n\n# Load pre-trained weights for the model\nallfruits_ResNet101V2.load_weights('/kaggle/input/allfruits-weights/Allfruits-ResNet101V2.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\nallfruits_ResNet101V2.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:26.271896Z","iopub.execute_input":"2024-05-28T03:20:26.272404Z","iopub.status.idle":"2024-05-28T03:20:39.419617Z","shell.execute_reply.started":"2024-05-28T03:20:26.272372Z","shell.execute_reply":"2024-05-28T03:20:39.418339Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Xception inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained Xception model with weights trained on ImageNet, excluding the top layer\nallfruits_Xception = Xception(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\nallfruits_Xception.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = allfruits_Xception(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to the number of classes in the training dataset\noutputs = Dense(len(train_it.class_indices), activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\nallfruits_Xception = Model(inputs, outputs)\n\n# Set the number of epochs for training\nepochs = 10\n\n# Define the optimizer with specific learning rate, decay, momentum, and Nesterov acceleration\nopt = tf.keras.optimizers.SGD(learning_rate=0.0001, decay=0.01 / 40, momentum=0.9, nesterov=True)\n\n# Load pre-trained weights for the model\nallfruits_Xception.load_weights('/kaggle/input/allfruits-weights/Allfruits-Xception.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\nallfruits_Xception.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:39.421405Z","iopub.execute_input":"2024-05-28T03:20:39.421852Z","iopub.status.idle":"2024-05-28T03:20:46.395334Z","shell.execute_reply.started":"2024-05-28T03:20:39.421818Z","shell.execute_reply":"2024-05-28T03:20:46.394127Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Combine the individual models into a list\nallfruits_models = [allfruits_mobileNetV2, allfruits_ResNet101V2, allfruits_Xception]","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:46.396782Z","iopub.execute_input":"2024-05-28T03:20:46.397242Z","iopub.status.idle":"2024-05-28T03:20:46.402579Z","shell.execute_reply.started":"2024-05-28T03:20:46.397202Z","shell.execute_reply":"2024-05-28T03:20:46.401222Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## To classify whether an Apple is rotten or fresh","metadata":{}},{"cell_type":"markdown","source":"#### MobileNetV2 reference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained MobileNetV2 model with weights trained on ImageNet, excluding the top layer\napple_mobileNetv2 = MobileNetV2(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\napple_mobileNetv2.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = apple_mobileNetv2(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (apple or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\napple_mobileNetv2 = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\napple_mobileNetv2.load_weights('/kaggle/input/apples-mobilenetv2/apple-mobileNetV2.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\napple_mobileNetv2.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:46.404277Z","iopub.execute_input":"2024-05-28T03:20:46.404708Z","iopub.status.idle":"2024-05-28T03:20:48.398134Z","shell.execute_reply.started":"2024-05-28T03:20:46.404648Z","shell.execute_reply":"2024-05-28T03:20:48.397041Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### InceptionV3 inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained InceptionV3 model with weights trained on ImageNet, excluding the top layer\napple_InceptionV3 = InceptionV3(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\napple_InceptionV3.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = apple_InceptionV3(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (apple or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\napple_InceptionV3 = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\napple_InceptionV3.load_weights('/kaggle/input/apples-inceptionv3/apple-InceptionV3.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\napple_InceptionV3.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:48.399421Z","iopub.execute_input":"2024-05-28T03:20:48.399781Z","iopub.status.idle":"2024-05-28T03:20:56.503051Z","shell.execute_reply.started":"2024-05-28T03:20:48.399750Z","shell.execute_reply":"2024-05-28T03:20:56.501780Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### ResNet101V2 inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained ResNet101V2 model with weights trained on ImageNet, excluding the top layer\napple_ResNet101V2 = ResNet101V2(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\napple_ResNet101V2.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = apple_ResNet101V2(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (apple or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\napple_ResNet101V2 = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\napple_ResNet101V2.load_weights('/kaggle/input/apples-resnet101v2/apple-resNet101V2.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\napple_ResNet101V2.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:20:56.505337Z","iopub.execute_input":"2024-05-28T03:20:56.505721Z","iopub.status.idle":"2024-05-28T03:21:01.691689Z","shell.execute_reply.started":"2024-05-28T03:20:56.505691Z","shell.execute_reply":"2024-05-28T03:21:01.690712Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Xception inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained Xception model with weights trained on ImageNet, excluding the top layer\napple_Xception = Xception(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\napple_Xception.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = apple_Xception(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (apple or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\napple_Xception = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\napple_Xception.load_weights('/kaggle/input/apples-xception/apple-xception.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\napple_Xception.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:01.693507Z","iopub.execute_input":"2024-05-28T03:21:01.694043Z","iopub.status.idle":"2024-05-28T03:21:03.894888Z","shell.execute_reply.started":"2024-05-28T03:21:01.694004Z","shell.execute_reply":"2024-05-28T03:21:03.893882Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Combine the individual models into a list\napple_models = [apple_mobileNetv2, apple_InceptionV3, apple_ResNet101V2, apple_Xception]","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:03.896834Z","iopub.execute_input":"2024-05-28T03:21:03.897342Z","iopub.status.idle":"2024-05-28T03:21:03.902792Z","shell.execute_reply.started":"2024-05-28T03:21:03.897282Z","shell.execute_reply":"2024-05-28T03:21:03.901351Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## To classify whether a Banana is rotten or fresh","metadata":{}},{"cell_type":"markdown","source":"#### MobileNetV2 inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained MobileNetV2 model with weights trained on ImageNet, excluding the top layer\nbanana_mobileNetV2 = MobileNetV2(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\nbanana_mobileNetV2.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = banana_mobileNetV2(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (banana or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\nbanana_mobileNetV2 = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\nbanana_mobileNetV2.load_weights('/kaggle/input/banana-mobilenetv2/banana_weights.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\nbanana_mobileNetV2.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:03.904398Z","iopub.execute_input":"2024-05-28T03:21:03.904804Z","iopub.status.idle":"2024-05-28T03:21:05.303079Z","shell.execute_reply.started":"2024-05-28T03:21:03.904774Z","shell.execute_reply":"2024-05-28T03:21:05.301913Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### InceptionV3 inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained InceptionV3 model with weights trained on ImageNet, excluding the top layer\nbanana_InceptionV3 = InceptionV3(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\nbanana_InceptionV3.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = banana_InceptionV3(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (banana or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\nbanana_InceptionV3 = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\nbanana_InceptionV3.load_weights('/kaggle/input/banana-inceptionv3/banana-InceptionV3.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\nbanana_InceptionV3.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:05.305181Z","iopub.execute_input":"2024-05-28T03:21:05.305729Z","iopub.status.idle":"2024-05-28T03:21:09.244541Z","shell.execute_reply.started":"2024-05-28T03:21:05.305646Z","shell.execute_reply":"2024-05-28T03:21:09.243393Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### ResNet101V2 inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained ResNet101V2 model with weights trained on ImageNet, excluding the top layer\nbanana_ResNet101V2 = ResNet101V2(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\nbanana_ResNet101V2.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = banana_ResNet101V2(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (banana or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\nbanana_ResNet101V2 = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\nbanana_ResNet101V2.load_weights('/kaggle/input/banana-resnet101v2/banana-resNet101V2.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\nbanana_ResNet101V2.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:09.245937Z","iopub.execute_input":"2024-05-28T03:21:09.246324Z","iopub.status.idle":"2024-05-28T03:21:14.999654Z","shell.execute_reply.started":"2024-05-28T03:21:09.246291Z","shell.execute_reply":"2024-05-28T03:21:14.998369Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Xception inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained Xception model with weights trained on ImageNet, excluding the top layer\nbanana_Xception = Xception(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\nbanana_Xception.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = banana_Xception(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (banana or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\nbanana_Xception = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\nbanana_Xception.load_weights('/kaggle/input/banana-xception/banana-Xception.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\nbanana_Xception.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:15.001215Z","iopub.execute_input":"2024-05-28T03:21:15.001654Z","iopub.status.idle":"2024-05-28T03:21:17.258801Z","shell.execute_reply.started":"2024-05-28T03:21:15.001605Z","shell.execute_reply":"2024-05-28T03:21:17.257580Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Combine the individual models into a list\nbanana_models = [banana_mobileNetV2, banana_InceptionV3, banana_ResNet101V2, banana_Xception]","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:17.260226Z","iopub.execute_input":"2024-05-28T03:21:17.260541Z","iopub.status.idle":"2024-05-28T03:21:17.266529Z","shell.execute_reply.started":"2024-05-28T03:21:17.260516Z","shell.execute_reply":"2024-05-28T03:21:17.264886Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## To classify whether an Orange is rotten or fresh","metadata":{}},{"cell_type":"markdown","source":"#### MobileNetV2 inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained MobileNetV2 model with weights trained on ImageNet, excluding the top layer\norange_mobileNetV2 = MobileNetV2(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\norange_mobileNetV2.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = orange_mobileNetV2(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (orange or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\norange_mobileNetV2 = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\norange_mobileNetV2.load_weights('/kaggle/input/oranges-mobilenetv2/oranges_weights.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\norange_mobileNetV2.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:17.268216Z","iopub.execute_input":"2024-05-28T03:21:17.268602Z","iopub.status.idle":"2024-05-28T03:21:18.706884Z","shell.execute_reply.started":"2024-05-28T03:21:17.268564Z","shell.execute_reply":"2024-05-28T03:21:18.705770Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### InceptionV3 inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained InceptionV3 model with weights trained on ImageNet, excluding the top layer\norange_InceptionV3 = InceptionV3(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\norange_InceptionV3.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = orange_InceptionV3(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (orange or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\norange_InceptionV3 = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\norange_InceptionV3.load_weights('/kaggle/input/oranges-inceptionv3/oranges-InceptionV3.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\norange_InceptionV3.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:18.708262Z","iopub.execute_input":"2024-05-28T03:21:18.708608Z","iopub.status.idle":"2024-05-28T03:21:22.629157Z","shell.execute_reply.started":"2024-05-28T03:21:18.708580Z","shell.execute_reply":"2024-05-28T03:21:22.628061Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### ResNet101V2 inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained ResNet101V2 model with weights trained on ImageNet, excluding the top layer\norange_ResNet101V2 = ResNet101V2(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\norange_ResNet101V2.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = orange_ResNet101V2(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (orange or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\norange_ResNet101V2 = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\norange_ResNet101V2.load_weights('/kaggle/input/oranges-resnet101v2/oranges-resNet101V2.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\norange_ResNet101V2.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:22.630998Z","iopub.execute_input":"2024-05-28T03:21:22.631543Z","iopub.status.idle":"2024-05-28T03:21:27.949316Z","shell.execute_reply.started":"2024-05-28T03:21:22.631497Z","shell.execute_reply":"2024-05-28T03:21:27.947946Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Xception inference","metadata":{}},{"cell_type":"code","source":"# Load the pre-trained Xception model with weights trained on ImageNet, excluding the top layer\norange_Xception = Xception(\n    weights='imagenet',\n    input_shape=(IMG_SIZE, IMG_SIZE, 3),\n    include_top=False\n)\n\n# Freeze the base model to prevent its weights from being updated during training\norange_Xception.trainable = False\n\n# Define the input shape for the model, assuming IMG_SIZE x IMG_SIZE images with 3 color channels (RGB)\ninputs = Input(shape=(IMG_SIZE, IMG_SIZE, 3))\n\n# Connect the input to the pre-trained base model, with training set to False to freeze the base model's weights\nx = orange_Xception(inputs, training=False)\n\n# Apply Global Average Pooling to reduce spatial dimensions and extract important features\nx = GlobalAveragePooling2D()(x)\n\n# Connect the output of the Global Average Pooling layer to a Dense layer with softmax activation\n# The number of units in the Dense layer is set to 2 since it's a binary classification (orange or not)\noutputs = Dense(2, activation='softmax')(x)\n\n# Create the final model by specifying the inputs and outputs\norange_Xception = Model(inputs, outputs)\n\n# Load pre-trained weights for the model\norange_Xception.load_weights('/kaggle/input/oranges-xception/oranges-Xception.weights.h5')\n\n# Compile the model with categorical crossentropy loss and accuracy metric\norange_Xception.compile(loss='categorical_crossentropy', optimizer=opt, metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:27.950702Z","iopub.execute_input":"2024-05-28T03:21:27.951094Z","iopub.status.idle":"2024-05-28T03:21:30.263715Z","shell.execute_reply.started":"2024-05-28T03:21:27.951062Z","shell.execute_reply":"2024-05-28T03:21:30.262598Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Combine the individual models into a list\norange_models = [orange_mobileNetV2, orange_ResNet101V2, orange_InceptionV3, orange_Xception]","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:30.265011Z","iopub.execute_input":"2024-05-28T03:21:30.265354Z","iopub.status.idle":"2024-05-28T03:21:30.270909Z","shell.execute_reply.started":"2024-05-28T03:21:30.265326Z","shell.execute_reply":"2024-05-28T03:21:30.269527Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Preparing for Ensemble Modeling","metadata":{}},{"cell_type":"code","source":"\ndef ensemble_prediction(image_array, model_list) -> int:\n    \"\"\"\n    Predicts the class label using an ensemble of models.\n\n    Args:\n        image_array (numpy.ndarray): Array representing the image.\n        model_list (list): List of models to use for prediction.\n\n    Returns:\n        int: Predicted class label.\n    \"\"\"\n    prediction_list = []\n    for model in model_list:\n        prediction = np.argmax(model.predict(image_array))\n        prediction_list.append(prediction)\n    vote_count = Counter(prediction_list)\n    highest_voted_class = vote_count.most_common(1)[0][0]\n    return highest_voted_class","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:30.276628Z","iopub.execute_input":"2024-05-28T03:21:30.277041Z","iopub.status.idle":"2024-05-28T03:21:30.284413Z","shell.execute_reply.started":"2024-05-28T03:21:30.276995Z","shell.execute_reply":"2024-05-28T03:21:30.283230Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Prepare for submission\nfiles = [f for f in listdir('/kaggle/input/csc532-fruits-categorical-classification-2024/csc532_2024_validation/validation') if isfile(join('/kaggle/input/csc532-fruits-categorical-classification-2024/csc532_2024_validation/validation', f))]","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:30.286087Z","iopub.execute_input":"2024-05-28T03:21:30.286540Z","iopub.status.idle":"2024-05-28T03:21:30.348636Z","shell.execute_reply.started":"2024-05-28T03:21:30.286501Z","shell.execute_reply":"2024-05-28T03:21:30.347410Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from PIL import Image\nimport matplotlib.pyplot as plt\n\ndef reshape_image(image, new_width=900, new_height=900):\n    # Open the image\n    \n    # Get the dimensions of the original image\n    original_width, original_height = image.size\n    \n    # Calculate the coordinates for cropping\n    left = (original_width - new_width) / 2\n    top = (original_height - new_height) / 2\n    right = (original_width + new_width) / 2\n    bottom = (original_height + new_height) / 2\n    \n    # Crop the image\n    cropped_image = image.crop((left, top, right, bottom))\n    \n    return cropped_image","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:21:30.350177Z","iopub.execute_input":"2024-05-28T03:21:30.350587Z","iopub.status.idle":"2024-05-28T03:21:30.358614Z","shell.execute_reply.started":"2024-05-28T03:21:30.350555Z","shell.execute_reply":"2024-05-28T03:21:30.357352Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"result_dict = {\n    'ID': [],\n    'Code': [],\n}\n\nfor file in files:\n    img_path = f'/kaggle/input/csc532-fruits-categorical-classification-2024/csc532_2024_validation/validation/{file}'\n    \n    # Open image using PIL\n    image = Image.open(img_path)\n    removed_image = remove(image)  # Assuming this function doesn't change image size\n    \n    # Create a white canvas with the same size as the removed image\n    white_canvas = Image.new('RGB', removed_image.size, (255, 255, 255))\n    \n    # Paste the removed image onto the white canvas\n    white_canvas.paste(removed_image, (0, 0), removed_image)\n    \n    # Check image mode and convert to RGB if necessary\n    if white_canvas.mode != 'RGB':\n        white_canvas = white_canvas.convert('RGB')\n    # Resize image\n    white_canvas = white_canvas.resize((224, 224))\n    \n    # Convert image to numpy array\n    image_array = np.array(white_canvas)\n    \n    # Normalize pixel values to range [0, 1]\n    image_array = image_array / 255.0\n    \n    # Reshape array to match model input shape\n    image_array = image_array.reshape(1, 224, 224, 3)\n    \n    # Perform prediction\n    #predict whether apple or banana or orange\n    pred = ensemble_prediction(image_array, allfruits_models) + 1\n    \n    #if pred == 1, then it is apple\n    #if pred == 2, then it is banana\n    #if pred == 3, then it is orange\n    if pred == 1:\n        #predict if the apple is rotten or fresh\n        pred_FR = ensemble_prediction(image_array, apple_models) + 1\n    elif pred == 2:\n        #predict if the banana is rotten or fresh\n        pred_FR = ensemble_prediction(image_array, banana_models) + 1\n    elif pred == 3:\n        #predict if the orange is rotten or fresh\n        pred_FR = ensemble_prediction(image_array, orange_models) + 1\n    \n    #Combining the predictions\n    if pred == 1 and pred_FR == 1: \n        pred_label = 'fresh apple'\n        pred = 1\n    elif pred == 1 and pred_FR == 2:\n        pred = 4\n        pred_label = 'rotten apple'\n    elif pred == 2 and pred_FR == 1:\n        pred = 2\n        pred_label = 'fresh banana'\n    elif pred == 2 and pred_FR == 2:\n        pred = 5\n        pred_label = 'rotten banana'\n    elif pred == 3 and pred_FR == 1:\n        pred = 3\n        pred_label = 'fresh orange'\n    elif pred == 3 and pred_FR == 2:\n        pred = 6\n        pred_label = 'rotten orange'\n    \n    # Append results to result_dict\n    result_dict['ID'].append(file)\n    result_dict['Code'].append(pred)\n\n    # Display image with prediction\n#     plt.imshow(white_canvas)\n#     plt.title(f'Prediction: {pred_label}, PredID: {pred}')\n#     plt.axis('off')\n#     plt.show()","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:23:45.710728Z","iopub.execute_input":"2024-05-28T03:23:45.711122Z","iopub.status.idle":"2024-05-28T03:32:29.011385Z","shell.execute_reply.started":"2024-05-28T03:23:45.711093Z","shell.execute_reply":"2024-05-28T03:32:29.010278Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Create a DataFrame from the result_dict and save it to a CSV file\ndf = pd.DataFrame.from_dict(result_dict)\ndf.to_csv('submission_2Stage_updated.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2024-05-28T03:32:29.013804Z","iopub.execute_input":"2024-05-28T03:32:29.014183Z","iopub.status.idle":"2024-05-28T03:32:29.028022Z","shell.execute_reply.started":"2024-05-28T03:32:29.014153Z","shell.execute_reply":"2024-05-28T03:32:29.026757Z"},"trusted":true},"execution_count":null,"outputs":[]}]}