Multimodal classification
Nyckel supports multi-modal (joint) classification of images and text data through our Tabular function types. Use TabularClassificationFunction for binary and multi-class classification tasks, and TabularTagsFunction for multi-label tagging tasks.
Binary and multi-class
Below is an e-commerce example:
from nyckel import Credentials, TabularClassificationFunction, TabularFunctionField, TabularClassificationSample, ClassificationAnnotation
credentials = Credentials(client_id="...", client_secret="...")
func = TabularClassificationFunction.create("Product categories", credentials)
func.create_fields([
    TabularFunctionField(name="Product", type="Text"),
    TabularFunctionField(name="Description", type="Text"),
    TabularFunctionField(name="Picture", type="Image")
])
# <image-data> entires can be provided as URLs, base64-encoded dataURIs, or local file paths.
func.create_samples(
    [
        TabularClassificationSample(
            data={"Product": "Acme wrench", "Description": "Solid steel; never breaks", "Picture": "<image-data>"},
            annotation=ClassificationAnnotation(label_name="Hardware"),
        ),
        TabularClassificationSample(
            data={"Product": "ULINE Hammer", "Description": "Hammer with wood handle", "Picture": "<image-data>"},
            annotation=ClassificationAnnotation(label_name="Hardware"),
        ),
        TabularClassificationSample(
            data={"Product": "Brooklinen bedding","Description": "Queen size bedding","Picture": "<image-data>"},
            annotation=ClassificationAnnotation(label_name="Bedding"),
        ),
        TabularClassificationSamplefo(
            data={"Product": "Comforter", "Description": "Nice down comforter", "Picture": "<image-data>"},
            annotation=ClassificationAnnotation(label_name="Bedding"),
        ),
    ]
)
Multi-label (tagging)
Nyckel also supports multi-label tagging of images and text data through our Tabular Tags function type.
from nyckel import Credentials, TabularTagsFunction, TabularFunctionField, TabularTagsSample, TagsAnnotation
credentials = Credentials(client_id="...", client_secret="...")
func = TabularTagsFunction.create("Product categories", credentials)
func.create_fields([
    TabularFunctionField(name="Product", type="Text"),
    TabularFunctionField(name="Description", type="Text"),
    TabularFunctionField(name="Picture", type="Image")
])
# <image-data> entires can be provided as URLs, base64-encoded dataURIs, or local file paths.
func.create_samples(
    [
        TabularTagsSample(
            data={"Product": "Acme wrench", "Description": "Solid steel; never breaks", "Picture": "<image-data>"},
            annotation=[TagsAnnotation(label_name="Hardware"), TagsAnnotation(label_name="US-made")],
        ),
        TabularTagsSample(
            data={"Product": "ULINE Hammer", "Description": "Hammer with wood handle", "Picture": "<image-data>"},
            annotation=[TagsAnnotation(label_name="Hardware")],
        ),
        TabularTagsSample(
            data={"Product": "Brooklinen bedding","Description": "Queen size bedding","Picture": "<image-data>"},
            annotation=[TagsAnnotation(label_name="Bedding"), TagsAnnotation(label_name="Organic")],
        ),
        TabularTagsSample(
            data={"Product": "Comforter", "Description": "Nice down comforter", "Picture": "<image-data>"},
            annotation=[TagsAnnotation(label_name="Hardware")],
        ),
    ]
)