File size: 6,027 Bytes
972f771
 
 
 
 
653f9d3
972f771
 
 
5bcf51d
415fb38
653f9d3
 
 
972f771
 
653f9d3
 
972f771
653f9d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101ebc7
 
 
653f9d3
972f771
653f9d3
 
 
f8771cb
653f9d3
5cedd07
653f9d3
 
101ebc7
 
 
653f9d3
f8771cb
653f9d3
 
 
 
 
 
 
 
 
f8771cb
 
653f9d3
 
101ebc7
 
 
653f9d3
f8771cb
972f771
1883ceb
653f9d3
 
 
1883ceb
04aa05b
ea43e2e
653f9d3
 
 
 
5cedd07
653f9d3
 
 
 
 
 
 
 
 
 
 
b1bb4fd
653f9d3
 
 
 
 
 
 
 
 
 
 
 
972f771
 
 
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
from keras.models import load_model
import cv2
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import gradio as gr
import numpy as np
from yolo_model import Predict

my_model=load_model('Liver_model.h5',compile=True)
heart_model=load_model('Chicken_Heart_model.h5',compile=True)
lu_model=load_model('Lungs_model.h5',compile=True)
auth_model=load_model('update_postmortem_auth_model.h5',compile=True)
heart_class_name = {0: 'Dilation(eccentric)', 1: 'Hepatoma', 2: 'Hypertrophy(concentric)', 3: 'Hypertrophy(physiological)', 4: 'Infraction Damage', 5: 'Normal'}
heart_result = {0: 'Critical', 1: 'Critical', 2: 'Critical', 3: 'Critical', 4: 'Critical', 5: 'Normal'}
heart_recommend = {0: 'panadol', 1: 'peracetamol', 2: 'ponston', 3: 'brofon', 4: 'brofon', 5: 'No Need'}

def Heart_Disease_prediction(img):
    img = cv2.imread(img)
    img = img.reshape((1, img.shape[0], img.shape[1], img.shape[2]))

    # Create the data generator with desired properties
    datagen = ImageDataGenerator(
        rotation_range=30,
        width_shift_range=0.1,
        height_shift_range=0.1,
        shear_range=0.1,
        zoom_range=0.1,
        horizontal_flip=True,
        fill_mode="nearest",
    )
    # Generate a batch of augmented images (contains only the single image)
    augmented_images = datagen.flow(img, batch_size=1)
    # Get the first (and only) augmented image from the batch
    augmented_img = next(augmented_images)[0]
    img = cv2.resize(augmented_img.astype(np.uint8), (128, 128))
    class_no = heart_model.predict(img.reshape(1, 128, 128, 3)).argmax()
    name = "Heart Organ: " + heart_class_name.get(class_no)
    result = "Heart Organ Status: " + heart_result.get(class_no)
    recommend = "Heart Organ Recommendation: " + heart_recommend.get(class_no)
    return name, result, recommend

liver_class_num = {0: 'Healthy', 1: 'Un-Healthy'}
liver_result = {0: 'Normal', 1: 'Critical'}
liver_recommend = {0: 'No need Medicine', 1: 'Panadol'}

def Liver_Predict(image):
    image=cv2.imread(image)
    image = cv2.resize(image, (224, 224))
    class_no = my_model.predict(image.reshape(1, 224, 224, 3)).argmax()
    class_name = "Liver Organ: " + liver_class_num.get(class_no)
    liver_class_result = "Liver Organ Status: " + liver_result.get(class_no)
    liver_class_recommend = "Liver Organ Recommendation: " + liver_recommend.get(class_no)
    return class_name, liver_class_result, liver_class_recommend

lung_classes = {
    0: 'Lungs of infected chickens showing congestion, hemorrhage and consolidation with traces of fibrin at 24 hpi (hours post-infection)',
    1: 'gradual paleness and reduction in size of lungs at 2 dpi (days post-infection)',
    2: 'gradual paleness and reduction in size of lung at 3 dpi (days post-infection)',
    3: 'severe congestion, hemorrhage, and gradual shrinking of lungs at 4 dpi (days post-infection)',
    4: 'severe congestion, hemorrhage, and gradual shrinking of lungs at 5 dpi (days post-infection)'
}
lung_result = {0: 'critical', 1: 'critical', 2: 'critical', 3: 'critical', 4: 'critical'}
lung_recommend = {0: 'panadol', 1: 'peracetamol', 2: 'ponston', 3: 'brofon', 4: 'brofon'}

def Lungs_predict(image):
    image = cv2.resize(cv2.imread(image), (224, 224))
    lung_no = lu_model.predict(image.reshape(1, 224, 224, 3)).argmax()
    lung_disease_name = "Lung Organ: " + lung_classes.get(lung_no)
    lung_r = "Lung Organ Status: " + lung_result.get(lung_no)
    lung_re = "Lung Organ Recommendation: " + lung_recommend.get(lung_no)
    return lung_disease_name, lung_r, lung_re

def main(Image):
    liver_name,liver_r,liver_re,heart_n,heart_r,heart_re,lung_d,lung_r,lung_re='Liver Organ: Not Detected','Liver Organ:N/A','Liver Organ:N/A','Heart Organ: Not Detected','Heart Organ: N/A','Heart Organ: N/A','Lungs Organ: Not Detected','Lungs Organ: N/A','Lungs Organ: N/A'
    img = cv2.resize(Image, (224, 224))
    indx = auth_model.predict(img.reshape(1, 224, 224, 3)).argmax()
    if indx == 0:
        liver_name,liver_r,liver_re,heart_n,heart_r,heart_re,lung_d,lung_r,lung_re='Liver Organ: Not Detected','Liver Organ: N/A','Liver Organ: N/A','Heart Organ: Not Detected','Heart Organ: N/A','Heart Organ: N/A','Lungs Organ: Not Detected','Lungs Organ: N/A','Lungs Organ: N/A'
        return liver_name,liver_r,liver_re,heart_n,heart_r,heart_re,lung_d,lung_r,lung_re
    else:
        img_name_list, labels = Predict(Image)
        if len(labels) > 0:
            if labels[0] is not None:
                if labels[0]['label'] == 'Liver':
                    liver_name, liver_r, liver_re = Liver_Predict('Liver.jpg')
                if labels[0]['label'] == 'Heart':
                    heart_n, heart_r, heart_re = Heart_Disease_prediction(img_name_list[0])
                if labels[0]['label'] == 'Lung':
                    lung_d, lung_r, lung_re = Lungs_predict(img_name_list[0])
            if len(labels) > 1 and labels[1] is not None:
                if labels[1]['label'] == 'Liver':
                    liver_name, liver_r, liver_re = Liver_Predict(Image)
                if labels[1]['label'] == 'Heart':
                    heart_n, heart_r, heart_re = Heart_Disease_prediction(img_name_list[1])
                if labels[1]['label'] == 'Lung':
                    lung_d, lung_r, lung_re = Lungs_predict(img_name_list[1])
        return liver_name, liver_r, liver_re, heart_n, heart_r, heart_re, lung_d, lung_r, lung_re

interface = gr.Interface(fn=main, inputs='image', outputs=[
    gr.components.Textbox(label="Heart Disease Name"),
    gr.components.Textbox(label="Heart result Name"),
    gr.components.Textbox(label="Heart recommend"),
    gr.components.Textbox(label="Liver Disease Name"),
    gr.components.Textbox(label="Liver result Name"),
    gr.components.Textbox(label="Liver recommend"),
    gr.components.Textbox(label="Lung Disease Name"),
    gr.components.Textbox(label="Lung result Name"),
    gr.components.Textbox(label="Lung recommend")
], title="Postmortem")

interface.launch(debug=True)