Beispiel #1
0
def create(model_name: str = None,
           model: Union[str, ImageModel] = None,
           folder_path: str = None,
           dataset_name: str = None,
           dataset: Union[str, ImageSet] = None,
           config: Config = config,
           class_dict: dict[str, type[ImageModel]] = class_dict,
           **kwargs) -> ImageModel:
    dataset_name = get_name(name=dataset_name,
                            module=dataset,
                            arg_list=['-d', '--dataset'])
    model_name = get_name(name=model_name,
                          module=model,
                          arg_list=['-m', '--model'])
    if dataset_name is None:
        dataset_name = config.get_full_config()['dataset']['default_dataset']
    if model_name is None:
        model_name = config.get_config(
            dataset_name=dataset_name)['model']['default_model']
    result = config.get_config(
        dataset_name=dataset_name)['model']._update(kwargs)
    model_name = model_name if model_name is not None else result[
        'default_model']

    ModelType: type[ImageModel] = class_dict[get_model_class(model_name)]
    if folder_path is None and isinstance(dataset, ImageSet):
        folder_path = os.path.join(result['model_dir'], dataset.data_type,
                                   dataset.name)
    return ModelType(name=model_name,
                     dataset=dataset,
                     folder_path=folder_path,
                     **result)
Beispiel #2
0
def create(mark_path: str = None, data_shape: list[int] = None,
           dataset_name: str = None, dataset: str | ImageSet = None,
           config: Config = config, **kwargs) -> Watermark:
    r"""
    | Create a watermark instance.
    | For arguments not included in :attr:`kwargs`,
      use the default values in :attr:`config`.
    | For watermark implementation, see :class:`Watermark`.

    Args:
        mark_path (str):
            | Path to watermark image or npy file.
              There are some preset marks in the package.
            | Defaults to ``'square_white.png'``.
        data_shape (list[int]): The shape of image data ``[C, H, W]``.
        dataset_name (str): The dataset name.
        dataset (str): The alias of `dataset_name`.
        config (Config): The default parameter config.
        **kwargs: Keyword arguments
            passed to dataset init method.

    Returns:
        Watermark: Watermark instance.
    """
    if data_shape is None:
        assert isinstance(dataset, ImageSet), 'Please specify data_shape or dataset'
        data_shape = dataset.data_shape
    if dataset_name is None and dataset is not None:
        dataset_name = dataset.name
    result = config.get_config(dataset_name=dataset_name)[
        'mark'].update(kwargs).update(mark_path=mark_path)
    return Watermark(data_shape=data_shape, **result)
Beispiel #3
0
def create(model_name: str = None,
           model: Union[str, ImageModel] = None,
           layer: int = None,
           dataset_name: str = None,
           dataset: Union[str, ImageSet] = None,
           config: Config = config,
           class_dict: dict[str, type[ImageModel]] = class_dict,
           **kwargs) -> ImageModel:
    dataset_name = get_name(name=dataset_name,
                            module=dataset,
                            arg_list=['-d', '--dataset'])
    if dataset_name is None:
        dataset_name = config.get_full_config()['dataset']['default_dataset']
    model_name = get_name(name=model_name,
                          module=model,
                          arg_list=['-m', '--model'])
    if model_name is None:
        model_name = config.get_config(
            dataset_name=dataset_name)['model']['default_model']
    model_name, layer = split_name(model_name, layer=layer)
    return trojanzoo.models.create(model_name=model_name,
                                   model=model,
                                   dataset_name=dataset_name,
                                   dataset=dataset,
                                   config=config,
                                   class_dict=class_dict,
                                   layer=layer,
                                   **kwargs)
Beispiel #4
0
def create(data_shape=None, dataset_name: str = None, dataset: ImageSet = None,
           config: Config = config, **kwargs):
    if data_shape is None:
        assert isinstance(dataset, ImageSet)
        data_shape: list = [dataset.n_channel]
        data_shape.extend(dataset.n_dim)
    if dataset_name is None and dataset is not None:
        dataset_name = dataset.name
    result = config.get_config(dataset_name=dataset_name)['mark']._update(kwargs)
    return Watermark(data_shape=data_shape, **result)
Beispiel #5
0
def create(mark_path: str = None,
           data_shape: list[int] = None,
           dataset_name: str = None,
           dataset: ImageSet = None,
           config: Config = config,
           **kwargs):
    if data_shape is None:
        assert isinstance(dataset, ImageSet)
        data_shape = dataset.data_shape
    if dataset_name is None and dataset is not None:
        dataset_name = dataset.name
    result = config.get_config(
        dataset_name=dataset_name)['mark']._update(kwargs)
    result.update(mark_path=mark_path)
    return Watermark(data_shape=data_shape, **result)
Beispiel #6
0
def add_argument(
    parser: argparse.ArgumentParser,
    model_name: str = None,
    model: Union[str, ImageModel] = None,
    config: Config = config,
    class_dict: dict[str, type[ImageModel]] = class_dict
) -> argparse._ArgumentGroup:
    dataset_name = get_name(arg_list=['-d', '--dataset'])
    if dataset_name is None:
        dataset_name = config.get_full_config()['dataset']['default_dataset']
    model_name = get_name(name=model_name,
                          module=model,
                          arg_list=['-m', '--model'])
    if model_name is None:
        model_name = config.get_config(
            dataset_name=dataset_name)['model']['default_model']
    model_name = get_model_class(model_name)
    return trojanzoo.models.add_argument(parser=parser,
                                         model_name=model_name,
                                         model=model,
                                         config=config,
                                         class_dict=class_dict)