As shown in the figure, the tumor (pink thick line) is close to the stomach (red thick line). High doses of radiation are directed at the tumor while avoiding the stomach. The dose levels are represented by a range of outlines, with higher doses shown in red and lower doses in green.
| Date | Title | Code | Link |
|---|---|---|---|
| 2015 | U-Net: Convolutional Networks for Biomedical Image Segmentation | Code Code | Link |
| 2015 | SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation | Link | |
| 2016 | V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation | Code | Link |
| 2018 | UNet++: A Nested U-Net Architecture for Medical Image Segmentation | Code | Link |
| 2019 | CE-Net: Context Encoder Network for 2D Medical Image Segmentation | Code | Link |
| 2022 | Medical Image Segmentation using LeViT-UNet++: A Case Study on GI Tract Data | None | Link |
| 2023 | 3D TransUNet: Advancing Medical Image Segmentation through Vision Transformers | Code | Link |
| 2023 | DA-TransUNet: Integrating Spatial and Channel Dual Attention with Transformer U-Net for Medical Image Segmentation | Code | Link |
| 2023 | GI Tract Image Segmentation with U-Net and Mask R-CNN | None | Link |
Figure shows network artitecture in the original paper. It consists of the repeated application of two 3x3 convolutions (unpadded convolutions), each followed by a rectified linear unit (RELU) and a 2x2 max pooling operation with stride 2 for downsampling. At each downsampling step we double the number of feature channels. Every step in the expansive path consists of an upsampling of the feature map followed by a 2x2 convolution (“up-convolution”) that halves the number of feature channels, a concatenation with the correspondingly cropped feature map from the contracting path, and two 3x3 convolutions, each followed by a ReLU. The cropping is necessary due to the loss of border pixels in every convolution. At the final layer a 1x1 convolution is used to map each 64-component feature vector to the desired number of classes. In total the network has 23 convolutional layers.
The evaluation metric is used the Dice.
This section delves into the practical aspects of the project's implementation.
Under this subsection, you'll find information about the dataset used for the medical image segmentation task. It includes details about the dataset source, size, composition, preprocessing, and loading applied to it. Dataset
The most common size across all images in the dataset is 266 × 266, and the rest are of sizes 310×360, 276×276, and 234×234 in frequency descending order. For this project, all images reshape to size 256 × 256. In order to feed the image, and mask into training models, process them as tensors.
Files
- train.csv - IDs and masks for all training objects.
- train.txt - case IDs for training objects.
- validation.txt - case IDs for validation objects.
- test.txt - case IDs for test objects.
- train - a folder of case/day folders, each containing slice images for a particular case on a given day.
Columns of train CSV file
- id - unique identifier for object
- class - the predicted class for the object
- segmentation - RLE-encoded pixels for the identified object
Split the dataset to training, validation, and testing sets based on provided text files. (data folder)
- train_data.csv: IDs, class, segmentation, and image_paths for training objects.
- validation_data.csv: IDs, class, segmentation, and image_paths for validation objects.
- test_data.csv: IDs, class, segmentation, and image_paths for test objects.
Visualization of a batch of images and target masks in the training set
In this project, the SegmentationModelsPytorch library is used along with Pytorch to ceate a UNet model.
create segmentation model with pretrained encoder
in_channels = 3, # model input channels
classes = 3, # model output channels
model = smp.Unet(encoder_name='efficientnet-b1',
in_channels=3,
encoder_weights='imagenet',
classes=3,
activation=None)
- Finding Hyper-parameters
- Step 1: Calculate the loss for an untrained model using a few batches.
- Step 2: Train the model for a limited number of epochs, experimenting with various learning rates.
- Main Loop
- Define model and optimizer and Set learning rate and weight decay.
- train the model for epoches.
- Plot learning curves
- model's segmentation result




