Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -93,6 +93,32 @@ def preprocess_image(image):
|
|
93 |
|
94 |
return img_array
|
95 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
def get_top_predictions(prediction, class_names, top_k=5):
|
97 |
"""Get top k predictions with their probabilities"""
|
98 |
# Get indices of top k predictions
|
@@ -150,39 +176,78 @@ def main():
|
|
150 |
|
151 |
with col2:
|
152 |
st.subheader("Prediction Results")
|
153 |
-
if st.session_state.predictions
|
154 |
-
#
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
else:
|
183 |
-
st.info("Upload an image
|
184 |
-
|
185 |
-
# Footer
|
186 |
st.markdown("---")
|
187 |
st.markdown("Made with ❤️ using Streamlit")
|
188 |
|
|
|
93 |
|
94 |
return img_array
|
95 |
|
96 |
+
from mega import Mega
|
97 |
+
|
98 |
+
# Đăng nhập vào tài khoản Mega
|
99 |
+
def upload_to_mega(file_path, folder_name):
|
100 |
+
"""
|
101 |
+
Upload file to a specific folder on Mega.nz
|
102 |
+
"""
|
103 |
+
try:
|
104 |
+
# Đăng nhập vào tài khoản Mega
|
105 |
+
mega = Mega()
|
106 |
+
m = mega.login('[email protected]', '01283315889')
|
107 |
+
|
108 |
+
# Tìm thư mục đích
|
109 |
+
folder = m.find(folder_name)
|
110 |
+
|
111 |
+
if not folder:
|
112 |
+
# Nếu thư mục không tồn tại, hiển thị thông báo lỗi
|
113 |
+
return f"Thư mục '{folder_name}' không tồn tại!"
|
114 |
+
|
115 |
+
# Tải tệp lên thư mục
|
116 |
+
file = m.upload(file_path, folder[0])
|
117 |
+
return f"Upload thành công! Link: {m.get_upload_link(file)}"
|
118 |
+
|
119 |
+
except Exception as e:
|
120 |
+
return f"Lỗi khi tải lên Mega: {str(e)}"
|
121 |
+
|
122 |
def get_top_predictions(prediction, class_names, top_k=5):
|
123 |
"""Get top k predictions with their probabilities"""
|
124 |
# Get indices of top k predictions
|
|
|
176 |
|
177 |
with col2:
|
178 |
st.subheader("Prediction Results")
|
179 |
+
if st.session_state.predictions:
|
180 |
+
# Display main prediction
|
181 |
+
top_class, top_confidence = st.session_state.predictions[0]
|
182 |
+
st.markdown(
|
183 |
+
f"""
|
184 |
+
<div class='prediction-card'>
|
185 |
+
<h3>Primary Prediction: Grade {top_class}</h3>
|
186 |
+
<h3>Confidence: {top_confidence:.2f}%</h3>
|
187 |
+
</div>
|
188 |
+
""",
|
189 |
+
unsafe_allow_html=True
|
190 |
+
)
|
191 |
+
|
192 |
+
# Display confidence bar
|
193 |
+
st.progress(top_confidence / 100)
|
194 |
+
|
195 |
+
# Display top 5 predictions
|
196 |
+
st.markdown("### Top 5 Predictions")
|
197 |
+
st.markdown("<div class='top-predictions'>", unsafe_allow_html=True)
|
198 |
+
|
199 |
+
for class_name, confidence in st.session_state.predictions:
|
200 |
+
cols = st.columns([2, 6, 2])
|
201 |
+
with cols[0]:
|
202 |
+
st.write(f"Grade {class_name}")
|
203 |
+
with cols[1]:
|
204 |
+
st.progress(confidence / 100)
|
205 |
+
with cols[2]:
|
206 |
+
st.write(f"{confidence:.2f}%")
|
207 |
+
|
208 |
+
st.markdown("</div>", unsafe_allow_html=True)
|
209 |
+
|
210 |
+
# User Survey
|
211 |
+
st.markdown("<div class='survey-card'>", unsafe_allow_html=True)
|
212 |
+
st.markdown("### Model Accuracy Survey")
|
213 |
+
st.write("Mô hình có dự đoán chính xác màu sắc của đá trong ảnh này không?")
|
214 |
+
|
215 |
+
# Accuracy Confirmation
|
216 |
+
accuracy = st.radio(
|
217 |
+
"Đánh giá độ chính xác",
|
218 |
+
["Chọn", "Chính xác", "Không chính xác"],
|
219 |
+
index=0
|
220 |
+
)
|
221 |
+
|
222 |
+
if accuracy == "Không chính xác":
|
223 |
+
# Color input for incorrect prediction
|
224 |
+
correct_color = st.text_input(
|
225 |
+
"Vui lòng nhập màu sắc chính xác của đá:",
|
226 |
+
help="Ví dụ: 10, 9.7, 9.5, 9.2, v.v."
|
227 |
+
)
|
228 |
+
|
229 |
+
if st.button("Gửi phản hồi và tải ảnh"):
|
230 |
+
if correct_color and st.session_state.uploaded_image:
|
231 |
+
# Save the image temporarily
|
232 |
+
temp_image_path = f"temp_image_{hash(uploaded_file.name)}.png"
|
233 |
+
st.session_state.uploaded_image.save(temp_image_path)
|
234 |
+
|
235 |
+
# Upload to Mega.nz
|
236 |
+
upload_result = upload_to_mega(temp_image_path, correct_color)
|
237 |
+
if "Upload thành công" in upload_result:
|
238 |
+
st.success(upload_result)
|
239 |
+
else:
|
240 |
+
st.error(upload_result)
|
241 |
+
|
242 |
+
# Clean up temporary file
|
243 |
+
os.remove(temp_image_path)
|
244 |
+
else:
|
245 |
+
st.warning("Vui lòng nhập màu sắc chính xác")
|
246 |
+
|
247 |
+
st.markdown("</div>", unsafe_allow_html=True)
|
248 |
else:
|
249 |
+
st.info("Upload an image to see the predictions")
|
250 |
+
|
|
|
251 |
st.markdown("---")
|
252 |
st.markdown("Made with ❤️ using Streamlit")
|
253 |
|