GI-SegNet

GI-SegNet

A model for automatic segmentation of stomach and intestines from MRI scans of cancer patients.

The problem GI-SegNet solves

It can automatically segment stomach and intestines from MRI scans, which can help doctors to avoid those areas while radiotherapy. It allows the dose of radiation to be increased while ensuring that the healthy soft tissue is not harmed.

This makes treatments faster and more effective by reducing the time taken by experts to review the scans and providing a prediction. Also, it can reduce the treatment time as the each dosage is much more effective.

We still think that a human expert should review the predictions before treatment is started as there is alsways scope for error.

Our video demo is added in the links section as the video demo section was not accepting it. A copy of the Kaggle notebook is uploaded in the Google Drive Folder.

And interestingly, our name was suggested by ChatGPT ; ) :
GI-SegNet: This name is similar to U-Net, a popular architecture for image segmentation, and incorporates "GI" to represent the gastrointestinal tract.

Challenges we ran into

We ran into a lot of challenges. Firstly, we tried following along with the provided video and code, but ran into a lot of errors, mainly stemming from older versions of Python and/or Tensorflow being used by the author, while we were trying to run it on up to date versions on Kaggle. Still, we adapted our code to reflect that (by changing the flatten attribute syntax in Tensorflow, etc.). In one place, because of a misplaced comma and parenthesis, the code was not running because of a supposed NoneType error and an 'cannot iterate over tensor' error. We went through other projects using the same code and concluded it was a typing error, and accordingly corrected it.

After all that, we finally came to the fitting model portion, but to our surprise it was taking 3.5 hours for 1 epoch to run, and we had scheduled 10 epochs. After consulting mentors and taking guidance, we concluded we needed to apply a GPU for the image processing and started over in Google Colab as well as Kaggle. Still, when all the output came it was vastly erroneous, and we decided we needed to look at more projects. We found another Kaggle submission and took help from that to come to our final project. We have not included our previous attempt in the final submission to avoid confusion.

The main obstacle we faced when processing the model fitting was the actual image processing and the time it was taking. We took advantage of Kaggle's GPU P100 for the final image processing and the screenshots of the masks and predictions we have included.

At this stage of our learning, it was difficult to find out the theoretical aspects which should be involved in making such a model, i.e. image processing using UNet, usage of coefficients like the train and validation loss, dice coefficient, dice loss, etc. Thus we had to refer to pre-existing projects to find out where to even start! Despite all that, we learnt a lot in the making of this project, and thank Team Normid and Celestial Biscuits IGDTUW.

Discussion