princeton-vl / RAFT

BSD 3-Clause "New" or "Revised" License
3.31k stars 634 forks source link

RuntimeError: CUDA out of memory #180

Closed ismeyueyue closed 8 months ago

ismeyueyue commented 9 months ago

When I run the demo test python demo.py --model=models/raft-things.pth --path=demo-frames on images with resolutions of [1, 3, 1440, 2560], it prompted me with a memory error RuntimeError: CUDA out of memory., even though only a few frames of frames.

error msg:

Traceback (most recent call last):
  File "test_image.py", line 51, in <module>
    flow_low, flow_up = model(image1, image2, iters=20, test_mode=True)
  File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/workspace/raft-opticalflow/core/raft.py", line 107, in forward
    corr_fn = CorrBlock(fmap1, fmap2, radius=self.args.corr_radius)
  File "/workspace/raft-opticalflow/core/corr.py", line 19, in __init__
    corr = CorrBlock.corr(fmap1, fmap2)
  File "/workspace/raft-opticalflow/core/corr.py", line 60, in corr
    return corr  / torch.sqrt(torch.tensor(dim).float())
RuntimeError: CUDA out of memory. Tried to allocate 12.36 GiB (GPU 0; 23.65 GiB total capacity; 12.65 GiB already allocated; 8.50 GiB free; 13.01 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
hajoxs commented 8 months ago

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 59.41 GiB (GPU 0; 6.00 GiB total capacity; 636.69 MiB already allocated; 2.60 GiB free; 1.37 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

I'm also experiencing this problem and would like to know if you've resolved it yet

ismeyueyue commented 8 months ago

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 59.41 GiB (GPU 0; 6.00 GiB total capacity; 636.69 MiB already allocated; 2.60 GiB free; 1.37 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

I'm also experiencing this problem and would like to know if you've resolved it yet

Yes, I have soved this proble with resize the input image to low resolution, like 720p, 480p. Here is my code, you can refer:

def resize_frame(frame, target_height=480):
    """
    Resize a frame while maintaining aspect ratio to make its height close to the target height.
    """
    height, width, _ = frame.shape
    scale_percent = target_height / height

    new_width = int(width * scale_percent)
    resized_frame = cv2.resize(frame, (new_width, target_height), interpolation=cv2.INTER_AREA)
    return resized_frame
hajoxs commented 7 months ago

Thank you for your help