def __call__(self): # load all train data provider = DataProvider() test_bass_list, test_drums_list, test_other_list, test_vocals_list = provider.load_all_test_data( ) # define model tf_mix = tf.placeholder(tf.float32, (1, self.sample_len)) #Batch, Sample tf_est_source = self.__model(tf_mix) # GPU config config = tf.ConfigProto(gpu_options=tf.GPUOptions( visible_device_list='0', # specify GPU number allow_growth=True)) saver = tf.train.import_meta_graph( './../results/model/FFN_ver2/ffn_ver2_3999.ckpt.meta') with tf.Session(config=config) as sess: saver.restore(sess, './../results/model/FFN_ver2/ffn_ver2_3999.ckpt') total_parameters = 0 parameters_string = "" for variable in tf.trainable_variables(): shape = variable.get_shape() variable_parameters = 1 for dim in shape: variable_parameters *= dim.value total_parameters += variable_parameters if len(shape) == 1: parameters_string += ("%s %d, " % (variable.name, variable_parameters)) else: parameters_string += ( "%s %s=%d, " % (variable.name, str(shape), variable_parameters)) print(parameters_string) print("Total %d variables, %s params" % (len( tf.trainable_variables()), "{:,}".format(total_parameters)))
def __call__(self): # load all train data provider = DataProvider() test_bass_list, test_drums_list, test_other_list, test_vocals_list = provider.load_all_test_data() # define model tf_mix = tf.placeholder(tf.float32, (None, self.sample_len)) #Batch, Sample tf_est_source = self.__model(tf_mix) # GPU config config = tf.ConfigProto( gpu_options=tf.GPUOptions( visible_device_list='0', # specify GPU number allow_growth = True ) ) saver = tf.train.import_meta_graph('./../results/model/mini-U-Net/mini-U-Net_1999.ckpt.meta') with tf.Session(config = config) as sess: saver.restore(sess, './../results/model/mini-U-Net/mini-U-Net_1999.ckpt') test_mixed_list = [] for bass, drums, other, vocals in zip(test_bass_list, test_drums_list, test_other_list, test_vocals_list): test_mixed_list.append(AudioModule.mixing( bass, drums, other, vocals )) test_target_list = test_vocals_list tf.keras.backend.set_learning_phase(0) # make mix audio est_start = time.time() for mix in test_mixed_list: cutted_mix_array = provider.test_data_split_and_pad(mix, self.sample_len) tmp_est_data_array = np.zeros((len(cutted_mix_array), self.sample_len)) for index, mix_packet in enumerate(cutted_mix_array): mix_packet = mix_packet.reshape(1,-1) est_source = sess.run(tf_est_source, feed_dict = { tf_mix: mix_packet[:,:] } ) tmp_est_data_array[index,:] = est_source self.est_audio_list.append(tmp_est_data_array.reshape(1,-1)) est_end = time.time() print("excuted time", est_end - est_start) evaluate_start = time.time() for est, target, mix in zip(self.est_audio_list, test_target_list, test_mixed_list): target = target.reshape(1,-1) mix = mix.reshape(1,-1) est_array = np.zeros((2, target.shape[1])) est_array[0,:] = est[:, :target.shape[1]] est_array[1,:] = mix[:, :target.shape[1]] - est[:, :target.shape[1]] target_array = np.zeros((2, target.shape[1])) target_array[0,:] = target target_array[1,:] = mix[:, :target.shape[1]] - target sdr, sir, sar, perm = mir_eval.separation.bss_eval_sources(target_array, est_array) self.sdr_list.append(sdr[0]) self.sir_list.append(sir[0]) self.sar_list.append(sar[0]) print('sdr mean',np.mean(self.sdr_list)) print('sir mean',np.mean(self.sir_list)) print('sar mean',np.mean(self.sar_list)) print('sdr median', np.median(self.sdr_list)) print('sir median', np.median(self.sir_list)) print('sar median', np.median(self.sar_list)) evaluate_end = time.time() print('evaluate time', evaluate_end - evaluate_start) return self.est_audio_list, test_target_list, test_mixed_list