500 Species Bird Classification

by Daniel Glownia

Data

  • Size: 224 x 224 x 3 ​
  • 500 different bird species with at least 130 train images per species​
  • 80% male birds (more colorful) and only 20% female (sex is not labeled)​
  • One bird per image​
  • Bird takes up 50%+ of pixels​
  • Some images include noise like watermarks
Dataset Image count​
Train 85,085
Test 2,500
Validation 2,500

CNN Implementation

  • MobileNetV3 as base model(transfer learning)
  • Trained on 100 epochs
  • Optimizer: Adam
  • Loss: Categorical Cross Entropy
epochs = 100
batch_size = 256

inputs = pretrained_model.input
x = processing_layers(inputs)

x = Dense(256, activation='relu')(pretrained_model.output)
x = Dropout(0.2)(x)
x = Dense(128, activation='relu')(x)
x = Dropout(0.2)(x)
x = Dense(64, activation='relu')(x)
x = Dropout(0.2)(x)


outputs = Dense(500, activation='softmax')(x)

model = Model(inputs=inputs, outputs=outputs)

Results

The following confusion matrix represents the lowest performing classes. Classes with perfect scores were removed.

plot

Dataset Accuracy
Train 84.87%
Test 92.20%
Validation 93.36%

plot

Downloads last month
11
Inference Providers NEW
This model is not currently available via any of the supported Inference Providers.
The model cannot be deployed to the HF Inference API: The HF Inference API does not support image-classification models for tf-keras library.