Showcasing The Entire ML Workflow

We've spent the last few months working on features to allow an Aquarium user to go through all of the steps in the data curation workflow - finding mistakes, searching through unlabeled datasets to find the best data to label, dispatching data to labeling, and updating the dataset with new labels - without needing to write any code.
We just released a walkthrough video that highlights this end to end workflow. This video uses a Labelbox integration but also has good support for Scale and in-house labeling pipelines. We've deployed this workflow with a few customers and have seen huge speedups in the model iteration cycle, and we're going to be rolling this out to many more customers in the coming weeks!

Unlabeled Indexed Collection Campaigns

You can now upload unlabeled datasets, and run collection campaigns solely within the app.

App Improvements

If you're dealing with "crop" issue elements, there is now a toggle in the similarity search UI that defaults to displaying ground truth (GT) results only, with the option to also display similar results from your inferences:
NOTE: In order for this to work for existing issues, you'll need to rerun the similarity search calculation. You should see a "Recalculate" button that allows you to do this.

User Configurable Hotkeys

We've added support for user configurable hotkeys! Press Shift+? at any place in the app to see the hotkey menu, and click on a hotkey to rebind it to whatever you prefer.
Reach out if there's an action that you would like us to add hotkey support for.
Hotkey config UI

Dataset Version Select

For mutable datasets, you can now view a list of historic versions and select a version to view in the Explore tab.

Frame History View

For mutable datasets, you can now view a list of edits on a frame, and diffs between versions.

Python Client

Update Issue Element Status

The Python client now supports updating issue element status. See the following example for a sample, or check out the full docs here.
import aquariumlearning as al
al_client = al.Client()
issue_manager = al_client.get_issue_manager(PROJECT)
issue = issue_manager.get_issue(ISSUE_ID)
# Update all unstarted issues to done
element_ids = [e.element_id for e in issue.elements if e.status == "unstarted"]
update_element_status(ISSUE_ID, element_ids, "done")
Last modified 1mo ago