Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -61,6 +61,7 @@ with col2:
|
|
61 |
|
62 |
st.markdown("""
|
63 |
Early wildfire detection using YOLOv8 AI vision model. See detected results above and video examples below, or upload your own content!
|
|
|
64 |
""")
|
65 |
|
66 |
# Function to create synchronized video pair HTML
|
@@ -75,14 +76,14 @@ def create_synced_video_pair(orig_url, proc_url, pair_id):
|
|
75 |
<div style="display: flex; gap: 10px; margin-bottom: 20px;">
|
76 |
<div style="flex: 1;">
|
77 |
<h4>Original</h4>
|
78 |
-
<video id="orig_{pair_id}" width="100%" controls
|
79 |
<source src="data:video/mp4;base64,{orig_b64}" type="video/mp4">
|
80 |
Your browser does not support the video tag.
|
81 |
</video>
|
82 |
</div>
|
83 |
<div style="flex: 1;">
|
84 |
<h4>Processed</h4>
|
85 |
-
<video id="proc_{pair_id}" width="100%" controls
|
86 |
<source src="data:video/mp4;base64,{proc_b64}" type="video/mp4">
|
87 |
Your browser does not support the video tag.
|
88 |
</video>
|
@@ -196,16 +197,19 @@ if process_button and source_file and model:
|
|
196 |
elapsed = time.time() - st.session_state.start_time
|
197 |
progress = frame_count / total_frames
|
198 |
|
199 |
-
if elapsed > 0 and
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
|
|
|
|
204 |
else:
|
|
|
205 |
eta_str = "Calculating..."
|
206 |
|
207 |
progress_bar.progress(min(progress, 1.0))
|
208 |
-
progress_text.text(f"Progress: {progress:.1%} | ETA: {eta_str}")
|
209 |
|
210 |
frame_count += 1
|
211 |
success, frame = vidcap.read()
|
@@ -233,8 +237,10 @@ if process_button and source_file and model:
|
|
233 |
st.session_state.processed_video = f.read()
|
234 |
os.unlink(out_path)
|
235 |
|
|
|
|
|
236 |
progress_bar.progress(1.0)
|
237 |
-
progress_text.text("Processing complete!")
|
238 |
with result_cols[0]:
|
239 |
st.video(source_file)
|
240 |
with result_cols[1]:
|
|
|
61 |
|
62 |
st.markdown("""
|
63 |
Early wildfire detection using YOLOv8 AI vision model. See detected results above and video examples below, or upload your own content!
|
64 |
+
Click on video frames to load and play examples.
|
65 |
""")
|
66 |
|
67 |
# Function to create synchronized video pair HTML
|
|
|
76 |
<div style="display: flex; gap: 10px; margin-bottom: 20px;">
|
77 |
<div style="flex: 1;">
|
78 |
<h4>Original</h4>
|
79 |
+
<video id="orig_{pair_id}" width="100%" controls>
|
80 |
<source src="data:video/mp4;base64,{orig_b64}" type="video/mp4">
|
81 |
Your browser does not support the video tag.
|
82 |
</video>
|
83 |
</div>
|
84 |
<div style="flex: 1;">
|
85 |
<h4>Processed</h4>
|
86 |
+
<video id="proc_{pair_id}" width="100%" controls>
|
87 |
<source src="data:video/mp4;base64,{proc_b64}" type="video/mp4">
|
88 |
Your browser does not support the video tag.
|
89 |
</video>
|
|
|
197 |
elapsed = time.time() - st.session_state.start_time
|
198 |
progress = frame_count / total_frames
|
199 |
|
200 |
+
if elapsed > 0 and progress > 0:
|
201 |
+
# Total estimated time = elapsed time / progress
|
202 |
+
total_estimated_time = elapsed / progress
|
203 |
+
# ETA = total estimated time - elapsed time
|
204 |
+
eta = total_estimated_time - elapsed
|
205 |
+
elapsed_str = f"{int(elapsed // 60)}m {int(elapsed % 60)}s"
|
206 |
+
eta_str = f"{int(eta // 60)}m {int(eta % 60)}s" if eta > 0 else "Almost done"
|
207 |
else:
|
208 |
+
elapsed_str = "0s"
|
209 |
eta_str = "Calculating..."
|
210 |
|
211 |
progress_bar.progress(min(progress, 1.0))
|
212 |
+
progress_text.text(f"Progress: {progress:.1%} | Elapsed: {elapsed_str} | ETA: {eta_str}")
|
213 |
|
214 |
frame_count += 1
|
215 |
success, frame = vidcap.read()
|
|
|
237 |
st.session_state.processed_video = f.read()
|
238 |
os.unlink(out_path)
|
239 |
|
240 |
+
elapsed_final = time.time() - st.session_state.start_time
|
241 |
+
elapsed_final_str = f"{int(elapsed_final // 60)}m {int(elapsed_final % 60)}s"
|
242 |
progress_bar.progress(1.0)
|
243 |
+
progress_text.text(f"Processing complete! Total time: {elapsed_final_str}")
|
244 |
with result_cols[0]:
|
245 |
st.video(source_file)
|
246 |
with result_cols[1]:
|