A full-stack deep learning project that classifies chest X-ray images into various cancer categories using TensorFlow/Keras. It integrates data versioning (DVC), model tracking, Docker, and a Flask-based web interface, with CI/CD workflows through GitHub Actions and remote storage on DAGsHub.
- π§ Deep Learning CNN model using transfer learning (EfficientNet)
- π¦ Modular codebase with pipeline stages (
data_ingestion
,base_model
,training
,evaluation
) - π Real-time prediction web app using Flask
- π Model evaluation and confidence scores
- π Reproducible experiments with DVC
- π³ Dockerized for seamless deployment
- βοΈ Remote artifact storage using DAGsHub
- βοΈ GitHub Actions for CI/CD automation
Click to expand/collapse
βββ arpitkadam-chest-cancer-classification-app/
βββ README.md
βββ __init__.py
βββ app.py
βββ demo.py
βββ Dockerfile
βββ dvc.lock
βββ dvc.yaml
βββ LICENSE
βββ main.py
βββ params.yaml
βββ requirements.txt
βββ setup.py
βββ template.py
βββ .dockerignore
βββ .dvcignore
βββ artifacts/
β βββ base_model/
β β βββ base_model.h5
β β βββ updated_base_model.h5
β βββ data_ingestion/
β β βββ data.zip
β βββ model_evaluation/
β β βββ evaluation_scores.json
β βββ model_trainer/
β βββ trained_model.h5
β βββ model_history/
β βββ model_history.json
βββ config/
β βββ config.yaml
β βββ model.yaml
β βββ schema.yaml
βββ Research/
β βββ research.ipynb
βββ src/
β βββ __init__.py
β βββ components/
β β βββ __init__.py
β β βββ base_model.py
β β βββ data_ingestion.py
β β βββ model_evaluation.py
β β βββ model_trainer.py
β βββ configuration/
β β βββ __init__.py
β β βββ configuration.py
β βββ constants/
β β βββ __init__.py
β βββ entity/
β β βββ __init__.py
β β βββ artifact_entity.py
β β βββ config_entity.py
β βββ exception/
β β βββ __init__.py
β βββ logger/
β β βββ __init__.py
β βββ pipeline/
β β βββ __init__.py
β β βββ prediction_pipeline.py
β β βββ training_pipeline.py
β βββ utils/
β βββ __init__.py
βββ templates/
β βββ home.html
β βββ importance.html
β βββ prediction.html
βββ .dvc/
β βββ config
βββ .github/
βββ workflows/
βββ main.yaml
git clone https://github.com/ArpitKadam/Chest-Cancer-Classification-App.git
cd Chest-Cancer-Classification-App
conda create -n tensor python=3.10 -y
conda activate tensor
pip install -r requirements.txt
python main.py
python app.py
Navigate to: http://127.0.0.1:8080
docker build -t arpitkadam/chest-cancer-app:latest .
docker run -p 8080:8080 arpitkadam/chest-cancer-app:latest
dvc remote add -d storage https://dagshub.com/ArpitKadam/Chest-Cancer-Classification-App.dvc
dvc repro
dvc push
GitHub Actions configured in .github/workflows/main.yaml
for:
- Linting and testing
- Pushing data to DAGsHub
- Auto-retraining (optional)
Evaluation scores are saved in: artifacts/model_evaluation/evaluation_scores.json
Click to expand/collapse
{
"loss": 0.5021160244941711,
"accuracy": 0.7684127163887024
}
data_ingestion/data.zip
base_model/base_model.h5
model_trainer/trained_model.h5
model_history/model_history.json
model_evaluation/evaluation_scores.json
This project is licensed under the Apache-2.0 license.
Arpit Sachin Kadam
Contributions are welcome! Please open issues or submit a PR.
- Deep Learning: TensorFlow/Keras, VGG19
- Web Framework: Flask
- Data Versioning: DVC
- MLOps: DAGsHub
- Containerization: Docker
- CI/CD: GitHub Actions
- Frontend: HTML, CSS, JavaScript
python main.py
- Upload chest X-ray image
- Get classification results with confidence scores
- View model interpretation and importance maps
- Ensure you have sufficient GPU memory for training
- The model is trained on chest X-ray images - ensure input images are in the correct format
- For production deployment, consider implementing additional security measures
- Regular model retraining is recommended as new data becomes available
- Add more cancer types for classification
- Implement model explainability features (LIME/SHAP)
- Add user authentication and session management
- Integrate with medical imaging standards (DICOM)
- Add batch processing capabilities