예제 #1
0
def _construct_dataset(num_episodes):
    episodes = []
    for ii in range(num_episodes):
        episode = Episode(
            episode_id=str(ii),
            scene_id="scene_id_" + str(ii % 10),
            start_position=[0, 0, 0],
            start_rotation=[0, 0, 0, 1],
        )
        episodes.append(episode)
    dataset = Dataset()
    dataset.episodes = episodes
    return dataset
예제 #2
0
        scene_id = house + os.sep + house + ".glb"
    elif DATASET == "gibson":
        scene_id = house + ".glb"
    else:
        raise NotImplementedError("Not implemented for this dataset")

    dummy_episode = NavigationEpisode(
        episode_id=str(ii),
        goals=[NavigationGoal([0, 0, 0])],
        scene_id=scene_id,
        start_position=[0, 0, 0],
        start_rotation=[0, 0, 0, 1],
    )
    episodes.append(dummy_episode)
dataset = Dataset()
dataset.episodes = episodes
json = dataset.to_json().encode("utf-8")
with gzip.GzipFile(
        os.path.join(OUTPUT_PATH, "dataset_one_ep_per_scene.json.gz"),
        "w") as fout:
    fout.write(json)

env = habitat.Env(config=config, dataset=dataset)

episodes = []
episode_id = 0
for ii in tqdm.tqdm(range(len(scenes))):
    try:
        env.reset()
        for jj in range(NUM_EPS_PER_LOCATION):
            episode = generator.generate_pointnav_episode(env, episode_id)
예제 #3
0
def transform_rgb_bgr(image):
    return image[:, :, [2, 1, 0]]


apartment = "office_3"
ep = NavigationEpisode(
    episode_id="0",
    scene_id=f"/raid/workspace/alexandrug/Replica-Dataset/dataset"
    f"/{apartment}/habitat/mesh_semantic.ply",
    start_position=[-0.6644544, -1.020689, -0.4631982],
    start_rotation=[0, 0.163276, 0, 0.98658],
    goals=[NavigationGoal(position=[-2.452475, -1.02069, 1.156327])],
    info={"geodesic_distance": 0.001},
)
dataset = Dataset()
dataset.episodes = [ep]


def draw_top_down_map(info, heading, output_size):
    top_down_map = maps.colorize_topdown_map(
        info["top_down_map"]["map"], info["top_down_map"]["fog_of_war_mask"])
    original_map_size = top_down_map.shape[:2]
    map_scale = np.array(
        (1, original_map_size[1] * 1.0 / original_map_size[0]))
    new_map_size = np.round(output_size * map_scale).astype(np.int32)
    # OpenCV expects w, h but map size is in h, w
    top_down_map = cv2.resize(top_down_map, (new_map_size[1], new_map_size[0]))

    map_agent_pos = info["top_down_map"]["agent_map_coord"]
    map_agent_pos = np.round(map_agent_pos * new_map_size /
                             original_map_size).astype(np.int32)