Spaces:
Running
Running
| import numpy as np | |
| from PIL import Image | |
| import gradio as gr | |
| import create_model as cm | |
| print("Loading model and tokenizer...") | |
| model_tokenizer = cm.create_model() | |
| print("Model ready.") | |
| def predict(image_1, image_2): | |
| if image_1 is None: | |
| return "Please upload at least the first X-ray image." | |
| img1 = np.array(Image.fromarray(image_1).convert("RGB")) / 255 | |
| if image_2 is None: | |
| img2 = img1 | |
| else: | |
| img2 = np.array(Image.fromarray(image_2).convert("RGB")) / 255 | |
| caption = cm.function1([img1], [img2], model_tokenizer) | |
| return caption[0] | |
| examples = [ | |
| ["test_images/1/CXR54_IM-2145-1001.png", "test_images/1/CXR54_IM-2145-1002.png"], | |
| ["test_images/2/images.jpg", None], | |
| ["test_images/3/CXR303_IM-1404-1001.png", None], | |
| ["test_images/4/CXR25_IM-1024-2001.png", None], | |
| ] | |
| demo = gr.Interface( | |
| fn=predict, | |
| inputs=[ | |
| gr.Image(label="X-ray 1 (frontal view)"), | |
| gr.Image(label="X-ray 2 (lateral view, optional)"), | |
| ], | |
| outputs=gr.Textbox(label="Impression"), | |
| examples=examples, | |
| title="Chest X-ray Report Generator", | |
| description=( | |
| "Upload one or two chest X-rays (frontal view, and optionally a lateral view) " | |
| "of the same patient to generate the impression section of a radiology report." | |
| ), | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |