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() |