Spaces:
Running
on
Zero
Running
on
Zero
| import os | |
| import multiprocessing as mp | |
| import csv | |
| import argparse | |
| def process_video(video_path, gpu_id, save_folder, args): | |
| os.system(f'sh ./benchmark/demo.sh {video_path} {gpu_id} {int(args.process_length)} {args.saved_root} {save_folder} {args.overlap} {args.dataset}') | |
| if __name__ == '__main__': | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument('--meta_path', type=str) | |
| parser.add_argument('--saved_dataset_folder', type=str) | |
| parser.add_argument('--saved_root', type=str, default="./output") | |
| parser.add_argument('--input_rgb_root', type=str) | |
| parser.add_argument('--process_length', type=int, default=110) | |
| parser.add_argument('--gpus', type=str, default="0,1,2,3") | |
| parser.add_argument('--overlap', type=int, default=1) | |
| parser.add_argument('--dataset', type=str, default="open") | |
| args = parser.parse_args() | |
| gpus = args.gpus.strip().split(',') | |
| with open(args.meta_path, mode="r", encoding="utf-8") as csvfile: | |
| csv_reader = csv.DictReader(csvfile) | |
| test_samples = list(csv_reader) | |
| batch_size = len(gpus) | |
| video_batches = [test_samples[i:i+batch_size] for i in range(0, len(test_samples), batch_size)] | |
| print("gpus+++: ", gpus) | |
| processes = [] | |
| for video_batch in video_batches: | |
| for i, sample in enumerate(video_batch): | |
| video_path = os.path.join(args.input_rgb_root, sample["filepath_left"]) | |
| save_folder = os.path.join(args.saved_dataset_folder, os.path.dirname(sample["filepath_left"])) | |
| gpu_id = gpus[i % len(gpus)] | |
| p = mp.Process(target=process_video, args=(video_path, gpu_id, save_folder, args)) | |
| p.start() | |
| processes.append(p) | |
| for p in processes: | |
| p.join() |