thangngoc89 / Mandible-segmentation-in-OPG-images

Mandible segmentation in OPG images with Unet, Unet++ and FPN models

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mandible segmentation in OPG images

Mandible segmentation in OPG (Orthopantomography) images is the process of identifying and delineating the mandible bone from the surrounding tissues and structures in an OPG image. In this project, neural network-based models are used for mandibular segmentation. The models reviewed include Unet, Unet++ and FPN.

Dataset

In this study, an OPG dataset that includes panoramic dental X-rays of 116 patients has been used. These X-rays were obtained from the Noor Medical Imaging Center, Qom, Iran, and encompass a broad spectrum of dental conditions, ranging from healthy cases to partial and complete edentulism. Notably, the mandibles of all cases have been meticulously segmented by two certified dentists. This dataset can be accessed through the link below.

https://data.mendeley.com/datasets/hxt48yk462/2

Out of 116 dataset samples, 80 cases were used for training, 20 cases were used for validation and 16 cases were used for testing.

The structure of the dataset is as follows.

├───test
│   ├───Images
│   ├───outputs
│   ├───Segmentation1
│   └───Segmentation2
└───train
    ├───Images
    ├───Segmentation1
    └───Segmentation2

Preprocessing

The images are scaled down and the pixel values are normalized to the range 0 to 1.

Train

$ python train.py -h

optional arguments:
  -h, --help         show this help message and exit
  --model            The architecture used, which can be unet, unet++ and FPN
  --epochs           Number of epochs
  --batch_size       Batch size
  --learning_rate    Learning rate
  --path_to_images   path to images
  --path_to_masks    path to masks
  --scale            Downscaling factor of the images

The following command can be used to train the network with the unet model.

python train.py

The diagram of loss and dice score for the unet model is as follows.

unet loss

unet dice score

The following command can be used to train the network with the Unet++ model.

python train.py --model unet++

The diagram of loss and dice score for the Unet++ model is as follows.

unet++ loss

unet++ dice score

The following command can be used to train the network with the FPN model.

python train.py --model FPN

The diagram of loss and dice score for the FPN model is as follows.

SegFormer loss

SegFormer dice score

Test

$ python test.py -h

optional arguments:
  -h, --help         show this help message and exit
  --model            The architecture used, which can be unet, unet++ and FPN
  --checkpoint       path to model
  --path_to_images   path to images
  --path_to_masks    path to masks
  --output_dir       path to output directory
  --scale            Downscaling factor of the images

The value of dice score of Unet, Unet++ and FPN models for test data was 97.64%, 97.31% and 97.15% respectively. According to the results, model Unet has the best performance among the 3 models.

The following figures show examples of the output of the models.

unet outputs

unet++ outputs

FPN outputs

Appendix

The structure of unet network is as follows.

unet

The structure of Unet++ network is as follows.

Unet++

The structure of FPN network is as follows.

SegFormer

License

MIT

About

Mandible segmentation in OPG images with Unet, Unet++ and FPN models

License:MIT License


Languages

Language:Python 100.0%