TORCHSCRIPT_CLASSIFIER
Download Flojoy Studio to try this app
Execute a TorchScript classifier against an input image. Params: input_image : Image The image to classify. class_names : DataFrame A dataframe containing the class names. model_path : str The path to the torchscript model. Returns: out : DataFrame A dataframe containing the class name and confidence score.
Python Code
from flojoy import DataFrame, Image, flojoy
@flojoy(
deps={
"torch": "2.0.1",
"torchvision": "0.15.2",
}
)
def TORCHSCRIPT_CLASSIFIER(
input_image: Image, class_names: DataFrame, model_path: str
) -> DataFrame:
"""Execute a TorchScript classifier against an input image.
Parameters
----------
input_image : Image
The image to classify.
class_names : DataFrame
A dataframe containing the class names.
model_path : str
The path to the torchscript model.
Returns
-------
DataFrame
A dataframe containing the class name and confidence score.
"""
import numpy as np
import pandas as pd
import PIL.Image
import torch
import torchvision
# Load model
model = torch.jit.load(model_path)
channels = [input_image.r, input_image.g, input_image.b]
mode = "RGB"
if input_image.a is not None:
channels.append(input_image.a)
mode += "A"
input_image_pil = PIL.Image.fromarray(
np.stack(channels).transpose(1, 2, 0), mode=mode
).convert("RGB")
input_tensor = torchvision.transforms.functional.to_tensor(
input_image_pil
).unsqueeze(0)
# Run model
with torch.inference_mode():
output = model(input_tensor)
# Get class name and confidence score
_, pred = torch.max(output, 1)
class_name = class_names.m.iloc[pred.item()].item()
confidence = torch.nn.functional.softmax(output, dim=1)[0][pred.item()].item()
return DataFrame(
df=pd.DataFrame({"class_name": [class_name], "confidence": [confidence]})
)
Example App
Having problems with this example app? Join our Discord community and we will help you out!
In this example, the TORCHSCRIPT_CLASSIFIER
loads the user-provided .torchscript
model as well as the .csv
table that maps class indices to class names. The model is then used to classify the provided input image,
and it outputs the class name of the predicted class as well as a confidence score.