Image Segmentation

Instance

What is Instance Segmentation?

Instance segmentation assigns a class label to each polygon but also distinguishes between different objects of the same class, providing unique instances for each object.

Logging Instance Segmentation Data

To log instance segmentation data into Arize, use the following code:

from arize.utils.types import (
    Schema,
    EmbeddingColumnNames,
    InstanceSegmentationPredictionColumnNames,
    InstanceSegmentationActualColumnNames
)

embedding_feature_column_names = {
    "image_embedding": EmbeddingColumnNames(
        vector_column_name="image_vector", link_to_data_column_name="url"
    )
}
instance_segmentation_prediction_column_names = InstanceSegmentationPredictionColumnNames(
    polygon_coordinates_column_name="prediction_polygons",
    categories_column_name="prediction_categories",
    scores_column_name="prediction_scores",
    bounding_boxes_coordinates_column_name="prediction_bboxes"
)

instance_segmentation_actual_column_names = InstanceSegmentationActualColumnNames(
    polygon_coordinates_column_name="actual_polygons",
    categories_column_name="actual_categories",
    bounding_boxes_coordinates_column_name="actual_bboxes"
)

Semantic

What is Semantic Segmentation?

Semantic segmentation assigns a class label to each pixel in an image. It groups all polygons of the same class into a single group, without distinguishing individual object instances.

Logging Semantic Segmentation Data

To log semantic segmentation data into Arize, use the following code:

from arize.utils.types import (
    Schema,
    EmbeddingColumnNames,
    SemanticSegmentationColumnNames,
)
embedding_feature_column_names = {
    "image_embedding": EmbeddingColumnNames(
        vector_column_name="image_vector", link_to_data_column_name="url"
    )
}
semantic_segmentation_prediction_column_names = SemanticSegmentationColumnNames(
    polygon_coordinates_column_name="prediction_polygons",
    categories_column_name="prediction_categories",
)

#OPTIONAL: Log actual data 
semantic_segmentation_actual_column_names = SemanticSegmentationColumnNames(
    polygon_coordinates_column_name="actual_polygons",
    categories_column_name="actual_categories",
)

Sending Data to Arize

For both semantic and instance segmentation, use the OBJECT_DETECTION model type when sending data to Arize:

response = arize_client.log(
    dataframe=test_demo,
    schema=schema,
    model_id=model_id,
    model_version=model_version,
    model_type=ModelTypes.OBJECT_DETECTION,
    environment=Environments.PRODUCTION,
)

Note: You need to define your schema appropriately based on whether you're using semantic or instance segmentation. The schema should include your embedding feature column names and the respective segmentation column names to view polygons in the platform.

Last updated

Was this helpful?