Ejemplo n.º 1
0
def attack_in_mask(model_list, img, label, mask, id_embeddings_list, eps,
                   attack_type, iters, device, target_or_not, target_index):
    #model_list=model_list[1:]
    adv = img.detach()
    adv.requires_grad = True

    if target_or_not:
        flag = -1
    else:
        flag = 1

    if attack_type == 'fgsm':
        iterations = 1
    else:
        iterations = iters

    if attack_type == 'pgd':
        step = 2 / 255
    else:
        step = eps / iterations
        noise = 0

    for j in range(iterations):
        loss = 0
        for model, id_embeddings in zip(model_list, id_embeddings_list):
            features = extract_features.l2_normlize(
                model(utils.normalize(adv.clone())))
            loss = loss + utils.distance_loss(id_embeddings, features,
                                              target_index, device)
            #losses.append(utils.distance_loss(id_embeddings,features,target_index,device))
        #loss = torch.sum(torch.cat(losses))
        loss.backward()
        if attack_type == 'mim':
            adv_mean = torch.mean(torch.abs(adv.grad), dim=1, keepdim=True)
            adv_mean = torch.mean(torch.abs(adv_mean), dim=2, keepdim=True)
            adv_mean = torch.mean(torch.abs(adv_mean), dim=3, keepdim=True)
            adv.grad = adv.grad / adv_mean
            noise = noise + adv.grad
        else:
            noise = adv.grad
        # Optimization step
        adv.data = adv.data + flag * step * noise.sign()
        if attack_type == 'pgd':
            adv.data = torch.where(adv.data > img.data + eps, img.data + eps,
                                   adv.data)
            adv.data = torch.where(adv.data < img.data - eps, img.data - eps,
                                   adv.data)
            adv.data = adv.data * mask + img.data * (1 - mask)
        adv.data.clamp_(0.0, 1.0)
        adv.grad.data.zero_()
    return adv.detach()
Ejemplo n.º 2
0
def compute(score_lookup,
            word2vec_model,
            jate_terms_file,
            stopwords,
            jate_terms_folder,
            out_folder,
            append_label=None):
    kcr_lookup = score_lookup

    model = Word2Vec.load(word2vec_model)
    jate_term_base_scores = {
        c[0]: c[1]
        for c in tr.jate_terms_iterator(jate_terms_file)
    }
    term_unigrams = set()
    for term in jate_term_base_scores.keys():
        norm_parts = utils.normalize_string(term)
        for part in norm_parts:
            part = re.sub(r'[^a-zA-Z0-9,/\-\+\s_]', ' ', part).strip()
            if (part in stopwords or len(part) < 2):
                continue
            else:
                term_unigrams.add(part)

    sum_unigram_scores = {}
    for tu in term_unigrams:
        if tu in kcr_lookup.keys():
            sum_unigram_scores[tu] = kcr_lookup[tu]
        else:
            sum_unigram_scores[tu] = 0.0

    sum_unigram_scores = utils.normalize(sum_unigram_scores)

    jate_terms_components = td.generate_term_component_map(
        jate_term_base_scores, 5, model)

    for file in os.listdir(jate_terms_folder):
        print("\t{}".format(file))
        jate_term_base_scores = {
            c[0]: c[1]
            for c in tr.jate_terms_iterator(jate_terms_folder + "/" + file)
        }
        term_rank_scores = ts.SemReRankScorer(sum_unigram_scores,
                                              jate_terms_components,
                                              jate_term_base_scores)
        out_file = out_folder + "/" + file
        if append_label is not None:
            out_file = out_file + "_" + append_label
        # sorted_term_rank_scores = sorted(list(term_rank_scores), key=lambda k: k['score'])
        with open(out_file, 'w') as outfile:
            json.dump(list(term_rank_scores), outfile)
Ejemplo n.º 3
0
def chroma_stft(y=None, sr=22050, S=None, norm=np.inf, n_fft=2048,
                hop_length=512, tuning=None, **kwargs):
    S, n_fft = _spectrogram(y=y, S=S, n_fft=n_fft, hop_length=hop_length,
                            power=2)

    n_chroma = kwargs.get('n_chroma', 12)

    if tuning is None:
        tuning = estimate_tuning(S=S, sr=sr, bins_per_octave=n_chroma)

    if 'A440' not in kwargs:
        kwargs['A440'] = 440.0 * 2.0**(float(tuning) / n_chroma)

    chromafb = filters.chroma(sr, n_fft, **kwargs)
    raw_chroma = np.dot(chromafb, S)

    return utils.normalize(raw_chroma, norm=norm, axis=0)
Ejemplo n.º 4
0
def chroma(sr,
           n_fft,
           n_chroma=12,
           A440=440.0,
           ctroct=5.0,
           octwidth=2,
           norm=2,
           base_c=True):
    wts = np.zeros((n_chroma, n_fft))

    frequencies = np.linspace(0, sr, n_fft, endpoint=False)[1:]

    frqbins = n_chroma * hz_to_octs(frequencies, A440)
    frqbins = np.concatenate(([frqbins[0] - 1.5 * n_chroma], frqbins))

    binwidthbins = np.concatenate((np.maximum(frqbins[1:] - frqbins[:-1],
                                              1.0), [1]))

    D = np.subtract.outer(frqbins, np.arange(0, n_chroma, dtype='d')).T

    n_chroma2 = np.round(float(n_chroma) / 2)

    D = np.remainder(D + n_chroma2 + 10 * n_chroma, n_chroma) - n_chroma2

    wts = np.exp(-0.5 * (2 * D / np.tile(binwidthbins, (n_chroma, 1)))**2)

    wts = utils.normalize(wts, norm=norm, axis=0)

    if octwidth is not None:
        wts *= np.tile(
            np.exp(-0.5 * (((frqbins / n_chroma - ctroct) / octwidth)**2)),
            (n_chroma, 1))

    if base_c:
        wts = np.roll(wts, -3, axis=0)

    return np.ascontiguousarray(wts[:, :int(1 + n_fft / 2)])
Ejemplo n.º 5
0
def run(word2vec_model, jate_out_terms, topN_similar, similarity_threshold,
        jate_term_max_n, pagerank_out_file, final_out_file, personalized,
        exp_id):
    model = Word2Vec.load(word2vec_model)
    graph_data_file = pagerank_out_file + ".graph".format(
        str(similarity_threshold))
    setting_parts = graph_data_file.split("-")

    graph_data_file = setting_parts[0] + "-" + setting_parts[1] + "-" + setting_parts[2] + "-" + setting_parts[4]+"-" \
                      + setting_parts[5] + "-" + setting_parts[6] + "-" + setting_parts[7] + "-" + setting_parts[9]

    graph_data = utils.load_saved_model(graph_data_file)
    G = None
    jate_terms_components = None
    if (graph_data is not None):
        G = graph_data[0]
        jate_terms_components = graph_data[1]
    else:
        if not exp_loader.DIRECTED_GRAPH:
            G = nx.Graph()
        else:
            G = nx.DiGraph()

        jate_terms_components = \
            tr.build_graph(jate_out_terms, model, topN_similar, similarity_threshold, jate_term_max_n, G,
                           exp_loader.GRAPH_PRUNING)
        pk._dump((G, jate_terms_components), open(graph_data_file, 'wb'))

    jate_term_base_scores = {
        c[0]: c[1]
        for c in tr.jate_terms_iterator(jate_out_terms)
    }
    personalized_init = None
    if personalized is not None:
        personalized_init = tr.init_personalized_vector(
            G.nodes(), jate_term_base_scores, personalized)

    semrerank = utils.load_saved_model(pagerank_out_file)
    if semrerank is None:
        print("Graph size exp={}: {} {}".format(exp_id, len(G.nodes()),
                                                len(G.edges())))
        print(time.strftime("%H:%M:%S"))
        logger.info("Graph size exp={}: {} {}".format(exp_id, len(G.nodes()),
                                                      len(G.edges())))
        logger.info(time.strftime("%H:%M:%S"))
        semrerank = nx.pagerank(G,
                                alpha=0.85,
                                personalization=personalized_init,
                                max_iter=5000,
                                tol=1e-06)
        print(time.strftime("%H:%M:%S"))
        print("Pagerank completes")
        logger.info(time.strftime("%H:%M:%S"))
        logger.info("Pagerank completes")
        semrerank = utils.normalize(semrerank)

    pk._dump(semrerank, open(pagerank_out_file, 'wb'))

    term_rank_scores = ts.SemReRankScorer(semrerank, jate_terms_components,
                                          jate_term_base_scores)

    # sorted_term_rank_scores = sorted(list(term_rank_scores), key=lambda k: k['score'])
    with open(final_out_file, 'w') as outfile:
        json.dump(list(term_rank_scores), outfile)
Ejemplo n.º 6
0
 def __init__(self, pageranks, jate_term_map, base_scores):
     self.pageranks = pageranks
     self.base_scores = base_scores
     if exp_loader_doc_graph.SCORING_NORMALIZE_JATE_SCORE:
         self.base_scores = utils.normalize(base_scores)
     self.jate_term_map = jate_term_map