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

在Colab中使用cv2 dnn_superres超分图像速度极慢,求问题排查

代码运行耗时过久的问题排查与修复
  • 错误使用upsample方法的目标尺寸参数
    你的EDSR模型是固定3倍放大的(sr.setModel("edsr", 3)),但调用sr.upsample(image, (1080, 1920))时强制指定了目标尺寸。这种情况下,模型会先按3倍放大原图,再额外做一次插值缩放来匹配指定尺寸,大幅增加计算量,尤其是当原图尺寸和目标尺寸的比例远不是3倍时。
    修复:去掉目标尺寸参数,让模型按自身倍率放大:

    result = sr.upsample(image)
    

    如果最终需要(1080,1920)的尺寸,建议先按3倍放大后,再用cv2.resize单独处理,选择高效的插值方法(比如cv2.INTER_LINEAR),避免让超分辨率模型承担额外缩放工作。

  • 确认Colab是否启用GPU加速
    虽然代码里设置了DNN_BACKEND_CUDA和DNN_TARGET_CUDA,但Colab默认运行时是CPU。需手动切换:点击顶部菜单栏「Runtime」→「Change runtime type」,在「Hardware accelerator」里选择「GPU」,重启运行时即可。没开GPU的话,用CPU跑EDSR这类大模型必然极慢。

  • 检查模型加载是否正常
    确保EDSR_x3.pb是正确的预训练模型,无损坏或路径错误。如果模型加载失败,OpenCV会自动 fallback到CPU运行,导致速度骤降。可以加一行代码验证:

    print("Backend:", cv2.dnn.getPreferableBackend(sr.getNet()))
    print("Target:", cv2.dnn.getPreferableTarget(sr.getNet()))
    

    如果输出不是CUDA相关,说明模型加载或后端设置有问题。

  • 图像尺寸优化
    从你提供的图像来看,原图是低分辨率小图,若原图尺寸和3倍放大后的尺寸差异过大,强制缩放会增加不必要的计算开销。建议先确认原图尺寸,再决定是否需要额外缩放,避免无意义的计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:45:14