Ki-67 index is a widely used proliferation index to predict the aggresiveness of cancer. Computing this value is time consuming as pathologists have to manually count the tumour nuclei. We automate this process by using deep learning to segment immmonupositive (red) and immunonegative (blue) cells.
- Ten non-overlapping images corresponding to 8 patients of resolution 1920 x 1440 pixels were cropped from the whole slide images.
- A total of 80 images of 1920 x 1440 pixels were available. Each image was divided into 60 patches of size 512 x 512 pixels. Horizontal shift: 128 pixels, Vertical shift: 232 pixels
- Hence, the dataset consisted of a total of 4800 images for training and testing out of which 1200 images were used for training, 200 images for validation and 3400 images for testing
- The ground truth images were prepared by manual annotations with the guidance of an expert pathologist. Ki-67 positive nuclei were marked red while negative tumor nuclei were marked blue and the background were marked white.
- All the data were collected from the Department of Pathology at Kasturba Medical College (KMC), Mangalore
Fig. 1: Standard UNet Model
We implemented the Mobile-Unet model which replaces the convolutional layers of the standard U-Net model (Fig.1) with separable convolutions. This reduces the number of parameters as well as the required computations. The model performed a three class segmentation with a total parameters of 2.67M trainable parameters. The model was trained for a total of 50 epochs with categorical cross entropy as loss and Adam optimizer with initial learning rate set to 0.0001. The model was trained on a Tesla P100-PCIE-16GB GPU. The overall and class-averaged dice and intersection over union (IoU) scores were evaluated on the trained model.
Table 1: Evaluation Metrics
| Dataset | Loss | Overall Dice | Overall IoU | Class-averaged dice | Class averaged IoU | ||||
|---|---|---|---|---|---|---|---|---|---|
| With background | Without background | With background | Without background |
With background | Without background | With background | Without background |
||
| Train | 0.1747 | 0.9741 | 0.9270 | 0.9510 | 0.8702 | 0.8267 | 0.7552 | 0.7906 | 0.7067 |
| Val | 0.1806 | 0.9717 | 0.9218 | 0.9461 | 0.8614 | 0.8163 | 0.7333 | 0.7777 | 0.6835 |
| Test | 0.1881 | 0.9733 | 0.9203 | 0.9494 | 0.8618 | 0.8266 | 0.7481 | 0.7896 | 0.7001 |
Fig. 2: Segmented Result
- Python version 3.0
- Keras >=2.0
- Tensorflow >=2.0
- Numpy >=1.19

