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
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)
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)
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
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'))
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
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'))
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'))
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'))
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)
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")
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
import extract_feature as EF import xgb_useing as model print('提取特征') EF.extract('windows') print('模型训练') model.run_model('windows')