Project-MONAI / MONAILabel

MONAI Label is an intelligent open source image labeling and learning tool.
https://docs.monai.io/projects/label
Apache License 2.0
586 stars 189 forks source link

Adding near-real time collaborative manual segmentation #1422

Open kchawla-pi opened 1 year ago

kchawla-pi commented 1 year ago

Is your feature request related to a problem? Please describe. I am looking into setting up a way to collaboratively annotate and segment sMRI. The idea is that we can invite specific people via email and they can all join and collaborate a volume as a team via a low latency connection, everything running on our local servers so the hospital’s data does not leave the servers.

Is such a feature possible with MONAI as it currently stands? If not, can we build one for it? If yes, what would that entail? Where should I ask these questions and get mentoring and stewardship?

Is it more feasible to simply build a Slicer plugin and MONAI should not be involved with this?

Describe the solution you'd like

  1. Ultimately, a near-real time solution which works like a shared whiteboard, where multiple people can manually segment a dataset collaboratively, accessed via Slicer.
  2. For an easier initial product, it could be collaborative viewing plugin, with only one editor.

Describe alternatives you've considered

  1. Simply use Dropbox like apps to sync the data files and save frequently as editing is performed, so the modified data files are synced. One leader, others viewer only. Latency may be an issue here.
  2. Use http://brainbox.pasteur.fr

Potential Ideas for Implementation

  1. I reached out to Stephen Aylward at Kitware & he suggested "Clara Train's AI assisted annotation tool supports multiple clients annotating a common dataset to train a single AI model: [https://docs.nvidia.com/clara/clara-train-sdk/aiaa/index.html]". Then he found out & informed me that it is being deprecated so not a viable solution anymore.
  2. Another solution he proposed, in-lieu of above: "Implement this as a feature in MONAI Labels using MONAI Label's python API and extending it to support multiple clients annotating the same data using a shared model."
  3. Open a secure WebSocket connection among participants. Saving a file triggers a file sync. One leader other viewers only, to avoid conflict resolution necessity.
  4. Use a tool like https://convergence.io/ to be the backend and build a Slicer plugin around it.

Additional context Add any other context or screenshots about the feature request here.

tangy5 commented 1 year ago

Thanks. I think the current MONAI Label can achieve this. Once the monailabel server is on, users can use viewer from different machines (e.g., 3D Slicer) and connect to the same server via URL and annotate, submit labels, run inference.

And monailabel also supports the authentication stuff. users can create account and login to monailabel server to conduct labeling as different roles (admin, annotator, reviewer, user). For authentication, please see https://github.com/Project-MONAI/MONAILabel/wiki/Integration-with-Keycloak

Correct me if I'm wrong here @SachidanandAlle

diazandr3s commented 1 year ago

Hi @kchawla-pi,

This is a great initiative.

I agree with @tangy5, MONAI Label has the potential to create such a project.

We could use the whole-brain segmentation model as a baseline so the annotators don't start from scratch: https://github.com/Project-MONAI/model-zoo/tree/dev/models/wholeBrainSeg_Large_UNEST_segmentation

Please let us know your thoughts