ScouterAI / tools /image_segmentation_tool.py
stevenbucaille's picture
Enhance image processing capabilities and update project structure
111afa2
raw
history blame
1.51 kB
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