Segment Anything in ROS
The server branch of this project is designed to alleviate GPU computation load when processing data stream on the client side. Sometimes it might be a good idea to let another local machine or even a cloud instance to host the SAM model and to make predictions. The server's main function is hosting the SAM model and processing segmentation API requests from the client ROS service through a python Flask server. More documentations about setting up the server could be found in the server branch.
The client branch consists of a ROS service allows direct input of point coordinates, point coordinate masks as well as bounding boxes in order for the model to make predictions. Additionally, it also supports direct input of segmentation masks to further narrow down the area you want to include in the mask. If you want to make a manual selection of points or bounding box, you can invoke the customizable GUI with a boolean flag which will generate the input parameters once you close it.
An example of the GUI is as follows:
More documentations about setting up the service could be found in the client branch.