def test_constructor_with_valid_parameters_pointing_a_image_instead_a_video(
         self):
     base_path = TestUtils.get_resources_path()
     name = 'todo_nexus'
     extension = '.mov'
     video_access = VideoAccess(base_path, name, extension)
     self.assertRaises(IOError, lambda: video_access.load())
 def test_constructor_with_valid_parameters(self):
     base_path = TestUtils.get_resources_path()
     name = 'video'
     extension = '.mov'
     video_access = VideoAccess(base_path, name, extension)
     dict_images = video_access.load()
     self.assertEqual(len(dict_images), 6)
     self.assertTrue(isinstance(video_access, VideoAccess))
    def test_constructor_with_valid_parameters_but_pointing_no_video_folder(
            self):
        base_path = TestUtils.get_resources_path() + '/..'
        name = 'bob'
        extension = '.mov'

        video_access = VideoAccess(base_path, name, extension)

        self.assertRaises(IOError, lambda: video_access.load())
    def test_constructor_with_valid_parameters_with_setter_access_modifier(
            self, dummy_dict_images=dummy_dict_images):
        base_path = TestUtils.get_resources_path()
        name = 'video'
        extension = '.mov'

        video_access = VideoAccess(base_path, name, extension)
        video_access.set_access_modifier(AccessModifier())
        dict_images = video_access.load()

        AccessModifier.run.assert_called_once()

        self.assertEqual(dict_images, dummy_dict_images)
    def test_constructor_with_wrong_base_path_and_name(self):
        base_path = TestUtils.get_resources_path()
        name = ''
        extension = '.avi'

        self.assertRaises(IOError,
                          lambda: VideoAccess(base_path, name, extension))
    def test_constructor_with_wrong_base_path(self):
        base_path = ''
        name = 'access01'
        extension = '.mov'

        self.assertRaises(IOError,
                          lambda: VideoAccess(base_path, name, extension))
    def get_all_accesses(self, access_modifier=AccessModifier()):
        if not self.dict_all_accesses:
            self.dict_all_accesses = {'Train': [], 'Dev': [], 'Test': []}

            for root, dirs, files in os.walk(self.base_path):
                if not dirs:
                    for f in files:
                        if f.lower().endswith(('.mov', '.mp4')):
                            basename, extension = os.path.splitext(f)
                            split_path = os.path.normpath(root).split(
                                os.path.sep)
                            relative_path = os.path.join(*split_path[-3:])
                            subject = int(basename.split('-')[0])
                            original_subset = split_path[-3]

                            if original_subset == 'Train' and subject in SIW_USERS_PER_SUBSET[
                                    'Dev']:
                                subset = 'Dev'
                            else:
                                subset = original_subset

                            self.dict_all_accesses[subset].append(
                                VideoAccess(self.base_path,
                                            os.path.join(
                                                relative_path, basename),
                                            extension,
                                            access_modifier=access_modifier,
                                            annotation_base_path=self.
                                            annotation_base_path,
                                            database_name=SiwDatabase.name()))

            for subset, list_accesses in self.dict_all_accesses.items():
                list_accesses.sort(key=lambda x: x.name)

        return self.dict_all_accesses
def get_common_face_resolution(access):
    ied_all_frames = []

    try:
        dict_keyframes_annotations = VideoAccess.read_mtcnn_annotations(
            access + '.h5')
    except IOError:
        print('Unable to find mtcnn annotations for access {}'.format(access))
        return -1

    for keyframe in dict_keyframes_annotations:
        left_eye = (dict_keyframes_annotations[keyframe][4],
                    dict_keyframes_annotations[keyframe][5])
        right_eye = (dict_keyframes_annotations[keyframe][6],
                     dict_keyframes_annotations[keyframe][7])
        dy = right_eye[1] - left_eye[1]
        dx = right_eye[0] - left_eye[0]
        ied = int(np.sqrt((dx**2) + (dy**2)))
        ied_all_frames.append(ied)

    mean_access_iec = sum(ied_all_frames) / len(ied_all_frames)

    if mean_access_iec < 120.0:  # ISO-IEC 19745-5
        common_face_resolution = COMMON_FACE_RESOLUTION_CATEGORISATION[
            'small_face']

    elif mean_access_iec > 240.0:
        common_face_resolution = COMMON_FACE_RESOLUTION_CATEGORISATION[
            'big_face']

    else:
        common_face_resolution = COMMON_FACE_RESOLUTION_CATEGORISATION[
            'medium_face']

    return common_face_resolution
    def test_constructor_with_valid_parameters_but_pointing_no_video_folder(
            self):
        base_path = TestUtils.get_resources_path()
        name = 'video'
        extension = '.mov'
        access_modifier = None

        self.assertRaises(
            TypeError,
            lambda: VideoAccess(base_path, name, extension, access_modifier))
Exemplo n.º 10
0
    def get_enrolment_access(self, access_modifier=AccessModifier()):
        list_accesses = []
        objects = self.db.objects(cls='enroll')

        for access in objects:
            path, extension = os.path.splitext(access.videofile())
            list_accesses.append(
                VideoAccess(self.base_path,
                            path,
                            extension,
                            access_modifier=access_modifier,
                            annotation_base_path=self.annotation_base_path))

        list_accesses.sort(key=lambda x: x.name)
        return list_accesses
    def get_enrolment_access(self, access_modifier=AccessModifier()):
        list_accesses = []
        objects = self.db.objects(cls='enroll')
        for access in objects:
            rotation_rule = self.get_rotation_rule(access)
            path, extension = os.path.splitext(access.videofile())
            list_accesses.append(
                VideoAccess(self.base_path,
                            path,
                            extension,
                            access_modifier=access_modifier,
                            rotation_rule=rotation_rule,
                            annotation_base_path=self.annotation_base_path,
                            database_name=ReplayMobileDatabase.name()))

        list_accesses.sort(key=lambda x: x.name)
        return list_accesses
Exemplo n.º 12
0
    def __get_accesses_from_subset(self, subset, access_modifier):
        list_accesses = []
        objects = self.db.objects(groups=subset)
        objects = self.filter_objects(objects)
        for access in objects:
            rotation_rule = self.get_rotation_rule(access)
            path, extension = os.path.splitext(access.videofile())
            list_accesses.append(
                VideoAccess(self.base_path,
                            path,
                            extension,
                            access_modifier=access_modifier,
                            rotation_rule=rotation_rule,
                            annotation_base_path=self.annotation_base_path,
                            database_name=ReplayMobileDatabaseLite.name()))

        list_accesses.sort(key=lambda x: x.name)
        return list_accesses
    def get_all_accesses(self, access_modifier=AccessModifier()):
        dict_all_accesses = {'Train': [], 'Dev': [], 'Test': []}

        for subset, subset_accesses in dict_all_accesses.items():
            for access in self.db.objects(
                    sets=THREEDMAD_SUBSETS_CORRESPONDENCE[subset]):
                path, extension = os.path.splitext(access.videofile())
                subset_accesses.append(
                    VideoAccess(self.base_path,
                                path,
                                extension,
                                access_modifier=access_modifier,
                                annotation_base_path=self.annotation_base_path,
                                database_name=ThreedmadDatabase.name()))

            subset_accesses.sort(key=lambda x: x.name)

        return dict_all_accesses
    def get_all_accesses(self, access_modifier=AccessModifier()):
        dict_all_accesses = {'Train': [], 'Dev': [], 'Test': []}

        for subset, subset_accesses in dict_all_accesses.items():
            objects = self.db.objects(
                groups=REPLAY_MOBILE_SUBSETS_CORRESPONDENCE[subset])
            for access in objects:
                rotation_rule = self.get_rotation_rule(access)
                path, extension = os.path.splitext(access.videofile())
                subset_accesses.append(
                    VideoAccess(self.base_path,
                                path,
                                extension,
                                access_modifier=access_modifier,
                                rotation_rule=rotation_rule,
                                annotation_base_path=self.annotation_base_path,
                                database_name=ReplayMobileDatabase.name()))
            subset_accesses.sort(key=lambda x: x.name)

        return dict_all_accesses
Exemplo n.º 15
0
 def get_all_accesses(self, access_modifier=AccessModifier()):
     dict_all_accesses = {}
     list_accesses = []
     folders_correspondence = {'Train_files': 'Train',
                               'Dev_files': 'Dev',
                               'Test_files': 'Test'}
     for folder in OULU_FOLDERS_VIDEO:
         folder_set = os.path.join(self.base_path, folder)
         list_basename_access = self.__get_list_basename_access_from_folder(folder_set)
         for basename in list_basename_access:
             list_accesses.append(VideoAccess(self.base_path,
                                              os.path.join(folder, basename),
                                              OULU_VIDEO_EXTENSION,
                                              access_modifier=access_modifier,
                                              annotation_base_path=self.annotation_base_path,
                                              database_name=OuluNpuDatabase.name()))
         list_accesses.sort(key=lambda x: x.name)
         dict_all_accesses[folders_correspondence[folder]] = list_accesses
         list_accesses = []
     return dict_all_accesses
    def get_all_accesses(self, access_modifier=AccessModifier()):
        if not self.dict_all_accesses:
            self.dict_all_accesses = {'Train':[],
                                      'Dev': [],
                                      'Test': []}

            dict_videos = {}
            for root, dirs, files in os.walk(self.base_path):
                if not dirs:
                    for f in files:
                        if f.lower().endswith(('.mp4', '.mov')):
                            basename, ext = os.path.splitext(f)
                            if basename not in dict_videos:
                                dict_videos[basename] = []
                            dict_videos[basename].append(os.path.join(root, f))

            for subset, subset_accesses in self.dict_all_accesses.items():
                txt_file = os.path.join(self.base_path, 'release_1', 'protocols', 'grandtest', subset + '.txt')
                with open(txt_file) as my_file:
                    for line in my_file.readlines():
                        user, video1, video2 = line.rstrip().split(' ')
                        basename1, _ = os.path.splitext(video1)
                        basename2, _ = os.path.splitext(video2)

                        for basename in [basename1, basename2]:
                            for full_access_path in dict_videos[basename]:
                                extension = os.path.basename(full_access_path).split('.')[1]
                                relative_path = os.path.relpath(full_access_path, self.base_path).replace('.' + extension, '')

                                subset_accesses.append(VideoAccess(os.path.join(self.base_path),
                                                                   relative_path,
                                                                   ('.' + extension).rstrip(),
                                                                   access_modifier=access_modifier,
                                                                   annotation_base_path=self.annotation_base_path,
                                                                   database_name=UvadDatabase.name()))
                subset_accesses.sort(key=lambda x: x.name)

        return self.dict_all_accesses
    def get_all_accesses(self, access_modifier=AccessModifier()):
        if not self.dict_all_accesses:

            self.dict_all_accesses = {'Train': [], 'Dev': [], 'Test': []}

            for root, dirs, files in os.walk(self.base_path):
                if not dirs:
                    for f in files:
                        if f.lower().endswith('.avi'):
                            basename, extension = os.path.splitext(f)
                            split_path = os.path.normpath(root).split(
                                os.path.sep)
                            subject = int(split_path[-1])
                            if split_path[-2].startswith('train_'):
                                if subject in CASIA_FASD_DEV_USERS:
                                    subset = 'Dev'
                                else:
                                    subset = 'Train'
                            else:
                                subset = 'Test'

                            self.dict_all_accesses[subset].append(
                                VideoAccess(
                                    self.base_path,
                                    os.path.join(split_path[-2],
                                                 split_path[-1], basename),
                                    extension,
                                    access_modifier=access_modifier,
                                    annotation_base_path=self.
                                    annotation_base_path,
                                    database_name=CasiaFasdDatabase.name()))

            for subset, list_accesses in self.dict_all_accesses.items():
                list_accesses.sort(key=lambda x: x.name)

        return self.dict_all_accesses