File size: 1,857 Bytes
2e77581
 
7ebfeb9
afda258
 
cf05f8b
22ed06b
 
623b4fb
931c795
7fcb6d2
623b4fb
849c8db
 
 
 
 
 
7ebfeb9
afda258
2e77581
 
7ebfeb9
 
2e77581
 
cf05f8b
afda258
dee2758
6ae0110
dee2758
fc6f52f
7ebfeb9
623b4fb
22ed06b
2e77581
22ed06b
 
 
228f901
22ed06b
2e77581
f63a88c
2e77581
dd914ca
88e8671
 
dd914ca
2e77581
afda258
2e77581
b51c75c
2e77581
dee2758
 
afda258
2e77581
623b4fb
678675f
2e77581
 
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


import gradio as gr
from PIL import Image
import clipGPT
import vitGPT
import skimage.io as io
import PIL.Image
import difflib
import ViTCoAtt
from build_vocab import Vocabulary

def render_image(image_path_or_url):  
    img = Image.open(io.imread(image_path_or_url))
    img = img.resize((80, 80))  # Adjust size as needed
    buf = io.BytesIO()
    img.save(buf, format='JPEG')
    return buf.getvalue()

# 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 = ViTCoAtt.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")

        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 


demo.launch()