borglab / borglab/gtsfm

Resolve Parentless GTSFM Products in Process Graph

Open
#545 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Jupyter Notebook
Stars
524
Forks
64
Avg merge
4h 1m
Merged PRs (30d)
3

Description

The process graph introduced in #540 exposes some places where our code does not align with a pure bipartite graph model, where processes produce and consume whole products, without modification. For instance, the two-view correspondences are triangulated in a [class method](https://github.com/borglab/gtsfm/blob/master/gtsfm/two_view_estimator.py#L185) before the BundleAdjustment Process takes over, which we had to hack around in the graph with a "Triangulated Points" Product with no source.

Screen Shot 2022-08-17 at 11 05 47 AM

Another issue arises in the Image Retriever/Loader system, where Retriever takes Loader as an argument and then simply calls Loader over a directory. This makes Loader both a Process and a input "Product" of Retriever. We can accept this as a weird quirk or potentially merge Retriever and Loader into one Process.

These should be resolved by changing the underlying code to conform to the process/product model, then fixing the UiMetadata objects in the right classes.

Contributor guide

Open the contributing guide

Research direction

Start with gtsfm/two_view_estimator.py around the linked class method and trace how BundleAdjustment handles triangulated points. Then inspect the Image Retriever/Loader relationship and the UiMetadata objects in the affected classes. Done means the underlying process/product representation no longer has parentless products or dual-role Loader objects, and the corresponding metadata is consistent.

Written by the indexing model from the issue text.

Assessment

Tech stack
jupyter-notebook
Domain
computer-vision
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.