Over a million developers have joined DZone.

Detecting Diseases in Chest X-Rays Using Deep Learning

DZone 's Guide to

Detecting Diseases in Chest X-Rays Using Deep Learning

Sometimes, AI can be better than even the most well-versed doctors at diagnoses. Check out one team's research on using deep learning to diagnose diseases!

· AI Zone ·
Free Resource

Chest x-rays are used to diagnose multiple diseases. From pneumonia to lung nodules, multiple diseases can be diagnosed with just this one modality using deep learning. The Chest X-Ray 14 dataset was recently released by NIH and has over 90,000 x-ray plates tagged with 14 diseases or tagged as being "normal." This has started a race to make computer-aided diagnosis (CAD) systems that can learn how to discern thoracic diseases from x-rays. If you happen to be following the development following the release of the dataset, you've noticed research coming out from various research labs on this dataset.

CheXNet, which claims to be better than doctors in diagnosing pneumonia, was released by StanfordML and is probably the most famous. There are multiple other papers that are using deep learning-based methods to diagnose chest x-rays, such as the following:

We at ParallelDots have also worked on this dataset in the past and came up with methods to get competitive performance on diagnosing chest x-rays using deep learning. Our paper can be checked out here. We achieve better results than Chest X-Ray 14 baselines and competitive results compared to state-of-the-art work like the papers referenced above. In fact, our algorithm is better than the ChesXNet paper in diagnosing at least one disease.

Our method doesn’t involve transfer learning like most other methods but rather trains a deep dense neural network from scratch. Our work provides quantitative results to answer research questions for the dataset:

  • What loss functions can we use to train DCNN from scratch on the Chest X-Ray 14 dataset that demonstrates high-class imbalance and label co-occurrence?

  • How can we use cascading to model label dependency and improve the accuracy of the deep learning model?

We suggest techniques that would help train a neural network well on such a dataset where disease labels are neither independent nor exclusive. We experiment with two types of loss functions:

  1. Using binary relevance, which effectively means training neural networks independently for +/- classifiers for each disease label rather than training it as 1-out-of-N-outcomes.

  2. Pairwise error (PWE), which tries to maximize margins between +/- classes in each disease. On top of this, we use cascading in a way that can exploit the dependencies between disease labels to maximize output.

The cascading method involves sending the output of one stage of machine learning algorithm into the next stage of the algorithm, thus making an algorithm learn from mistakes it made in the training set. The following diagram explains our boosting algorithm in detail:


Cascade architecture used in the model

The ROC scores on various diseases of different methods are listed in the following table. Please note that BR/PWE/C-BR and C-PWE are four methods we tried out (binary relevance, pairwise error, and cascaded versions of both, respectively). 


Comparison of the area under the curve (AUC) of the receiver operating characteristic (ROC) curve for classification of diseases in the Chest X-Ray 14 dataset

In this study, the present work provides optimistic results for the automatic diagnosis of
thoracic diseases using chest X-rays. This is just a stepping stone for further upcoming research that will help doctors quicken the detection process for multiple diseases, hence providing them additional valuable time to concentrate more on curing the diseases.

deep learning ,machine learning ,ai ,neuural network ,algorithm ,training data ,image classification ,healthcare ,binary relevance ,pairwise error

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}