def main(_):
    from shapenet.core import to_cat_id
    from shapenet.core.renderings.renderings_manager import get_base_manager
    from shapenet.core.frustrum_voxels import create_frustrum_voxels
    from shapenet.core.frustrum_voxels import create_temp_frustrum_voxels
    from shapenet.core.voxels.config import get_config
    if FLAGS.src_voxel_dim is None:
        FLAGS.src_voxel_dim = FLAGS.voxel_dim

    voxel_config = get_config(
        FLAGS.src_voxel_dim, alt=False).filled(FLAGS.fill_alg)
    manager = get_base_manager(
        dim=FLAGS.dim, turntable=FLAGS.turntable,
        n_views=FLAGS.n_views)

    cats = FLAGS.cat
    if cats is None:
        from shapenet.r2n2 import get_cat_ids
        cats = get_cat_ids()

    for cat in cats:
        cat_id = to_cat_id(cat)
        args = manager, voxel_config, FLAGS.voxel_dim, cat_id
        if FLAGS.temp_only:
            create_temp_frustrum_voxels(*args, compression=FLAGS.compression)
        else:
            create_frustrum_voxels(*args, compression=FLAGS.compression)
Exemple #2
0
def main(_):
    from shapenet.core.voxels.config import get_config
    from shapenet.core import to_cat_id
    from shapenet.r2n2 import get_cat_ids
    config = get_config(FLAGS.voxel_dim, alt=FLAGS.alt)
    fill = FLAGS.fill
    if fill is not None:
        config = config.filled(fill)
    if FLAGS.cat is None:
        cat_ids = get_cat_ids()
    else:
        cat_ids = [to_cat_id(c) for c in FLAGS.cat]
    if FLAGS.fill is not None:
        config = config.filled(FLAGS.fill)
    for cat_id in cat_ids:
        config.create_voxel_data(cat_id)
Exemple #3
0
def main(_):
    from progress.bar import IncrementalBar
    import numpy as np
    from shapenet.core import to_cat_id
    from shapenet.core.renderings.renderings_manager import get_base_manager
    from shapenet.core.frustrum_voxels import get_frustrum_voxels_data
    from shapenet.core.frustrum_voxels import GROUP_KEY
    from shapenet.core.voxels.config import get_config
    from util3d.voxel import rle
    voxel_config = get_config(FLAGS.src_voxel_dim,
                              alt=False).filled('orthographic')
    manager = get_base_manager(dim=FLAGS.dim,
                               turntable=FLAGS.turntable,
                               n_views=FLAGS.n_views)

    cats = FLAGS.cat
    if cats is None:
        from shapenet.r2n2 import get_cat_ids
        cats = get_cat_ids()

    expected_length = FLAGS.voxel_dim**3

    for ci, cat in enumerate(cats):
        # if ci >= 3:
        #     continue
        cat_id = to_cat_id(cat)
        print('Checking cat %s: %d / %d' % (cat_id, ci + 1, len(cats)))
        with get_frustrum_voxels_data(manager.root_dir, voxel_config,
                                      FLAGS.voxel_dim, cat_id) as root:
            data = root[GROUP_KEY]
            ne, nr = data.shape[:2]
            bar = IncrementalBar(max=ne)
            for i in range(ne):
                bar.next()
                di = np.array(data[i])
                for j in range(nr):
                    actual_length = rle.length(di[j])
                    # actual_length = len(rle.rle_to_dense(di[j]))
                    if actual_length != expected_length:
                        raise ValueError(
                            'Incorrect length at %s, %d, %d\n'
                            'Expected %d, got %d' %
                            (cat_id, i, j, expected_length, actual_length))
            bar.finish()
Exemple #4
0
def main(_):
    from shapenet.core.renderings.renderings_manager import get_base_manager
    from shapenet.core import cat_desc_to_id
    from shapenet.core import cat_id_to_desc
    cat = FLAGS.cat
    if cat is None or len(cat) == 0:
        from shapenet.r2n2 import get_cat_ids
        cat_ids = get_cat_ids()
    else:
        cat_ids = [cat_desc_to_id(c) for c in FLAGS.cat]

    print('Required renderings:')
    for cat_id in cat_ids:
        manager = get_base_manager(
            dim=FLAGS.dim,
            turntable=FLAGS.turntable,
            n_views=FLAGS.n_views,
        )
        n = len(tuple(manager.needs_rendering_keys(cat_ids=[cat_id])))
        n_total = len(tuple(manager.view_manager.keys(cat_ids=[cat_id])))
        cat = cat_id_to_desc(cat_id)
        print('%s: %s\n  %d / %d' % (cat_id, cat, n, n_total))
Exemple #5
0
def main(_):
    from shapenet.core.renderings.archive_manager import get_archive_manager
    from shapenet.core.renderings.renderings_manager import get_base_manager

    rend_manager = get_base_manager(
        dim=FLAGS.dim, turntable=FLAGS.turntable,
        n_views=FLAGS.n_renderings)
    if FLAGS.cat is None:
        from shapenet.r2n2 import get_cat_ids
        cats = get_cat_ids()
    else:
        cats = FLAGS.cat
    format = FLAGS.format
    mode = 'r' if FLAGS.check else 'a'
    for cat in cats:
        archive_manager = get_archive_manager(
            rend_manager, cat, base_only=not FLAGS.full,
            format=format, mode=mode)
        with archive_manager.archive:
            if FLAGS.check:
                archive_manager.check()
            else:
                archive_manager.add()
Exemple #6
0
#!/usr/bin/python
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import numpy as np
from shapenet.r2n2 import get_cat_ids
from shapenet.r2n2.hdf5 import Hdf5Manager, meta_index

az_index = meta_index('azimuth')
el_index = meta_index('elevation')
az = []
el = []

for cat_id in get_cat_ids():
    with Hdf5Manager(cat_id) as manager:
        g = manager.meta_group
        az.append(np.array(g[..., az_index]))
        el.append(np.array(g[..., el_index]))

az = np.concatenate(az, axis=0).flatten()
el = np.concatenate(el, axis=0).flatten()


def vis(az, el):
    import matplotlib.pyplot as plt
    _, (ax0, ax1) = plt.subplots(1, 2)
    ax0.hist(az, bins=36)
    ax1.hist(el, bins=36)
    plt.show()
Exemple #7
0
#!/usr/bin/python
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

from shapenet.r2n2 import get_cat_ids
from shapenet.core.voxels.datasets import get_manager, convert
from shapenet.core.voxels import get_config

cat_ids = get_cat_ids()
voxel_dims = (32, 64, 128, 256)
n_configs = 2
n = len(cat_ids) * len(voxel_dims) * n_configs
i = 1
for voxel_dim in voxel_dims:
    for config in (
            get_config(voxel_dim).filled('orthographic'),
            get_config(voxel_dim, alt=True),
    ):
        for cat_id in cat_ids:
            dst = get_manager(config,
                              cat_id,
                              key='brle',
                              compression='lzf',
                              pad=True)
            src_kwargs = dict(key='file')
            print('Converting %d / %d' % (i, n))
            convert(dst, overwrite=False, delete_src=False, **src_kwargs)
            i += 1