Skip to content

Conversation

@mattdawkins
Copy link
Member

Summary

  • Add interactive segmentation using SAM2/SAM3 models for point-click based mask generation
  • Add text query feature to search for objects by description (single frame or all frames as pipeline job)
  • Support for both desktop and web-girder platforms
  • Add loading state indicators for recipe buttons

Test plan

  • Test point-click segmentation on desktop platform
  • Test point-click segmentation on web platform
  • Test text query on single frame
  • Test text query on all frames (pipeline job)
  • Verify segmentation points only display on the frame they were created on
  • Test keyboard shortcut 'T' opens text query dialog

🤖 Generated with Claude Code

mattdawkins and others added 9 commits January 26, 2026 12:32
- Add prediction-error event handler in useModeManager.ts
- Show prompt dialog when segmentation service fails to initialize
- Subscribe and unsubscribe to prediction-error event properly
- Add editorMenuRef and onTextQueryServiceReady to Viewer.vue
- Forward text-query-init, text-query, text-query-all-frames events from EditorMenu through Viewer
- Add text query handlers to web ViewerLoader.vue
- Errors now properly propagate to show error dialog instead of infinite loading
When text query fails to load, show 'Unable to load text query model' instead of
'Unable to load segmentation module' for better clarity.
When users clicked the segmentation button and then quickly switched to
polygon mode, the async initialization would complete ~2 seconds later
and call completeActivation(), which emitted an 'activate' event that
kicked the user out of polygon mode.

Added a pendingActivation flag that:
- Is set when async initialization starts
- Is checked before completing activation
- Is cleared in deactivate() to cancel in-flight async activation

This ensures switching modes during segmentation loading doesn't cause
the mode to be overridden when the async init completes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Point the desktop segmentation service to interactive_segmenter_default.conf
and the stereo service to interactive_stereo_default.conf, both under the
VIAME install configs/pipelines directory. The config files are
approach-agnostic, so the command-line args no longer specify model details.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename vital_segmentation_service.py to viame_segmentation_service.py
  and VitalSegmentationService to ViameSegmentationService
- Remove all sam2/sam3 references: backend detection, hardcoded algorithm
  types, SAM-specific env vars, and backward-compat aliases
- Algorithm creation is now config-driven, reading the type from the
  VIAME config file rather than probing for specific Python modules
- Consolidate duplicate sam2/sam3 API endpoints into generic ones:
  segmentation_predict, segmentation_status, text_query
- Update web client endpoint URLs to match

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Register Electron IPC handlers for the stereo service (enable, disable,
set-frame, transfer-line, transfer-points, calibration, status) and
expose corresponding async functions from the desktop frontend API.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add stereoSettings (interactiveModeEnabled, loading state) to client
  settings with a toggle in TrackSettingsPanel for stereo datasets
- Emit stereo annotation-complete events from useModeManager when
  interactive stereo mode is enabled (box, line, polygon, segmentation)
- Include control points in segmentation prediction results so they can
  be forwarded for stereo warping
- Pass isStereoDataset prop through Sidebar and Viewer to conditionally
  show the stereo settings section
- Wire up ViewerLoader to handle stereo annotation completion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant