Project Overview
This project documents the end-to-end process of building, training, and evaluating a Convolutional Neural Network (CNN) to classify images of cats and dogs. The project starts with a custom CNN model trained from scratch and includes extensive testing on multiple datasets to evaluate its real-world performance.
The primary goal is to establish a strong baseline model and then use its performance metrics to justify and guide future improvements, such as implementing Transfer Learning.
Key Features
CNN from Scratch: A custom CNN model built with TensorFlow/Keras.
Robust Data Pipeline: Handles large, messy datasets by cleaning and filtering invalid images on the fly.
Checkpointing: Implements a dual-save strategy to save both the best-performing model and the last completed epoch.
Comprehensive Evaluation: The model is evaluated against three different data sources:
A validation set from the original training data.
A large, unseen dataset from Kaggle.
Live, random images fetched from the Unsplash API.
Detailed Reporting: Generates and saves detailed performance reports, including accuracy, precision, recall, and a confusion matrix.