依赖项

  • Linux

  • Python 3.6+

  • PyTorch 1.5+

  • CUDA 9.2+ (如果您从源码编译PyTorch, CUDA 9.0也是兼容的)

  • GCC 5.4+

  • MMCV (MMCV-FULL)

下面是MMGeneration与MMCV版本兼容信息。为防止出错请安装正确的MMCV版本。

MMGeneration version MMCV version
master mmcv-full>=1.3.0

注:如果您已安装mmcv,需要先卸载 pip uninstall mmcv。 如果同时安装了mmcv和mmcv-full,将会报错 ModuleNotFoundError

安装

  1. 创建conda虚拟环境并激活。 (这里假设新环境叫 open-mmlab)

    conda create -n open-mmlab python=3.7 -y
    conda activate open-mmlab
    
  2. 安装 PyTorch 和 torchvision,参考官方安装指令,比如,

    conda install pytorch torchvision -c pytorch
    

    注:确保您编译的CUDA版本和运行时CUDA版本相匹配。您可以在PyTorch官网检查预编译库支持的CUDA版本。

    示例1 如果您在/usr/local/cuda下安装了 CUDA 10.1 并想要安装 PyTorch 1.5,您需要安装支持CUDA 10.1的PyTorch预编译版本。

    conda install pytorch cudatoolkit=10.1 torchvision -c pytorch
    

    示例2如果您在/usr/local/cuda下安装了 CUDA 9.2 并想要安装 PyTorch 1.5.1,您需要安装支持CUDA 9.2的PyTorch预编译版本。

    conda install pytorch=1.5.1 cudatoolkit=9.2 torchvision=0.6.1 -c pytorch
    

    如果您从源码编译PyTorch 而非安装预编译库, 您可以使用更多CUDA版本如9.0。

  3. 安装 mmcv-full, 我们建议您按照下述方法安装预编译库。

    pip install mmcv-full={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
    

    请替换链接中的 {cu_version}{torch_version} 为您想要的版本。 比如, 要安装支持 CUDA 11PyTorch 1.7.0mmcv-full, 使用下面命令:

    pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
    

    可在这里查看兼容了不同PyTorch和CUDA的MMCV版本信息。 您也可以选择按照下方命令从源码编译mmcv

    git clone https://github.com/open-mmlab/mmcv.git
    cd mmcv
    MMCV_WITH_OPS=1 pip install -e .  # package mmcv-full will be installed after this step
    cd ..
    

    或者直接运行

    pip install mmcv-full
    
  4. 克隆MMGeneration仓库。

    git clone https://github.com/open-mmlab/mmgeneration.git
    cd mmgeneration
    
  5. 安装构建依赖项并安装MMGeneration。

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

注:

a. 依照上面的说明, MMGeneration 会以 dev 形式安装, 对代码进行的任何本地修改都将生效,而不需要重新安装。

b. 如果您想要使用 opencv-python-headless 而非 opencv-python, 您可以在安装 MMCV 之前安装它。

安装CPU版本

本代码可在仅使用CPU的环境下编译 (当 CUDA 不可用时)。

一个从头开始的配置脚本

假设您已经安装了CUDA 10.1,下面是使用conda配置MMGeneration的完整脚本。

conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab

conda install pytorch==1.7.0 torchvision==0.8.0 cudatoolkit=10.1 -c pytorch -y

# install the latest mmcv
# pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.7.0/index.html

# install mmgeneration
git clone https://github.com/open-mmlab/mmgeneration.git
cd mmgeneration
pip install -r requirements.txt
pip install -v -e .

需要注意的是,mmcv-full 只在 PyTorch 1.x.0 上编译, 因为1.x.0与1.x.1通常是保持兼容性的。 如果您的 PyTorch 版本是1.x.1, 您可以安装兼容PyTorch 1.x.0的mmcv-full,通常运行良好。

# We can ignore the micro version of PyTorch
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.10/index.html

使用多个 MMGeneration 版本进行开发

训练和测试脚本已经修改了 PYTHONPATH, 以确保脚本使用当前目录中的MMGeneration

要使用安装在环境中的默认MMGeneration而不是您正在使用的,您可以删除脚本中的以下代码行

PYTHONPATH="$(dirname $0)/..":$PYTHONPATH

验证

为了验证MMGeneration和所需的环境是否正确安装,我们可以运行示例Python代码来初始化一个非条件模型,并使用它来生成随机样本:

from mmgen.apis import init_model, sample_unconditional_model

config_file = 'configs/styleganv2/stylegan2_c2_lsun-church_256_b4x8_800k.py'
# you can download this checkpoint in advance and use a local file path.
checkpoint_file = 'https://download.openmmlab.com/mmgen/stylegan2/official_weights/stylegan2-church-config-f-official_20210327_172657-1d42b7d1.pth'
device = 'cuda:0'
# init a generatvie
model = init_model(config_file, checkpoint_file, device=device)
# sample images
fake_imgs = sample_unconditional_model(model, 4)

当安装完成后,上面的代码可以成功运行。