Loading repository data…
Loading repository data…
NSANTRA / repository
This project classifies images from the Intel Image Dataset using Convolutional Neural Networks (CNNs). Two models are implemented: CNN from Scratch CNN with Transfer Learning The models are compared based on accuracy, training time, and confusion matrices. The repository includes Jupyter notebooks, trained models, and visualizations for analysis.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
TL;DR:
This project implements Convolutional Neural Networks (CNNs) for classifying natural and man-made scenes from the Intel Image Dataset.
It compares two models — a VGG19 Transfer Learning CNN and a Custom CNN trained from scratch — to evaluate their performance on real-world scene recognition tasks.
This project focuses on developing and evaluating Convolutional Neural Networks (CNNs) for the classification of images from the Intel Image Dataset.
The dataset consists of images categorized into six distinct classes: 🏢 Buildings | 🌲 Forest | 🏔 Glacier | ⛰ Mountain | 🌊 Sea | 🛣 Street
Two different approaches are implemented to assess performance and effectiveness:
The Intel Image Dataset consists of images categorized into six natural and man-made scenery classes. It is a widely used benchmark dataset for scene recognition and classification tasks. The dataset is structured into training, validation, and test sets to facilitate model evaluation.
[!TIP] You can download the dataset from here: Intel Image Classification Dataset
[!IMPORTANT]
Once Anaconda is installed, open the Anaconda Prompt and run the following commands:
git clone https://github.com/NSANTRA/Intel-CNN-Image-Classification
cd Intel-CNN-Image-Classification
conda env create -f "Tensorflow.yml"
conda activate Tensorflow
After activating the environment:
| Layer (Type) | Output Shape | Parameters |
|---|---|---|
| vgg19 (Functional) | (None, 4, 4, 512) | 20,024,384 |
| flatten_2 (Flatten) | (None, 8192) | 0 |
| dense_8 (Dense) | (None, 512) | 4,194,816 |
| batch_normalization_6 (BatchNormalization) | (None, 512) | 2,048 |
| dense_9 (Dense) | (None, 256) | 131,328 |
| batch_normalization_7 (BatchNormalization) | (None, 256) | 1,024 |
| dense_10 (Dense) | (None, 128) | 32,896 |
| batch_normalization_8 (BatchNormalization) | (None, 128) | 512 |
| dense_11 (Dense) | (None, 6) | 774 |
Non-Trainable Parameters: 20,026,176
Trainable Parameters: 4,361,606
Total Parameters: 24,387,782
Optimizer: Adam
Loss Function: Sparse Categorical Crossentropy
| Layer (Type) | Output Shape | Parameters |
|---|---|---|
| conv2d (Conv2D) | (None, 150, 150, 64) | 1,792 |
| batch_normalization (BatchNormalization) | (None, 150, 150, 64) | 256 |
| conv2d_1 (Conv2D) | (None, 150, 150, 64) | 36,928 |
| batch_normalization_1 (BatchNormalization) | (None, 150, 150, 64) | 256 |
| max_pooling2d (MaxPooling2D) | (None, 75, 75, 64) | 0 |
| conv2d_2 (Conv2D) | (None, 75, 75, 128) | 73,856 |
| batch_normalization_2 (BatchNormalization) | (None, 75, 75, 128) | 512 |
| conv2d_3 (Conv2D) | (None, 75, 75, 128) | 147,584 |
| batch_normalization_3 (BatchNormalization) | (None, 75, 75, 128) | 512 |
Non-trainable Parameters: 1,216
Trainable Parameters: 22,701,734
Total Parameters: 22,702,950
Optimizer: Adam
Loss Function: Sparse Categorical Crossentropy
| Precision | Recall | F1-Score | Support | |
|---|---|---|---|---|
| Buildings | 0.92 | 0.89 | 0.91 | 437 |
| Forest | 0.96 | 0.99 | 0.98 | 474 |
| Glacier | 0.83 | 0.80 | 0.82 | 553 |
| Mountain | 0.82 | 0.83 | 0.82 | 525 |
| Sea | 0.93 | 0.91 | 0.92 | 510 |
| Street | 0.89 | 0.93 | 0.91 | 501 |
| accuracy | 0.89 | 3000 | ||
| macro avg | 0.89 | 0.89 | 0.89 | 3000 |
| weighted avg | 0.89 | 0.89 | 0.89 | 3000 |
| Category | Precision | Recall | F1-Score | Observations |
|---|---|---|---|---|
| Buildings | 0.92 | 0.89 | 0.91 | Some Buildings misclassified as Streets. |
| Forest | 0.96 | 0.99 | 0.98 | Best performing class – almost perfect classification. |
| Glacier | 0.83 | 0.80 | 0.82 | Some Glaciers misclassified as Mountains. |
| Mountain | 0.82 | 0.83 | 0.82 | Often confused with Glaciers. |
| Sea | 0.93 | 0.91 | 0.92 | Often confused with Glaciers. |
| Street | 0.89 | 0.93 | 0.91 | Often confused with Glaciers. |