def parse(self, url, config): """ 解析视频信息,获取下载链接 """ CONFIG.update(config) title = self.get_title(url) print("[Info] 视频标题:{}".format(title)) # 创建目录结构 CONFIG["video_dir"] = touch_dir( repair_filename(os.path.join(CONFIG['dir'], title + "-bilibili"))) if not CONFIG["video_dir"]: print('[Error] 视频已存在!') return [] # CONFIG["video_dir"] = touch_dir(os.path.join(CONFIG['base_dir'], "Videos")) print("[Info] 保存路径:{}".format( os.path.dirname(os.path.abspath(__file__)) + '\\' + CONFIG["video_dir"])) print("[Info] 正在解析视频信息...") videos = self.get_videos(url) print("[Info] 视频共有{}P".format(len(videos))) CONFIG["videos"] = videos for video in videos: danmaku_path = os.path.splitext(video.path)[0] + ".xml" self.get_danmaku(video.cid, danmaku_path) self.get_segment(video) return videos # if __name__ == "__main__": # parser = BilibiliParser() # avid, bvid, cid, qn = [882566744, 2, 172274931, 80] # info = parser.info_api(avid, bvid) # parse = parser.parse_api(avid, bvid, cid, qn) # subtitle = parser.subtitle_api(cid, avid, bvid) # danmaku = parser.danmaku_api(cid) # print(info, parse, subtitle, danmaku, sep='\n')
import utils import os import numpy as np if __name__ == '__main__': path = utils.get_dataset_path('UCF50') dirs = utils.get_dirs(path) train_list = [] val_list = [] test_list = [] train_set_percentage = 0.7 val_set_percentage_from_training = 0.2 for d in dirs: current_dir = os.path.join(path, d) files = utils.get_files(current_dir, '.avi', append_base=False) files = [os.path.join(d, f) for f in files] np.random.shuffle(files) num_train = int(len(files) * train_set_percentage) num_val = int(num_train * val_set_percentage_from_training) train_list.extend(files[0:num_train - num_val]) val_list.extend(files[num_train - num_val:num_train]) test_list.extend(files[num_train:]) print(len(files), len(train_list), len(val_list), len(test_list)) save_path = path + '_lists' utils.touch_dir(save_path) utils.txt_write(save_path + '/trainlist.txt', train_list) utils.txt_write(save_path + '/vallist.txt', val_list) utils.txt_write(save_path + '/testlist.txt', test_list)
def _save_img_sequence(output_dir, img_seq, rescale=False): utils.touch_dir(output_dir) for i in range(img_seq.shape[0]): _save_img(osp.join(output_dir, '%06d.png' % i), img_seq[i], rescale=rescale) pass
def main(): np.random.seed(1) parser = ArgumentParser() parser.add_argument('--config', type=str, required=True, help='path of the configuration file') parser.add_argument('--checkpoint_stage1', type=str, required=True, help='path of the stage1 checkpoint') parser.add_argument('--checkpoint_stage2', type=str, required=True, help='path of the stage2 checkpoint') parser.add_argument('--save_dir', type=str, required=False, help='root dir to save results', default='results/eval') args = parser.parse_args() config = utils.load_config(args.config) model_config = config['model'] paths_config = config['paths'] data_dir = paths_config['data_dir'] n_points = model_config['n_pts'] n_action = model_config['n_action'] batch_size = 1 session_config = tf.ConfigProto(allow_soft_placement=True, log_device_placement=False) session_config.gpu_options.allow_growth = True mse_list = [] # directory setup if not _checkpoint_exist(args.checkpoint_stage1): raise Exception('checkpoint not found at %s' % args.checkpoint_stage1) if not _checkpoint_exist(args.checkpoint_stage1): raise Exception('checkpoint not found at %s' % args.checkpoint_stage2) # start session with tf.Session(config=session_config) as sess: # import dataset test_loader = SequenceDataLoader(data_dir, 'test', n_points=n_points, n_action=n_action, random_order=False, randomness=False, with_image_seq=True) test_dataset = test_loader.get_dataset(batch_size, repeat=False, shuffle=False, num_preprocess_threads=12) # setup inputs training_pl = tf.placeholder(tf.bool) handle_pl = tf.placeholder(tf.string, shape=[]) base_iterator = tf.data.Iterator.from_string_handle(handle_pl, test_dataset.output_types, test_dataset.output_shapes) inputs = base_iterator.get_next() # initializing models model = FinalModel(config) print('model initialized') model.build(inputs) # variables initialization tf.logging.set_verbosity(tf.logging.INFO) global_init = tf.global_variables_initializer() local_init = tf.local_variables_initializer() sess.run([global_init, local_init]) # data iterator initialization test_iterator = test_dataset.make_initializable_iterator() test_handle = sess.run(test_iterator.string_handle()) # checkpoint restoration model.restore(sess, args.checkpoint_stage1) model.restore(sess, args.checkpoint_stage2) # iterator initialization sess.run(test_iterator.initializer) # running on test dataset sample_idx = 0 n_iters = utils.training.get_n_iterations(test_loader.length(), batch_size) feed_dict = {handle_pl: test_handle, training_pl: False} for j in range(90): min_mse = 1.0 for s in range(20): outputs = model.run(sess, feed_dict) cur_mse = np.mean(np.abs(outputs['fut_pt_raw'] - outputs['real_seq'])) if cur_mse < min_mse: min_mse = cur_mse # saving outputs outputs_im = outputs['im'] outputs_real_im_seq = outputs['real_im_seq'] outputs_pred_im_seq = outputs['pred_im_seq'] # print(outputs['z'][0,:10]) outputs_mask = outputs['mask'] outputs_pred_im_crude = outputs['pred_im_crude'] outputs_current_points = outputs['current_points'] outputs_future_points = outputs['future_points'] batch_dim = outputs['im'].shape[0] for batch_idx in range(batch_dim): sample_save_dir = osp.join(args.save_dir, '%04d' % sample_idx) utils.touch_dir(sample_save_dir) _save_img(osp.join(sample_save_dir, 'input_im.png'), outputs_im[batch_idx], rescale=True) _save_img(osp.join(sample_save_dir, 'current_points.png'), outputs_current_points[batch_idx], rescale=False) _save_img_sequence(osp.join(sample_save_dir, 'real_seq'), outputs_real_im_seq[batch_idx], rescale=True) _save_img_sequence(osp.join(sample_save_dir, 'pred_seq'), outputs_pred_im_seq[batch_idx], rescale=True) _save_img_sequence(osp.join(sample_save_dir, 'mask'), outputs_mask[batch_idx], rescale=False) _save_img_sequence(osp.join(sample_save_dir, 'crude'), outputs_pred_im_crude[batch_idx], rescale=False) _save_img_sequence(osp.join(sample_save_dir, 'crude'), outputs_pred_im_crude[batch_idx], rescale=True) _save_img_sequence(osp.join(sample_save_dir, 'pred_points'), outputs_future_points[batch_idx], rescale=False) # next sample idx pass sample_idx += 1 print(j, min_mse) pass print('iteration through test set finished') # return np.array(mse_list) pass
print('**** Train has ', len(files_list)) save_dir = os.path.join(save_dir, 'train') max_num_tuplex = 2000 ##200000 elif (current_subset == const.Subset.VAL.value): files_list = utils.txt_read( os.path.join(dataset_path + '_lists', 'vallist.txt')) print('**** Val has ', len(files_list)) save_dir = os.path.join(save_dir, 'val') max_num_tuplex = 100 ## 20000 elif (current_subset == const.Subset.TEST.value): files_list = utils.txt_read( os.path.join(dataset_path + '_lists', 'testlist.txt')) print('*** Test has ', len(files_list)) save_dir = os.path.join(save_dir, 'test') utils.touch_dir(save_dir) tuple_idx = 0 tuple_idx = max(0, utils.last_tuple_idx(save_dir) - 5) ## As caution, regenerate last 5 tuples activity_list = sorted(utils.get_dirs(dataset_path)) print('activity_list ', len(activity_list), activity_list) lbls_file = os.path.join(save_dir, 'lbl.pkl') if (tuple_idx == 0): lbls_ary = np.ones(max_num_tuplex, dtype=np.int32) * -1 ## Invalid Activity else: lbls_ary = utils.pkl_read(lbls_file) tuple_idx = 0
def main(): parser = ArgumentParser() parser.add_argument('--config', type=str, required=True, help='path of the configuration file') parser.add_argument('--checkpoint', type=str, required=True, help='path of the pretrained keypoints detector') args = parser.parse_args() config = utils.load_config(args.config) paths_config = config['paths'] data_dir = paths_config['data_dir'] batch_size = 1 keypoints_root_dir = osp.join(data_dir, 'pseudo_labels') session_config = tf.ConfigProto(allow_soft_placement=True, log_device_placement=False) session_config.gpu_options.allow_growth = True # directory setup utils.touch_dir(keypoints_root_dir) if not tf.gfile.Exists(args.checkpoint) and not tf.gfile.Exists(args.checkpoint + '.index'): raise Exception('checkpoint not found at %s' % args.checkpoint) # start session with tf.Session(config=session_config) as sess: # import dataset train_loader = KeypointDataLoader(data_dir, 'train') test_loader = KeypointDataLoader(data_dir, 'test') train_dataset = train_loader.get_dataset(batch_size, repeat=False, shuffle=False, num_preprocess_threads=12) test_dataset = test_loader.get_dataset(batch_size, repeat=False, shuffle=False, num_preprocess_threads=12) # setup inputs training_pl = tf.placeholder(tf.bool) handle_pl = tf.placeholder(tf.string, shape=[]) base_iterator = tf.data.Iterator.from_string_handle(handle_pl, train_dataset.output_types, train_dataset.output_shapes) inputs = base_iterator.get_next() # initializing models model = KeypointModel(config) print('model initialized') model.build(inputs) # variables initialization tf.logging.set_verbosity(tf.logging.INFO) global_init = tf.global_variables_initializer() local_init = tf.local_variables_initializer() sess.run([global_init, local_init]) # data iterator initialization train_iterator = train_dataset.make_initializable_iterator() test_iterator = test_dataset.make_initializable_iterator() train_handle = sess.run(train_iterator.string_handle()) test_handle = sess.run(test_iterator.string_handle()) # checkpoint restoration model.restore(sess, args.checkpoint) # iterator initialization sess.run(train_iterator.initializer) sess.run(test_iterator.initializer) # running on train dataset n_iters = utils.training.get_n_iterations(train_loader.length(), batch_size) feed_dict = {handle_pl: train_handle, training_pl: False} for _ in range(n_iters): outputs = model.run(sess, feed_dict) _save_output(keypoints_root_dir, outputs) pass print('iteration through train set finished') # running on test dataset n_iters = utils.training.get_n_iterations(test_loader.length(), batch_size) feed_dict = {handle_pl: test_handle, training_pl: False} for _ in range(n_iters): outputs = model.run(sess, feed_dict) _save_output(keypoints_root_dir, outputs) pass print('iteration through test set finished') pass