Win10 安装Detectron2 Bugs整理

因为不知名的原因,要在win10上安装Detectron2(尽管这个东西对linux比较友好,win10上一堆坑...),踩了无数的坑,翻了各种攻略终于成功了!记录一下,献给同样的踩坑人~


安装环境

  • VS2019 Community
  • Anaconda3
  • CUDA10.2
  • cudnn10.2
    没有安装好的自己搜一下吧~ 网上一大片~~

新建环境
我自己喜欢启动Anaconda 新建一个隔离环境,这里我们命名为detecron2,也可以用命令行设置。注意python的版本为3.6(其他的我没试过)

conda creat -n detectron2 python=3.6
conda activate detectron2

设置cl环境变量
根据自己VS的安装路径,找到cl.exe设置环境变量。我的是在:
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64\cl.exe
进入cmd,输入cl

安装依赖包

pip install cython pyyaml tabulate termcolor yacs iopath ninja
pip install opencv-python
pip install omegaconf==2.1.0.dev22
pip install cloudpickle
pip install Matplotlib
pip install pydot
pip install tensorboard
pip install pycocotools>=2.0.2

安装torch,torchvision
下载路径:https://download.pytorch.org/whl/torch_stable.html
选择对应的版本号,并进入下载路径。

pip install torch-1.6.0-cp36-cp36m-win_amd64.whl
pip install torchvision-0.7.0-cp36-cp36m-win_amd64.whl

安装cocoapi
pycocotools不支持windows,所以必须使用git地址下载
https://github.com/philferriere/cocoapi
cd到下载路径

python setup.py build_ext --inplace
python setup.py build_ext install

安装fvcore
下载地址:https://github.com/facebookresearch/fvcore
cd到下载路径。

python setup.py build --force develop

安装detectron2
下载地址:https://github.com/facebookresearch/detectron2(注意下载对应的cuda的版本,默认是最新版,我下载的是tag 0.4
cd到下载路径。

python setup.py build --force develop

这个地方会有一堆错误,我们一个一个解决!

BUGs汇总

Q1: UserWarning: Error checking compiler version for cl: 'utf-8' codec can't decode byte 0xd3 in position 0: invalid continuation byte

打开你环境下的cpp_extension.py, 找到如下代码段的位置,在decode()的括号中添加 ’ .gbk’(注意.gbk前面有空格),把编码格式改一下。

 if sys.platform.startswith('darwin'):
        # There is no particular minimum version we need for clang, so we're good here.
        return True
    try:
        if sys.platform.startswith('linux'):
            minimum_required_version = MINIMUM_GCC_VERSION
            version = subprocess.check_output([compiler, '-dumpfullversion', '-dumpversion'])
            version = version.decode().strip().split('.')
        else:
            minimum_required_version = MINIMUM_MSVC_VERSION
            compiler_info = subprocess.check_output(compiler, stderr=subprocess.STDOUT)
            match = re.search(r'(\d+)\.(\d+)\.(\d+)', compiler_info.decode(' gbk').strip())
            version = (0, 0, 0) if match is None else match.groups()
    except Exception:
        _, error, _ = sys.exc_info()
        warnings.warn('Error checking compiler version for {}: {}'.format(compiler, error))
        return False

Q2: 修改pyTorch代码
有外国友人修改了部分代码,我没修改也没啥问题。你要是有啥疑难杂症也不妨试试。

第一个文件的位置改了一下,:{your evn path}\Lib\site-packages\torch\include\torch\csrc\jit\runtime\argumenta_spec.h

Q3: 安装出现编译器错误
call一下本地的vs就好了(注意路径,如果不是默认安装可能在你的安装路径下)~~
call “C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat”

Q4: DISTUTILS_USE_SDK设置错误
具体的错误没有截图了,反正就是就是告诉你没设置DISTUTILS_USE_SDK,让你设置。直接在cmd里面设置就行。set DISTUTILS_USE_SDK=1

Q5: CalledProcessError: Command ‘[‘ninja’, ‘-v’]’ returned non-zero exit status 1
千万不要修改成[ninja --v] 或者 [ninja -version]!!!
直接往上翻错误提示信息,在第一个failed的地方就会有新发现。

第一个Failed是编译到[6/11]的时候,deform_conv_cuda_kernel.obj出不来,下面说的是error: identifier "__floorf" is undefined in device code
第二个Failed也差不多,说"__ceilf"未定义啥的。

找到ROIAlignRotated_cuda.cudeform_conv_cuda_kernel.cu文件,把里面的ceilfloor后面都加上f就完事,即ceil改为ceilffloor改为floorf

[参考链接]
https://www.pythonf.cn/read/123901
https://blog.csdn.net/qq114480/article/details/116058168
https://zhuanlan.zhihu.com/p/363295722
https://blog.csdn.net/nefetaria/article/details/105728008
https://blog.csdn.net/tanmx219/article/details/100829920

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容