XNet: A CNN for X-Ray Image Segmentation

We develop the implementation and design of a convolutional neural network (CNN) used for medical X-Ray image segmentation which performs well on small datasets. Our training process consists of image augmentation, segmentation, and a series of postprocessing steps for false positive minimisation (a metric commonly optimised in X-Ray image processing). ...learn more

Project status: Under Development

Artificial Intelligence

Intel Technologies
Intel Opt ML/DL Framework

Code Samples [1]

Overview / Usage

Medical X-Ray image enhancement regularly requires the segmentation of images into 3 categories: open beam, soft tissue and bone. Current methods rely heavily on a complex system of classical image processing techniques, however, utilising machine learning offers several advantages over these traditional methods since i) it naturally addresses noise, ii) it generalises well to different body parts, and iii) the segmented regions have continuous boundaries. Due to the expense of capturing X-Ray images, and the time consuming nature of labelling them for training, a machine learning solution which performs well on small datasets is required.

We have developed an original neural network architecture to segment medical X-Ray images into the categories above, whist minimising false positives (a common requirement in the field of X-Ray image processing). Indeed, our current model performs at a 93% accuracy on a training sample as small as 150 images, with a false positive rate of 0.5% after postprocessing.

Work is currently being carried out to tune the hyperparamters of our network and to develop more innovate postprocessing techniques. Additionally, we are working to generalise our network to minimise the F1 score.

This work grew out of a consultancy project with IBEX Innovations Ltd., an X-Ray imaging company who have now included our current solution into their development branch. Our implementation acts as a preprocessing step for the scatter correction algorithms.

Methodology / Approach

Our dataset comprises of 150 X-Ray images, with no scatter correction, across 20 human body part classes. Due to the size of our dataset we first perform augmentation to create ~7000 unique images. Following this, we train an original CNN to segment the images into three categories: open beam, soft tissue and bone.

The network architecture is based on the 'encoder'-'decoder' model, commonly used in segmentation tasks, where the input image is downsampled and then upsampled to produce a segmentation mask of the same size as the input. Our network consists of two feature extraction (encoder) stages, as well as filter copying between layers to preserve information about previously learnt features.

After segmentation we perform a series of postprocesing steps, including pixel dilation, morphological transformation and probability cuts, to minimise false positives.

Technologies Used

Our code is written in Python and the neural network is developed using Keras and TensorFlow. The network has currently been tested and trained on Nvidia GPUs, however, we wish to optimise our code for CPU training and deployment.

Repository

https://github.com/JosephPB/XNet

Collaborators

There are no people to show.

Comments (0)