def __init__(self, images, group=None, bounding_box_group_glob=None, reference_shape=None, sd_algorithm_cls=Newton, holistic_features=no_op, patch_features=no_op, patch_shape=(17, 17), diagonal=None, scales=(0.5, 1.0), n_iterations=6, n_perturbations=30, perturb_from_gt_bounding_box=noisy_shape_from_bounding_box, batch_size=None, verbose=False): # check parameters checks.check_diagonal(diagonal) scales = checks.check_scales(scales) n_scales = len(scales) patch_features = checks.check_features(patch_features, n_scales) holistic_features = checks.check_features(holistic_features, n_scales) patch_shape = checks.check_patch_shape(patch_shape, n_scales) # set parameters self.algorithms = [] self.reference_shape = reference_shape self._sd_algorithm_cls = sd_algorithm_cls self.holistic_features = holistic_features self.patch_features = patch_features self.patch_shape = patch_shape self.diagonal = diagonal self.scales = scales self.n_perturbations = n_perturbations self.n_iterations = checks.check_max_iters(n_iterations, n_scales) self._perturb_from_gt_bounding_box = perturb_from_gt_bounding_box # set up algorithms self._setup_algorithms() # Now, train the model! self._train(images,increment=False, group=group, bounding_box_group_glob=bounding_box_group_glob, verbose=verbose, batch_size=batch_size)
def __init__(self, regression_type=mlr, regression_features=None, features=no_op, n_levels=3, downscale=1.2, noise_std=0.04, rotation=False, n_perturbations=10): features = checks.check_features(features, n_levels) DeformableModel.__init__(self, features) # general deformable model checks checks.check_n_levels(n_levels) checks.check_downscale(downscale) # SDM specific checks regression_type_list = check_regression_type(regression_type, n_levels) regression_features = check_regression_features(regression_features, n_levels) check_n_permutations(n_perturbations) # store parameters self.regression_type = regression_type_list self.regression_features = regression_features self.n_levels = n_levels self.downscale = downscale self.noise_std = noise_std self.rotation = rotation self.n_perturbations = n_perturbations
def __init__(self, images, group=None, bounding_box_group_glob=None, verbose=False, reference_shape=None, diagonal=None, scales=(0.5, 1.0), n_perturbations=30, n_dlib_perturbations=1, perturb_from_gt_bounding_box=noisy_shape_from_bounding_box, n_iterations=10, feature_padding=0, n_pixel_pairs=400, distance_prior_weighting=0.1, regularisation_weight=0.1, n_split_tests=20, n_trees=500, n_tree_levels=5): checks.check_diagonal(diagonal) self.diagonal = diagonal self.scales = checks.check_scales(scales) self.holistic_features = checks.check_features(no_op, self.n_scales) self.reference_shape = reference_shape self.n_perturbations = n_perturbations self.n_iterations = checks.check_max_iters(n_iterations, self.n_scales) self._perturb_from_gt_bounding_box = perturb_from_gt_bounding_box self._setup_dlib_options(feature_padding, n_pixel_pairs, distance_prior_weighting, regularisation_weight, n_split_tests, n_trees, n_dlib_perturbations, n_tree_levels) self._setup_algorithms() # Train DLIB over multiple scales self._train(images, group=group, bounding_box_group_glob=bounding_box_group_glob, verbose=verbose)
def __init__(self, template, shapes, group=None, verbose=False, reference_shape=None, holistic_features=no_op, transform=DifferentiablePiecewiseAffine, diagonal=None, scales=(0.5, 1.0), max_shape_components=None, batch_size=None): checks.check_diagonal(diagonal) n_scales = len(scales) scales = checks.check_scales(scales) holistic_features = checks.check_features(holistic_features, n_scales) max_shape_components = checks.check_max_components( max_shape_components, n_scales, 'max_shape_components') self.holistic_features = holistic_features self.transform = transform self.diagonal = diagonal self.scales = scales self.max_shape_components = max_shape_components self.reference_shape = reference_shape self.shape_models = [] self.warped_templates = [] # Train ATM self._train(template, shapes, increment=False, group=group, verbose=verbose, batch_size=batch_size)
def __init__(self, classifier_trainers=linear_svm_lr, patch_shape=(5, 5), features=sparse_hog, normalization_diagonal=None, n_levels=3, downscale=1.1, scaled_shape_models=True, max_shape_components=None, boundary=3): # general deformable model checks checks.check_n_levels(n_levels) checks.check_downscale(downscale) checks.check_normalization_diagonal(normalization_diagonal) checks.check_boundary(boundary) max_shape_components = checks.check_max_components( max_shape_components, n_levels, 'max_shape_components') features = checks.check_features(features, n_levels) # CLM specific checks classifier_trainers = check_classifier_trainers(classifier_trainers, n_levels) patch_shape = check_patch_shape(patch_shape) # store parameters self.classifier_trainers = classifier_trainers self.patch_shape = patch_shape self.features = features self.normalization_diagonal = normalization_diagonal self.n_levels = n_levels self.downscale = downscale self.scaled_shape_models = scaled_shape_models self.max_shape_components = max_shape_components self.boundary = boundary
def __init__(self, template, group=None, holistic_features=no_op, transform_cls=DifferentiableAlignmentAffine, diagonal=None, scales=(0.5, 1.0), algorithm_cls=InverseCompositional, residual_cls=SSD): checks.check_diagonal(diagonal) scales = checks.check_scales(scales) holistic_features = checks.check_features(holistic_features, len(scales)) self.holistic_features = holistic_features self.transform_cls = transform_cls self.diagonal = diagonal self.scales = list(scales) # Make template masked for warping template = template.as_masked(copy=False) if self.diagonal: template = template.rescale_landmarks_to_diagonal_range( self.diagonal, group=group) self.reference_shape = template.landmarks[group].lms self.templates, self.sources = self._prepare_template(template, group=group) self._set_up(algorithm_cls, residual_cls)
def __init__(self, features=igo, patch_shape=(16, 16), normalization_diagonal=None, n_levels=3, downscale=2, scaled_shape_models=True, max_shape_components=None, max_appearance_components=None, boundary=3): # check parameters checks.check_n_levels(n_levels) checks.check_downscale(downscale) checks.check_normalization_diagonal(normalization_diagonal) checks.check_boundary(boundary) max_shape_components = checks.check_max_components( max_shape_components, n_levels, 'max_shape_components') max_appearance_components = checks.check_max_components( max_appearance_components, n_levels, 'max_appearance_components') features = checks.check_features(features, n_levels) # store parameters self.features = features self.patch_shape = patch_shape self.normalization_diagonal = normalization_diagonal self.n_levels = n_levels self.downscale = downscale self.scaled_shape_models = scaled_shape_models self.max_shape_components = max_shape_components self.max_appearance_components = max_appearance_components self.boundary = boundary # patch-based AAMs can only work with TPS transform self.transform = DifferentiableThinPlateSplines
def __init__(self, features=igo, patch_shape=(16, 16), normalization_diagonal=None, n_levels=3, downscale=2, scaled_shape_models=True, max_shape_components=None, boundary=3): # check parameters checks.check_n_levels(n_levels) checks.check_downscale(downscale) checks.check_normalization_diagonal(normalization_diagonal) checks.check_boundary(boundary) max_shape_components = checks.check_max_components( max_shape_components, n_levels, 'max_shape_components') features = checks.check_features(features, n_levels) # store parameters self.features = features self.patch_shape = patch_shape self.normalization_diagonal = normalization_diagonal self.n_levels = n_levels self.downscale = downscale self.scaled_shape_models = scaled_shape_models self.max_shape_components = max_shape_components self.boundary = boundary # patch-based AAMs can only work with TPS transform self.transform = ThinPlateSplines
def __init__(self, features=igo, transform=DifferentiablePiecewiseAffine, trilist=None, normalization_diagonal=None, n_levels=3, downscale=2, scaled_shape_models=True, max_shape_components=None, max_appearance_components=None, boundary=3): # check parameters checks.check_n_levels(n_levels) checks.check_downscale(downscale) checks.check_normalization_diagonal(normalization_diagonal) checks.check_boundary(boundary) max_shape_components = checks.check_max_components( max_shape_components, n_levels, 'max_shape_components') max_appearance_components = checks.check_max_components( max_appearance_components, n_levels, 'max_appearance_components') features = checks.check_features(features, n_levels) # store parameters self.features = features self.transform = transform self.trilist = trilist self.normalization_diagonal = normalization_diagonal self.n_levels = n_levels self.downscale = downscale self.scaled_shape_models = scaled_shape_models self.max_shape_components = max_shape_components self.max_appearance_components = max_appearance_components self.boundary = boundary
def __init__(self, regression_type=mlr, regression_features=None, features=no_op, n_levels=3, downscale=1.2, noise_std=0.04, rotation=False, n_perturbations=10): features = checks.check_features(features, n_levels) DeformableModel.__init__(self, features) # general deformable model checks checks.check_n_levels(n_levels) checks.check_downscale(downscale) # SDM specific checks regression_type_list = check_regression_type(regression_type, n_levels) regression_features = check_regression_features( regression_features, n_levels) check_n_permutations(n_perturbations) # store parameters self.regression_type = regression_type_list self.regression_features = regression_features self.n_levels = n_levels self.downscale = downscale self.noise_std = noise_std self.rotation = rotation self.n_perturbations = n_perturbations
def __init__(self, classifier_trainers=linear_svm_lr, patch_shape=(5, 5), features=sparse_hog, normalization_diagonal=None, n_levels=3, downscale=1.1, scaled_shape_models=True, max_shape_components=None, boundary=3): # general deformable model checks checks.check_n_levels(n_levels) checks.check_downscale(downscale) checks.check_normalization_diagonal(normalization_diagonal) checks.check_boundary(boundary) max_shape_components = checks.check_max_components( max_shape_components, n_levels, 'max_shape_components') features = checks.check_features(features, n_levels) # CLM specific checks classifier_trainers = check_classifier_trainers( classifier_trainers, n_levels) patch_shape = check_patch_shape(patch_shape) # store parameters self.classifier_trainers = classifier_trainers self.patch_shape = patch_shape self.features = features self.normalization_diagonal = normalization_diagonal self.n_levels = n_levels self.downscale = downscale self.scaled_shape_models = scaled_shape_models self.max_shape_components = max_shape_components self.boundary = boundary
def __init__(self, images, group=None, verbose=False, batch_size=None, diagonal=None, scales=(0.5, 1), holistic_features=no_op, # shape_model_cls=build_normalised_pca_shape_model, expert_ensemble_cls=CorrelationFilterExpertEnsemble, max_shape_components=None, reference_shape=None, shape_forgetting_factor=1.0): self.diagonal = checks.check_diagonal(diagonal) self.scales = checks.check_scales(scales) self.holistic_features = checks.check_features(holistic_features, self.n_scales) # self.shape_model_cls = checks.check_algorithm_cls( # shape_model_cls, self.n_scales, ShapeModel) self.expert_ensemble_cls = checks.check_algorithm_cls( expert_ensemble_cls, self.n_scales, ExpertEnsemble) self.max_shape_components = checks.check_max_components( max_shape_components, self.n_scales, 'max_shape_components') self.shape_forgetting_factor = shape_forgetting_factor self.reference_shape = reference_shape self.shape_models = [] self.expert_ensembles = [] # Train CLM self._train(images, increment=False, group=group, verbose=verbose, batch_size=batch_size)
def __init__(self, adjacency_array_appearance=None, gaussian_per_patch=True, adjacency_array_deformation=None, root_vertex_deformation=None, adjacency_array_shape=None, features=no_op, patch_shape=(17, 17), normalization_diagonal=None, n_levels=2, downscale=2, scaled_shape_models=False, use_procrustes=True, max_shape_components=None, n_appearance_parameters=None): # check parameters checks.check_n_levels(n_levels) checks.check_downscale(downscale) checks.check_normalization_diagonal(normalization_diagonal) max_shape_components = checks.check_max_components( max_shape_components, n_levels, 'max_shape_components') features = checks.check_features(features, n_levels) n_appearance_parameters = _check_n_parameters( n_appearance_parameters, n_levels, 'n_appearance_parameters') # appearance graph if adjacency_array_appearance is None: self.graph_appearance = None elif adjacency_array_appearance == 'yorgos': self.graph_appearance = 'yorgos' else: self.graph_appearance = UndirectedGraph(adjacency_array_appearance) # shape graph if adjacency_array_shape is None: self.graph_shape = None else: self.graph_shape = UndirectedGraph(adjacency_array_shape) # check adjacency_array_deformation, root_vertex_deformation if adjacency_array_deformation is None: self.graph_deformation = None if root_vertex_deformation is None: self.root_vertex = 0 else: if root_vertex_deformation is None: self.graph_deformation = DirectedGraph(adjacency_array_deformation) else: self.graph_deformation = Tree(adjacency_array_deformation, root_vertex_deformation) # store parameters self.features = features self.patch_shape = patch_shape self.normalization_diagonal = normalization_diagonal self.n_levels = n_levels self.downscale = downscale self.scaled_shape_models = scaled_shape_models self.max_shape_components = max_shape_components self.n_appearance_parameters = n_appearance_parameters self.use_procrustes = use_procrustes self.gaussian_per_patch = gaussian_per_patch
def __init__(self, adjacency_array_appearance=None, gaussian_per_patch=True, adjacency_array_deformation=None, root_vertex_deformation=None, adjacency_array_shape=None, features=no_op, patch_shape=(17, 17), normalization_diagonal=None, n_levels=2, downscale=2, scaled_shape_models=False, use_procrustes=True, max_shape_components=None, n_appearance_parameters=None): # check parameters checks.check_n_levels(n_levels) checks.check_downscale(downscale) checks.check_normalization_diagonal(normalization_diagonal) max_shape_components = checks.check_max_components( max_shape_components, n_levels, 'max_shape_components') features = checks.check_features(features, n_levels) n_appearance_parameters = _check_n_parameters( n_appearance_parameters, n_levels, 'n_appearance_parameters') # appearance graph if adjacency_array_appearance is None: self.graph_appearance = None elif adjacency_array_appearance == 'yorgos': self.graph_appearance = 'yorgos' else: self.graph_appearance = UndirectedGraph(adjacency_array_appearance) # shape graph if adjacency_array_shape is None: self.graph_shape = None else: self.graph_shape = UndirectedGraph(adjacency_array_shape) # check adjacency_array_deformation, root_vertex_deformation if adjacency_array_deformation is None: self.graph_deformation = None if root_vertex_deformation is None: self.root_vertex = 0 else: if root_vertex_deformation is None: self.graph_deformation = DirectedGraph( adjacency_array_deformation) else: self.graph_deformation = Tree(adjacency_array_deformation, root_vertex_deformation) # store parameters self.features = features self.patch_shape = patch_shape self.normalization_diagonal = normalization_diagonal self.n_levels = n_levels self.downscale = downscale self.scaled_shape_models = scaled_shape_models self.max_shape_components = max_shape_components self.n_appearance_parameters = n_appearance_parameters self.use_procrustes = use_procrustes self.gaussian_per_patch = gaussian_per_patch