def test_dataset_realpath(self): dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline, '.') assert dataset.data_prefix == osp.realpath('.') dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline, 's3://good') assert dataset.data_prefix == 's3://good'
def test_dataset_realpath(self): dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline, '.') assert dataset.data_prefix == osp.realpath('.') dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline, 's3://good') assert dataset.data_prefix == 's3://good' dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline) assert dataset.data_prefix is None assert dataset.video_infos[0]['frame_dir'] == 'imgs'
def test_rawframe_dataset(self): rawframe_dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline, self.data_prefix) rawframe_infos = rawframe_dataset.video_infos frame_dir = osp.join(self.data_prefix, 'test_imgs') assert rawframe_infos == [ dict(frame_dir=frame_dir, total_frames=5, label=127) ] * 2
def test_rawframe_dataset_with_offset(self): rawframe_dataset = RawframeDataset(self.frame_ann_file_with_offset, self.frame_pipeline, self.data_prefix, with_offset=True) rawframe_infos = rawframe_dataset.records frame_dir = osp.join(self.data_prefix, 'test_imgs') assert rawframe_infos == [ dict(frame_dir=frame_dir, offset=2, total_frames=5, label=127) ] * 2 assert rawframe_dataset.start_index == 1
def test_rawframe_pipeline(self): target_keys = ['frame_dir', 'total_frames', 'label', 'filename_tmpl'] # RawframeDataset not in test mode rawframe_dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline, self.data_prefix, test_mode=False) result = rawframe_dataset[0] assert self.check_keys_contain(result.keys(), target_keys) # RawframeDataset in multi-class tasks rawframe_dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline, self.data_prefix, multi_class=True, num_classes=400, test_mode=False) result = rawframe_dataset[0] assert self.check_keys_contain(result.keys(), target_keys) # RawframeDataset in test mode rawframe_dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline, self.data_prefix, test_mode=True) result = rawframe_dataset[0] assert self.check_keys_contain(result.keys(), target_keys) # RawframeDataset in multi-class tasks in test mode rawframe_dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline, self.data_prefix, multi_class=True, num_classes=400, test_mode=True) result = rawframe_dataset[0] assert self.check_keys_contain(result.keys(), target_keys)
def test_rawframe_dataset_multi_label(self): rawframe_dataset = RawframeDataset(self.frame_ann_file_multi_label, self.frame_pipeline, self.data_prefix, multi_class=True, num_classes=100) rawframe_infos = rawframe_dataset.video_infos frame_dir = osp.join(self.data_prefix, 'test_imgs') label0 = [1] label1 = [3, 5] labels = [label0, label1] for info, label in zip(rawframe_infos, labels): assert info['frame_dir'] == frame_dir assert info['total_frames'] == 5 assert set(info['label']) == set(label) assert rawframe_dataset.start_index == 1
def test_repeat_dataset(self): rawframe_dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline, self.data_prefix) repeat_dataset = RepeatDataset(rawframe_dataset, 5) assert len(repeat_dataset) == 10 result_a = repeat_dataset[0] result_b = repeat_dataset[2] assert set(result_a.keys()) == set(result_b.keys()) for key in result_a: if isinstance(result_a[key], np.ndarray): assert np.equal(result_a[key], result_b[key]).all() elif isinstance(result_a[key], list): assert all( np.array_equal(a, b) for (a, b) in zip(result_a[key], result_b[key])) else: assert result_a[key] == result_b[key]
def test_rawframe_dataset_multi_label(self): rawframe_dataset = RawframeDataset(self.frame_ann_file_multi_label, self.frame_pipeline, self.data_prefix, multi_class=True, num_classes=100) rawframe_infos = rawframe_dataset.records frame_dir = osp.join(self.data_prefix, 'test_imgs') label0 = torch.zeros(100) label0[[1]] = 1.0 label1 = torch.zeros(100) label1[[3, 5]] = 1.0 labels = [label0, label1] for info, label in zip(rawframe_infos, labels): assert info['frame_dir'] == frame_dir assert info['total_frames'] == 5 assert torch.all(info['label'] == label) assert rawframe_dataset.start_index == 1
def test_rawframe_evaluate(self): rawframe_dataset = RawframeDataset(self.frame_ann_file, self.frame_pipeline, self.data_prefix) with pytest.raises(TypeError): # results must be a list rawframe_dataset.evaluate('0.5') with pytest.raises(AssertionError): # The length of results must be equal to the dataset len rawframe_dataset.evaluate([0] * 5) with pytest.raises(TypeError): # topk must be int or tuple of int rawframe_dataset.evaluate([0] * len(rawframe_dataset), topk=1.0) with pytest.raises(KeyError): # unsupported metric rawframe_dataset.evaluate([0] * len(rawframe_dataset), metrics='iou') # evaluate top_k_accuracy and mean_class_accuracy metric results = [np.array([0.1, 0.5, 0.4])] * 2 eval_result = rawframe_dataset.evaluate( results, metrics=['top_k_accuracy', 'mean_class_accuracy']) assert set(eval_result.keys()) == set( ['top1_acc', 'top5_acc', 'mean_class_accuracy'])
def test_rawframe_pipeline(self): target_keys = [ 'frame_dir', 'total_frames', 'label', 'filename_tmpl', 'start_index', 'modality' ] # RawframeDataset not in test mode rawframe_dataset = RawframeDataset( self.frame_ann_file, self.frame_pipeline, self.data_prefix, test_mode=False) result = rawframe_dataset[0] assert assert_dict_has_keys(result, target_keys) # RawframeDataset in multi-class tasks rawframe_dataset = RawframeDataset( self.frame_ann_file, self.frame_pipeline, self.data_prefix, multi_class=True, num_classes=400, test_mode=False) result = rawframe_dataset[0] assert assert_dict_has_keys(result, target_keys) # RawframeDataset with offset rawframe_dataset = RawframeDataset( self.frame_ann_file_with_offset, self.frame_pipeline, self.data_prefix, with_offset=True, num_classes=400, test_mode=False) result = rawframe_dataset[0] assert assert_dict_has_keys(result, target_keys + ['offset']) # RawframeDataset in test mode rawframe_dataset = RawframeDataset( self.frame_ann_file, self.frame_pipeline, self.data_prefix, test_mode=True) result = rawframe_dataset[0] assert assert_dict_has_keys(result, target_keys) # RawframeDataset in multi-class tasks in test mode rawframe_dataset = RawframeDataset( self.frame_ann_file, self.frame_pipeline, self.data_prefix, multi_class=True, num_classes=400, test_mode=True) result = rawframe_dataset[0] assert assert_dict_has_keys(result, target_keys) # RawframeDataset with offset rawframe_dataset = RawframeDataset( self.frame_ann_file_with_offset, self.frame_pipeline, self.data_prefix, with_offset=True, num_classes=400, test_mode=True) result = rawframe_dataset[0] assert assert_dict_has_keys(result, target_keys + ['offset'])