import gradio as gr from cpn import CpnInterface from prep import multi_norm from util import imread, imsave, get_examples from celldetection import label_cmap default_model = 'ginoro_CpnResNeXt101UNet-fbe875f1a3e5ce2c' def predict(filename, model=None, device=None, reduce_labels=True): global default_model assert isinstance(filename, str) print(dict( filename=filename, model=model, device=device, reduce_labels=reduce_labels ), flush=True) img = imread(filename) print('Image:', img.dtype, img.shape, (img.min(), img.max()), flush=True) if model is None or len(str(model)) <= 0: model = default_model img = multi_norm(img, 'cstm-mix') # TODO m = CpnInterface(model.strip(), device=device) y = m(img, reduce_labels=reduce_labels) labels = y['labels'] vis_labels = label_cmap(labels) dst = '.'.join(filename.split('.')[:-1]) + '_labels.tiff' imsave(dst, labels) return img, vis_labels, dst gr.Interface( predict, inputs=[gr.components.Image(label="Upload Input Image", type="filepath"), gr.components.Textbox(label='Model Name', value=default_model, max_lines=1)], outputs=[gr.Image(label="Processed Image"), gr.Image(label="Label Image"), gr.File(label="Download Label Image")], title="Cell Detection with Contour Proposal Networks", examples=get_examples(default_model) ).launch()