Пример #1
0
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
Пример #2
0
    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)."))