| |
| from mmengine.structures import BaseDataElement, PixelData |
|
|
|
|
| class SegDataSample(BaseDataElement): |
| """A data structure interface of MMSegmentation. They are used as |
| interfaces between different components. |
| |
| The attributes in ``SegDataSample`` are divided into several parts: |
| |
| - ``gt_sem_seg``(PixelData): Ground truth of semantic segmentation. |
| - ``pred_sem_seg``(PixelData): Prediction of semantic segmentation. |
| - ``seg_logits``(PixelData): Predicted logits of semantic segmentation. |
| |
| Examples: |
| >>> import torch |
| >>> import numpy as np |
| >>> from mmengine.structures import PixelData |
| >>> from mmseg.structures import SegDataSample |
| |
| >>> data_sample = SegDataSample() |
| >>> img_meta = dict(img_shape=(4, 4, 3), |
| ... pad_shape=(4, 4, 3)) |
| >>> gt_segmentations = PixelData(metainfo=img_meta) |
| >>> gt_segmentations.data = torch.randint(0, 2, (1, 4, 4)) |
| >>> data_sample.gt_sem_seg = gt_segmentations |
| >>> assert 'img_shape' in data_sample.gt_sem_seg.metainfo_keys() |
| >>> data_sample.gt_sem_seg.shape |
| (4, 4) |
| >>> print(data_sample) |
| <SegDataSample( |
| |
| META INFORMATION |
| |
| DATA FIELDS |
| gt_sem_seg: <PixelData( |
| |
| META INFORMATION |
| img_shape: (4, 4, 3) |
| pad_shape: (4, 4, 3) |
| |
| DATA FIELDS |
| data: tensor([[[1, 1, 1, 0], |
| [1, 0, 1, 1], |
| [1, 1, 1, 1], |
| [0, 1, 0, 1]]]) |
| ) at 0x1c2b4156460> |
| ) at 0x1c2aae44d60> |
| |
| >>> data_sample = SegDataSample() |
| >>> gt_sem_seg_data = dict(sem_seg=torch.rand(1, 4, 4)) |
| >>> gt_sem_seg = PixelData(**gt_sem_seg_data) |
| >>> data_sample.gt_sem_seg = gt_sem_seg |
| >>> assert 'gt_sem_seg' in data_sample |
| >>> assert 'sem_seg' in data_sample.gt_sem_seg |
| """ |
|
|
| @property |
| def gt_sem_seg(self) -> PixelData: |
| return self._gt_sem_seg |
|
|
| @gt_sem_seg.setter |
| def gt_sem_seg(self, value: PixelData) -> None: |
| self.set_field(value, '_gt_sem_seg', dtype=PixelData) |
|
|
| @gt_sem_seg.deleter |
| def gt_sem_seg(self) -> None: |
| del self._gt_sem_seg |
|
|
| @property |
| def pred_sem_seg(self) -> PixelData: |
| return self._pred_sem_seg |
|
|
| @pred_sem_seg.setter |
| def pred_sem_seg(self, value: PixelData) -> None: |
| self.set_field(value, '_pred_sem_seg', dtype=PixelData) |
|
|
| @pred_sem_seg.deleter |
| def pred_sem_seg(self) -> None: |
| del self._pred_sem_seg |
|
|
| @property |
| def seg_logits(self) -> PixelData: |
| return self._seg_logits |
|
|
| @seg_logits.setter |
| def seg_logits(self, value: PixelData) -> None: |
| self.set_field(value, '_seg_logits', dtype=PixelData) |
|
|
| @seg_logits.deleter |
| def seg_logits(self) -> None: |
| del self._seg_logits |
|
|