minosworld / minos

MINOS: Multimodal Indoor Simulator
MIT License
201 stars 33 forks source link

Is it possible to filter out scenes without a particular object? #56

Closed antonilo closed 6 years ago

antonilo commented 6 years ago

I am wondering whether is possible to filter out scenes / episodes if a particular category of objects (e.g. stairs) is absent. I assume that the configuration file has to be changed, but I did not find any evident way to do it. Moreover, I am not entirely sure what the difference between scene, state and episode is. Could you please comment on it?

Thanks a lot in advance!

msavva commented 6 years ago

Hi @antonilo, thank you for trying out MINOS.

You can perform this sort of filtering by using code similar to the example given in https://github.com/minosworld/minos/issues/22#issuecomment-387626308 to obtain the categories of all objects present in a scene and then check against the category you want to ensure is absent.

With regards to the terminology, here are some brief definitions that hopefully clarify a bit:

antonilo commented 6 years ago

Hi @msavva, thanks for your comment. How can I get all objects that are present in a scene? I guess then I need to regenerate a new state file (as episode_states.suncg.csv) with only the considered scenes, am i right?

I have made a little modification to Roomsimulator.py to change scene if the object is not found. I am basically checking whether there is a path to the goal. Unfortunately this can't be passed as a "scene filter", so I guess performance could be improved. I can make a pull request if that is of interest for you guys.

msavva commented 6 years ago

The code at https://github.com/minosworld/minos/issues/22#issuecomment-387626308 shows an example of how to get all object nodes present in a given scene. You are right that if you want to generate a pre-filtered set of scenes and episodes such that they are guaranteed to not contain a particular object you would do that by creating new scenes.multiroom.csv and episode_states.suncg.csv. The first specifies the scene train/val/test split, and the second specifies pre-sampled episodes in those scenes for val and test runs.

Pull requests with new features are encouraged and highly appreciated!