hysts HF staff commited on
Commit
052c832
·
1 Parent(s): 8378e4a

Change video downsampling logic to avoid CUDA OOM

Browse files
Files changed (1) hide show
  1. app.py +6 -4
app.py CHANGED
@@ -62,7 +62,6 @@ def validate_media_constraints(message: dict, history: list[dict]) -> bool:
62
  if "<image>" in message["text"]:
63
  gr.Warning("Using <image> tags with video files is not supported.")
64
  return False
65
- # TODO: Add frame count validation for videos similar to image count limits # noqa: FIX002, TD002, TD003
66
  if video_count == 0 and image_count > MAX_NUM_IMAGES:
67
  gr.Warning(f"You can upload up to {MAX_NUM_IMAGES} images.")
68
  return False
@@ -77,10 +76,13 @@ def downsample_video(video_path: str) -> list[tuple[Image.Image, float]]:
77
  fps = vidcap.get(cv2.CAP_PROP_FPS)
78
  total_frames = int(vidcap.get(cv2.CAP_PROP_FRAME_COUNT))
79
 
80
- frame_interval = int(fps / 3)
81
- frames = []
 
 
 
 
82
 
83
- for i in range(0, total_frames, frame_interval):
84
  vidcap.set(cv2.CAP_PROP_POS_FRAMES, i)
85
  success, image = vidcap.read()
86
  if success:
 
62
  if "<image>" in message["text"]:
63
  gr.Warning("Using <image> tags with video files is not supported.")
64
  return False
 
65
  if video_count == 0 and image_count > MAX_NUM_IMAGES:
66
  gr.Warning(f"You can upload up to {MAX_NUM_IMAGES} images.")
67
  return False
 
76
  fps = vidcap.get(cv2.CAP_PROP_FPS)
77
  total_frames = int(vidcap.get(cv2.CAP_PROP_FRAME_COUNT))
78
 
79
+ frame_interval = max(total_frames // MAX_NUM_IMAGES, 1)
80
+ frames: list[tuple[Image.Image, float]] = []
81
+
82
+ for i in range(0, min(total_frames, MAX_NUM_IMAGES * frame_interval), frame_interval):
83
+ if len(frames) >= MAX_NUM_IMAGES:
84
+ break
85
 
 
86
  vidcap.set(cv2.CAP_PROP_POS_FRAMES, i)
87
  success, image = vidcap.read()
88
  if success: