Пример #1
0
def test_augmentation_data_generator(tmpdir):
    dist = DistributionCollection(examplary_tag_distribution())
    dset_fname = str(tmpdir.join("dset.hdf5"))
    samples = 6000
    dset = DistributionHDF5Dataset(dset_fname, nb_samples=samples,
                                   distribution=dist)
    labels = dist.sample(samples)
    labels = dist.normalize(labels)
    fake = np.random.random((samples, 1, 8, 8))
    discriminator = np.random.random((samples, 1))
    dset.append(labels=labels, fake=fake, discriminator=discriminator)
    dset.close()

    dset = DistributionHDF5Dataset(dset_fname)
    bs = 32
    names = ['labels', 'fake']
    assert 'labels' in next(dset.iter(bs, names))
    assert next(dset.iter(bs))['labels'].dtype.names == tuple(dist.names)

    dset_iters = [lambda bs: bit_split(dataset_iterator(dset, bs))]
    data_gen = lambda bs: zip_dataset_iterators(dset_iters, bs)
    label_names = ['bit_0', 'bit_11', 'x_rotation']
    aug_gen = augmentation_data_generator(data_gen, 'fake', label_names)
    outs = next(aug_gen(bs))
    assert len(outs[0]) == 32
    assert len(outs[1]) == len(label_names)

    gen = aug_gen(bs)
    for i, batch in enumerate(gen):
        if i == 2*samples // bs:
            break
        assert batch is not None
        assert batch[0].shape == (bs, 1, 8, 8)
        assert len(batch[1]) == len(label_names)
Пример #2
0
def test_generated_3d_tags():
    artist = BlackWhiteArtist(0, 255, 0, 1)
    label_dist = DistributionCollection(examplary_tag_distribution())
    bs = 8
    labels, grids = generated_3d_tags(label_dist, batch_size=bs, artist=artist)
    assert grids.shape == (bs, 1, 64, 64)
    assert list(labels.dtype.names) == label_dist.names
Пример #3
0
def test_augmentation_data_generator(tmpdir):
    dist = DistributionCollection(examplary_tag_distribution())
    dset_fname = str(tmpdir.join("dset.hdf5"))
    samples = 6000
    dset = DistributionHDF5Dataset(dset_fname,
                                   nb_samples=samples,
                                   distribution=dist)
    labels = dist.sample(samples)
    labels = dist.normalize(labels)
    fake = np.random.random((samples, 1, 8, 8))
    discriminator = np.random.random((samples, 1))
    dset.append(labels=labels, fake=fake, discriminator=discriminator)
    dset.close()

    dset = DistributionHDF5Dataset(dset_fname)
    bs = 32
    names = ['labels', 'fake']
    assert 'labels' in next(dset.iter(bs, names))
    assert next(dset.iter(bs))['labels'].dtype.names == tuple(dist.names)

    dset_iters = [lambda bs: bit_split(dataset_iterator(dset, bs))]
    data_gen = lambda bs: zip_dataset_iterators(dset_iters, bs)
    label_names = ['bit_0', 'bit_11', 'x_rotation']
    aug_gen = augmentation_data_generator(data_gen, 'fake', label_names)
    outs = next(aug_gen(bs))
    assert len(outs[0]) == 32
    assert len(outs[1]) == len(label_names)

    gen = aug_gen(bs)
    for i, batch in enumerate(gen):
        if i == 2 * samples // bs:
            break
        assert batch is not None
        assert batch[0].shape == (bs, 1, 8, 8)
        assert len(batch[1]) == len(label_names)
Пример #4
0
def test_generated_3d_tags():
    artist = BlackWhiteArtist(0, 255, 0, 1)
    label_dist = DistributionCollection(examplary_tag_distribution())
    bs = 8
    labels, grids = generated_3d_tags(label_dist, batch_size=bs, artist=artist)
    assert grids.shape == (bs, 1, 64, 64)
    assert list(labels.dtype.names) == label_dist.names
Пример #5
0
def test_store_samples(tmpdir):
    dist = DistributionCollection(examplary_tag_distribution())
    bs = 64
    labels_record = dist.sample(bs)
    labels_record = dist.normalize(labels_record)
    labels = []
    for name in labels_record.dtype.names:
        labels.append(labels_record[name])
    labels = np.concatenate(labels, axis=-1)
    fakes = np.random.random((bs, 1, 8, 8))
    store = StoreSamples(str(tmpdir), dist)
    store.on_epoch_end(0, logs={'samples': {'labels': labels, 'fake': fakes}})
    assert tmpdir.join("00000.hdf5").exists()
def default_tag_distribution():
    tag_dist_params = examplary_tag_distribution()
    angle = to_radians(60)
    tag_dist_params["x_rotation"] = TruncNormal(-angle, angle, 0, angle / 2)
    tag_dist_params["y_rotation"] = TruncNormal(-angle, angle, 0, angle / 2)
    tag_dist_params["radius"] = TruncNormal(22, 26, 24.0, 1.3)
    tag_dist_params["center"] = (Uniform(-16, 16), 2)

    tag_dist_params["bulge_factor"] = Uniform(0.4, 0.8)
    tag_dist_params["focal_length"] = Uniform(2, 4)
    tag_dist_params["inner_ring_radius"] = Uniform(0.42, 0.48)
    tag_dist_params["middle_ring_radius"] = Constant(0.8)
    tag_dist_params["outer_ring_radius"] = Constant(1.)
    return DistributionCollection(tag_dist_params)
Пример #7
0
def default_tag_distribution():
    tag_dist_params = examplary_tag_distribution()
    angle = to_radians(60)
    tag_dist_params["x_rotation"] = TruncNormal(-angle, angle, 0, angle / 2)
    tag_dist_params["y_rotation"] = TruncNormal(-angle, angle, 0, angle / 2)
    tag_dist_params["radius"] = TruncNormal(22, 26, 24.0, 1.3)
    tag_dist_params["center"] = (Uniform(-16, 16), 2)

    tag_dist_params["bulge_factor"] = Uniform(0.4, 0.8)
    tag_dist_params["focal_length"] = Uniform(2, 4)
    tag_dist_params["inner_ring_radius"] = Uniform(0.42, 0.48)
    tag_dist_params["middle_ring_radius"] = Constant(0.8)
    tag_dist_params["outer_ring_radius"] = Constant(1.)
    return DistributionCollection(tag_dist_params)
Пример #8
0
def test_distribution_hdf5_dataset(tmpdir):
    with pytest.raises(Exception):
        DistributionHDF5Dataset(
            str(tmpdir.join('dataset_no_distribution.hdf5')), nb_samples=1000)

    dist = DistributionCollection(examplary_tag_distribution(nb_bits=12))
    labels = dist.sample(32)
    image = np.random.random((32, 1, 8, 8))
    dset = DistributionHDF5Dataset(
        str(tmpdir.join('dataset.hdf5')), distribution=dist, nb_samples=1000)
    dset.append(labels=labels, image=image)
    for name in dist.names:
        assert name in dset
    for batch in dset.iter(batch_size=32):
        for name in dist.names:
            assert name not in batch
        assert 'labels' in batch
        assert batch['labels'].dtype == dist.norm_dtype
        break
Пример #9
0
def test_distribution_hdf5_dataset(tmpdir):
    with pytest.raises(Exception):
        DistributionHDF5Dataset(str(
            tmpdir.join('dataset_no_distribution.hdf5')),
                                nb_samples=1000)

    dist = DistributionCollection(examplary_tag_distribution(nb_bits=12))
    labels = dist.sample(32)
    image = np.random.random((32, 1, 8, 8))
    dset = DistributionHDF5Dataset(str(tmpdir.join('dataset.hdf5')),
                                   distribution=dist,
                                   nb_samples=1000)
    dset.append(labels=labels, image=image)
    for name in dist.names:
        assert name in dset
    for batch in dset.iter(batch_size=32):
        for name in dist.names:
            assert name not in batch
        assert 'labels' in batch
        assert batch['labels'].dtype == dist.norm_dtype
        break