Skip to content

Commit aaa2765

Browse files
authored
Fix tiling XAI out of range (#3943)
- Fix tile merge XAI out of range
1 parent 1d319cd commit aaa2765

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

src/otx/core/model/detection.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ def forward_tiles(self, inputs: OTXTileBatchDataEntity[DetBatchDataEntity]) -> D
237237
inputs.imgs_info,
238238
self.num_classes,
239239
self.tile_config,
240+
self.explain_mode,
240241
)
241242
for batch_tile_attrs, batch_tile_input in inputs.unbind():
242243
output = self.forward_explain(batch_tile_input) if self.explain_mode else self.forward(batch_tile_input)

src/otx/core/model/instance_segmentation.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ def forward_tiles(self, inputs: OTXTileBatchDataEntity[InstanceSegBatchDataEntit
215215
inputs.imgs_info,
216216
self.num_classes,
217217
self.tile_config,
218+
self.explain_mode,
218219
)
219220
for batch_tile_attrs, batch_tile_input in inputs.unbind():
220221
output = self.forward_explain(batch_tile_input) if self.explain_mode else self.forward(batch_tile_input)

src/otx/core/utils/tile_merge.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,25 @@ class TileMerge(Generic[T_OTXDataEntity, T_OTXBatchPredEntity]):
2727
2828
Args:
2929
img_infos (list[ImageInfo]): Original image information before tiling.
30-
iou_threshold (float, optional): IoU threshold for non-maximum suppression. Defaults to 0.45.
31-
max_num_instances (int, optional): Maximum number of instances to keep. Defaults to 500.
32-
30+
num_classes (int): Number of classes.
31+
tile_config (TileConfig): Tile configuration.
32+
explain_mode (bool): Whether or not tiles have explain features. Default: False.
3333
"""
3434

3535
def __init__(
3636
self,
3737
img_infos: list[ImageInfo],
3838
num_classes: int,
3939
tile_config: TileConfig,
40+
explain_mode: bool = False,
4041
) -> None:
4142
self.img_infos = img_infos
4243
self.num_classes = num_classes
4344
self.tile_size = tile_config.tile_size
4445
self.iou_threshold = tile_config.iou_threshold
4546
self.max_num_instances = tile_config.max_num_instances
4647
self.with_full_img = tile_config.with_full_img
48+
self.explain_mode = explain_mode
4749

4850
@abstractmethod
4951
def _merge_entities(
@@ -115,7 +117,7 @@ def merge(
115117
"""
116118
entities_to_merge = defaultdict(list)
117119
img_ids = []
118-
explain_mode = len(batch_tile_preds[0].feature_vector) > 0
120+
explain_mode = self.explain_mode
119121

120122
for tile_preds, tile_attrs in zip(batch_tile_preds, batch_tile_attrs):
121123
batch_size = tile_preds.batch_size
@@ -315,7 +317,7 @@ def merge(
315317
"""
316318
entities_to_merge = defaultdict(list)
317319
img_ids = []
318-
explain_mode = len(batch_tile_preds[0].feature_vector) > 0
320+
explain_mode = self.explain_mode
319321

320322
for tile_preds, tile_attrs in zip(batch_tile_preds, batch_tile_attrs):
321323
feature_vectors = tile_preds.feature_vector if explain_mode else [[] for _ in range(tile_preds.batch_size)]

0 commit comments

Comments
 (0)