예제 #1
0
def load_all_feature(mode='train', feat_type='db4'):
    flist = []  # wav file list
    label = []  # wav label list
    with open(MODE[mode], 'r') as f:
        for line in f:
            data = line.split()
            flist.append(data[0])
            label.append(LABEL[data[1]])

    final_flist = []
    final_label = []
    final_feat = []
    for idx in range(len(flist)):
        wav_path = os.path.join(WAV[mode], flist[idx])
        try:
            feat = extract(wav_path, feat_type)
        except:
            print('CORRUPTED WAV: ', wav_path)
            continue

        final_feat.append(feat)
        final_flist.append(flist[idx])
        final_label.append([label[idx]] *
                           len(feat))  # label expand (wavs, frames)
    return final_feat, final_label, final_flist
예제 #2
0
def upload_predict():
    #upload file
    file = request.files['file']
    if file.filename.find('.') <= 0:
        return redirect(url_for('main_page'))

    file_ext = file.filename.rsplit('.', 1)[1].strip().lower()

    if file_ext not in ALLOWED_EXT:
        return redirect(url_for('main_page'))

    user_input = request.form.get("name")

    file_name = str(uuid.uuid1()).replace('-', '') + '.' + file_ext
    basepath = os.path.dirname(__file__)
    upload_path = os.path.join(basepath, 'static/images', file_name)
    file.save(upload_path)

    #get feature
    feature = extract(upload_path)

    #get recommendation
    urls = recommend(feature)

    origin = os.path.join('static/images', file_name)

    return render_template('display.html', origin=origin, urls=urls)
예제 #3
0
def display_result():
    if request.method == 'POST':
        f = request.files['file']
        f.save(secure_filename(f.filename))
        feature = extract(f.filename)
        # print(len(feature[0]), file=sys.stdout)
        products = predict(feature[0])
        metadata = mongo.db.metadata
        output = {}
        refer = {}
        i = 0
        while (i < len(products)):
            asin = products[i]
            asin = str(asin)
            print(asin)
            try:
                cursor = metadata.find({"asin": asin})
                p = cursor[0]
                output[p['asin']] = p['imUrl']
                i += 1
            except:
                i += 1
                continue

            #refer[p['title']]=p['asin']
        #refer = jsonify(refer)
        return render_template('display.html', result=output)
예제 #4
0
def load_rnn_data(dataset, label_file, mode="train", feature_type="mfcc"):
    mat_pattern = r"D:\experiments\anti\asvspoof2017\baseline\features\{}_{}.mat"
    if mode != "final":
        labels, wav_lists = load_label(label_file)
    else:
        labels = {}
        wav_lists = []
        train_labels, train_wav_lists = load_label(label_file[0])
        dev_labels, dev_wav_lists = load_label(label_file[1])
        labels.update(train_labels)
        labels.update(dev_labels)
        wav_lists.extend(train_wav_lists)
        wav_lists.extend(dev_wav_lists)
        dataset = "final"

    final_data = []
    final_label = []
    final_wav_ids = []
    final_lengths = []

    for wav_name in tqdm(wav_lists[0:100],
                         desc="load {} data".format(dataset)):
        wav_id = wav_name.replace(".wav", "")
        label = labels[wav_id]
        if "E" in wav_id:
            wav_path = "../data/ASVspoof2017_eval/{}.wav".format(wav_id)
        if "D" in wav_id:
            wav_path = "../data/ASVspoof2017_dev/{}.wav".format(wav_id)
        if "T" in wav_id:
            wav_path = "../data/ASVspoof2017_train/{}.wav".format(wav_id)

        if feature_type != 'cqcc':
            feature = extract_feature.extract(wav_path, feature_type)

            if feature_type == "mfcc" or feature_type == "imfcc":
                feature_delta = librosa.feature.delta(feature)
                feature_delta_delta = librosa.feature.delta(feature_delta)

                feature = np.concatenate(
                    (feature, feature_delta, feature_delta_delta), axis=0)
        else:
            mat_path = mat_pattern.format(wav_id, feature_type)
            tmp_data = scio.loadmat(mat_path)
            feature = tmp_data['x']

        feature = feature.T
        final_lengths.append(feature.shape[0])

        feature = np.pad(feature,
                         [[0, rnn_max_frames - feature.shape[0]], [0, 0]],
                         mode="constant")

        final_data.append(feature)
        final_label.append(label)
        final_wav_ids.append(wav_id)

    return final_data, final_label, final_wav_ids, final_lengths
예제 #5
0
def test_classificatore(imgpath, classificatore, pose_names):
    img = cv.imread(imgpath)
    img = cv.resize(img, (500, 500))
    glob_fe = extract_feature.extract(img)

    pred =  classificatore.predict(glob_fe.reshape(1, -1))[0]
    cv.putText(img, 'Predizione posizione: {}'.format(pose_names[pred]), (20, 30), cv.FONT_HERSHEY_SIMPLEX, 0.8,(255, 255, 0), 2)
    cv.putText(img, 'Classificatore: {}'.format(classificatore), (20, 60), cv.FONT_HERSHEY_SIMPLEX, 0.8,(255, 255, 0), 2)
    cv.imshow("Predizione ", img)
    print("la predizione è': ", pose_names[pred])
    cv.waitKey(0)
def extract_verif_feature():
    verif_path_feature_dic = {} # {person:[feature1,feature2,...,]}
    # path_feature_dic = msgpack_numpy.load(open(originalimages_verif_fc7_path_feature, 'rb'))
    path_set = set()
    for line in open(pair_file):
        tmp = line.rstrip().split()
        path_set.add(tmp[0])
        path_set.add(tmp[1])

    model, get_Conv_FeatureMap = load_model(layer_index=-5)
    for pic_path in path_set:
        fine_tune_feature = extract(pic_path, get_Conv_FeatureMap, (224, 224, 3))
        verif_path_feature_dic[pic_path] = fine_tune_feature
    msgpack_numpy.dump(verif_path_feature_dic, open(feature_pack_file, 'wb'))
예제 #7
0
    def __getitem__(self, idx):
        '''
        Return:
            `tuple(feature, label, file name)`
            `feature: (wav, feats, dim*11)
        **WAV CORRUPT EXCEPTION NOT HUNDLE**
        '''
        if type(idx) is not slice:
            if self.buf and self.buffer[idx] is not None:
                return self.buffer[idx]

            wav_path = os.path.join(WAV[self.mode], self.flist[idx])
            feat = extract(wav_path, self.feat_type)  # wav corrupt not hundle

            item = (feat, [self.label[idx]] * feat.shape[0], self.flist[idx])
            if self.buf:
                self.buffer[idx] = item
            return item

        # slice reading
        items = []
        length = self.__len__()
        for i in range(idx.start, idx.stop):
            i %= length

            if self.buf and self.buffer[i] is not None:
                items.append(self.buffer[i])
                continue
            wav_path = os.path.join(WAV[self.mode], self.flist[i])
            feat = extract(wav_path, self.feat_type)

            items.append(
                (feat, [self.label[i]] * feat.shape[0], self.flist[i]))
            if self.buf:
                self.buffer[i] = items[-1]
        return items
예제 #8
0
def main():
    folder = '/data/hanlin'
    person_path_dic = load_one_deep_path(folder)
    sample_list, person_num = person_path_dic_trans(person_path_dic)
    model, get_Conv_FeatureMap = load_model(output_layer_index=18)
    data = []
    label = []
    start = time()
    for pic_path, person_index in sample_list:
        feature_vector = extract(pic_path, get_Conv_FeatureMap, pic_shape)[0]
        data.append(feature_vector)
        label.append(person_index)
    end = time()
    print(end - start)
    msgpack_numpy.dump((data, label), open('hanlin.p', 'wb'))
예제 #9
0
def main():
    folder = '/data/hanlin'
    person_path_dic = load_one_deep_path(folder)
    sample_list, person_num = person_path_dic_trans(person_path_dic)
    model, get_Conv_FeatureMap = load_model(output_layer_index=18)
    data = []
    label = []
    start = time()
    for pic_path, person_index in sample_list:
        feature_vector = extract(pic_path, get_Conv_FeatureMap, pic_shape)[0]
        data.append(feature_vector)
        label.append(person_index)
    end = time()
    print (end - start)
    msgpack_numpy.dump((data, label), open('hanlin.p', 'wb'))
예제 #10
0
def extract_verif_feature():
    verif_path_feature_dic = {} # {person:[feature1,feature2,...,]}
    # path_feature_dic = msgpack_numpy.load(open(originalimages_verif_fc7_path_feature, 'rb'))
    path_set = set()
    for line in open(pair_file):
        tmp = line.rstrip().split()
        path_set.add(tmp[0])
        path_set.add(tmp[1])

    model, get_Conv_FeatureMap = load_model(layer_index=-5)
    print model.summary()
    for pic_path in path_set:
        fine_tune_feature = extract(pic_path, get_Conv_FeatureMap, (224, 224, 3))
        verif_path_feature_dic[pic_path] = fine_tune_feature
    msgpack_numpy.dump(verif_path_feature_dic, open(feature_pack_file, 'wb'))
예제 #11
0
X = []
y = []
x = []
imgsize = 150

for training_name in train_labels:
    label = training_name
    DIR = os.path.join(TRAIN_DIR, training_name)

    for img in tqdm(os.listdir(DIR)):
        path = os.path.join(DIR, img)
        img = cv2.imread(path)
        img1 = cv2.imread(path)
        img = cv2.resize(img, (resize, resize))
        img1 = cv2.resize(img, (imgsize, imgsize))
        glob_features_b = extract_feature.extract(img)
        X.append(np.array(glob_features_b))
        x.append(np.array(img1))
        y.append(str(label))

z = []
z = y

'normalizzazione'
X = np.array(X)
X = X / 255

#Label Encoding
le = LabelEncoder()
y = le.fit_transform(y)
예제 #12
0
def load_data(dataset, label_file, mode="train", feature_type="mfcc"):
    extend_num = 6
    mat_pattern = r"D:\experiments\anti\asvspoof2017\baseline\features\{}_{}.mat"
    if mode != "final":
        labels, wav_lists = load_label(label_file)
    else:
        labels = {}
        wav_lists = []
        train_labels, train_wav_lists = load_label(label_file[0])
        dev_labels, dev_wav_lists = load_label(label_file[1])
        labels.update(train_labels)
        labels.update(dev_labels)
        wav_lists.extend(train_wav_lists)
        wav_lists.extend(dev_wav_lists)
        dataset = "final"

    if mode == "train" or mode == "final":
        final_data = []
        final_label = []

        for wav_name in tqdm(wav_lists, desc="load {} data".format(dataset)):
            wav_id = wav_name.replace(".wav", "")
            label = labels[wav_id]
            if "T" in wav_id:
                wav_path = "../data/ASVspoof2017_train/{}.wav".format(wav_id)
            if "D" in wav_id:
                wav_path = "../data/ASVspoof2017_dev/{}.wav".format(wav_id)

            if feature_type != 'cqcc':
                feature = extract_feature.extract(wav_path, feature_type)
            else:
                mat_path = mat_pattern.format(wav_id, feature_type)
                tmp_data = scio.loadmat(mat_path)
                feature = tmp_data['x']
                # feature = feature[0:60, :]

            # feature = feature.T
            # feature = scale(feature.T, with_mean=True, with_std=True)
            feature = np.pad(feature,
                             [[0, 0], [extend_num - 1, extend_num - 1]],
                             mode="edge")
            for i in range(extend_num - 1, feature.shape[1] - extend_num):
                tmp_feature = feature[:, i - extend_num + 1:i +
                                      extend_num].reshape(-1)
                final_data.append(tmp_feature)
                final_label.append(label)
        return final_data, final_label

    elif mode == "test":
        final_data = []
        final_label = []
        final_wav_ids = []

        for wav_name in tqdm(wav_lists, desc="load {} data".format(dataset)):
            wav_id = wav_name.replace(".wav", "")
            label = labels[wav_id]
            if "E" in wav_id:
                wav_path = "../data/ASVspoof2017_eval/{}.wav".format(wav_id)
            if "D" in wav_id:
                wav_path = "../data/ASVspoof2017_dev/{}.wav".format(wav_id)
            if feature_type != 'cqcc':
                feature = extract_feature.extract(wav_path, feature_type)
            else:
                mat_path = mat_pattern.format(wav_id, feature_type)
                tmp_data = scio.loadmat(mat_path)
                feature = tmp_data['x']

            feature = np.pad(feature,
                             [[0, 0], [extend_num - 1, extend_num - 1]],
                             mode="edge")

            final_feature = []
            for i in range(extend_num - 1, feature.shape[1] - extend_num):
                tmp_feature = feature[:, i - extend_num + 1:i +
                                      extend_num].reshape(-1)
                final_feature.append(tmp_feature)
            final_feature = np.array(final_feature).astype(np.float32)
            final_data.append(final_feature)
            final_label.append(label)
            final_wav_ids.append(wav_id)
        return final_data, final_label, final_wav_ids

    else:
        raise ValueError("the mode doesn't exist")
예제 #13
0
def load_cnn_data(dataset, label_file, mode="train", feature_type="mfcc"):
    mat_pattern = r"D:\experiments\anti\asvspoof2017\baseline\features\{}_{}.mat"
    if mode != "final":
        labels, wav_lists = load_label(label_file)
    else:
        labels = {}
        wav_lists = []
        train_labels, train_wav_lists = load_label(label_file[0])
        dev_labels, dev_wav_lists = load_label(label_file[1])
        labels.update(train_labels)
        labels.update(dev_labels)
        wav_lists.extend(train_wav_lists)
        wav_lists.extend(dev_wav_lists)
        dataset = "final"

    final_data = []
    final_label = []
    final_wav_ids = []

    for wav_name in tqdm(wav_lists[:], desc="load {} data".format(dataset)):
        wav_id = wav_name.replace(".wav", "")
        label = labels[wav_id]
        if "T" in wav_id:
            wav_path = "../data/ASVspoof2017_train/{}.wav".format(wav_id)
        if "D" in wav_id:
            wav_path = "../data/ASVspoof2017_dev/{}.wav".format(wav_id)
        if "E" in wav_id:
            wav_path = "../data/ASVspoof2017_eval/{}.wav".format(wav_id)

        if feature_type != 'cqcc':
            feature = extract_feature.extract(wav_path, feature_type)
        else:
            mat_path = mat_pattern.format(wav_id, feature_type)
            tmp_data = scio.loadmat(mat_path)
            feature = tmp_data['x']

        feature = feature.T
        feature = scale(feature, with_mean=True, with_std=False, copy=True)
        # if feature_type == 'cqcc':
        #     if feature.shape[0] < 400:
        #         feature = np.pad(feature, [[0, 400 - feature.shape[0]], [0, 0]], mode='edge')
        #     feature = feature[0:400, :]
        #     final_data.append(feature)
        if feature_type == 'cqcc':
            if feature.shape[0] < 20:
                feature = np.pad(feature, [[0, 20 - feature.shape[0]], [0, 0]],
                                 mode='edge')
            feature = feature[0:20, :]
            final_data.append(feature)
        # elif feature_type == "fft":
        #     if feature.shape[0] < 400:
        #         feature = np.pad(feature, [[0, 400 - feature.shape[0]], [0, 0]], mode='edge')
        #     feature = feature[0:400, 0:864]
        #     final_data.append(feature)
        else:
            if feature.shape[0] < 500:
                feature = np.pad(feature,
                                 [[0, 500 - feature.shape[0]], [0, 0]],
                                 mode='edge')
            feature = feature[0:500, 0:501]
            final_data.append(feature)

        final_label.append(label)
        final_wav_ids.append(wav_id)

    final_data = np.array(final_data)
    if mode != "test":
        return final_data, final_label
    else:
        return final_data, final_label, final_wav_ids
예제 #14
0
import extract_feature as EF
import xgb_useing as model
print('提取特征')
EF.extract('windows')
print('模型训练')
model.run_model('windows')