|
import torch |
|
import os |
|
from vbench import VBench |
|
from datetime import datetime |
|
|
|
import argparse |
|
|
|
def parse_args(): |
|
|
|
CUR_DIR = os.path.dirname(os.path.abspath(__file__)) |
|
parser = argparse.ArgumentParser(description='VBench') |
|
parser.add_argument( |
|
"--output_path", |
|
type=str, |
|
default='./evaluation_results/', |
|
help="output path to save the evaluation results", |
|
) |
|
parser.add_argument( |
|
"--full_json_dir", |
|
type=str, |
|
default=f'{CUR_DIR}/vbench/VBench_full_info.json', |
|
help="path to save the json file that contains the prompt and dimension information", |
|
) |
|
parser.add_argument( |
|
"--videos_path", |
|
type=str, |
|
required=True, |
|
help="folder that contains the sampled videos", |
|
) |
|
parser.add_argument( |
|
"--dimension", |
|
nargs='+', |
|
required=True, |
|
help="list of evaluation dimensions, usage: --dimension <dim_1> <dim_2>", |
|
) |
|
parser.add_argument( |
|
"--load_ckpt_from_local", |
|
type=bool, |
|
required=False, |
|
help="whether load checkpoints from local default paths (assuming you have downloaded the checkpoints locally", |
|
) |
|
parser.add_argument( |
|
"--read_frame", |
|
type=bool, |
|
required=False, |
|
help="whether directly read frames, or directly read videos", |
|
) |
|
parser.add_argument( |
|
"--custom_input", |
|
action="store_true", |
|
required=False, |
|
help="whether use custom input prompt or vbench prompt" |
|
) |
|
parser.add_argument( |
|
"--output_filename", |
|
type=str, |
|
required=True, |
|
help="filename before _full_info or _eval_results", |
|
) |
|
args = parser.parse_args() |
|
return args |
|
|
|
|
|
def main(): |
|
args = parse_args() |
|
print(f'args: {args}') |
|
|
|
device = torch.device("cuda") |
|
my_VBench = VBench(device, args.full_json_dir, args.output_path) |
|
|
|
print(f'start evaluation') |
|
|
|
my_VBench.evaluate( |
|
videos_path = args.videos_path, |
|
name = args.output_filename, |
|
dimension_list = args.dimension, |
|
local=args.load_ckpt_from_local, |
|
read_frame=args.read_frame, |
|
custom_prompt=args.custom_input, |
|
) |
|
print('done') |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
|
|