--- a +++ b/WCEBleedGen.ipynb @@ -0,0 +1,319 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "authorship_tag": "ABX9TyOK/tfXqNBMTnLqQ6UmtznZ", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "<a href=\"https://colab.research.google.com/github/2004ARYAN/WCEBleedGen-AI/blob/main/WCEBleedGen.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "6-HEO5ZZjkJl" + }, + "outputs": [], + "source": [ + "import zipfile" + ] + }, + { + "cell_type": "code", + "source": [ + "# Path to the training dataset zip file\n", + "train_dataset_path = '/content/sample_data/WCEBleedGen.zip'\n", + "\n", + "# Path to the testing dataset zip file\n", + "test_dataset_path = '/content/sample_data/Auto-WCEBleedGen Challenge Test Dataset.zip'\n", + "\n", + "# Extract the training dataset\n", + "with zipfile.ZipFile(train_dataset_path, 'r') as zip_ref:\n", + " zip_ref.extractall('/content/sample_data')\n", + "\n", + "# Extract the testing dataset\n", + "with zipfile.ZipFile(test_dataset_path, 'r') as zip_ref:\n", + " zip_ref.extractall('/content/sample_data')" + ], + "metadata": { + "id": "m5dvbzIJjnFn" + }, + "execution_count": 2, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "# Organize the data directories\n", + "train_data_dir = '/content/sample_data/train_dataset'\n", + "test_data_dir = '/content/sample_data/test_dataset'\n" + ], + "metadata": { + "id": "zqm-6MH9jnH7" + }, + "execution_count": 3, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "import os\n", + "\n", + "# Set the path to the extracted training dataset directory\n", + "extracted_data_dir = '/content/sample_data/WCEBleedGen'\n", + "\n", + "# Define the path to your training and testing data within the extracted directory\n", + "train_data_dir = os.path.join(extracted_data_dir, '/content/sample_data/WCEBleedGen')\n", + "test_data_dir = os.path.join(extracted_data_dir, '/content/sample_data/Auto-WCEBleedGen Challenge Test Dataset')\n" + ], + "metadata": { + "id": "LQ7GMenHjnM4" + }, + "execution_count": 6, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "import tensorflow as tf\n", + "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n", + "\n", + "\n", + "\n", + "# Create data generators for training and testing\n", + "train_datagen = ImageDataGenerator(rescale=1./255, validation_split=0.2)\n", + "train_generator = train_datagen.flow_from_directory(\n", + " train_data_dir,\n", + " target_size=(150, 150),\n", + " batch_size=32,\n", + " class_mode='binary',\n", + " subset='training' # For training data\n", + ")\n", + "\n", + "validation_generator = train_datagen.flow_from_directory(\n", + " train_data_dir,\n", + " target_size=(150, 150),\n", + " batch_size=32,\n", + " class_mode='binary',\n", + " subset='validation' # For validation data\n", + ")\n", + "\n", + "\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "l6dPYUqAjnPO", + "outputId": "8465f9e5-ce7f-4ed2-a637-9052bf110b2e" + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Found 4190 images belonging to 2 classes.\n", + "Found 1046 images belonging to 2 classes.\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import tensorflow as tf\n", + "from tensorflow.keras.models import Sequential\n", + "from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense\n", + "from tensorflow.keras.optimizers import Adam\n", + "\n", + "# Define and compile your model\n", + "model = Sequential([\n", + " Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),\n", + " MaxPooling2D(2, 2),\n", + " Conv2D(64, (3, 3), activation='relu'),\n", + " MaxPooling2D(2, 2),\n", + " Flatten(),\n", + " Dense(128, activation='relu'),\n", + " Dense(1, activation='sigmoid')\n", + "])\n", + "\n", + "model.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.001), metrics=['accuracy'])\n", + "\n", + "# Train your model\n", + "history = model.fit(\n", + " train_generator,\n", + " steps_per_epoch=len(train_generator),\n", + " epochs=10,\n", + " validation_data=validation_generator,\n", + " validation_steps=len(validation_generator)\n", + ")\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "b5DsWJjI1cao", + "outputId": "955fc3b8-8216-4220-f95d-5c5da2fbed28" + }, + "execution_count": 9, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "WARNING:absl:`lr` is deprecated in Keras optimizer, please use `learning_rate` or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.Adam.\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/10\n", + "131/131 [==============================] - 181s 1s/step - loss: 0.3123 - accuracy: 0.8814 - val_loss: 0.0428 - val_accuracy: 0.9895\n", + "Epoch 2/10\n", + "131/131 [==============================] - 160s 1s/step - loss: 0.0743 - accuracy: 0.9737 - val_loss: 0.0466 - val_accuracy: 0.9847\n", + "Epoch 3/10\n", + "131/131 [==============================] - 171s 1s/step - loss: 0.0316 - accuracy: 0.9883 - val_loss: 0.1191 - val_accuracy: 0.9713\n", + "Epoch 4/10\n", + "131/131 [==============================] - 158s 1s/step - loss: 0.0283 - accuracy: 0.9928 - val_loss: 0.1047 - val_accuracy: 0.9818\n", + "Epoch 5/10\n", + "131/131 [==============================] - 159s 1s/step - loss: 0.0123 - accuracy: 0.9976 - val_loss: 0.0974 - val_accuracy: 0.9837\n", + "Epoch 6/10\n", + "131/131 [==============================] - 161s 1s/step - loss: 0.0023 - accuracy: 0.9995 - val_loss: 0.1689 - val_accuracy: 0.9771\n", + "Epoch 7/10\n", + "131/131 [==============================] - 161s 1s/step - loss: 0.0018 - accuracy: 0.9998 - val_loss: 0.0591 - val_accuracy: 0.9895\n", + "Epoch 8/10\n", + "131/131 [==============================] - 159s 1s/step - loss: 0.0171 - accuracy: 0.9947 - val_loss: 0.0362 - val_accuracy: 0.9914\n", + "Epoch 9/10\n", + "131/131 [==============================] - 158s 1s/step - loss: 0.0045 - accuracy: 0.9986 - val_loss: 0.0446 - val_accuracy: 0.9914\n", + "Epoch 10/10\n", + "131/131 [==============================] - 169s 1s/step - loss: 0.0492 - accuracy: 0.9862 - val_loss: 0.0800 - val_accuracy: 0.9895\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "test_data_dir = '/content/sample_data/Auto-WCEBleedGen Challenge Test Dataset' # Update with the path to your testing dataset\n", + "test_datagen = ImageDataGenerator(rescale=1./255)\n", + "test_generator = test_datagen.flow_from_directory(\n", + " test_data_dir,\n", + " target_size=(150, 150),\n", + " batch_size=32,\n", + " class_mode='binary'\n", + ")\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-olZuu6R1cgV", + "outputId": "2fc323c3-5dbc-4864-d751-ed28aab4c1ce" + }, + "execution_count": 11, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Found 564 images belonging to 2 classes.\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "predictions = model.predict(test_generator)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RkVc-2jA1ci8", + "outputId": "071bbfdd-1ea3-4b5f-d590-f30b62b40f85" + }, + "execution_count": 12, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "18/18 [==============================] - 7s 385ms/step\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "import smtplib\n", + "\n", + "\n", + "# Step 1: Evaluation Metrics\n", + "# Calculate and gather evaluation metrics here\n", + "# Replace these with your actual evaluation metrics\n", + "accuracy = 0.95\n", + "recall = 0.90\n", + "f1_score = 0.92\n", + "iou = 0.80\n", + "ap = 0.85\n", + "map_score = 0.82\n", + "\n", + "# Step 2: Excel Sheet Preparation\n", + "# Create a pandas DataFrame with your testing results\n", + "# Replace these with your actual image IDs and predicted labels\n", + "image_ids = ['Image1', 'Image2', 'Image3', 'Image4', 'Image5']\n", + "predicted_labels = [1, 0, 1, 0, 1]\n", + "\n", + "results = {\n", + " 'Image name': image_ids,\n", + " 'Predicted class label': predicted_labels,\n", + " 'Predicted coordinates of bounding box': ['x1, y1, x2, y2'] * len(image_ids),\n", + " 'Confidence level': [0.95] * len(image_ids)\n", + "}\n", + "\n", + "df = pd.DataFrame(results)\n", + "\n", + "# Save the DataFrame to an Excel file\n", + "df.to_excel('auto_wce_bleedgen_results.xlsx', index=False)" + ], + "metadata": { + "id": "28eA4pqs1clB" + }, + "execution_count": 30, + "outputs": [] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "z3Pgl-AX1cpK" + }, + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file