diff --git a/eval/cal_fvd.py b/eval/cal_fvd.py deleted file mode 100644 index 949b773..0000000 --- a/eval/cal_fvd.py +++ /dev/null @@ -1,89 +0,0 @@ -import numpy as np -import torch -from tqdm import tqdm - -def trans(x): # requires video to be BCTHW - # if greyscale images add channel - if x.shape[-3] == 1: - x = x.repeat(1, 1, 3, 1, 1) - - # permute BTCHW -> BCTHW - x = x.permute(0, 2, 1, 3, 4) - - return x - - -def calculate_fvd(videos1, videos2, device, method='styleganv'): - - if method == 'styleganv': - from fvd.styleganv.fvd import get_fvd_feats, frechet_distance, load_i3d_pretrained - elif method == 'videogpt': - from fvd.videogpt.fvd import load_i3d_pretrained - from fvd.videogpt.fvd import get_fvd_logits as get_fvd_feats - from fvd.videogpt.fvd import frechet_distance - - print("calculate_fvd...") - - # videos [batch_size, timestamps, channel, h, w] - - assert videos1.shape == videos2.shape - - i3d = load_i3d_pretrained(device=device) - fvd_results = [] - - # support grayscale input, if grayscale -> channel*3 - # BTCHW -> BCTHW - # videos -> [batch_size, channel, timestamps, h, w] - - videos1 = trans(videos1) - videos2 = trans(videos2) - - fvd_results = {} - - - # for calculate FVD, each clip_timestamp must >= 10 - for clip_timestamp in tqdm(range(10, videos1.shape[-3]+1)): - - # get a video clip - # videos_clip [batch_size, channel, timestamps[:clip], h, w] - videos_clip1 = videos1[:, :, : clip_timestamp] - videos_clip2 = videos2[:, :, : clip_timestamp] - - breakpoint() - # get FVD features - feats1 = get_fvd_feats(videos_clip1, i3d=i3d, device=device) - feats2 = get_fvd_feats(videos_clip2, i3d=i3d, device=device) - - breakpoint() - # calculate FVD when timestamps[:clip] - fvd_results[clip_timestamp] = frechet_distance(feats1, feats2) - - result = { - "value": fvd_results, - "video_setting": videos1.shape, - "video_setting_name": "batch_size, channel, time, heigth, width", - } - - return result - -# test code / using example - -def main(): - NUMBER_OF_VIDEOS = 8 - VIDEO_LENGTH = 50 - CHANNEL = 3 - SIZE = 64 - videos1 = torch.zeros(NUMBER_OF_VIDEOS, VIDEO_LENGTH, CHANNEL, SIZE, SIZE, requires_grad=False) - videos2 = torch.ones(NUMBER_OF_VIDEOS, VIDEO_LENGTH, CHANNEL, SIZE, SIZE, requires_grad=False) - device = torch.device("cuda") - # device = torch.device("cpu") - - import json - result = calculate_fvd(videos1, videos2, device, method='videogpt') - print(json.dumps(result, indent=4)) - - result = calculate_fvd(videos1, videos2, device, method='styleganv') - print(json.dumps(result, indent=4)) - -if __name__ == "__main__": - main() diff --git a/eval/cal_flolpips.py b/eval/vae/cal_flolpips.py similarity index 100% rename from eval/cal_flolpips.py rename to eval/vae/cal_flolpips.py diff --git a/eval/cal_lpips.py b/eval/vae/cal_lpips.py similarity index 100% rename from eval/cal_lpips.py rename to eval/vae/cal_lpips.py diff --git a/eval/cal_psnr.py b/eval/vae/cal_psnr.py similarity index 100% rename from eval/cal_psnr.py rename to eval/vae/cal_psnr.py diff --git a/eval/cal_ssim.py b/eval/vae/cal_ssim.py similarity index 100% rename from eval/cal_ssim.py rename to eval/vae/cal_ssim.py diff --git a/eval/eval_common_metric.py b/eval/vae/eval_common_metric.py similarity index 99% rename from eval/eval_common_metric.py rename to eval/vae/eval_common_metric.py index 746dc7a..5ca4b80 100644 --- a/eval/eval_common_metric.py +++ b/eval/vae/eval_common_metric.py @@ -44,7 +44,7 @@ import sys sys.path.append(".") from cal_lpips import calculate_lpips from cal_psnr import calculate_psnr -# from cal_flolpips import calculate_flolpips +from cal_flolpips import calculate_flolpips from cal_ssim import calculate_ssim try: diff --git a/eval/flolpips/correlation/correlation.py b/eval/vae/flolpips/correlation/correlation.py similarity index 100% rename from eval/flolpips/correlation/correlation.py rename to eval/vae/flolpips/correlation/correlation.py diff --git a/eval/flolpips/flolpips.py b/eval/vae/flolpips/flolpips.py similarity index 100% rename from eval/flolpips/flolpips.py rename to eval/vae/flolpips/flolpips.py diff --git a/eval/flolpips/pretrained_networks.py b/eval/vae/flolpips/pretrained_networks.py similarity index 100% rename from eval/flolpips/pretrained_networks.py rename to eval/vae/flolpips/pretrained_networks.py diff --git a/eval/flolpips/pwcnet.py b/eval/vae/flolpips/pwcnet.py similarity index 100% rename from eval/flolpips/pwcnet.py rename to eval/vae/flolpips/pwcnet.py diff --git a/eval/flolpips/utils.py b/eval/vae/flolpips/utils.py similarity index 100% rename from eval/flolpips/utils.py rename to eval/vae/flolpips/utils.py diff --git a/eval/script/cal_lpips.sh b/eval/vae/script/cal_lpips.sh similarity index 100% rename from eval/script/cal_lpips.sh rename to eval/vae/script/cal_lpips.sh diff --git a/eval/script/cal_psnr.sh b/eval/vae/script/cal_psnr.sh similarity index 100% rename from eval/script/cal_psnr.sh rename to eval/vae/script/cal_psnr.sh diff --git a/eval/script/cal_ssim.sh b/eval/vae/script/cal_ssim.sh similarity index 100% rename from eval/script/cal_ssim.sh rename to eval/vae/script/cal_ssim.sh diff --git a/eval/script/eval.sh b/eval/vae/script/eval.sh similarity index 100% rename from eval/script/eval.sh rename to eval/vae/script/eval.sh