Esempio n. 1
0
    def __init__(self, punto, pnt_ref, metadata=None):
        try:
            # Metadata
            self.metadata = metadata
            # Se guardan las coordenadas originales
            self.Coords = punto[0:2]
        except:
            pass

        # p.ClusterId = UNCLASSIFIED;
        self.ClusterId = "UNCLASSIFIED"
        # p.dist = Distance(p,r)
        self.dist = Distance(punto[0:2], pnt_ref[0:2])
        # p.NeighborsNo = 1
        self.NeighborsNo = 1
        # p.Border = vacio
        self.Border = []
def TI_Backward_Neighborhood(conj_puntos, pto, Eps):
    seeds = {}
    backwardThreshold = pto.dist - Eps
    # Hay que declarar la lista a recorrer.
    # Primero se encuentra el indice donde esta el elemento "p"
    # Se seleccionan los elementos desde el inicio hasta el elemento "p"
    # Y finalmente se da vuelta
    try:
        q = conj_puntos[pto.previous]
        while q.dist > backwardThreshold:
            if Distance(q.Coords, pto.Coords) <= Eps:
                seeds[q] = None
            q = conj_puntos[q.previous]

    except KeyError:
        pass
    # Se devuelve el listado con las semillas.
    return seeds
Esempio n. 3
0
def build_config(args, nfeat: int, nclass: int) -> cf.LossConfig:
    """Create a configuration object for a given loss with
    a given configuration of hyper-parameters.

    :param args: script argument object
    :param nfeat: number of features
    :param nclass: number of classes
    :return: a `LossConfig` for the appropriate loss and hyper-parameters
    """
    distance = Distance.from_name(args.distance)
    if args.loss == 'softmax':
        return cf.SoftmaxConfig(nfeat, nclass)
    elif args.loss == 'contrastive':
        print(f"[Margin: {args.margin}]")
        return cf.ContrastiveConfig(margin=args.margin,
                                    distance=distance,
                                    size_average=args.size_average,
                                    online=True)
    elif args.loss == 'triplet':
        sampling = build_triplet_strategy(args.triplet_strategy,
                                          args.semihard_negatives)
        return cf.TripletConfig(scaling=args.loss_scale,
                                distance=distance,
                                size_average=args.size_average,
                                online=True,
                                sampling=sampling)
    elif args.loss == 'arcface':
        print(f"[Margin: {args.margin}]")
        return cf.ArcFaceConfig(nfeat,
                                nclass,
                                margin=args.margin,
                                s=args.loss_scale)
    elif args.loss == 'center':
        return cf.CenterConfig(nfeat,
                               nclass,
                               lweight=args.loss_scale,
                               distance=distance)
    elif args.loss == 'coco':
        return cf.CocoConfig(nfeat, nclass, alpha=args.loss_scale)
    else:
        raise ValueError(
            f"Loss function should be one of: {constants.LOSS_OPTIONS_STR}")
Esempio n. 4
0
def TI_Forward_Neighborhood(conj_puntos, p, Eps):
    """ ."""
    seeds = []
    forwardThreshold = p.dist + Eps
    # Hay que declarar la lista a recorrer.
    # Primero se encuentra el indice donde esta el elemento "p"
    # Se seleccionan los elementos desde el inicio hasta el elemento "p"
    # Y finalmente se da vuelta
    indice = conj_puntos.index(p)
    listado_a_recorrer = conj_puntos[indice + 1:]

    # Se recorre el listado recien calculado
    for q in listado_a_recorrer:
        if q.dist > forwardThreshold:
            break
        if Distance(q.Coords, p.Coords) <= Eps:
            seeds.append(q)

    # Se devuelve el listado con las semillas.
    return seeds
Esempio n. 5
0
def TI_Backward_Neighborhood(conj_puntos, pto, Eps):
    seeds = []
    backwardThreshold = pto.dist - Eps
    # Hay que declarar la lista a recorrer.
    # Primero se encuentra el indice donde esta el elemento "p"
    # Se seleccionan los elementos desde el inicio hasta el elemento "p"
    # Y finalmente se da vuelta
    indice = conj_puntos.index(pto)
    listado_a_recorrer = conj_puntos[:indice]
    listado_a_recorrer.reverse()

    # Se recorre el listado recien calculado
    for q in listado_a_recorrer:
        if q.dist < backwardThreshold:
            break
        if Distance(q.Coords, pto.Coords) <= Eps:
            seeds.append(q)

    # Se devuelve el listado con las semillas.
    return seeds
def TI_Forward_Neighborhood(conj_puntos, p, Eps):
    """
    conj_puntos (dict): the key is the order of the instance respect
    with the attribute instance, and the value is the instance.
    p (instance class clase_punto):
    Eps (float): episilon, the parameter given to the algorithm."""
    seeds = {}
    forwardThreshold = p.dist + Eps
    # Hay que declarar la lista a recorrer.
    # Primero se encuentra el indice donde esta el elemento "p"
    # Se seleccionan los elementos desde el inicio hasta el elemento "p"
    # Y finalmente se da vuelta
    try:
        q = conj_puntos[p.following]
        # Se recorre el listado recien calculado
        while q.dist < forwardThreshold:
            if Distance(q.Coords, p.Coords) <= Eps:
                seeds[q] = None
            q = conj_puntos[q.following]

    except KeyError:
        pass
    # Se devuelve el listado con las semillas.
    return seeds