RuiRuiHigh
Initial Hyperion MT deepfake detector upload
acb3a72
Raw
History Blame Contribute Delete
2.19 kB
"""
Copyright 2024 Johns Hopkins University (Author: Jesus Villalba)
Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
"""
import logging
from pathlib import Path
import numpy as np
import pandas as pd
from .info_table import InfoTable
# import torchvision
class ImageSet(InfoTable):
def __init__(self, df):
super().__init__(df)
assert "storage_path" in df
# @staticmethod
# def _get_durations(videos, i, n):
# videos = videos.split(i, n)
# durations = []
# fss = []
# fpss = []
# for i, video in videos.iterrows():
# reader = torchvision.io.VideoReader(video["storage_path"], "video")
# # The information about the video can be retrieved using the
# # `get_metadata()` method. It returns a dictionary for every stream, with
# # duration and other relevant metadata (often frame rate)
# reader_md = reader.get_metadata()
# # metadata is structured as a dict of dicts with following structure
# # {"stream_type": {"attribute": [attribute per stream]}}
# #
# # following would print out the list of frame rates for every present video stream
# print(reader_md)
# return fss, fpss, durations
# def get_durations(self, num_threads: int = 16):
# import itertools
# from concurrent.futures import ThreadPoolExecutor
# from tqdm import tqdm
# futures = []
# num_threads = min(num_threads, len(self.df))
# logging.info("submitting threats...")
# with ThreadPoolExecutor(max_workers=num_threads) as pool:
# for i in tqdm(range(num_threads)):
# future = pool.submit(VideoSet._get_durations, self, i, num_threads)
# futures.append(future)
# logging.info("waiting threats...")
# res = [f.result() for f in tqdm(futures)]
# fss = list(itertools.chain(*[r[0] for r in res]))
# durations = list(itertools.chain(*[r[1] for r in res]))
# self.df["duration"] = durations
# self.df["sample_freq"] = fss
# self.df["fps"] = fpss