def dump_frames(vid_item): from gluoncv.utils.filesystem import try_import_mmcv mmcv = try_import_mmcv() full_path, vid_path, vid_id = vid_item vid_name = vid_path.split('.')[0] out_full_path = osp.join(args.out_dir, vid_name) try: os.mkdir(out_full_path) except OSError: pass vr = mmcv.VideoReader(full_path) for i in range(len(vr)): if vr[i] is not None: if args.new_width > 0 and args.new_height > 0: cur_img = mmcv.imresize(vr[i], (args.new_width, args.new_height)) else: cur_img = vr[i] mmcv.imwrite( cur_img, '{}/img_{:05d}.jpg'.format(out_full_path, i + 1)) else: print('[Warning] length inconsistent!' 'Early stop with {} out of {} frames'.format(i + 1, len(vr))) break print('{} done with {} frames'.format(vid_name, len(vr))) sys.stdout.flush() return True
def __init__( self, root_bgs=os.path.expanduser( '/media/hp/data/BGSDecom/FrameDifference/bgs'), root_fgs=os.path.expanduser( '/media/hp/data/BGSDecom/FrameDifference/fgs'), setting=os.path. expanduser( '/home/hp/.mxnet/datasets/ucf101/ucfTrainTestlist/ucf101_train_split_2_rawframes.txt' ), train=True, test_mode=False, name_pattern='img_%05d.jpg', video_ext='mp4', is_color=True, modality='rgb', num_segments_bgs=1, num_segments_fgs=1, new_length_bgs=1, new_length_fgs=5, new_step_bgs=1, new_step_fgs=1, new_width=340, new_height=256, target_width=224, target_height=224, temporal_jitter=False, video_loader=False, use_decord=False, transform=None): super(UCF101_2stream, self).__init__() from gluoncv.utils.filesystem import try_import_cv2, try_import_decord, try_import_mmcv self.cv2 = try_import_cv2() self.root_bgs = root_bgs self.root_fgs = root_fgs self.setting = setting self.train = train self.test_mode = test_mode self.is_color = is_color self.modality = modality self.num_segments_bgs = num_segments_bgs self.num_segments_fgs = num_segments_fgs self.new_height = new_height self.new_width = new_width self.new_length_fgs = new_length_fgs self.new_length_bgs = new_length_bgs self.new_step_bgs = new_step_bgs self.new_step_fgs = new_step_fgs self.skip_length_bgs = self.new_length_bgs * self.new_step_bgs self.skip_length_fgs = self.new_length_fgs * self.new_step_fgs self.target_height = target_height self.target_width = target_width self.transform = transform self.temporal_jitter = temporal_jitter # False self.video_loader = video_loader self.video_ext = video_ext self.use_decord = use_decord if self.video_loader: if self.use_decord: self.decord = try_import_decord() else: self.mmcv = try_import_mmcv() # self.classes, self.class_to_idx = self._find_classes(root) self.clips = self._make_dataset(root_bgs, root_fgs, setting) if len(self.clips) == 0: raise (RuntimeError("Found 0 video clips in subfolders of: " + root_bgs + "\n" "Check your data directory (opt.data-dir).")) if name_pattern: self.name_pattern = name_pattern else: if self.modality == "rgb": self.name_pattern = "img_%05d.jpg" elif self.modality == "flow": self.name_pattern = "flow_%s_%05d.jpg"
def __init__(self, root, setting, train=True, test_mode=False, name_pattern='img_%05d.jpg', video_ext='mp4', is_color=True, modality='rgb', num_segments=1, num_crop=1, new_length=1, new_step=1, new_width=340, new_height=256, target_width=224, target_height=224, temporal_jitter=False, video_loader=False, use_decord=False, slowfast=False, slow_temporal_stride=16, fast_temporal_stride=2, data_aug='v1', lazy_init=False, transform=None): super(VideoClsCustom, self).__init__() from gluoncv.utils.filesystem import try_import_cv2, try_import_decord, try_import_mmcv self.cv2 = try_import_cv2() self.root = root self.setting = setting self.train = train self.test_mode = test_mode self.is_color = is_color self.modality = modality self.num_segments = num_segments self.num_crop = num_crop self.new_height = new_height self.new_width = new_width self.new_length = new_length self.new_step = new_step self.skip_length = self.new_length * self.new_step self.target_height = target_height self.target_width = target_width self.transform = transform self.temporal_jitter = temporal_jitter self.name_pattern = name_pattern self.video_loader = video_loader self.video_ext = video_ext self.use_decord = use_decord self.slowfast = slowfast self.slow_temporal_stride = slow_temporal_stride self.fast_temporal_stride = fast_temporal_stride self.data_aug = data_aug self.lazy_init = lazy_init if self.slowfast: assert slow_temporal_stride % fast_temporal_stride == 0, 'slow_temporal_stride needs to be multiples of slow_temporal_stride, please set it accordinly.' assert not temporal_jitter, 'Slowfast dataloader does not support temporal jitter. Please set temporal_jitter=False.' assert new_step == 1, 'Slowfast dataloader only support consecutive frames reading, please set new_step=1.' if self.video_loader: if self.use_decord: self.decord = try_import_decord() else: self.mmcv = try_import_mmcv() if not self.lazy_init: self.clips = self._make_dataset(root, setting) if len(self.clips) == 0: raise ( RuntimeError("Found 0 video clips in subfolders of: " + root + "\n" "Check your data directory (opt.data-dir)."))