interface updated
Browse files- Models/Final_CNN_Model.ipynb +3 -11
- app.py +24 -4
- styles/style.css +7 -1
Models/Final_CNN_Model.ipynb
CHANGED
@@ -52,7 +52,7 @@
|
|
52 |
},
|
53 |
{
|
54 |
"cell_type": "code",
|
55 |
-
"execution_count":
|
56 |
"id": "ba44c3f6-6cdc-4043-ac1e-a062232c8385",
|
57 |
"metadata": {},
|
58 |
"outputs": [],
|
@@ -62,18 +62,10 @@
|
|
62 |
},
|
63 |
{
|
64 |
"cell_type": "code",
|
65 |
-
"execution_count":
|
66 |
"id": "7935d153-6582-42e9-915b-9bc2812923a4",
|
67 |
"metadata": {},
|
68 |
-
"outputs": [
|
69 |
-
{
|
70 |
-
"name": "stdout",
|
71 |
-
"output_type": "stream",
|
72 |
-
"text": [
|
73 |
-
"Found 78528 images belonging to 2 classes.\n"
|
74 |
-
]
|
75 |
-
}
|
76 |
-
],
|
77 |
"source": [
|
78 |
"# Now we will preprocess data using the method from ImageDataGen. class flow_from_directory\n",
|
79 |
"\n",
|
|
|
52 |
},
|
53 |
{
|
54 |
"cell_type": "code",
|
55 |
+
"execution_count": 3,
|
56 |
"id": "ba44c3f6-6cdc-4043-ac1e-a062232c8385",
|
57 |
"metadata": {},
|
58 |
"outputs": [],
|
|
|
62 |
},
|
63 |
{
|
64 |
"cell_type": "code",
|
65 |
+
"execution_count": null,
|
66 |
"id": "7935d153-6582-42e9-915b-9bc2812923a4",
|
67 |
"metadata": {},
|
68 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
"source": [
|
70 |
"# Now we will preprocess data using the method from ImageDataGen. class flow_from_directory\n",
|
71 |
"\n",
|
app.py
CHANGED
@@ -127,8 +127,27 @@ st.markdown(
|
|
127 |
"""<p class = "upload_line"> Please upload the image </p>""",
|
128 |
unsafe_allow_html= True
|
129 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
user_image = st.file_uploader("png, jpg, or jpeg image", ['png', 'jpg', 'jpeg'], label_visibility='hidden')
|
131 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
result_placeholder = st.empty()
|
133 |
|
134 |
# design animation elements
|
@@ -158,10 +177,10 @@ if user_image is not None and model_name is not None:
|
|
158 |
if model_name == 'CNN':
|
159 |
print('CNN is running')
|
160 |
predictions = pre_process_img(user_image)
|
161 |
-
elif model_name == '
|
162 |
print('Effnet is running')
|
163 |
predictions = pre_process_img_effNet(user_image)
|
164 |
-
elif model_name == '
|
165 |
print('Effnet Art is running')
|
166 |
predictions = pre_process_img_effNetArt(user_image)
|
167 |
|
@@ -172,7 +191,8 @@ if user_image is not None and model_name is not None:
|
|
172 |
|
173 |
if user_image is not None:
|
174 |
if len(predictions) > 0:
|
175 |
-
result_placeholder.markdown(f"<div class='result'> It is a <span class = resultword> {result_word} </span> image </div>", unsafe_allow_html=True)
|
|
|
176 |
|
177 |
print(model_name)
|
178 |
print(predictions[0])
|
|
|
127 |
"""<p class = "upload_line"> Please upload the image </p>""",
|
128 |
unsafe_allow_html= True
|
129 |
)
|
130 |
+
|
131 |
+
# introduce states
|
132 |
+
if "prev_image" not in st.session_state:
|
133 |
+
st.session_state.prev_image = None
|
134 |
+
if "model_key" not in st.session_state:
|
135 |
+
st.session_state.model_key = "default_model_key"
|
136 |
+
|
137 |
user_image = st.file_uploader("png, jpg, or jpeg image", ['png', 'jpg', 'jpeg'], label_visibility='hidden')
|
138 |
+
if user_image != st.session_state.prev_image:
|
139 |
+
if st.session_state.prev_image is not None:
|
140 |
+
st.session_state.model_key = "reset_model_key" # reset after the first upload
|
141 |
+
st.session_state.prev_image = user_image # set prev image to current image
|
142 |
+
|
143 |
+
model_name = st.selectbox(
|
144 |
+
'Choose a model',
|
145 |
+
['CNN', 'Efficientnet', 'Efficientnet Art'],
|
146 |
+
index=None,
|
147 |
+
placeholder='choose an option',
|
148 |
+
key=st.session_state.model_key
|
149 |
+
)
|
150 |
+
print("model name is ", model_name)
|
151 |
result_placeholder = st.empty()
|
152 |
|
153 |
# design animation elements
|
|
|
177 |
if model_name == 'CNN':
|
178 |
print('CNN is running')
|
179 |
predictions = pre_process_img(user_image)
|
180 |
+
elif model_name == 'Efficientnet':
|
181 |
print('Effnet is running')
|
182 |
predictions = pre_process_img_effNet(user_image)
|
183 |
+
elif model_name == 'Efficientnet Art':
|
184 |
print('Effnet Art is running')
|
185 |
predictions = pre_process_img_effNetArt(user_image)
|
186 |
|
|
|
191 |
|
192 |
if user_image is not None:
|
193 |
if len(predictions) > 0:
|
194 |
+
result_placeholder.markdown(f"<div class='result'> <span class = 'prediction'>Prediction: {predictions[0][0]}</span> <br> It is a <span class = resultword> {result_word} </span> image. </div>", unsafe_allow_html=True)
|
195 |
+
|
196 |
|
197 |
print(model_name)
|
198 |
print(predictions[0])
|
styles/style.css
CHANGED
@@ -94,6 +94,12 @@ body {
|
|
94 |
font-size: 32px;
|
95 |
}
|
96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
@keyframes textclip {
|
98 |
to {
|
99 |
background-position: 200% center;
|
@@ -170,7 +176,7 @@ body {
|
|
170 |
}
|
171 |
}
|
172 |
|
173 |
-
@media (max-width:
|
174 |
.detectiveMag1,
|
175 |
.detectiveMag2,
|
176 |
.detectiveMag3 {
|
|
|
94 |
font-size: 32px;
|
95 |
}
|
96 |
|
97 |
+
.prediction {
|
98 |
+
padding-top: 0 !important;
|
99 |
+
margin-top: 0 !important;
|
100 |
+
font-size: 14px;
|
101 |
+
}
|
102 |
+
|
103 |
@keyframes textclip {
|
104 |
to {
|
105 |
background-position: 200% center;
|
|
|
176 |
}
|
177 |
}
|
178 |
|
179 |
+
@media (max-width: 390px) {
|
180 |
.detectiveMag1,
|
181 |
.detectiveMag2,
|
182 |
.detectiveMag3 {
|