This project is a tool to build CheXNet-like models, written in Keras.
This project is a tool to build CheXNet-like models, written in Keras.
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.
multiply
parameter in config.ini
or design your own class weighting to see if you can get better performance.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.output_dir
in config.ini
otherwise previous training results might be overwritten. For more options check the parameter description in config.ini
.Note that currently this project can only be executed in Linux and macOS. You might run into some issues in Windows.
./data
folder and untar all tar files.pip3 install -r requirements.txt
.batch_size
and training parameters here. Make sure config.ini is configured before you run training or testingpython 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.python test.py
to evaluate your model on the test set.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.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.
If you use >= CUDA 9, make sure you set tensorflow_gpu >= 1.5.
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.
Bruce Chou ([email protected])
MIT