Spaces:
Runtime error
Runtime error
| import modal | |
| from smolagents import Tool | |
| from modal_apps.app import app | |
| from modal_apps.inference_pipeline import InferencePipelineModalApp | |
| class ImageSegmentationTool(Tool): | |
| name = "image_segmentation" | |
| description = """ | |
| Given an image, segment the image and return the segmented image. | |
| The image is a PIL image. | |
| The output is a list of dictionaries containing the segments with the following keys: | |
| - score: an optional number between 0 and 1, can be None. | |
| - label: a string | |
| - mask: a PIL image | |
| You need to provide the model name to use for image segmentation. | |
| The tool returns a list of segments for all the objects in the image. | |
| """ | |
| inputs = { | |
| "image": { | |
| "type": "image", | |
| "description": "The image to segment", | |
| }, | |
| "model_name": { | |
| "type": "string", | |
| "description": "The name of the model to use for image segmentation", | |
| }, | |
| } | |
| output_type = "object" | |
| def __init__(self): | |
| super().__init__() | |
| self.modal_app = modal.Cls.from_name(app.name, InferencePipelineModalApp.__name__)() | |
| def forward( | |
| self, | |
| image, | |
| model_name: str, | |
| ): | |
| segments = self.modal_app.forward.remote(model_name=model_name, task="image-segmentation", image=image) | |
| print("Segments: ", segments) | |
| for segment in segments: | |
| print(f"Found segment of {segment['label']}") | |
| return segments | |