This project is a comprehensive bird species identification system that utilizes the CUB-200-2011 dataset for both classification and detection tasks. The system implements multiple EfficientNet model variants including EfficientNet-B4, EfficientNet-B5, EfficientNetV2-B3, EfficientNetV2-S, and EfficientNetV2-M to provide accurate bird species recognition.
The project features two distinct model types:
- Classification Model: Identifies bird species from images
- Detection Model: Locates and classifies birds within images
The complete machine learning pipeline including data preprocessing, model building, model training, model testing, prediction, and metrics evaluation are documented in Jupyter notebooks. These notebooks were developed and executed on Kaggle using the CUB-200-2011 dataset along with additional given datasets.
Note: The provided notebooks serve as a preview of the development process. When using these notebooks in different environments, modifications and setup adjustments will be required to accommodate different data paths, and system configurations.
- Python 3.8+
- Node.js 16+
- npm or yarn
- Download Training and Testing Dataset: https://drive.google.com/drive/folders/1t-S8xIUp9pRJTXv3Atj40ncM2ACJapKk?usp=sharing
- Download the trained models from Google Drive: https://drive.google.com/file/d/1iT_SAwgP4pIFgSLrY9-4rEdkFEhWpPea/view?usp=sharing
- Go to
/backend/, place the Model, Training, and Testing folders in the/backend/directory - Install Python dependencies:
cd backend pip install -r requirements.txt
- Navigate to the frontend directory:
cd frontend/model-UI/ - Install npm dependencies:
npm install
cd backend/src
uvicorn server:app --reloadcd frontend/model-UI/
npm run devThis project utilizes the CUB-200-2011 dataset (Caltech-UCSD Birds-200-2011), which contains:
- 11,788 images across 200 bird species
- Detailed annotations including bounding boxes, part locations, and attribute labels
- High-quality images suitable for both classification and detection tasks
The system implements multiple EfficientNet variants:
- EfficientNet-B4: First Model training, unstable training process
- EfficientNet-B5: Higher accuracy with increased computational cost
- EfficientNetV2-B3: Improved training efficiency, but unstable learning process
- EfficientNetV2-S: Small variant optimized for speed
- EfficientNetV2-M: Medium variant balancing accuracy and efficiency, highest accuracy so far