Ejemplo n.º 1
0
    def test_image_stats(self):
        expected_mean = [100, 50, 150]
        expected_std = [20, 50, 10]

        dataset = Dataset.from_iterable([
            DatasetItem(id=i, image=np.random.normal(
                expected_mean, expected_std, size=(h, w, 3))
            )
            for i, (w, h) in enumerate([
                (3000, 100), (800, 600), (400, 200), (700, 300)
            ])
        ])
        dataset.put(dataset.get('1'), id='5', subset='train')

        actual = compute_image_statistics(dataset)

        self.assertEqual(actual['dataset'], {
            'images count': 5,
            'unique images count': 4,
            'repeated images count': 1,
            'repeated images': [[('1', 'default'), ('5', 'train')]],
        })
        self.assertEqual(actual['subsets']['default']['images count'], 4)
        self.assertEqual(actual['subsets']['train']['images count'], 1)

        actual_mean = actual['subsets']['default']['image mean'][::-1]
        actual_std = actual['subsets']['default']['image std'][::-1]
        for em, am in zip(expected_mean, actual_mean):
            self.assertAlmostEqual(em, am, places=0)
        for estd, astd in zip(expected_std, actual_std):
            self.assertAlmostEqual(estd, astd, places=0)
Ejemplo n.º 2
0
def stats_command(args):
    project = load_project(args.project_dir)

    dataset = project.make_dataset()
    stats = {}
    stats.update(compute_image_statistics(dataset))
    stats.update(compute_ann_statistics(dataset))

    dst_file = generate_next_file_name('statistics', ext='.json')
    log.info("Writing project statistics to '%s'" % dst_file)
    with open(dst_file, 'w') as f:
        json.dump(stats, f, indent=4, sort_keys=True)
Ejemplo n.º 3
0
def stats_command(args):
    project = None
    try:
        project = scope_add(load_project(args.project_dir))
    except ProjectNotFoundError:
        if args.project_dir:
            raise

    dataset, target_project = parse_full_revpath(args.target, project)
    if target_project:
        scope_add(target_project)

    if args.subset:
        dataset = dataset.get_subset(args.subset)

    stats = {}
    if args.image_stats:
        stats.update(compute_image_statistics(dataset))
    if args.ann_stats:
        stats.update(compute_ann_statistics(dataset))

    dst_file = generate_next_file_name('statistics', ext='.json')
    log.info("Writing project statistics to '%s'" % dst_file)
    dump_json_file(dst_file, stats, indent=True)