From 29d6a0e272ee6a7de7ee8246b9299f8206e72543 Mon Sep 17 00:00:00 2001 From: Ziga Luksic Date: Mon, 4 Sep 2023 16:49:33 +0200 Subject: [PATCH 1/2] move superpixel task --- .../mask_timeless/RANDOM_UINT8.npy | Bin 0 -> 131428 bytes extra-tasks/superpixel/requirements.txt | 2 + extra-tasks/superpixel/superpixel.py | 157 ++++++++++++++++++ extra-tasks/superpixel/test_superpixel.py | 79 +++++++++ 4 files changed, 238 insertions(+) create mode 100644 extra-tasks/_test_eopatch/mask_timeless/RANDOM_UINT8.npy create mode 100644 extra-tasks/superpixel/requirements.txt create mode 100644 extra-tasks/superpixel/superpixel.py create mode 100644 extra-tasks/superpixel/test_superpixel.py diff --git a/extra-tasks/_test_eopatch/mask_timeless/RANDOM_UINT8.npy b/extra-tasks/_test_eopatch/mask_timeless/RANDOM_UINT8.npy new file mode 100644 index 0000000000000000000000000000000000000000..3997d085f92a0e6c34912247340843ba755a447f GIT binary patch literal 131428 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

h<%8PY4cKMRupeU`j^Nu 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 EWd#2+zyJUM literal 0 HcmV?d00001 diff --git a/extra-tasks/superpixel/requirements.txt b/extra-tasks/superpixel/requirements.txt new file mode 100644 index 0000000..d36daec --- /dev/null +++ b/extra-tasks/superpixel/requirements.txt @@ -0,0 +1,2 @@ +eo-learn[FEATURES]==1.5.0 # last tested version +scikit-image>=0.15 diff --git a/extra-tasks/superpixel/superpixel.py b/extra-tasks/superpixel/superpixel.py new file mode 100644 index 0000000..1bcd494 --- /dev/null +++ b/extra-tasks/superpixel/superpixel.py @@ -0,0 +1,157 @@ +""" +Module for super-pixel segmentation + +Copyright (c) 2017- Sinergise and contributors +For the full list of contributors, see https://github.com/sentinel-hub/eo-learn/blob/master/CREDITS.md. + +This source code is licensed under the MIT license, see the LICENSE file in the root directory of this source tree. +""" +from __future__ import annotations + +import logging +import warnings +from typing import Any, Callable + +import numpy as np +import skimage.segmentation + +from eolearn.core import EOPatch, EOTask, FeatureType +from eolearn.core.exceptions import EODeprecationWarning, EORuntimeWarning +from eolearn.core.types import Feature +from sentinelhub.exceptions import deprecated_class + +LOGGER = logging.getLogger(__name__) + + +class SuperpixelSegmentationTask(EOTask): + """Super-pixel segmentation task + + Given a raster feature it will segment data into super-pixels. Representation of super-pixels will be returned as + a mask timeless feature where all pixels with the same value belong to one super-pixel + + Examples of `segmentation_object` values: + - `skimage.segmentation.felzenszwalb` (the defalt) + - `skimage.segmentation.slic` + """ + + def __init__( + self, + feature: Feature, + superpixel_feature: Feature, + *, + segmentation_object: Callable = skimage.segmentation.felzenszwalb, + **segmentation_params: Any, + ): + """ + :param feature: Raster feature which will be used in segmentation + :param superpixel_feature: A new mask timeless feature to hold super-pixel mask + :param segmentation_object: A function (object) which performs superpixel segmentation, by default that is + `skimage.segmentation.felzenszwalb` + :param segmentation_params: Additional parameters which will be passed to segmentation_object function + """ + self.feature = self.parse_feature(feature, allowed_feature_types=lambda fty: fty.is_spatial()) + self.superpixel_feature = self.parse_feature( + superpixel_feature, allowed_feature_types={FeatureType.MASK_TIMELESS} + ) + self.segmentation_object = segmentation_object + self.segmentation_params = segmentation_params + + def _create_superpixel_mask(self, data: np.ndarray) -> np.ndarray: + """Method which performs the segmentation""" + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", category=RuntimeWarning) + return self.segmentation_object(data, **self.segmentation_params) + + def execute(self, eopatch: EOPatch) -> EOPatch: + """Main execute method""" + data = eopatch[self.feature] + + if np.isnan(data).any(): + warnings.warn( # noqa: B028 + "There are NaN values in given data, super-pixel segmentation might produce bad results", + EORuntimeWarning, + ) + + if self.feature[0].is_temporal(): + data = np.moveaxis(data, 0, 2) + data = data.reshape((data.shape[0], data.shape[1], data.shape[2] * data.shape[3])) + + superpixel_mask = np.atleast_3d(self._create_superpixel_mask(data)) + + eopatch[self.superpixel_feature] = superpixel_mask + + return eopatch + + +@deprecated_class( + EODeprecationWarning, + "Use `SuperpixelSegmentationTask` with `segmentation_object=skimage.segmentation.felzenszwalb`.", +) +class FelzenszwalbSegmentationTask(SuperpixelSegmentationTask): + """Super-pixel segmentation which uses Felzenszwalb's method of segmentation + + Uses segmentation function documented at: + https://scikit-image.org/docs/dev/api/skimage.segmentation.html#skimage.segmentation.felzenszwalb + """ + + def __init__(self, feature: Feature, superpixel_feature: Feature, **kwargs: Any): + """Arguments are passed to `SuperpixelSegmentationTask` task""" + super().__init__(feature, superpixel_feature, segmentation_object=skimage.segmentation.felzenszwalb, **kwargs) + + +@deprecated_class( + EODeprecationWarning, + "Use `SuperpixelSegmentationTask` with `segmentation_object=skimage.segmentation.slic` and `start_label=0`.", +) +class SlicSegmentationTask(SuperpixelSegmentationTask): + """Super-pixel segmentation which uses SLIC method of segmentation + + Uses segmentation function documented at: + https://scikit-image.org/docs/dev/api/skimage.segmentation.html#skimage.segmentation.slic + """ + + def __init__(self, feature: Feature, superpixel_feature: Feature, **kwargs: Any): + """Arguments are passed to `SuperpixelSegmentationTask` task""" + super().__init__( + feature, superpixel_feature, segmentation_object=skimage.segmentation.slic, start_label=0, **kwargs + ) + + def _create_superpixel_mask(self, data: np.ndarray) -> np.ndarray: + """Method which performs the segmentation""" + if np.issubdtype(data.dtype, np.floating) and data.dtype != np.float64: + data = data.astype(np.float64) + return super()._create_superpixel_mask(data) + + +class MarkSegmentationBoundariesTask(EOTask): + """Takes super-pixel segmentation mask and creates a new mask where boundaries of super-pixels are marked + + The result is a binary mask with values 0 and 1 and dtype `numpy.uint8` + + Uses `mark_boundaries` function documented at: + https://scikit-image.org/docs/dev/api/skimage.segmentation.html#skimage.segmentation.mark_boundaries + """ + + def __init__(self, feature: Feature, new_feature: Feature, **params: Any): + """ + :param feature: Input feature - super-pixel mask + :param new_feature: Output feature - a new feature where new mask with boundaries will be put + :param params: Additional parameters which will be passed to `mark_boundaries`. Supported parameters are `mode` + and `background_label` + """ + self.feature = self.parse_feature(feature, allowed_feature_types={FeatureType.MASK_TIMELESS}) + self.new_feature = self.parse_feature(new_feature, allowed_feature_types={FeatureType.MASK_TIMELESS}) + + self.params = params + + def execute(self, eopatch: EOPatch) -> EOPatch: + """Execute method""" + segmentation_mask = eopatch[self.feature][..., 0] + + bounds_mask = skimage.segmentation.mark_boundaries( + np.zeros(segmentation_mask.shape[:2], dtype=np.uint8), segmentation_mask, **self.params + ) + + bounds_mask = bounds_mask[..., :1].astype(np.uint8) + eopatch[self.new_feature[0]][self.new_feature[1]] = bounds_mask + return eopatch diff --git a/extra-tasks/superpixel/test_superpixel.py b/extra-tasks/superpixel/test_superpixel.py new file mode 100644 index 0000000..e02ab46 --- /dev/null +++ b/extra-tasks/superpixel/test_superpixel.py @@ -0,0 +1,79 @@ +""" +Copyright (c) 2017- Sinergise and contributors. +For the full list of contributors, see https://github.com/sentinel-hub/eo-learn/blob/master/CREDITS.md. + +This source code is licensed under the MIT license, see the LICENSE file in the root directory of this source tree. +""" +from __future__ import annotations + +import os + +import numpy as np +import pytest +import skimage.segmentation +from superpixel import SuperpixelSegmentationTask + +from eolearn.core import EOPatch, FeatureType +from sentinelhub.testing_utils import assert_statistics_match + +SUPERPIXEL_FEATURE = FeatureType.MASK_TIMELESS, "SP_FEATURE" + + +@pytest.fixture(name="test_eopatch") +def example_eopatch_fixture(): + path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "..", "_test_eopatch") + return EOPatch.load(path, lazy_loading=True) + + +@pytest.mark.parametrize( + ("task", "expected_statistics"), + [ + ( + SuperpixelSegmentationTask( + (FeatureType.DATA, "BANDS-S2-L1C"), SUPERPIXEL_FEATURE, scale=100, sigma=0.5, min_size=100 + ), + {"exp_dtype": np.int64, "exp_min": 0, "exp_max": 25, "exp_mean": 10.6809, "exp_median": 11}, + ), + ( + SuperpixelSegmentationTask( + (FeatureType.DATA_TIMELESS, "MAX_NDVI"), SUPERPIXEL_FEATURE, scale=21, sigma=1.0, min_size=52 + ), + {"exp_dtype": np.int64, "exp_min": 0, "exp_max": 22, "exp_mean": 8.5302, "exp_median": 7}, + ), + ( + SuperpixelSegmentationTask((FeatureType.MASK, "CLM"), SUPERPIXEL_FEATURE, scale=1, sigma=0, min_size=15), + {"exp_dtype": np.int64, "exp_min": 0, "exp_max": 171, "exp_mean": 86.46267, "exp_median": 90}, + ), + ( + SuperpixelSegmentationTask( + (FeatureType.DATA, "CLP"), + SUPERPIXEL_FEATURE, + segmentation_object=skimage.segmentation.slic, + start_label=0, + n_segments=55, + compactness=25.0, + max_num_iter=20, + sigma=0.8, + ), + {"exp_dtype": np.int64, "exp_min": 0, "exp_max": 48, "exp_mean": 24.6072, "exp_median": 25}, + ), + ( + SuperpixelSegmentationTask( + (FeatureType.MASK_TIMELESS, "RANDOM_UINT8"), + SUPERPIXEL_FEATURE, + segmentation_object=skimage.segmentation.slic, + start_label=0, + n_segments=231, + compactness=15.0, + max_num_iter=7, + sigma=0.2, + ), + {"exp_dtype": np.int64, "exp_min": 0, "exp_max": 195, "exp_mean": 100.1844, "exp_median": 101}, + ), + ], +) +def test_superpixel(test_eopatch, task, expected_statistics): + task.execute(test_eopatch) + result = test_eopatch[SUPERPIXEL_FEATURE] + + assert_statistics_match(result, **expected_statistics, abs_delta=1e-4) From 37760fcb4816c25a134d093383fd5018f1ad2005 Mon Sep 17 00:00:00 2001 From: Ziga Luksic Date: Tue, 5 Sep 2023 11:01:09 +0200 Subject: [PATCH 2/2] fix extra in requirement --- extra-tasks/superpixel/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra-tasks/superpixel/requirements.txt b/extra-tasks/superpixel/requirements.txt index d36daec..c14d003 100644 --- a/extra-tasks/superpixel/requirements.txt +++ b/extra-tasks/superpixel/requirements.txt @@ -1,2 +1,2 @@ -eo-learn[FEATURES]==1.5.0 # last tested version +eo-learn[GEOMETRY]==1.5.0 # last tested version scikit-image>=0.15