|
import gradio as gr |
|
from PIL import Image |
|
import clipGPT |
|
import vitGPT |
|
import skimage.io as io |
|
import PIL.Image |
|
import difflib |
|
|
|
|
|
def compare_and_highlight(text1, text2): |
|
print("Triggered function") |
|
|
|
matcher = difflib.SequenceMatcher(None, text1, text2) |
|
output = '' |
|
for op, a1, a2, b1, b2 in matcher.get_opcodes(): |
|
if op == 'equal': |
|
output += f"**{text1[a1:a2]}**" |
|
elif op == 'insert': |
|
output += f"<ins>{text2[b1:b2]}</ins>" |
|
elif op == 'delete': |
|
output += f"<del>{text1[a1:a2]}</del>" |
|
elif op == 'replace': |
|
|
|
output += f"<del>{text1[a1:a2]}</del> <ins>{text2[b1:b2]}</ins>" |
|
print(output) |
|
return output |
|
|
|
|
|
|
|
def generate_caption_clipgpt(image): |
|
caption = clipGPT.generate_caption_clipgpt(image) |
|
return caption |
|
|
|
def generate_caption_vitgpt(image): |
|
caption = vitGPT.generate_caption(image) |
|
return caption |
|
|
|
|
|
|
|
with gr.Blocks() as demo: |
|
|
|
|
|
gr.HTML("<h1 style='text-align: center;'>MedViT: A Vision Transformer-Driven Method for Generating Medical Reports π₯π€</h1>") |
|
gr.HTML("<p style='text-align: center;'>You can generate captions by uploading an X-Ray and selecting a model of your choice below</p>") |
|
|
|
with gr.Row(): |
|
sample_images = [ |
|
"CXR191_IM-0591-1001.png", |
|
"CXR192_IM-0598-1001.png", |
|
"CXR193_IM-0601-1001.png", |
|
"CXR194_IM-0609-1001.png", |
|
"CXR195_IM-0618-1001.png" |
|
] |
|
|
|
|
|
image = gr.Image(label="Upload Chest X-ray") |
|
gr.Gallery( |
|
value = sample_images, |
|
label="Sample Images", |
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
with gr.Row(): |
|
model_choice = gr.Radio(["CLIP-GPT2", "ViT-GPT2", "ViT-CoAttention"], label="Select Model") |
|
generate_button = gr.Button("Generate Caption") |
|
|
|
caption = gr.Textbox(label="Generated Caption") |
|
|
|
def predict(img, model_name): |
|
if model_name == "CLIP-GPT2": |
|
return generate_caption_clipgpt(img) |
|
elif model_name == "ViT-GPT2": |
|
return generate_caption_vitgpt(img) |
|
else: |
|
return "Caption generation for this model is not yet implemented." |
|
|
|
with gr.Row(): |
|
text1 = gr.Textbox(label="Text 1") |
|
text2 = gr.Textbox(label="Text 2") |
|
compare_button = gr.Button("Compare Texts") |
|
with gr.Row(): |
|
comparison_result = gr.Textbox(label="Comparison Result") |
|
|
|
|
|
|
|
generate_button.click(predict, [image, model_choice], caption) |
|
compare_button.click(lambda: compare_and_highlight(text1.value, text2.value), [], comparison_result) |
|
|
|
|
|
|
|
|
|
|
|
demo.launch() |
|
|