Resolve Parentless GTSFM Products in Process Graph
- 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.

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
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