From 7254f5330f399ec81c3d8f443026e376ca2825b5 Mon Sep 17 00:00:00 2001 From: ZiAn-Su <54671439+ZiAn-Su@users.noreply.github.com> Date: Thu, 13 Jul 2023 17:06:06 +0800 Subject: [PATCH] [Fix] Fix SegTTAModel with no attribute '_gt_sem_seg' error (#3152) ## Motivation When using the - tta command for multi-scale prediction, and the test set is not annotated, although format_only has been set true in test_evaluator, but SegTTAModel class still threw error 'AttributeError: 'SegDataSample' object has no attribute '_gt_sem_seg''. ## Modification The reason is SegTTAModel didn't determine if there were annotations in the dataset, so I added the code to make the judgment and let the program run normally on my computer. --- mmseg/models/segmentors/seg_tta.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/mmseg/models/segmentors/seg_tta.py b/mmseg/models/segmentors/seg_tta.py index 5b8eb1d7b0..63ef61d223 100644 --- a/mmseg/models/segmentors/seg_tta.py +++ b/mmseg/models/segmentors/seg_tta.py @@ -6,7 +6,6 @@ from mmengine.structures import PixelData from mmseg.registry import MODELS -from mmseg.structures import SegDataSample from mmseg.utils import SampleList @@ -39,11 +38,10 @@ def merge_preds(self, data_samples_list: List[SampleList]) -> SampleList: ).to(logits).squeeze(1) else: seg_pred = logits.argmax(dim=0) - data_sample = SegDataSample( - **{ - 'pred_sem_seg': PixelData(data=seg_pred), - 'gt_sem_seg': data_samples[0].gt_sem_seg - }) + data_sample.set_data({'pred_sem_seg': PixelData(data=seg_pred)}) + if hasattr(data_samples[0], 'gt_sem_seg'): + data_sample.set_data( + {'gt_sem_seg': data_samples[0].gt_sem_seg}) data_sample.set_metainfo({'img_path': data_samples[0].img_path}) predictions.append(data_sample) return predictions