You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单图推理如何解决RuntimeError: CUDA out of memory报错

问题根因

你遇到的OOM不是显存碎片导致的,核心原因是你的GPU仅2GB显存,而Mask R-CNN在paste_mask_in_image步骤需要为每个检测到的实例生成和输入图像同尺寸的mask张量,显存占用和图像分辨率正相关,和图像文件的压缩大小无直接关系:3264x1840分辨率下,单张实例mask就需要约23MB显存,默认配置下单图最多检测100个实例,仅这一步就会占用数GB显存,2GB显存完全无法承载。你测试的640x512图像分辨率低,所以可以正常运行。

附运行时显存占用截图:
Windows任务管理器

你之前调整PYTORCH_CUDA_ALLOC_CONF参数无效,是因为报错信息明确显示显存0 bytes free,属于真实显存不足,不是显存碎片化导致的分配失败。训练阶段减小batch size的方案不适用于你的场景,因为推理时你已经使用batch size=1,没有下调空间。
注:你标注的torch版本为笔误,不存在0.11.0版本,结合CUDA11.3和torchvision0.12.0的对应关系,实际使用的应为PyTorch 1.11.0版本,以下方案均适配该环境。

可行解决方案(按改动成本从低到高排序)

  • 输入图像等比例缩放,限制最长边尺寸
    这是改动最小、见效最快的方案,在图像转tensor前增加等比例缩放逻辑,将输入图像最长边限制在1600像素以内,2GB显存即可稳定运行。推理得到的坐标、mask结果按缩放比例映射回原图尺寸即可,精度损失可忽略。
    代码示例:
    from torchvision.transforms import functional as F
    max_long_edge = 1600
    w, h = img.size
    scale_ratio = max_long_edge / max(h, w)
    if scale_ratio < 1:
        new_h = int(h * scale_ratio)
        new_w = int(w * scale_ratio)
        img = F.resize(img, [new_h, new_w])
    
    如果需要处理你提到的7MB压缩大小的高分辨率图像,配合后续FP16方案可以把最长边限制放宽到2048像素。
  • 开启FP16半精度推理,显存占用直接减半
    你的环境完全支持FP16推理,无需修改模型结构,仅需将模型和输入张量转为半精度,即可将整体显存占用降低近50%,同时推理速度提升30%~50%,精度几乎无损失。
    代码示例:
    # 模型加载完成、切换eval模式后添加
    model = model.half().to(device)
    # 输入图像转tensor后添加
    img_tensor = img_tensor.half()
    
    注意半精度推理仅支持GPU运行,不要在CPU设备上调用该逻辑。
  • 降低单图最大检测实例数
    原生Mask R-CNN默认单图最多保留100个检测结果,每个结果都需要生成对应尺寸的mask张量。对于普通场景(包括航拍场景),将单图最大检测数降到50即可覆盖绝大多数需求,对应显存占用直接降低近一半。
    代码示例:
    # 加载模型时传入参数覆盖默认配置
    model = mask_rcnn.maskrcnn_resnet50_fpn(
        pretrained=True,
        box_detections_per_img=50
    )
    
  • 滑窗切分推理(适配无精度损失的高分辨率需求)
    如果你必须保留原图全分辨率精度,可将高分辨率图像切分为多个1024x1024大小、带100像素重叠区域的滑窗,每个滑窗单独送入模型推理,最后通过NMS过滤跨滑窗的重复检测结果,将mask拼接回原图尺寸。该方案显存占用仅和单滑窗大小有关,2GB显存可支持任意分辨率的图像处理,仅需要额外编写滑窗切分、结果合并的逻辑。

无效操作说明

  • 推理过程中反复调用torch.cuda.empty_cache()和gc.collect()不会释放已经被模型、张量占用的显存,仅能清理PyTorch预留的闲置显存,无法解决真实显存不足的问题,仅在推理前调用一次即可。
  • 不要尝试将模型切到CPU运行高分辨率推理,单图推理耗时会达到数十秒,无实用价值。

内容的提问来源于stack exchange,提问作者Joysn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 01:51:45