Coder Social home page Coder Social logo

chexnet-keras's Introduction

ChexNet-Keras

This project is a tool to build CheXNet-like models, written in Keras.

CAM example image

What is CheXNet?

ChexNet is a deep learning algorithm that can detect and localize 14 kinds of diseases from chest X-ray images. As described in the paper, a 121-layer densely connected convolutional neural network is trained on ChestX-ray14 dataset, which contains 112,120 frontal view X-ray images from 30,805 unique patients. The result is so good that it surpasses the performance of practicing radiologists. If you are new to this project, Luke Oakden-Rayner's post is highly recommended.

In this project, you can

  1. Train/test a baseline model by following the quickstart. You can get a model with performance close to the paper.
  2. Run class activation mapping to see the localization of your model.
  3. Modify multiply parameter in config.ini or design your own class weighting to see if you can get better performance.
  4. Modify weights.py to customize your weights in loss function. If you find something useful, feel free to make that an option and fire a PR.
  5. Every time you do a new experiment, make sure you modify output_dir in config.ini otherwise previous training results might be overwritten. For more options check the parameter description in config.ini.

Quickstart

Note that currently this project can only be executed in Linux and macOS. You might run into some issues in Windows.

  1. Download all tar files, Data_Entry_2017.csv and BBox_List_2017.csv of ChestX-ray14 dataset from NIH dropbox. Put them under ./data folder and untar all tar files.
  2. Create & source a new virtualenv. Python >= 3.6 is required.
  3. Install dependencies by running pip3 install -r requirements.txt.
  4. Copy sample_config.ini to config.ini, you may customize batch_size and training parameters here. Make sure config.ini is configured before you run training or testing
  5. Run python train.py to train a new model. If you want to run the training using multiple GPUs, just prepend CUDA_VISIBLE_DEVICES=0,1,... to restrict the GPU devices. nvidia-smi command will be helpful if you don't know which device are available.
  6. Run python test.py to evaluate your model on the test set.
  7. Run python cam.py to generate images with class activation mapping overlay and the ground bbox. The ground truth comes from the BBox_List_2017.csv file so make sure you have that file in ./data folder. CAM images will be placed under the output folder.

Trained model weights

Many people are asking for a trained model, there you go. I use this model to create the CAM example images. The testing mean auroc is about 82.9. Again, before you ask about comparing results with the original paper, think about how to do that in a meaningful way.

Important notice for CUDA 9 users

If you use >= CUDA 9, make sure you set tensorflow_gpu >= 1.5.

TODO

  1. Frontend

Acknowledgement

I would like to thank Pranav Rajpurkar (Stanford ML group) and Xinyu Weng (北京大學) for sharing their experiences on this task. Also I would like to thank Felix Yu for providing DenseNet-Keras source code.

Author

Bruce Chou ([email protected])

License

MIT

chexnet-keras's People

Contributors

brucechou1983 avatar

Watchers

 avatar  avatar

Forkers

mailab2023

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.