Skip to content
Snippets Groups Projects
Commit c68b73d0 authored by Daniel CARRON's avatar Daniel CARRON :b: Committed by André Anjos
Browse files

[segmentation] Add chasedb1 database

parent 32440226
No related branches found
No related tags found
1 merge request!46Create common library
Showing
with 324 additions and 0 deletions
src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_08R.png

1.87 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_09L.png

1.87 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_09R.png

1.9 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_10L.png

1.88 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_10R.png

1.87 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_11L.png

1.91 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_11R.png

1.9 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_12L.png

1.91 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_12R.png

1.89 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_13L.png

1.88 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_13R.png

1.87 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_14L.png

1.91 KiB

src/mednet/libs/segmentation/config/data/chasedb1/masks/Image_14R.png

1.85 KiB

{
"train": [
[
"Image_11L.jpg",
"Image_11L_2ndHO.png",
"Image_11L.png"
],
[
"Image_11R.jpg",
"Image_11R_2ndHO.png",
"Image_11R.png"
],
[
"Image_12L.jpg",
"Image_12L_2ndHO.png",
"Image_12L.png"
],
[
"Image_12R.jpg",
"Image_12R_2ndHO.png",
"Image_12R.png"
],
[
"Image_13L.jpg",
"Image_13L_2ndHO.png",
"Image_13L.png"
],
[
"Image_13R.jpg",
"Image_13R_2ndHO.png",
"Image_13R.png"
],
[
"Image_14L.jpg",
"Image_14L_2ndHO.png",
"Image_14L.png"
],
[
"Image_14R.jpg",
"Image_14R_2ndHO.png",
"Image_14R.png"
]
],
"test": [
[
"Image_01L.jpg",
"Image_01L_2ndHO.png",
"Image_01L.png"
],
[
"Image_01R.jpg",
"Image_01R_2ndHO.png",
"Image_01R.png"
],
[
"Image_02L.jpg",
"Image_02L_2ndHO.png",
"Image_02L.png"
],
[
"Image_02R.jpg",
"Image_02R_2ndHO.png",
"Image_02R.png"
],
[
"Image_03L.jpg",
"Image_03L_2ndHO.png",
"Image_03L.png"
],
[
"Image_03R.jpg",
"Image_03R_2ndHO.png",
"Image_03R.png"
],
[
"Image_04L.jpg",
"Image_04L_2ndHO.png",
"Image_04L.png"
],
[
"Image_04R.jpg",
"Image_04R_2ndHO.png",
"Image_04R.png"
],
[
"Image_05L.jpg",
"Image_05L_2ndHO.png",
"Image_05L.png"
],
[
"Image_05R.jpg",
"Image_05R_2ndHO.png",
"Image_05R.png"
],
[
"Image_06L.jpg",
"Image_06L_2ndHO.png",
"Image_06L.png"
],
[
"Image_06R.jpg",
"Image_06R_2ndHO.png",
"Image_06R.png"
],
[
"Image_07L.jpg",
"Image_07L_2ndHO.png",
"Image_07L.png"
],
[
"Image_07R.jpg",
"Image_07R_2ndHO.png",
"Image_07R.png"
],
[
"Image_08L.jpg",
"Image_08L_2ndHO.png",
"Image_08L.png"
],
[
"Image_08R.jpg",
"Image_08R_2ndHO.png",
"Image_08R.png"
],
[
"Image_09L.jpg",
"Image_09L_2ndHO.png",
"Image_09L.png"
],
[
"Image_09R.jpg",
"Image_09R_2ndHO.png",
"Image_09R.png"
],
[
"Image_10L.jpg",
"Image_10L_2ndHO.png",
"Image_10L.png"
],
[
"Image_10R.jpg",
"Image_10R_2ndHO.png",
"Image_10R.png"
]
]
}
# SPDX-FileCopyrightText: Copyright © 2024 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""CHASE-DB1 dataset for Vessel Segmentation."""
from mednet.libs.segmentation.config.data.chasedb1.datamodule import DataModule
datamodule = DataModule("second-annotator.json")
# SPDX-FileCopyrightText: Copyright © 2024 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""Tests for chasedb1 dataset."""
import importlib
import pytest
from click.testing import CliRunner
def id_function(val):
if isinstance(val, dict):
return str(val)
return repr(val)
@pytest.mark.parametrize(
"split,lengths",
[
("first-annotator", dict(train=8, test=20)),
("second-annotator", dict(train=8, test=20)),
],
ids=id_function, # just changes how pytest prints it
)
def test_protocol_consistency(
database_checkers,
split: str,
lengths: dict[str, int],
):
from mednet.libs.segmentation.config.data.chasedb1.datamodule import (
make_split,
)
database_checkers.check_split(
make_split(f"{split}.json"),
lengths=lengths,
)
@pytest.mark.skip_if_rc_var_not_set("datadir.chasedb1")
def test_database_check():
from mednet.libs.segmentation.scripts.database import check
runner = CliRunner()
result = runner.invoke(check, ["chasedb1"])
assert (
result.exit_code == 0
), f"Exit code {result.exit_code} != 0 -- Output:\n{result.output}"
@pytest.mark.skip_if_rc_var_not_set("datadir.chasedb1")
@pytest.mark.parametrize(
"dataset",
[
"train",
"test",
],
)
@pytest.mark.parametrize(
"name",
[
"first_annotator",
"second_annotator",
],
)
def test_loading(database_checkers, name: str, dataset: str):
datamodule = importlib.import_module(
f".{name}",
"mednet.libs.segmentation.config.data.chasedb1",
).datamodule
datamodule.model_transforms = [] # should be done before setup()
datamodule.setup("predict") # sets up all datasets
loader = datamodule.predict_dataloader()[dataset]
limit = 3 # limit load checking
for batch in loader:
if limit == 0:
break
database_checkers.check_loaded_batch(
batch,
batch_size=1,
color_planes=3,
expected_num_targets=1,
)
limit -= 1
@pytest.mark.skip_if_rc_var_not_set("datadir.chasedb1")
def test_raw_transforms_image_quality(database_checkers, datadir):
reference_histogram_file = str(
datadir
/ "histograms/raw_data/histograms_chasedb1_first_annotator.json",
)
datamodule = importlib.import_module(
".first_annotator",
"mednet.libs.segmentation.config.data.chasedb1",
).datamodule
datamodule.model_transforms = []
datamodule.setup("predict")
database_checkers.check_image_quality(datamodule, reference_histogram_file)
@pytest.mark.skip_if_rc_var_not_set("datadir.chasedb1")
@pytest.mark.parametrize(
"model_name",
["lwnet"],
)
def test_model_transforms_image_quality(database_checkers, datadir, model_name):
reference_histogram_file = str(
datadir
/ f"histograms/models/histograms_{model_name}_chasedb1_first_annotator.json",
)
datamodule = importlib.import_module(
".first_annotator",
"mednet.libs.segmentation.config.data.chasedb1",
).datamodule
model = importlib.import_module(
f".{model_name}",
"mednet.libs.segmentation.config.models",
).model
datamodule.model_transforms = model.model_transforms
datamodule.setup("predict")
database_checkers.check_image_quality(
datamodule,
reference_histogram_file,
compare_type="statistical",
pearson_coeff_threshold=0.005,
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment