File size: 1,974 Bytes
e5a19d6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
edf1278
e5a19d6
 
 
 
 
 
 
 
 
 
edf1278
e5a19d6
 
 
 
edf1278
e5a19d6
 
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
import numpy as np
import gradio as gr

from utils import get_index_to_class_mapping
from load_data import generate_video_and_gradcam
from load_disease_info import disease_info
from PIL import Image


def display_name(pathology_str:str) -> str:
    return disease_info(pathology_str)


def show_logo(path):
    numpy_logo = np.asarray(Image.open(path))
    return numpy_logo


with gr.Blocks() as demo:
    with gr.Column():
        gr.Markdown("# Latent diffusion model (LDM) for synthetic X-ray generation")
        with gr.Row():
            gr.HTML("<img width='200' height='200' src='/file/logos/FAU_TechFak_H_RGB_white.png' alt='FAU TechFak logo'>")
            gr.HTML("<img width='200' height='200' src='/file/logos/LME_logo_english.png' alt='LME logo'>")
            gr.HTML("<img width='200' height='200' src='/file/logos/MDD-logo-weiss.png' alt='Medical data donors logo'>")
        with gr.Column():
            gr.Markdown("To create a synthetic image select the pathology from the set below and click **Generate**.")
            radio = gr.Radio(list(get_index_to_class_mapping().values()), label="Pathology")
        btn = gr.Button("Generate")
        with gr.Row():
            with gr.Tab(label="Diffusion model"):
                video = gr.Video(label="Diffusion steps & Generated X-ray")
            with gr.Tab(label="GradCAM Overlay"):                
                gr_image = gr.Image()
            with gr.Column():
                gr.Markdown("## Description of the diseases")
                disease_description = gr.HTML(label="Disease description")


    def submit(radio_selection):
        generated_video, generated_gradcam = generate_video_and_gradcam(radio_selection)
        return {
            video: generated_video,
            gr_image: generated_gradcam,
            disease_description: display_name(radio_selection)
        }

    btn.click(fn=submit, inputs=radio, outputs=[video, gr_image, disease_description])

demo.launch()