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

在Colab运行LORE-TSR模型遇'_ext'模块缺失及DCNv2编译失败问题求助

LORE-TSR运行报错及解决思路

问题描述

运行LORE-TSR仓库的demo.py脚本时出现ModuleNotFoundError: No module named '_ext'错误;尝试编译内置的DCNv2自定义扩展时失败,报错显示找不到TH/TH.h文件,Anaconda终端编译也出现相同问题。

运行报错详情

Traceback (most recent call last):
  File "/content/AdvancedLiterateMachinery/DocumentUnderstanding/LORE-TSR/src/demo.py", line 13, in <module>
    from detectors.detector_factory import detector_factory
  File "/content/AdvancedLiterateMachinery/DocumentUnderstanding/LORE-TSR/src/lib/detectors/detector_factory.py", line 5, in <module>
    from .ctdet import CtdetDetector
  File "/content/AdvancedLiterateMachinery/DocumentUnderstanding/LORE-TSR/src/lib/detectors/ctdet.py", line 19, in <module>
    from .base_detector import BaseDetector
  File "/content/AdvancedLiterateMachinery/DocumentUnderstanding/LORE-TSR/src/lib/detectors/base_detector.py", line 10, in <module>
    from models.model import create_model, load_model
  File "/content/AdvancedLiterateMachinery/DocumentUnderstanding/LORE-TSR/src/lib/models/model.py", line 16, in <module>
    from .networks.pose_dla_dcn import get_pose_net as get_dla_dcn 
  File "/content/AdvancedLiterateMachinery/DocumentUnderstanding/LORE-TSR/src/lib/models/networks/pose_dla_dcn.py", line 16, in <module>
    from .DCNv2.dcn_v2 import DCN
  File "/content/AdvancedLiterateMachinery/DocumentUnderstanding/LORE-TSR/src/lib/models/networks/DCNv2/dcn_v2.py", line 12, in <module>
    import _ext as _backend
ModuleNotFoundError: No module named '_ext'

编译报错详情

rm: cannot remove '*.so': No such file or directory
rm: cannot remove 'build/': No such file or directory
No CUDA runtime is found, using CUDA_HOME='/usr/local/cuda'
running build
running build_ext
building '_ext' extension
...
/content/AdvancedLiterateMachinery/DocumentUnderstanding/LORE-TSR/src/lib/models/networks/DCNv2/src/cpu/dcn_v2_im2col_cpu.cpp:9:10: fatal error: TH/TH.h: No such file or directory
    9 | #include <TH/TH.h>
      |          ^~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
...
RuntimeError: Error compiling objects for extension

解决思路

  • 调整PyTorch版本或修改头文件路径
    TH/TH.h是老版本PyTorch(0.4.x及更早)的头文件,新版本PyTorch(1.0+)已将其移至torch/legacy/include/TH/路径。两种解决方式:

    1. 安装PyTorch 1.1.x或0.4.x兼容版本,再重新编译DCNv2;
    2. 手动修改DCNv2代码里的头文件引用,把#include <TH/TH.h>替换为#include <torch/legacy/include/TH/TH.h>,同时检查其他相关头文件路径是否需要同步调整。
  • 修复CUDA环境配置
    编译报错提示未找到CUDA运行时,需确认CUDA安装及版本匹配:

    1. 运行nvcc --version查看CUDA版本,确保与PyTorch版本兼容(比如PyTorch 1.1.x对应CUDA 9.0/10.0);
    2. 设置正确的CUDA_HOME环境变量,终端执行export CUDA_HOME=/usr/local/cuda-xx.x(替换xx.x为你的CUDA版本号),再重新编译。
  • 正确执行编译命令
    进入DCNv2目录(src/lib/models/networks/DCNv2/),执行以下命令编译:

    python setup.py build develop
    

    若仍报错,尝试添加--user参数:

    python setup.py build develop --user
    

    编译成功后再运行demo.py。

ResNet模型相关疑问

使用ResNet作为模型 backbone 时,不需要编译DCNv2。DCNv2仅为DLA-DCN模型的依赖组件,ResNet版本的模型未用到该自定义卷积层。只需在配置文件中将模型类型改为ResNet相关选项(如ctdet_resnet18,具体以项目配置为准),即可跳过DCNv2编译步骤直接运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:47:02