kvasir-seg / README.md
miwojc's picture
Update README.md
7d4846a
---
tags:
- fastai
---
# Model card
## Model description
Fastai `unet` created with `unet_learner` using `resnet34`
## Intended uses & limitations
This is only used for demonstration of fine tuning capabilities with fastai. It may be useful for further research. This model should **not** be used for gastrointestinal polyp diagnosis.
## Training and evaluation data
The model was trained on [Kvasir SEG dataset](https://datasets.simula.no/kvasir-seg/). Kvasir SEG is an open-access dataset of gastrointestinal polyp images and corresponding segmentation masks, manually annotated and verified by an experienced gastroenterologist.
20% of the data set were used as validation set and 80% as training set.
### Model training details:
#### Data pre-processing
Masks were converted to 1 bit images: 0 for background and 1 for mask using
```python
Path('/notebooks/Kvasir-SEG/masks1b-binary').mkdir(parents=True, exist_ok=True)
for img_path in tqdm(get_image_files(path/'masks')):
img = Image.open(img_path)
thresh = 127
fn = lambda x : 1 if x > thresh else 0
img1b = img.convert('L').point(fn)
img1b.save(path/'masks1b-binary'/f'{img_path.stem}.png')
```
#### Data loaders
`SegmentationDataloaders` were used to create fastai data loaders
```python
def label_func(fn): return path/'masks1b-binary'/f'{fn.stem}.png'
dls = SegmentationDataLoaders.from_label_func(
path, bs=24, fnames = get_image_files(path/'images'),
label_func = label_func,
codes = list(range(2)),
item_tfms=Resize(320),
batch_tfms=aug_transforms(size=224, flip_vert=True)
)
```
An sample of training images:
![show_batch](show_batch.png)
#### Learner
Create learner with Dice and JaccardCoeff metrics
```python
learn = unet_learner(dls, resnet34, metrics=[Dice, JaccardCoeff]).to_fp16()
```
#### Learning rate
Learning rate finder
![lr_find](lr_find.png)
#### Fine tuning
Fine tuning for 12 epochs
`learn.fine_tune(12, 1e-4)`
```
epoch train_loss valid_loss dice jaccard_coeff time
0 0.582160 0.433768 0.593044 0.421508 00:38
epoch train_loss valid_loss dice jaccard_coeff time
0 0.307588 0.261374 0.712569 0.553481 00:38
1 0.261775 0.232007 0.714458 0.555764 00:38
2 0.246054 0.227708 0.781048 0.640754 00:38
3 0.224612 0.185920 0.796701 0.662097 00:39
4 0.208768 0.179064 0.821945 0.697714 00:39
5 0.192531 0.171336 0.816464 0.689851 00:39
6 0.177166 0.167357 0.820771 0.696023 00:39
7 0.168222 0.158182 0.838388 0.721745 00:39
8 0.155157 0.161950 0.829525 0.708709 00:39
9 0.148792 0.164533 0.828383 0.707043 00:38
10 0.143541 0.158669 0.833519 0.714559 00:39
11 0.140083 0.159437 0.832745 0.713422 00:38
```
![loss_graph](loss_graph.png)
#### Results
Visualization of results
Target/Prediction
![show_results](show_results.png)
Top losses
![top_losses](top_losses.png)
#### Libraries used:
`huggingface_hub.__version__`
`'0.8.1'`
`fastai.__version__`
`'2.6.3'`