Project-MONAI / Project-MONAI/MONAILabel
Adding near-real time collaborative manual segmentation
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 891
- Forks
- 269
- Avg merge
- 15h 41m
- Merged PRs (30d)
- 1
Description
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
- Ultimately, a near-real time solution which works like a shared whiteboard, where multiple people can manually segment a dataset collaboratively, accessed via Slicer.
- For an easier initial product, it could be collaborative viewing plugin, with only one editor.
Describe alternatives you've considered
- 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.
- Use http://brainbox.pasteur.fr
Potential Ideas for Implementation
- 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. - 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." - Open a secure WebSocket connection among participants. Saving a file triggers a file sync. One leader other viewers only, to avoid conflict resolution necessity.
- 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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the MONAI Label Python API and how the Slicer plugin connects to it. Compare the proposed multi-client shared-model approach with a secure WebSocket and file-sync design, then document a feasible architecture, conflict model, and initial collaborative-viewing scope.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend-api-design, machine-learning
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100