in src/transformers/data/datasets/kinetics_datasets.py [0:0]
def loadvideo_test_decord(self, sample):
fname = '{}'.format(self.video_dir) + sample
if not (os.path.exists(fname)):
print("Video not found: ", fname)
return []
# avoid hanging issue
if os.path.getsize(fname) < 1 * 1024:
print('SKIP: ', fname, " - ", os.path.getsize(fname))
return []
try:
vr = VideoReader(fname, ctx=cpu(0))
except:
print("Video cannot be loaded by decord: ", fname)
return []
converted_len = int(self.clip_len * self.frame_sample_rate)
num_frames = len(vr)
if num_frames < converted_len:
indices = np.zeros((self.test_num_segment,))
else:
tick = (num_frames - converted_len + 1) / float(self.test_num_segment)
indices = np.array([int(tick * x) for x in range(self.test_num_segment)])
frame_id_list = []
for seg_ind in indices:
offset = int(seg_ind)
for i, _ in enumerate(range(0, converted_len, self.frame_sample_rate)):
frame_id = offset
frame_id_list.append(frame_id)
if offset + self.frame_sample_rate < num_frames:
offset += self.frame_sample_rate
video_data = vr.get_batch(frame_id_list).asnumpy()
buffer = [video_data[vid, :, :, :] for vid, _ in enumerate(frame_id_list)]
return buffer