A deep learning project focused on building and evaluating a Convolutional Neural Network (CNN) for multi-class image classification using the Intel Image Classification dataset.
Click the button below to open the notebook directly in Google Colab.
This project implements a Convolutional Neural Network (CNN) to classify natural scene images into multiple categories.
The project covers the complete deep learning pipeline including:
-
Dataset exploration
-
Image preprocessing
-
Data augmentation
-
CNN architecture design
-
Model training and validation
-
Model evaluation using performance metrics
-
Prediction visualization
The goal is to build a robust CNN model capable of accurately classifying real-world natural scenes.
The main objectives of this project are:
πΉ Understand the structure of an image dataset
πΉ Perform image preprocessing and augmentation
πΉ Build a CNN architecture from scratch
πΉ Train the model using TensorFlow/Keras
πΉ Evaluate model performance using multiple metrics
πΉ Visualize model predictions on unseen test images
The dataset used is the Intel Image Classification Dataset available on Kaggle.
Dataset Link:
https://www.kaggle.com/datasets/puneet6060/intel-image-classification
| Feature | Description |
|---|---|
| Total Images | 25,000+ |
| Image Type | Natural Scene Images |
| Number of Classes | 6 |
| Image Size | Resized to 150 Γ 150 |
The dataset contains 6 scene categories:
-
π’ Buildings
-
π² Forest
-
π§ Glacier
-
β° Mountain
-
π Sea
-
π£ Street
Before training the CNN model, several preprocessing steps were applied:
All images were resized to 150 Γ 150 pixels to maintain uniform input size.
Pixel values were scaled to the range 0β1 by dividing by 255.
The dataset was split into:
-
Training Set
-
Validation Set
-
Test Set
To improve model generalization and prevent overfitting, the following augmentation techniques were used:
-
Image Rotation
-
Horizontal Flip
-
Zoom
-
Width & Height Shift
-
Shear Transform
A Convolutional Neural Network (CNN) was built from scratch using TensorFlow / Keras.
β Convolutional Layers
β ReLU Activation Function
β Max Pooling Layers
β Dropout Layers for Regularization
β Fully Connected (Dense) Layers
β Softmax Output Layer for Multi-Class Classification
The CNN model was trained using the training dataset and validated using the validation dataset.
-
Early Stopping
-
Model Checkpointing
-
Batch Training
-
Validation Monitoring
Training progress was monitored using:
-
Training Accuracy vs Validation Accuracy
-
Training Loss vs Validation Loss
After training, the model was evaluated using the test dataset.
-
Accuracy
-
Precision
-
Recall
-
F1 Score
-
Confusion Matrix
To better understand the modelβs performance:
-
10 random test images were selected
-
Each image was displayed with:
-
Actual Label
-
Predicted Label
-
| Tool | Purpose |
|---|---|
| Python | Programming language |
| TensorFlow / Keras | Deep learning framework |
| NumPy | Numerical computation |
| Matplotlib | Visualization |
| Seaborn | Confusion matrix visualization |
| OpenCV / PIL | Image processing |
| Kaggle API | Dataset download |
| Google Colab | Development environment |
intel-image-classification-cnn/
β
βββ DL_Assignment_1_CNN.ipynb
βββ README.md
βββ DL Assignment 1 - CNN.pdf
Click the Google Colab button above.
pip install tensorflow matplotlib numpy seaborn kaggleUpload your kaggle.json file and run:
!mkdir -p ~/.kaggle
!cp kaggle.json ~/.kaggle/
!chmod 600 ~/.kaggle/kaggle.jsonDownload dataset:
!kaggle datasets download -d puneet6060/intel-image-classificationUnzip dataset:
!unzip intel-image-classification.zipRun all cells sequentially to:
-
Load dataset
-
Preprocess images
-
Train CNN model
-
Evaluate performance
-
Visualize predictions
β Understanding CNN architecture
β Image preprocessing techniques
β Data augmentation for deep learning
β Training deep learning models
β Evaluating classification performance
β Visualizing CNN predictions
This repository was created as part of a Deep Learning assignment to demonstrate the design, training, and evaluation of a Convolutional Neural Network (CNN) for real-world image classification.
-
Implement Transfer Learning (VGG16, ResNet, MobileNet) for better accuracy
-
Perform hyperparameter tuning to optimize model performance
-
Use larger and more diverse image datasets
-
Apply advanced augmentation techniques
-
Deploy the model as a web application (Streamlit / Flask)
-
Add real-time image prediction feature
-
Implement Transfer Learning (VGG16, ResNet, MobileNet) for better accuracy
-
Perform hyperparameter tuning to optimize model performance
-
Use larger and more diverse image datasets
-
Apply advanced augmentation techniques
-
Deploy the model as a web application (Streamlit / Flask)
-
Add real-time image prediction feature
Name: Laya Mary Joy
Organization: Entri Elevate
Date: March 15, 2026
Thanks to Entri Elevate for guidance and support.