Action-Net(CVPR2021)
- 论文中给出了三个数据集的测试精度,sth-sthV2,jester,egogesture.
其数据加载方式利用了作者构造的.pkl文件; - 要想要在UCF101,HMDB51上训练测试精度,有两种方法:
(1)改写代码
(2)构造ucf101和hmdb51数据集的.pkl文件
本文将附上方法(1)的实现步骤及代码,以ucf101为例:
- 首先,在
train.py
中,需要在所有涉及到数据加载的地方加上ucf101以及hmdb51的选项;
- 在
./ACTION-Net/data/
下构造dataset_ucf101.py
,函数load_video代码见下,其余部分与其他数据集的加载相同;
root = './datasets/UCF101_org/'#ucf101数据集文件夹,包含annotions,rawframes
annot_path = 'ucf101_splits_101'#包含annotions的文件夹
rawframe_path = '/data1/han_wu/datasets/UCF101_org/ucf101_rawframes'
def load_video(annot_path, mode):
# mode: train, val, test
txt_file=os.path.join(annot_path,'ucf101_{}_split_1_rgb.txt'.format(mode))
video_names =[]
frame_nums = []
labels = []
file = open(txt_file,'r')
for content in file.readlines():
video_names.append(content.strip('').split(" ")[0])
frame_nums.append(content.strip('').split(" ")[1])
labels.append(content.strip('\n').split(" ")[2])
#print("video,frames,label:",video_names,frame_nums,labels)
rgb_samples = []
for video_name in video_names:
video_path = os.path.join(rawframe_path,video_name)
rgb_list = []
for num in os.listdir(video_path):
frame_path = os.path.join(video_path,num)
rgb_list.append(frame_path)
rgb_samples.append(sorted(rgb_list))
print('{}: {} videos have been loaded'.format(mode, len(rgb_samples)))
return rgb_samples, labels
- 至此,运行action-net训练指令,即可将ucf101作为数据训练模型。