Home

Awesome

ObjaTHOR

Objaverse asset annotator and importer for use in THOR.

Installation

Install ai2thor:

pip install --extra-index-url https://ai2thor-pypi.allenai.org ai2thor==0+455cf72a1c8e0759a452422f2128fbc93a3cb06b

Install other dependencies:

pip install objathor[annotation]

Here the following extras are installed: annotation to use openai to generate annotations. Also for annotation functionality you must install nltk Install nltk. To generate renders and convert 'glb' models in the conversion pipeline you must Install Blender .

From source:

pip install -e ".[annotation]"

We recommend setting an environment variable with your OpenAI key:

export OPENAI_API_KEY=[Your key]

If you're planning to annotate objects for which we don't have pre-generated views in S3 (see an example under Annotation below), we also need to install blender either as an extra (as shown above) or as an application:

Blender install instructions

Installing the Blender as a module:

pip install bpy

Installing the Blender as a module, requires a python 3.10 environment.

Or installing blender as an application: Blender install instructions

If application is not in the cannonical directories you may need to pass blender_installation_path to scripts that use Blender.

NLTK dependencies

Install nltk on this commit by running:

pip install git+https://github.com/nltk/nltk@582e6e35f0e6c984b44ec49dcb8846d9c011d0a8

During the first run, NLTK dependencies are automatically installed, but we can also install them ahead:

python -c "import nltk; nltk.download('punkt'); nltk.download('wordnet2022'); nltk.download('brown'); nltk.download('averaged_perceptron_tagger')"

AI2-THOR binary pre-downloading

Assuming we're running on a remote Linux server, we can pre-download the THOR binaries with:

python -c "from ai2thor.controller import Controller; from objathor.constants import THOR_COMMIT_ID; c=Controller(download_only=True, platform='CloudRendering', commit_id=THOR_COMMIT_ID)"

(platform='OSXIntel64' would be used for a MacOS environment).

Usage

Annotation

You must install the annotation extra requirement through pip, ad have blender installed, either standalone or as a module. The following command will generate annotation, via GPT-4, and also generate the conversion to a valid THOR asset.

OUTPUT_DIR=/path/to/output
python -m objathor.main \
--uid 0070ac4bf50b496387365843d4bf5432 \
--output "$OUTPUT_DIR"

GLB to THOR asset conversion

From the repository root run:

python 
-m objathor.asset_conversion.pipeline_to_thor 
--uids=000074a334c541878360457c672b6c2e 
--output_dir=<some_absolute_path>
--extension=.msgpack.gz
 --annotations=<annotations_file_path> 
--live 
--blender_as_module

Where uids is a string of comma separated list of Objaverse ids to process. output_dir is an absolute path indicating where to write the output of the conversion. annotations is optional, and is the path to an annotations file as generated by the process described above.

Run python -m objathor.asset_conversion.pipeline_to_thor --help for other options.