Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -18,7 +18,7 @@ mp_pose = mp.solutions.pose
|
|
18 |
pose_complexity = 0 # ลด complexity เพื่อความเร็วบน Spaces, ลอง 0 หรือ 1
|
19 |
use_static_image_mode = False # สำหรับวิดีโอไฟล์ จะถูก override เป็น True ใน process_video
|
20 |
|
21 |
-
FALL_EVENT_COOLDOWN =
|
22 |
|
23 |
# ----- 0. KEYPOINT DEFINITIONS (เหมือนเดิม) -----
|
24 |
KEYPOINT_NAMES_ORIGINAL = [
|
@@ -255,9 +255,9 @@ def process_video_for_gradio(uploaded_video_path_temp): # เปลี่ยน
|
|
255 |
processed_frame_display, results.pose_landmarks, mp_pose.POSE_CONNECTIONS,
|
256 |
landmark_drawing_spec=mp.solutions.drawing_styles.get_default_pose_landmarks_style())
|
257 |
|
258 |
-
cv2.putText(processed_frame_display, current_status_display.split(': ')[-1], (10, 30), cv2.
|
259 |
if prediction_label == "fall" and ((frame_count/fps) - local_last_fall_event_time < FALL_EVENT_COOLDOWN):
|
260 |
-
cv2.putText(processed_frame_display, "FALL
|
261 |
|
262 |
processed_frames_list.append(processed_frame_display)
|
263 |
|
@@ -290,33 +290,37 @@ def process_video_for_gradio(uploaded_video_path_temp): # เปลี่ยน
|
|
290 |
|
291 |
|
292 |
# --- สร้าง Gradio Interface ---
|
293 |
-
# ตรวจสอบว่า example files มีอยู่ใน repo จริงๆ
|
294 |
-
example_fall_path = "fall_example.mp4"
|
295 |
-
example_nofall_path = "no_fall_example.mp4"
|
296 |
-
examples_list = []
|
297 |
-
if os.path.exists(example_fall_path):
|
298 |
-
examples_list.append([example_fall_path])
|
299 |
-
else:
|
300 |
-
print(f"Warning: Example file '{example_fall_path}' not found in the repository root.")
|
301 |
-
if os.path.exists(example_nofall_path):
|
302 |
-
examples_list.append([example_nofall_path])
|
303 |
-
else:
|
304 |
-
print(f"Warning: Example file '{example_nofall_path}' not found in the repository root.")
|
305 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
306 |
|
307 |
iface = gr.Interface(
|
308 |
fn=process_video_for_gradio,
|
309 |
inputs=gr.Video(label="Upload Video File (.mp4)"),
|
310 |
outputs=[
|
311 |
-
gr.Video(label="Processed Video with Detections"),
|
312 |
gr.Textbox(label="Detection Summary (Events / Status)")
|
313 |
],
|
314 |
title="AI Fall Detection from Video",
|
315 |
description="Upload a video file (MP4 format recommended) to detect falls. " \
|
316 |
"Processing may take time depending on video length.",
|
317 |
-
examples=
|
318 |
allow_flagging="never",
|
319 |
-
cache_examples=False
|
320 |
)
|
321 |
|
322 |
if __name__ == "__main__":
|
|
|
18 |
pose_complexity = 0 # ลด complexity เพื่อความเร็วบน Spaces, ลอง 0 หรือ 1
|
19 |
use_static_image_mode = False # สำหรับวิดีโอไฟล์ จะถูก override เป็น True ใน process_video
|
20 |
|
21 |
+
FALL_EVENT_COOLDOWN = 5
|
22 |
|
23 |
# ----- 0. KEYPOINT DEFINITIONS (เหมือนเดิม) -----
|
24 |
KEYPOINT_NAMES_ORIGINAL = [
|
|
|
255 |
processed_frame_display, results.pose_landmarks, mp_pose.POSE_CONNECTIONS,
|
256 |
landmark_drawing_spec=mp.solutions.drawing_styles.get_default_pose_landmarks_style())
|
257 |
|
258 |
+
cv2.putText(processed_frame_display, current_status_display.split(': ')[-1], (10, 30), cv2.FONT_HERSHEY_DUPLEX, 0.7, (0, 255, 0), 2)
|
259 |
if prediction_label == "fall" and ((frame_count/fps) - local_last_fall_event_time < FALL_EVENT_COOLDOWN):
|
260 |
+
cv2.putText(processed_frame_display, "FALL IS DETECTED!", (10, 70), cv2.FONT_HERSHEY_DUPLEX, 1.0, (0, 0, 255), 2, cv2.LINE_AA)
|
261 |
|
262 |
processed_frames_list.append(processed_frame_display)
|
263 |
|
|
|
290 |
|
291 |
|
292 |
# --- สร้าง Gradio Interface ---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
|
294 |
+
# กำหนด list ของชื่อไฟล์ตัวอย่างของคุณ
|
295 |
+
example_filenames = [
|
296 |
+
"fall_example_1.mp4", # <<<< แก้ไขชื่อไฟล์ตามที่คุณใช้
|
297 |
+
"fall_example_2.mp4", # <<<< แก้ไขชื่อไฟล์ตามที่คุณใช้
|
298 |
+
"fall_example_3.mp4", # <<<< แก้ไขชื่อไฟล์ตามที่คุณใช้
|
299 |
+
"fall_example_4.mp4" # <<<< แก้ไขชื่อไฟล์ตามที่คุณใช้
|
300 |
+
]
|
301 |
+
|
302 |
+
examples_list_for_gradio = []
|
303 |
+
for filename in example_filenames:
|
304 |
+
# ตรวจสอบว่าไฟล์ example มีอยู่ใน root directory ของ repo จริงๆ
|
305 |
+
if os.path.exists(filename): # Gradio examples ต้องการแค่ชื่อไฟล์ (ถ้าอยู่ใน root)
|
306 |
+
examples_list_for_gradio.append([filename]) # Gradio ต้องการ list ของ list
|
307 |
+
print(f"Info: Example file '{filename}' found and added.")
|
308 |
+
else:
|
309 |
+
print(f"Warning: Example file '{filename}' not found in the repository root. It will not be added to examples.")
|
310 |
|
311 |
iface = gr.Interface(
|
312 |
fn=process_video_for_gradio,
|
313 |
inputs=gr.Video(label="Upload Video File (.mp4)"),
|
314 |
outputs=[
|
315 |
+
#gr.Video(label="Processed Video with Detections"),
|
316 |
gr.Textbox(label="Detection Summary (Events / Status)")
|
317 |
],
|
318 |
title="AI Fall Detection from Video",
|
319 |
description="Upload a video file (MP4 format recommended) to detect falls. " \
|
320 |
"Processing may take time depending on video length.",
|
321 |
+
examples=examples_list_for_gradio if examples_list_for_gradio else None, # <<<< ใช้ list ใหม่นี้
|
322 |
allow_flagging="never",
|
323 |
+
cache_examples=False
|
324 |
)
|
325 |
|
326 |
if __name__ == "__main__":
|