-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.py
More file actions
154 lines (124 loc) · 5.49 KB
/
main.py
File metadata and controls
154 lines (124 loc) · 5.49 KB
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
import streamlit as st
import numpy as np
import pandas as pd
from PIL import Image
import cv2
import keras.applications.xception as kax
import keras.models as kmodel
IMAGE_SIZE = 64
def load_my_model():
return kmodel.load_model('atopy_classifier1.h5');
myModel = load_my_model();
st.title('WGAN-GP와 Xception 모델 변형을 통한 아토피 중증도 분류 모델 개선');
st.header('아토피의 중증도를 분류해줍니다. ');
xceptionBlockDiagram = Image.open('image/ourXception.png');
@st.cache
def openImageAndConverToNumpy(ImagePath):
pilImage = Image.open(ImagePath);
numpyImage = np.array(pilImage);
return numpyImage;
#이미지 불러오기
st.text("병변 별 gan으로 생성한 이미지입니다.");
myScratch11 = openImageAndConverToNumpy("image/gan/myScratch1_2355.jpg");
myScratch12 = openImageAndConverToNumpy("image/gan/myScratch1_2388.jpg");
myScratch13 = openImageAndConverToNumpy("image/gan/myScratch1_2394.jpg");
myScratch21 = openImageAndConverToNumpy("image/gan/myScratch2_2356.jpg");
myScratch22 = openImageAndConverToNumpy("image/gan/myScratch2_2373.jpg");
myScratch23 = openImageAndConverToNumpy("image/gan/myScratch2_2392.jpg");
myScratch31 = openImageAndConverToNumpy('image/gan/myScratch3__2161.jpg');
myScratch32 = openImageAndConverToNumpy('image/gan/myScratch3__2217.jpg');
myScratch33 = openImageAndConverToNumpy('image/gan/myScratch3__2265.jpg');
myLi11 = openImageAndConverToNumpy('image/gan/myLi1_2383.jpg');
myLi12 = openImageAndConverToNumpy('image/gan/myLi1_2392.jpg');
myLi13 = openImageAndConverToNumpy('image/gan/myLi1_2397.jpg');
myLi21 = openImageAndConverToNumpy('image/gan/myLi2_2387.jpg');
myLi22 = openImageAndConverToNumpy('image/gan/myLi2_2388.jpg');
myLi23 = openImageAndConverToNumpy('image/gan/myLi2_2392.jpg');
myLi31 = openImageAndConverToNumpy('image/gan/myLi3_1890.jpg');
myLi32 = openImageAndConverToNumpy('image/gan/myLi3_1893.jpg');
myLi33 = openImageAndConverToNumpy('image/gan/myLi3_1908.jpg');
myRed31 = openImageAndConverToNumpy('image/gan/myReds_2280.jpg');
myRed32 = openImageAndConverToNumpy('image/gan/myReds_2332.jpg');
myRed33 = openImageAndConverToNumpy('image/gan/myReds_2382.jpg');
myRed11 = openImageAndConverToNumpy('image/gan/myReds_2360.jpg');
myRed12 = openImageAndConverToNumpy('image/gan/myReds_2342.jpg');
myRed13 = openImageAndConverToNumpy('image/gan/myReds_2317.jpg');
myRed21 = openImageAndConverToNumpy('image/gan/myReds_2326.jpg');
myRed22 = openImageAndConverToNumpy('image/gan/myReds_2353.jpg');
myRed23 = openImageAndConverToNumpy('image/gan/myReds_2298.jpg');
col1, col2, col3, col4, col5, col6, col7, col8, col9 = st.columns(9)
col1.write("홍진1");
col1.image(myRed11)
col1.image(myRed12)
col1.image(myRed13)
col2.write("홍진2");
col2.image(myRed21);
col2.image(myRed22);
col2.image(myRed23);
col3.write("홍진3")
col3.image(myRed31);
col3.image(myRed32);
col3.image(myRed33);
col4.write("상처1");
col4.image(myScratch11)
col4.image(myScratch12)
col4.image(myScratch13)
col5.write("상처2")
col5.image(myScratch21)
col5.image(myScratch22)
col5.image(myScratch23)
col6.write("상처3")
col6.image(myScratch31);
col6.image(myScratch32);
col6.image(myScratch33);
col7.write("태선화1");
col7.image(myLi11);
col7.image(myLi12);
col7.image(myLi13);
col8.write("태선화2");
col8.image(myLi21);
col8.image(myLi22);
col8.image(myLi23);
col9.write("태선화3");
col9.image(myLi31);
col9.image(myLi32);
col9.image(myLi33);
st.text("**변형된 Xception 모델의 블록도 입니다.**")
def showModel():
return st.image(xceptionBlockDiagram);
showModel();
# 이미지를 업로드 했다면 이미지를 보여준다.
image_file = st.file_uploader('이미지 업로드', type=['png','jpg','jpeg']);
if(image_file):
pilImage = Image.open(image_file);
numpyImage=np.array(pilImage)
st.image(pilImage);
#이미지 전처리를 해줘야한다.
processedImage = cv2.cvtColor(numpyImage, cv2.COLOR_BGR2RGB);
processedImage = cv2.resize(processedImage, (IMAGE_SIZE, IMAGE_SIZE));
processedImage = kax.preprocess_input(processedImage);
processedImage = np.reshape(processedImage, (1,64,64,3))
# 태선화1 2 3 홍진1 2 3 긁은 상처 1 2 3 순서
print(myModel.predict(processedImage))
result = myModel.predict(processedImage)[0].argmax()
def switch(key):
myLabel = {"0" : "태선화1", "1" : "태선화2","2" : "태선화3","3":"홍진1","4" : "홍진2", "5" : "홍진3", "6" : "긁은상처1", "7" : "긁은상처2","8": "긁은상처3"}.get(key)
st.header("병변 및 중증도");
st.header(myLabel)
switch(str(result));
myPicture =st.camera_input("Take a picture about your skin ");
if(myPicture):
myPictureData = myPicture.getvalue();
cv2_img = cv2.imdecode(np.frombuffer(myPictureData, np.uint8), cv2.IMREAD_COLOR);
st.image(cv2_img);
myProcessedImage = cv2.cvtColor(cv2_img , cv2.COLOR_BGR2GRAY);
myProcessedImage = cv2.resize(myProcessedImage, (IMAGE_SIZE, IMAGE_SIZE));
myProcessedImage = kax.preprocess_input(myProcessedImage);
myProcessedImage = np.reshape(myProcessedImage, (1, 64,64,3));
print(myModel.predict(myProcessedImage))
result = myModel.predict(myProcessedImage[0].argmax())
def mySwitch(key):
myLabel = {"0" : "태선화1", "1" : "태선화2","2" : "태선화3","3":"홍진1","4" : "홍진2", "5" : "홍진3", "6" : "긁은상처1", "7" : "긁은상처2","8": "긁은상처3"}.get(key)
st.header("병변 및 중증도");
st.header(myLabel)
mySwitch(str(result));