Skip to content

Hadavand-s-Minions/rsna-cervical-spine

Repository files navigation

rsna-cervical-spine

Data Science tutorial project by the Hadavand's Minions group to tackle the Kaggle project on cervical spine fracture detection.

About The Project

Our research question is “How can we quickly detect and locate vertebral fractures in the cervical spine from CT scans to aid in the prevention of neurologic deterioration and paralysis after trauma?”. The data we are working with consists of CT scans cervical spines of patients and the goal is identify whether a given vertebrae and therefore overall patient has a fracture. We got the data from .Kaggle RSNA competition here. The data consits of:

Two video walkthroughs of the image slices is shown below. The first contains plain image slices and the second contains image slices with their masks overlaird


We run exploratory analysis on the dataset and find a big class imbalance (there are way more cases with fractures than without) which helps us determine what models to choose and the metrics to evaluate. An indepth EDA can be found in the cervical_spine_eda notebook within the notebook directory

We use 4 classifaction models as in this notebook within the notebooks directory. The Basic RNN model has the best performance. It has the lowest loss, highest AUC and F1 scores and predicts the test set accurately. The loss and accrucacy are shown below

Tutorial Assignments

The following are the locations for the assignments done within this tutorial by the Hadavand's Minions group:

  1. Setting up your Project
  2. Exploratory_Analysis
  3. Final_Writeup

Project setup

The project was setup using cookiecutter as described in the project setup.

Tools used in this project

Project structure

.
├── config                      
│   ├── main.yaml                   # Main configuration file
│   ├── model                       # Configurations for training model
│   │   ├── model1.yaml             # First variation of parameters to train model
│   │   └── model2.yaml             # Second variation of parameters to train model
│   └── process                     # Configurations for processing data
│       ├── process1.yaml           # First variation of parameters to process data
│       └── process2.yaml           # Second variation of parameters to process data
├── data            
│   ├── final                       # data after training the model
│   ├── processed                   # data after processing
│   ├── raw                         # raw data
│   └── raw.dvc                     # DVC file of data/raw
├── docs                            # documentation for your project
├── dvc.yaml                        # DVC pipeline
├── .flake8                         # configuration for flake8 - a Python formatter tool
├── .gitignore                      # ignore files that cannot commit to Git
├── Makefile                        # store useful commands to set up the environment
├── models                          # store models
├── notebooks                       # store notebooks
├── .pre-commit-config.yaml         # configurations for pre-commit
├── pyproject.toml                  # dependencies for poetry
├── README.md                       # describe your project
├── src                             # store source code
│   ├── __init__.py                 # make src a Python module 
│   ├── process.py                  # process data before training model
│   └── train_model.py              # train model
└── tests                           # store tests
    ├── __init__.py                 # make tests a Python module 
    ├── test_process.py             # test functions for process.py
    └── test_train_model.py         # test functions for train_model.py