Open KamranAlipour opened 3 years ago
Hi, When you train the NextCategory model, are you training only based on full rooms? I'm asking because when I follow the algorithm, seems like you are setting the cat_only flag to True, and that leads to:
when then leads to output_node being None which leads to only full scenes with t_cat =
labels.
Hi, I meet the same problem with you. How do you deal with this? Thank you!
Hi, I ended up replacing that line with
scene, input_nodes, output_node = self.get_scene_partial(index, stop_prob=0.1)
where I defined get_scene_partial
as something like this:
def get_scene_partial(self, index, stop_prob=None): i = index+self.scene_indices[0] scene = RenderedScene(i, self.data_folder, self.data_root_dir) object_nodes = self.order_object_nodes(scene.object_nodes) if stop_prob is not None and random.random() < stop_prob: input_nodes = object_nodes output_node = None else: split_idx = random.choice(range(len(object_nodes))) output_node = object_nodes[split_idx] input_nodes = object_nodes[0:split_idx] return scene, input_nodes, output_node
Hi, I ended up replacing that line with
scene, input_nodes, output_node = self.get_scene_partial(index, stop_prob=0.1)
where I defined
get_scene_partial
as something like this:def get_scene_partial(self, index, stop_prob=None): i = index+self.scene_indices[0] scene = RenderedScene(i, self.data_folder, self.data_root_dir) object_nodes = self.order_object_nodes(scene.object_nodes) if stop_prob is not None and random.random() < stop_prob: input_nodes = object_nodes output_node = None else: split_idx = random.choice(range(len(object_nodes))) output_node = object_nodes[split_idx] input_nodes = object_nodes[0:split_idx] return scene, input_nodes, output_node
Thank you! And how you deal with the second-tier objects? It seems lack of the "relation" files..
Hi, I ended up replacing that line with
scene, input_nodes, output_node = self.get_scene_partial(index, stop_prob=0.1)
where I defined
get_scene_partial
as something like this:def get_scene_partial(self, index, stop_prob=None): i = index+self.scene_indices[0] scene = RenderedScene(i, self.data_folder, self.data_root_dir) object_nodes = self.order_object_nodes(scene.object_nodes) if stop_prob is not None and random.random() < stop_prob: input_nodes = object_nodes output_node = None else: split_idx = random.choice(range(len(object_nodes))) output_node = object_nodes[split_idx] input_nodes = object_nodes[0:split_idx] return scene, input_nodes, output_node
this is correct. somehow these lines were commented out for the version we used to prepare the code release and I simply removed those comments :)
Hi, I ended up replacing that line with
scene, input_nodes, output_node = self.get_scene_partial(index, stop_prob=0.1)
where I definedget_scene_partial
as something like this:def get_scene_partial(self, index, stop_prob=None): i = index+self.scene_indices[0] scene = RenderedScene(i, self.data_folder, self.data_root_dir) object_nodes = self.order_object_nodes(scene.object_nodes) if stop_prob is not None and random.random() < stop_prob: input_nodes = object_nodes output_node = None else: split_idx = random.choice(range(len(object_nodes))) output_node = object_nodes[split_idx] input_nodes = object_nodes[0:split_idx] return scene, input_nodes, output_node
Thank you! And how you deal with the second-tier objects? It seems lack of the "relation" files..
Relation files were included in certain versions of the dataset release. If those are not available, they need to be manually computed.
Hi, When you train the NextCategory model, are you training only based on full rooms? I'm asking because when I follow the algorithm, seems like you are setting the cat_only flag to True, and that leads to:
https://github.com/brownvc/fast-synth/blob/863213bedee078cf531d1518708515ca3928bf63/scene-synth/latent_dataset.py#L371
when then leads to output_node being None which leads to only full scenes with t_cat = \<STOP> labels.