File size: 1,776 Bytes
916d528
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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()