Experimental functional¶
enot.experimental contains functional which is under development or testing. You can use this package’s functional, but you may experience errors due to it’s development stage.
resolution_search¶
This package is dedicated to resolution search. You can use it’s functional to find an optimal resolution for your pretrained search space during the search stage.
- class ResolutionSearcherWithFixedLatencyIterator(search_optimizer, dataloader, latency_type, min_resolution, max_resolution, resolution_tolerance=16, resolution_strategy_constructor=None, sample_to_model_inputs=<function default_sample_to_model_inputs>, **kwargs)¶
Iterator to use during the search phase for optimal image resolution selection.
Generates pairs of (resolution, resolution_strategy) of type (int,
ResolutionStrategy
). Resolution value can be logged while resolution strategy is required to process images from search and validation dataloaders in order to estimate correct resolution validation metric.Before stopping iterations (by raising StopIteration), automatically modifies search space state to the optimal one - best architecture parameters, latency container for optimal resolution, and prepared best architecture as forward model.
- __init__(search_optimizer, dataloader, latency_type, min_resolution, max_resolution, resolution_tolerance=16, resolution_strategy_constructor=None, sample_to_model_inputs=<function default_sample_to_model_inputs>, **kwargs)¶
- Parameters
search_optimizer (FixedLatencySearchOptimizer) – Search optimizer which searches architectures with the specified latency.
dataloader (torch.utils.data.DataLoader) – PyTorch DataLoader which will be used for latency initialization.
latency_type (str) – Latency type as a string name.
min_resolution (int) – The smallest resolution to consider.
max_resolution (int) – The largest resolution to consider.
resolution_tolerance (int) – Resolution tolerance value. Defines how far the final resolution could be away from an optimal resolution, in pixels. Smaller values might produce better results at the cost of longer search process.
resolution_strategy_constructor (Callable or None, optional) – Resolution strategy constructor. This should be a function which takes a single integer (resolution value) and returns
ResolutionStrategy
class instance corresponding to the provided resolution. This function will be used to instantiate resolution strategy object, which will be returned during iterations over self. Default value is None, which createsConstantResolutionStrategy
with the default resizing function. This simply resizes input image to the provided resolution (the largest image size will be set to resolution value, and aspect ratio is preserved).sample_to_model_inputs (Callable, optional) – Function to map dataloader samples to model input format. Default value is
default_sample_to_model_inputs()
. See more here..
- property best_architecture: Optional[List[int]]¶
Returns value of the best architecture, or None if target latency is not achievable.
- Returns
List with the best architecture indices, or None if target latency is not achievable.
- Return type
list with int or None
- property best_resolution: Optional[int]¶
Returns value of the best resolution, or None if target latency is not achievable.
- set_resolution_target_metric(metric)¶
Applies user-defined metric value to guide resolution search procedure.
Must be called once after search process for the provided resolution finishes.
- Parameters
metric (Number) – User-defined target metric value, which was calculated by user for with provided ResolutionStrategy.
- Return type
- class DefaultResizeStrategy(method='bilinear', resize_labels=False)¶
Strategy which resizes input images from dataloader sample.
This class supposes that data items are stored in the tuple of form (images, labels), where the first item is to be resized and should be of type torch.Tensor. When label resizing is required, then they should be also stored in torch.Tensor.
Notes
This resize strategy uses torch.nn.functional.interpolate function to resize images.
- __init__(method='bilinear', resize_labels=False)¶
- class ResolutionStrategy(resize_function)¶
Bases:
object
Callable wrapper over torch.utils.data.DataLoader which yields data resized to special resolution.
- abstract __call__(dataloader, *args, **kwargs)¶
Takes data from torch.utils.data.DataLoader and yields resized data.
- Parameters
dataloader (torch.utils.data.DataLoader) – PyTorch dataloader to take data batches from.
- __init__(resize_function)¶
- Parameters
resize_function (Callable or None) – Function to resize data items from dataloader. If None - then
DefaultResizeStrategy
is used.
- class PretrainResolutionStrategy(min_resolution, max_resolution, resize_function=None, randomize_both_sides=False)¶
Bases:
enot.experimental.resolution_search.resolution_strategy.ResolutionStrategy
Resolution strategy which resizes images to random resolution.
This strategy can be useful to train model to work well with different input resolutions.
This class is particularly useful to pre-train search spaces capable of working with different resolutions, which enables an opportunity to use resolution search procedure.
- __init__(min_resolution, max_resolution, resize_function=None, randomize_both_sides=False)¶
- Parameters
min_resolution (int) – The smallest resolution to consider.
max_resolution (int) – The largest resolution to consider.
resize_function (Callable or None, optional) – Function to resize data from the wrapped dataloader.
DefaultResizeStrategy
is used by default.randomize_both_sides (bool, optional) – Whether to generate single-parameterized or double-parameterized resolutions. False value generates single-parameterized resolutions (single int value) which are passed to the resize function. True value generates double-parameterized resolutions (tuple with two int values) which are passed to the resize function. Default value is False.
- class ConstantResolutionStrategy(resolution, resize_function=None)¶
Bases:
enot.experimental.resolution_search.resolution_strategy.ResolutionStrategy
Resolution strategy which resizes images to constant resolution.
This strategy can be useful for model tuning with the best resolution obtained during the search process.
- __init__(resolution, resize_function=None)¶
- Parameters
resolution (int or tuple with two int) – Target resolution to resize images to.
resize_function (Callable or None, optional) – Function to resize data from the wrapped dataloader. Default value is None, which uses
DefaultResizeStrategy
as a resize function.