from pathlib import Path from typing import List, Dict, Tuple import matplotlib.colors as mpl_colors import pandas as pd import seaborn as sns import shinyswatch import run from shiny import App, Inputs, Outputs, Session, reactive, render, req, ui from transformers import SamModel, SamConfig, SamProcessor import torch sns.set_theme() www_dir = Path(__file__).parent.resolve() / "www" app_ui = ui.page_fillable( shinyswatch.theme.minty(), ui.layout_sidebar( ui.sidebar( ui.input_file("image_input", "Upload image: ", multiple=True), ), ui.output_image("image"), ui.output_image("image_output"), ui.output_image("single_patch_prediction"), ui.output_image("single_patch_prob") ), ) def server(input: Inputs, output: Outputs, session: Session): @output @render.image def image(): here = Path(__file__).parent if input.image_input(): src = input.image_input()[0]['datapath'] img = {"src": src, "width": "500px"} return img return None @output @render.image def image_output(): here = Path(__file__).parent if input.image_input(): src = input.image_input()[0]['datapath'] img = {"src": src, "width": "500px"} x = run.pred(src) print(x) return img return None app = App( app_ui, server, static_assets=str(www_dir), )