DepthCrafter / benchmark /infer /infer_batch.py
X-GAO
[Add] dataset creation, infer, eval
916d528 unverified
raw
history blame
1.78 kB
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()