借鉴的是C3D。
删了一大堆没用的东西,只保留了数据读取。
原本还有一堆代码是用来将视频转图片的,自己有数据集就不需要了。
视频转图片完全可以自己写,不需要放在这部分。。
原来版本可以看这个博主的
https://blog.csdn.net/IT_charge/article/details/121289061?spm=1001.2014.3001.5506
import os
import torch
import cv2
import numpy as np
from torch.utils.data import Dataset
class VideoDataset(Dataset):
def __init__(self, split='train', clip_len=16):
self.output_dir = 'data/ucf101' #图片文件夹
folder = os.path.join(self.output_dir, split)
self.clip_len = clip_len
self.split = split
self.crop_size = 112
self.fnames, labels = [], []#视频名字和标签fake/real
for label in sorted(os.listdir(folder)):
for fname in os.listdir(os.path.join(folder, label)):
self.fnames.append(os.path.join(folder, label, fname))
labels.append(label)
assert len(labels) == len(self.fnames)
print('Number of {} videos: {:d}'.format(split, len(self.fnames)))
# 准备标签名称(字符串)和索引(整数)之间的映射
self.label2index = {
label: index for index, label in enumerate(sorted(set(labels)))