Skip to content

The project includes a detailed explanation of the CNN and ICP algorithms, along with their implementation in Python using popular deep learning and computer vision libraries such as TensorFlow, Keras, and OpenCV. The dataset used for training and testing the models is the CIFAR-10 dataset, which consists of 60,000 32x32 color images in 10 classes.

Notifications You must be signed in to change notification settings

MohamadAboud/CNN-ICP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CNN-ICP (CNN Image Classification Project)

1 2 3

This is a project that uses deep learning techniques to classify images using a convolutional neural network (CNN). The model is built using the Keras framework in Python and trained on the CIFAR-10 dataset.

Dataset

The dataset used for training and testing the CNN model is the CIFAR-10 dataset. The CIFAR-10 dataset consists of 60,000 32x32 color images in 10 classes, with 6,000 images per class. There are 50,000 training images and 10,000 test images.




Data Visualization

To better understand the performance of our models, we have created several visualizations of the results.

Confusion Matrix

The confusion matrix is a useful tool for visualizing the performance of a classification model. It shows the number of correct and incorrect predictions for each class. We have created a confusion matrix for our image classification model using the Seaborn library. The resulting matrix is shown below:

confusion matrix

As we can see from the matrix, our model performed well for most of the classes, with high accuracy rates for some classes such as "ship" and "automobile". However, there are also some classes where the model performed poorly, such as "cat" and "bird".

Loss and Accuracy Curves

We have also plotted the loss and accuracy curves for our image classification model during training. These curves provide insight into how well the model is learning over time. The loss curve shows how the training loss decreases over time, while the accuracy curve shows how the training accuracy increases over time.

Loss and Accuracy Curves

Loss and Accuracy Curves

As we can see from the curves, the model's training loss decreases steadily over time, indicating that it is learning to classify the images correctly. The training accuracy also increases over time, indicating that the model is becoming more accurate at classifying the images. However, we can see that the validation accuracy plateaus after a certain point, indicating that the model is overfitting to the training data. This is an area for future improvement.

Technical Details

This project uses several libraries and technologies to perform various tasks. The following is a list of the libraries and their uses:

opencv-python==4.7.0.72: This library is used to perform computer vision tasks such as image processing.

numpy==1.24.3: This library is used for numerical computing in Python. It is used for a variety of tasks, including matrix manipulation, data analysis, and statistical modeling.

tensorflow==2.12.0: This library is used for deep learning tasks such as image recognition and natural language processing.

matplotlib==3.7.1: This library is used for data visualization in Python. It is used for generating graphs and charts to visualize the data output from the project.

seaborn==0.12.2: This library is used for statistical data visualization in Python. It is used to enhance the output of the graphs and charts generated by matplotlib.

Flask==2.3.1: This library is a web framework for Python. It is used to create a web application.

uuid==1.30: This library is used to generate unique identifiers for each user of the web application.



Installation and usage

To install and use the CNN-ICP software, you will need to have the following libraries and technologies installed on your system:

Prerequisites

  • Python: This is the programming language in which the CNN-ICP software is written. You can download and install Python from here.
> python --version
Python 3.9.1

Requisites

> pip install -r requirements.txt

To run the software, open a terminal or command prompt and navigate to the directory where you downloaded the software. Then, use the following command to run the program:

>  python run.py

The CNN software will then launch and you can use the user-friendly interface to set up and configure the Image classification system.

Limitations and Future Work

Limitations

  1. Limited Dataset: The CIFAR-10 dataset used in this implementation consists of only 60,000 images. A larger and more diverse dataset could lead to a better-performing model.

  2. Computational Resources: Training a CNN model on a large dataset requires a significant amount of computational resources, which may not be available to everyone.

Future Work

  1. Transfer Learning: Transfer learning is a technique in which a pre-trained model is used as a starting point for a new model. This approach can be useful when training a CNN model on a limited dataset, as it can reduce the required training time and computational resources. Future work could involve exploring transfer learning techniques for image classification.

  2. Multi-class Classification: The CIFAR-10 dataset used in this implementation consists of 10 classes. Future work could involve extending the model to perform multi-class classification on a larger dataset.

  3. Improving Model Performance: The performance of the CNN model could be improved by experimenting with different architectures, hyperparameters tuning, and regularization techniques.

Conclusion

In this project, we have implemented image classification using Convolutional Neural Network (CNN) and evaluated the performance of the model on the CIFAR-10 dataset. We have achieved an accuracy of 83% on the test set, which is a promising result.

We have also discussed the limitations of this implementation, such as the limited dataset, hyperparameters tuning, and computational resources required for training a CNN model on a large dataset. Additionally, we have suggested future work that can be done to improve the model's performance and explore new applications of CNNs, such as real-time object detection.

Overall, this implementation serves as a starting point for those interested in image classification using CNNs and provides a foundation for further research and experimentation in the field of computer vision.

References

We also want to acknowledge the open-source community for their contributions to the development of the libraries and tools used in this project. Without their work, this project would not have been possible.

About

The project includes a detailed explanation of the CNN and ICP algorithms, along with their implementation in Python using popular deep learning and computer vision libraries such as TensorFlow, Keras, and OpenCV. The dataset used for training and testing the models is the CIFAR-10 dataset, which consists of 60,000 32x32 color images in 10 classes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published