Beispiel #1
0
    def __init__(self,
                 dataset_name='SumMe',
                 split='train',
                 clip_size=100,
                 sum_budget=0.15,
                 sample_rate=None,
                 overlap_ratio=0.25):

        if dataset_name.lower() not in ['summe', 'tvsum']:
            print('Unrecognized dataset {:s}'.format(dataset_name))
        self.dataset_name = dataset_name
        self.eval_metrics = eval_metrics[self.dataset_name.lower()]
        self.split = split
        self.sum_budget = sum_budget
        self.filenames = datasetpaths[self.dataset_name.lower()].file_names
        self.data_loader = data_loaders[self.dataset_name.lower()]

        n_files = len(self.filenames)

        if self.split == 'train':
            self.filenames = self.filenames[:int(0.8 * n_files)]
        elif self.split == 'val':
            self.filenames = self.filenames[int(0.8 * n_files):]

        else:
            print("Unrecognized split:{:s}".format(self.split))
        self.overlap_ratio = overlap_ratio
        self.clip_size = clip_size
        if sample_rate is None:
            self.sample_rate = [1, 5, 10]
        else:
            if isinstance(sample_rate, list):
                self.sample_rate = sample_rate
            else:
                self.sample_rate = [sample_rate]

        self.videofeatures = []
        self.groundtruthscores = []
        self.segments = []
        self.videonames = []
        Kydataset = KyLoader.loadKyDataset(self.dataset_name.lower())
        conversion = KyLoader.loadConversion(self.dataset_name.lower())
        self.raw2Ky = conversion[0]
        self.Ky2raw = conversion[1]

        for s_video_idx, s_filename in enumerate(self.filenames):
            KyKey = self.raw2Ky[s_filename]

            s_video_features, _, _ = self.data_loader.load_by_name(s_filename)
            s_scores = Kydataset[KyKey]['user_summary'][...]
            s_scores = s_scores.transpose()
            s_segments = LoaderUtils.convertlabels2segs(s_scores)

            self.groundtruthscores.append(s_scores)
            self.videofeatures.append(s_video_features)
            self.segments.append(s_segments)
            self.videonames.append(s_filename)
        self.dataset_size = len(self.videofeatures)
        print("{:s}\tEvaluator: {:s}\t{:d} Videos".format(
            self.dataset_name, self.split, self.dataset_size))
    def __init__(self, dataset_name='SumMe',split='train', clip_size=50, output3=False):
        if dataset_name.lower() not in ['summe', 'tvsum']:
            print('Unrecognized dataset {:s}'.format(dataset_name))
            sys.exit(-1)
        self.dataset_name = dataset_name
        self.split = split
        self.filenames = datasetpaths[self.dataset_name.lower()].file_names
        self.data_loader = data_loaders[self.dataset_name.lower()]

        n_files = len(self.filenames)
        if self.split == 'train':
            self.filenames = self.filenames[:int(0.8*n_files)]
        elif self.split == 'val':
            self.filenames = self.filenames[int(0.8*n_files):]
        else:
            print("Unrecognized split:{:s}".format(self.split))
            sys.exit(-1)
        self.clip_size = clip_size
        self.output3 = output3

        Kydataset = KyLoader.loadKyDataset(self.dataset_name.lower())
        conversion = KyLoader.loadConversion(self.dataset_name.lower())
        self.raw2Ky = conversion[0]
        self.Ky2raw = conversion[1]


        self.features = {}
        self.avg_summary = {}
        self.annotations = []
        pbar = progressbar.ProgressBar(max_value=len(self.filenames))
        print("Processing {:s}\t{:s} data".format(self.dataset_name, self.split))
        for file_dix, s_filename in enumerate(self.filenames):
            pbar.update(file_dix)
            Kykey = self.raw2Ky[s_filename]
            s_features, _, _ = self.data_loader.load_by_name(s_filename)
            s_usersummaries = Kydataset[Kykey]['user_summary'][...]
            s_usersummaries = s_usersummaries.transpose()

            self.features[s_filename] = s_features
            s_avg_summary = np.mean(s_usersummaries, axis=1)
            self.avg_summary[s_filename] = s_avg_summary
            s_video_len = len(s_avg_summary)

            s_segments = LoaderUtils.convertlabels2segs(s_usersummaries)
            for s_seg in s_segments:
                sSegment = LoaderUtils.Segment(s_filename)
                s_score  = np.mean(s_avg_summary[s_seg[0]:s_seg[1]])
                sSegment.initId(s_seg[0], s_seg[1], s_video_len, score=s_score)
                self.annotations.append(sSegment)

        self.augmented_ratio = 10

        self.dataset_size = len(self.annotations)
        print("{:s}\t{:s}\t{:d}".format(self.dataset_name, self.split, self.dataset_size))