This project is to do some segmentation works on the 3D-IRCADb 01 data set.
This data set contains the original CT scans of 20 patients. Meanwhile, corresponding mask for each organ is also provided.
Above two images are the 3D reconstruction results of the ground truth.
Above image shows the prediction result on the training set(Patient 1).
Prediction result is given by the DenseUnet.
- When training the DenseUnet model. I crop the slices by batches. For each batch, I choose the slice which has the largest area of liver to draw a box, and apply the size of this box to other slices in the batch, making sure the cropped image contains all the information (liver here) needed to feed into the model. When calculate the inference, I just feed the original slice into the model and there are many noises in the output.
3. Model prediction on training set with a very simple post processing -- crop.(Patient 1) -- DenseUnet
Above image shows the prediction result of one slice on the training set(Patient 1) in the ITK-SNAP.
Prediction result is given by the DenseUnet with post processing.
- The method to do post processing on the prediction result is very simple, just crop the output slice by a box which has a coordinate of a approximately location of the liver in the original slice. So the result is not good as well.
NOTE: Implemention of Mask-rcnn is based on https://github.com/matterport/Mask_RCNN. Modified code to train on the 3DIRCADb data set are in the folder named mrcnn_seg
Above image shows the prediction result of one slice in the ITK-SNAP.
Above image shows the prediction result on the training set(Patient 1).
Prediction result is given by the Mask-rcnn.
- Comparing to the result given by DenseUet, the segmentation effect is much better.The dice coefficient is around 0.97.
Above image shows the prediction result on the test set(Patient 20).
Prediction result is given by the Mask-rcnn.
- The segmentation effect on test set is good as well.
Do not consider those slices without liver but predicted to have liver(noises),the dice coefficient is around 0.94.
eg: Connected domain algorithm
Above image is the output of MRCNN model.
Above image is the output after morphology processing. "skimage.morphology.closing()"
Above image is the post processing result. After "skimage.morphology.closing() ", only reserve the largest connected domain.
In this case, just reserve the maximum connected domain can get the best result.