diff --git a/inference/core/utils/drawing.py b/inference/core/utils/drawing.py index 4d8d6b9c8d..92e24b351a 100644 --- a/inference/core/utils/drawing.py +++ b/inference/core/utils/drawing.py @@ -5,7 +5,6 @@ import numpy as np -from inference.core.models.utils.batching import create_batches from inference.core.utils.preprocess import letterbox_image MAX_COLUMNS_FOR_SINGLE_ROW_GRID = 3 @@ -101,16 +100,17 @@ def _generate_tiles( tile_margin_color: Tuple[int, int, int], ) -> np.ndarray: rows, columns = grid_size - tiles_elements = list(create_batches(sequence=images, batch_size=columns)) - while len(tiles_elements[-1]) < columns: - tiles_elements[-1].append( - _generate_color_image(shape=single_tile_size, color=tile_padding_color) - ) - while len(tiles_elements) < rows: - tiles_elements.append( - [_generate_color_image(shape=single_tile_size, color=tile_padding_color)] - * columns + # Compute number of image slots required + total_slots = rows * columns + n_images = len(images) + # Pad missing images (if any) in a single step, reducing repetitive list operations + if n_images < total_slots: + pad_img = _generate_color_image( + shape=single_tile_size, color=tile_padding_color ) + images = images + [pad_img] * (total_slots - n_images) + # Slice images into batches efficiently (no batching generator overhead) + tiles_elements = [images[i * columns : (i + 1) * columns] for i in range(rows)] return _merge_tiles_elements( tiles_elements=tiles_elements, grid_size=grid_size, diff --git a/inference/core/utils/preprocess.py b/inference/core/utils/preprocess.py index 06106eb6c4..6973a997f9 100644 --- a/inference/core/utils/preprocess.py +++ b/inference/core/utils/preprocess.py @@ -5,17 +5,14 @@ import numpy as np from skimage.exposure import rescale_intensity -from inference.core.env import ( - DISABLE_PREPROC_CONTRAST, - DISABLE_PREPROC_GRAYSCALE, - DISABLE_PREPROC_STATIC_CROP, - USE_PYTORCH_FOR_PREPROCESSING, -) +from inference.core.env import (DISABLE_PREPROC_CONTRAST, + DISABLE_PREPROC_GRAYSCALE, + DISABLE_PREPROC_STATIC_CROP, + USE_PYTORCH_FOR_PREPROCESSING) if USE_PYTORCH_FOR_PREPROCESSING: import torch - from inference.core.exceptions import PreProcessingError from inference.core.utils.onnx import ImageMetaType