File size: 2,223 Bytes
7ebfeb9
afda258
 
cf05f8b
22ed06b
 
623b4fb
dee2758
7fcb6d2
623b4fb
 
7ebfeb9
afda258
 
5ce0179
7ebfeb9
 
cf05f8b
 
 
afda258
dee2758
bfd318a
dee2758
fc6f52f
7ebfeb9
623b4fb
22ed06b
5d8bab6
22ed06b
 
 
f63a88c
 
 
22ed06b
 
31bbcd0
22ed06b
 
 
fc733f6
dee2758
cb2be18
 
281dd11
b1241b7
dee2758
f63a88c
22ed06b
 
b1241b7
f63a88c
 
22ed06b
 
281dd11
afda258
623b4fb
b51c75c
cf05f8b
dee2758
 
afda258
623b4fb
 
afda258
b1241b7
ad8b91f
dee2758
623b4fb
 
22ed06b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import gradio as gr
from PIL import Image
import clipGPT
import vitGPT
import skimage.io as io
import PIL.Image
import difflib
import tester
from build_vocab import Vocabulary



# Caption generation functions
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

def generate_caption_vitCoAtt(image):
    caption = tester.CaptionSampler.main(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():
        model_choice = gr.Radio(["CLIP-GPT2", "ViT-GPT2", "ViT-CoAttention"], label="Select Model")
       
    with gr.Row():
        sample_images = [
        "https://upload.wikimedia.org/wikipedia/commons/0/09/TheCheethcat.jpg",
        "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", type="pil")    
        
        sample_images_gallery = gr.Gallery(value = sample_images,label="Sample Images")

    with gr.Row():
        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)
        elif model_name == "ViT-CoAttention":
            return generate_caption_vitCoAtt(img)
        else:
            return "Caption generation for this model is not yet implemented."     


    # Event handlers
    generate_button.click(predict, [image, model_choice], caption)  # Trigger prediction on button click 
    sample_images_gallery.change(predict, [sample_images_gallery, model_choice], caption)  # Handle sample images


demo.launch()