Coder Social home page Coder Social logo

lukaszbinden / pediatric-bone-age-prediction Goto Github PK

View Code? Open in Web Editor NEW
43.0 5.0 13.0 8.68 MB

Based on kaggle RSNA Pediatric Bone Age Prediction from X-Rays

Python 98.13% Shell 1.87%
machine-learning x-rays deep-learning age-prediction transfer-learning

pediatric-bone-age-prediction's Introduction

Pediatric Bone Age Prediction

Based on kaggle RSNA Bone Age Prediction from X-Rays

Results of transfer learning experiments

Pretrain the model on the much larger chest NIH dataset (112k images) and finetune on the small bone age dataset (14k). The model is based on the RSNA challenge winner model by 16Bit. See folder 'experiments' for source code, e.g. experiment_age_range.py.

Experiment Chest training size Epochs MAE Date
16Bit challenge winner n/a 500 4.265 2017
Radiologist performance n/a n/a 7.32 2017
Imagenet n/a 50 76.8 181020
Imagenet n/a 250 8.8 181029
No TL, random init. n/a 250 10.8 181030
Chest 0-20yrs., 30 layers finetuning 1560 50 33.9 181022
Chest 0-20yrs., 100 layers finetuning 1560 50 37 181022
Chest 0-20yrs., 100 layers finetuning 1560 250 41.8 181024
Chest 0-20yrs., 50 layers finetuning 1560 250 34.5 181025
Chest 0-20yrs., 20 layers finetuning 1560 250 36.7 181026
Chest 0-20yrs., 30 layers finetuning 1560 250 35.8 181027
Chest 0-100yrs, 3 layers finetuning 89696 250 34.8 181103
Chest 0-100yrs, all layers finetuning 89696 250 pending* pending*

The training/validation split is 80/20. The idea to restrict the chest X-rays patient's age to the same range as the hand X-rays patients turned out unsuccessful as the dataset size decreased significantly to 1560 images and transfer learning results were disappointing.
* After 14 days of training, this experiment crashed on 12/11/18 due to a "bus error" on the cluster. Due to lack of checkpoints, need to restart it from scratch.

Experiments

  • Try transfer learning with other medical datasets (MURA stanford, etc. )
  • Try different architectures of the used net, e.g. use DenseNet instead of InceptionV3
  • Build model on top of model to predict accuracy of age model
  • Try combining different architectures/approaches with meta learning (e.g. voting)
  • Chest XRays validate against disease and patient age respectively
  • Experiment with different number of freezed layers
  • Do more extensive hyperparameter tuning
  • Regression vs. Classification on months range between 0 and 12 * 100
  • Pretrain Kevin's baseline with NIH chest dataset (transfer learning)

Links

pediatric-bone-age-prediction's People

Contributors

barleo01 avatar joelniklaus avatar warmlayu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

pediatric-bone-age-prediction's Issues

update readme

which file is which experiment on the table etc.? when I looking that it's hard to me. please update readme. thanks :)

Question

please,, help me, how could I combine 3 numerical vectors with image features vectors using a generator, what is wrong in this code

def combined_generators(image_generator, x_data, y_data, z_data, batch_size):
x_gen = cycle(batch(x_data, batch_size))
y_gen = cycle(batch(y_data, batch_size))
z_gen = cycle(batch(z_data, batch_size))

while True:
    nextImage = next(image_generator)
    
    nextx = next(x_gen)
    assert len(nextImage[0]) == len(nextx)

    nexty = next(y_gen)
    assert len(nextImage[0]) == len(nexty)

    nextz = next(z_gen)
    assert len(nextImage[0]) == len(nextz)
    
    yield [nextImage[0], nextx, nexty, nextz], nextImage[1]

def batch(iterable, n=1):
l = len(iterable)
for ndx in range(0, l, n):
yield iterable[ndx:min(ndx + n, l)]

train_gen_wrapper = combined_generators(train_batches, df['x'], df['y'], df['z'], 16)
val_gen_wrapper = combined_generators(valid_batches, dft['x'], dft['y'], dft['z'], 16)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.