Object-oriented digit image classification pipeline using TensorFlow/Keras.
This project includes data loading, preprocessing, model training, evaluation, prediction, and unit tests in a modular OOP structure.
- OOP pipeline for loading and preprocessing grayscale digit images.
- CNN model builder with configurable activation, optimizer, and loss.
- Training and evaluation modules, including confusion matrix generation.
- Unit tests for core components.
- Notebook workspace for experiments.
.
|-- main.py
|-- requirements.txt
|-- README.md
|-- notebooks/
| |-- Conv.Model.AI.ipynb
| |-- Conv.Model.Finalipynb.ipynb
| `-- test.ipynb
|-- extras/
| |-- Images.csv
| `-- OOP Dataloader.py
`-- image_processing/
|-- __init__.py
|-- data_object_final.py
|-- dataloader.py
|-- nn.py
|-- train.py
|-- evaluator.py
|-- test.py
|-- test_unit.py
|-- digit_classifier.py
|-- best_model.pt
`-- Numbers_images_dataset/
- Create and activate a Python virtual environment.
- Install dependencies:
pip install -r requirements.txtRun the pipeline with default project-local paths:
python main.pyUseful options:
python main.py --skip-tests
python main.py --epochs 10
python main.py --dataset-zip image_processing/Numbers_images_dataset.zip
python main.py --dataset-dir image_processing/Numbers_images_dataset
python main.py --image-path image_processing/Numbers_images_dataset/3/0_0_7.jpegpython -m unittest image_processing.test_unit- The dataset and model artifacts can be large and are excluded through
.gitignore. - Notebooks are intended for experimentation; production logic is in
image_processing/.