安装

June 8, 2021 · View on GitHub

语言: 简体中文 | English

安装前准备

  • GPU
  • Linux 开发平台 (推荐使用 Ubuntu 和 CentOS,我们在 Ubuntu 16.04Ubuntu 18.04CentOS 7.6 上测试过。)
  • Anaconda3
  • Python 3.6+ (推荐使用 Python 3.7,我们用它测试过。)
  • PyTorch 1.3+ (推荐使用 PyTorch 1.6,我们用它测试过。)
  • CUDA 9.2+ (推荐使用 CUDA 10.2,我们用它测试过。如果你从源代码来搭建 PyTorch,那么 CUDA 9.0 也可以兼容。)
  • CuDNN (可选项,我们用 CuDNN 7.6.5 测试过。)
  • GCC 5+ (推荐使用 GCC 4.8.5, 5.5.0 and 7.5.0,我们用它们测试过。)
  • MMCV (非常推荐使用 MMCV 1.0.5,我们用它测试过。它是唯一一个和 MMDetection 2.3.0 兼容的 MMCV 版本,这套 MI-AOD 代码是在该版本的 MMDetection 基础上编写的。

这里 是可兼容的 MMDetection 和 MMCV 版本。 为避免安装上的问题,请安装正确的 MMCV 版本。

注意:如果你安装了 mmcv,你需要先运行 pip uninstall mmcv。 如果安装了 mmcv 和 mmcv-full,那将会报错 ModuleNotFoundError

环境安装

在一切开始前,请确保你已经安装了 Anaconda3CUDA 10.2

  1. 请用 Python 3.7 创建一个 conda 虚拟环境,并激活它。

    conda create -n miaod python=3.7 -y
    conda activate miaod
    
  2. 请根据 官方说明 安装与 CUDA 10.2 匹配的 PyTorch 1.6.0torchvision 0.7.0,例如:

    conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2 -c pytorch
    

    请注意:确保你编译的 CUDA 版本和运行的 CUDA 版本相匹配。 你可以在 Pytorch 网站 上检查支持的 CUDA 版本的预编译包。

    如果你从源代码搭建 PyTorch,而不是安装预编译包的话,你可以用更多版本的 CUDA (如 9.0)。

  3. 请安装 mmcv-full,我们推荐你用如下的命令安装搭建好的包。

    pip install mmcv-full=={mmcv_版本} -f https://download.openmmlab.com/mmcv/dist/{cuda_版本}/{torch_版本}/index.html
    

    请将网址中的 {mmcv_版本}{cuda_版本}{torch_版本} 替换为你想要的版本。我们推荐,安装 CUDA 10.2PyTorch 1.6.0 下的 mmcv-full 1.0.5,命令行如下:

    pip install mmcv-full==1.0.5 -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.6.0/index.html
    

    关于与不同 PyTorch 和 CUDA 版本兼容的 MMCV 版本,请参见 这里。 或者你也可以选择用如下命令行从源代码编译 mmcv:

    wget https://github.com/open-mmlab/mmcv/archive/refs/tags/v1.0.5.zip
    unzip mmcv-1.0.5
    cd mmcv
    MMCV_WITH_OPS=1 pip install -e .  # package mmcv-full will be installed after this step
    cd ..
    

    或者直接运行

    pip install mmcv-full==1.0.5
    
  4. 请克隆 MI-AOD 代码库。

    git clone https://github.com/yuantn/MI-AOD.git
    cd MI-AOD
    

    如果那样太慢的话,你也可以尝试像这样直接下载这个代码库:

    wget https://github.com/yuantn/MI-AOD/archive/master.zip
    unzip master.zip
    cd MI-AOD-master
    
  5. 请安装搭建代码需要的包,然后在 MI-AOD 中安装与编译 MMDetection。

    pip install -r requirements/build.txt
    pip install -v -e .  # or "python setup.py develop"
    

请注意:

a. 按照上面的说明,MMDetection 是以 dev 模式安装的,任何本地对代码的修改都会生效,而不用重新安装它。

b. 如果你愿意使用 opencv-python-headless 而不是 opencv-python,你可以在安装 MMCV 之前安装它。

c. 一些依赖项是可选的。若仅以最小运行需求安装,直接运行 pip install -v -e . 即可。 若要使用像 albumentationsimagecorruptions 之类的可选依赖项,则可手动使用 pip install -r requirements/optional.txt 安装它们, 也可以在调用 pip 命令时明确额外的需求 (例如,pip install -v -e .[optional])。 对于额外的域而言,有效键为:alltestsbuildoptional

修改 MMCV 包

为了能够同时训练两个 dataloader(即论文中提到的有标号的 dataloader 和无标号的 dataloader),需要修改 mmcv 包中的 epoch_based_runner.py 文件。

考虑到这会影响到所有使用这个环境的代码, 所以我们建议为 MI-AOD 创建一个单独的环境(即上文中创建的 miaod 环境)。

cp -v epoch_based_runner.py $你的_ANACONDA_安装地址/envs/miaod/lib/python3.7/site-packages/mmcv/runner/

请将 $你的_ANACONDA_安装地址 改为你实际的 Anaconda3 安装目录。通常它是 ~/anaconda3

之后如果你修改了 mmcv 包中的任何文件 (包括但不限于:更新/重新安装了 Python、PyTorch、mmdetection、mmcv、mmcv-full、conda 环境), 都应该重新将这个代码库中的 epoch_base_runner.py 文件再次复制到上面的 mmcv 文件夹下。(Issue #3)

从头开始的安装脚本

假设你已经安装好了 Anaconda3CUDA 10.2,如下为一个用 conda 设置 MI-AOD 的完整脚本。

conda create -n miaod python=3.7 -y
conda activate miaod

conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2 -c pytorch

# install the mmcv==1.0.5
pip install mmcv-full==1.0.5+torch1.6.0+cu102 -f https://download.openmmlab.com/mmcv/dist/index.html

# install mmdetection
git clone https://github.com/yuantn/MI-AOD.git
cd MI-AOD
pip install -r requirements/build.txt
pip install -v -e .  # or "python setup.py develop"

# modify epoch_based_runner.py
cp -v epoch_based_runner.py $YOUR_ANACONDA_PATH/envs/miaod/lib/python3.7/site-packages/mmcv/runner/

如果你有任何问题,请随时在 问题 中留言,或者参考 MMDetection 2.3.0 版本的安装说明

请参考 常见问题解答 来查看大家的常见问题。