A deep learning project for automatic classification of government ID cards using transfer learning with VGG16. The model is fine-tuned on a custom dataset sourced from Roboflow and achieves an impressive 97% accuracy.
- Uses VGG16 pretrained on ImageNet.
- Transfer Learning: all layers frozen except the last 4 for fine-tuning.
- Data Augmentation: applied for better generalization.
- High Accuracy: 97% on test data.
- Training, validation, and testing pipelines included (
train.py,testing.py). - Generates accuracy/loss plots and a confusion matrix for analysis.
Government-ID-Classifier/
βββ train.py # Training script (VGG16 + fine-tuning)
βββ testing.py # Testing script for inference and evaluation
βββ requirements.txt # Project dependencies
βββ models/ # Directory to save trained weights
βββ training_data/ # Training dataset
βββ validation_data/ # Validation dataset
βββ testing_data/ # Testing dataset
Run the training script:
python train.py- Uses VGG16 backbone with last 4 layers trainable.
- Trains for 35 epochs with data augmentation (rotation, shift, flip, etc.).
- Saves best weights as
.kerasfiles insidemodels/. - Outputs plots:
model_accuracy.pngmodel_loss.pngconfusion_matrix.png
Run the testing script:
python testing.py- Loads the best saved weights (e.g.,
weights-improvement-02-0.98.keras). - Evaluates accuracy on unseen test images.
- Prints classification report and lists misclassified images.
- Accuracy: ~97%
- Precision/Recall/F1: High across all classes
- Confusion Matrix: Saved as
confusion_matrix.png - Example evaluation snippet:
β Overall Test Accuracy: 97.00%
This project is open-source. You may use, modify, and distribute it for research and educational purposes.
π Future Improvements:
- Add support for additional ID document types.
- Deploy as a web app using Flask/FastAPI.
- Experiment with newer architectures (e.g., EfficientNet, ViT).