• windows10+VS2017+CUDA10.1编译指南mmdet


    经历磨难终于在windows上编译好了mmdetect
    给出我的环境信息供参考:
    Windows10
    Visual Studio 2017,15.9.23 _MSC_VER=14.16
    CUDA 10.0
    nvcc 10.0 (显卡驱动好像显示10.1 不一样好像无伤大雅
    python 3.6
    pytorch 版本要在[1.1,1.4]之间,1.5会出问题:AT_CHECK未声明:

    前期一直都在visual studio 和cuda版本匹配上花时间。
    尽量老老实实用2017,VS 2019到后面及时修改了cuda 10.0配置文件也会出一些问题。

    执行的时候尽量在cmd执行,pycharm输出的编码可能不支持,出来的都是utf-8解gbk编码的乱码。
    安装好Visual Studio后在cmd执行

    call "C:Program Files (x86)Microsoft Visual Studio2017EnterpriseVCAuxiliaryBuildvcvarsall.bat" x64 -vcvars_ver=14.xx (x 修改为对应_MSC_VER)
    

    在这里可以查看对应MSC_VER: https://dev.to/yumetodo/list-of-mscver-and-mscfullver-8nd

    其它跟着感觉装就好,似乎没有在其它包上出大问题。
    参考dockerfile

    FROM pytorch/pytorch:1.1.0-cuda10.0-cudnn7.5-devel
    
    RUN apt-get update && apt-get install -y 
        git 
        wget 
        curl 
        cmake 
        unzip 
        build-essential 
        libsm6 
        libxext6 
        libfontconfig1 
        libxrender1 
        libswscale-dev 
        libtbb2 
        libtbb-dev 
        libjpeg-dev 
        libpng-dev 
        libtiff-dev 
        libjasper-dev 
        libavformat-dev 
        libpq-dev 
        libturbojpeg 
        software-properties-common 
        && apt-get clean 
        && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
    
    RUN pip install --no-cache-dir 
        numpy 
        pandas 
        PyYAML 
        cycler 
        dill 
        h5py 
        imgaug 
        matplotlib 
        opencv-contrib-python 
        Pillow 
        scikit-image 
        scikit-learn 
        scipy 
        setuptools 
        six 
        tqdm 
        ipython 
        ipdb 
        albumentations 
        click 
        jpeg4py 
        addict 
        colorama 
        torchvision 
        iterative-stratification
    

    解决报错: Error checking compiler version for cl
    解决方法:导入cl.exe所在位置到系统环境变量path

    对mmdetect项目文件进行修改:

    在mmdet/ops/nms/setup.py

    替换

    # default_compiler_so = self.compiler_so # to make it successfully compile disable compiler_so edited by zzl 
    =>
    default_compiler_so = ""
    

    在mmdet/ops/sigmoid_focal_loss/src/sigmoid_focal_loss_cuda.cu

    在#include 区域下添加

    int Ceil_div(int a, int b) { return (a + b - 1); }
    

    替换

    /*targets.contiguous().data<long>(), edited by zzl*/
    =>
    static_cast<long*>(targets.contiguous().data_ptr()),
    
    /*dim3 grid(std::min(THCCeilDiv(d_logits_size, 512L), 4096L)); edited by zzl*/
    =>
    dim3 grid(std::min(Ceil_div((int)d_logits_size, 512), 4096));
    
    /*dim3 grid(std::min(THCCeilDiv(losses_size, 512L), 4096L)); edited by zzl*/
    =>
    dim3 grid(std::min(Ceil_div((int)losses_size, 512), 4096));
    

    完成修改后,分别在

    mmdet/ops/roi_align/
    mmdet/ops/roi_pool/
    mmdet/ops/dcn/
    mmdet/ops/nms/
    mmdet/ops/sigmoid_focal_loss/ 下 执行

    python setup.py build_ext --inplace
    

    正在创建库 build emp.win-amd64-3.6Releasesrcsigmoid_focal_loss_cuda.cp36-win_amd64.lib 和对象 build emp.win-amd64-3.6Releasesrcsigmoid_focal_loss_cuda.cp36-win_amd64.exp
    正在生成代码
    c:usersjhwenvenuspykaggle-imaterialist-with-modelmmdetectionmmdetopssigmoid_focal_losssrcsigmoid_focal_loss.cpp(36) : warning C4715: “SigmoidFocalLoss_backward”: 不是所有的控件路径都返回值
    c:usersjhwenvenuspykaggle-imaterialist-with-modelmmdetectionmmdetopssigmoid_focal_losssrcsigmoid_focal_loss.cpp(25) : warning C4715: “SigmoidFocalLoss_forward”: 不是所有的控件路径都返回值
    已完成代码的生成
    copying buildlib.win-amd64-3.6sigmoid_focal_loss_cuda.cp36-win_amd64.pyd ->

    最后在mmdetection目录下执行

    python setup.py develop
    

    如果顺利执行,那么恭喜你完成了编译工作,接下来就可以测试一下了。

  • 相关阅读:
    2017.6.30 码云--生成公钥
    2017.6.30 IDEA插件--gsonfomat的安装与使用
    2017.6.30 安装IDEA的插件mybatis plugin(破解版)
    2017.6.29 java读取.properties配置文件的几种方法
    2017.6.29 移除再导入maven module到IDEA中时提示: Unable to proceed. Nothing found to import.
    2017.6.27 跟开涛学spring3--spring概述
    2017.6.27 jdbc基本使用
    2017.6.26 接口测试工具postman使用总结
    16-20
    11-15
  • 原文地址:https://www.cnblogs.com/venusian/p/12996005.html
Copyright © 2020-2023  润新知