MoTIF / save_videos.py
P4ddyki's picture
Upload folder using huggingface_hub
3cf4fff verified
import os
import glob
from collections import defaultdict
import cv2
import torch
from transformers import CLIPProcessor, CLIPModel
from tqdm import tqdm
from utils.video_utils import *
def create_videos(dataset, p0):
video_path = f"./Datasets/{dataset}/Data/"
if dataset == "Breakfast":
if p0 == 0:
p0 == 55
create_images_breakfast(video_path, p0)
create_videos_breakfast(video_path, p0)
elif dataset == "UCF101":
ucf_test_list = "./Datasets/UCF101/ucfTrainTestlist/testlist01.txt" # number of test list
create_images_ucf(video_path, ucf_test_list)
create_videos_ucf(video_path, ucf_test_list)
ucf_test_list = "./Datasets/UCF101/ucfTrainTestlist/testlist02.txt" # number of test list
create_images_ucf(video_path, ucf_test_list)
create_videos_ucf(video_path, ucf_test_list)
ucf_test_list = "./Datasets/UCF101/ucfTrainTestlist/testlist03.txt" # number of test list
create_images_ucf(video_path, ucf_test_list)
create_videos_ucf(video_path, ucf_test_list)
elif dataset == "HMDB":
labels_path = "./Datasets/HMDB/testTrainMulti_7030_splits/"
path_text_dirs = glob.glob(os.path.join(labels_path, "*.txt"))
idx_test_list = 1 # id of test set
path_text_dirs_idx = [i for i in path_text_dirs if f"split{idx_test_list}" in i]
# sort the paths to ensure consistent order
path_text_dirs_idx.sort()
test_dirs = []
train_dirs = []
ignore_dirs = []
labels = []
for path in path_text_dirs_idx:
folder_name = path.split("splits")[1]
folder_name = folder_name.split("_test")[0]
labels.append(folder_name.strip("/").replace("_", " "))
with open(path, "r") as local_text:
lines = local_text.readlines()
for line in lines:
parts = line.strip().split()
if len(parts) < 2:
continue # skip malformed lines
filename, split = parts[0], parts[1]
filename = os.path.join(folder_name,filename)
filename = os.path.join(folder_name, filename)
if split == "1":
train_dirs.append(filename)
elif split == "2":
test_dirs.append(filename)
else:
ignore_dirs.append(filename)
create_images_hmdb(video_path, test_dirs)
create_videos_hmdb(video_path, test_dirs)
create_images_hmdb(video_path, train_dirs)
create_videos_hmdb(video_path, train_dirs)
create_images_hmdb(video_path, ignore_dirs)
create_videos_hmdb(video_path, ignore_dirs)
if dataset == "Something2":
test_path = "./Datasets/Something2/labels/test.json"
test_ids = pd.read_json(test_path).values.tolist()
test_ids = [i[0] for i in test_ids]
create_images_sth2(video_path, test_ids)
create_videos_sth2(video_path, test_ids)
train_path = "./Datasets/Something2/labels/train.json"
train_ids = pd.read_json(train_path).values.tolist()
train_ids = [i[0] for i in train_ids]
create_images_sth2(video_path, train_ids)
create_videos_sth2(video_path, train_ids)
val_path = "./Datasets/Something2/labels/validation.json"
val_ids = pd.read_json(val_path).values.tolist()
val_ids = [i[0] for i in val_ids]
create_images_sth2(video_path, val_ids)
create_videos_sth2(video_path, val_ids)
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Create video embeddings for a dataset")
parser.add_argument("--dataset", type=str, default="Breakfast", help="Dataset name")
parser.add_argument("--p0", type=int, default=0, help="Number of parts to process")
args = parser.parse_args()
create_videos(
dataset = args.dataset,
p0 = args.p0
)