windows10+detectron2完美安装教程

news2024/12/21 9:51:10

文章目录

      • 前言
      • 下载detectron2
      • 安装Visual Studio 2019
      • 修改代码

前言

需要下载detectron2的github项目,安装vs2019 (强烈建议这个版本,其他的版本需要做更多地操作才能成功安装),默认其他环境没问题。

下载detectron2

链接:https://github.com/facebookresearch/detectron2
也可以克隆到本地

git clone https://github.com/facebookresearch/detectron2.git

将prompt的当前路径改为detectron2

cd detectron2

安装Visual Studio 2019

官网:VS2019
下载社区版安装即可,第一次进入这个界面可能需要登录微软账号。
在这里插入图片描述
双击运行下载得到的可执行文件,安装时选择使用C++的桌面开发,然后全部默认安装即可。
在这里插入图片描述
这里耗时比较久,需要十几分钟的样子,等待安装完成后不用启动。接下来需要配置一个环境变量。右击此电脑选择属性–>高级系统设置–>环境变量–>系统变量–>path–>编辑–>新建,输入

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64

注意,这个路径要跟自己电脑上的实际情况对应,其中的14.29这个编号下一步需要。
接下来在点击win+R打开命令行窗口,输入cl,查看是否有输出。
在这里插入图片描述
如上图说明环境变量没有问题,此时需要再设置一下编译器。

SET MSSdk=1
SET DISTUTILS_USE_SDK=1
call “C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat” amd64 -vcvars_ver=14.29

运行后结果如图。
在这里插入图片描述

修改代码

先安装fvcore包,可以直接使用pip安装

pip install fvcore -i https://pypi.mirrors.ustc.edu.cn/simple/

也可以先下载或者git克隆fvcore的github包,然后安装。

git clone https://github.com/facebookresearch/fvcore.git
cd fvcore
python setup.py build --force develop

接下来需要修改一些文件里的内容。

  1. 在Anaconda的安装路径里,D:\Anaconda3\envs\pt2.0\Lib\site-packages\torch\utils\cpp_extension.py,修改在文件中的SUBPROCESS_DECODE_ARGS参数为gbk,上边是注释掉的,可以使用查找来找这个变量。注意路径中的虚拟环境名与自己实际情况对应。
# SUBPROCESS_DECODE_ARGS = ('',) if IS_WINDOWS else ()
SUBPROCESS_DECODE_ARGS = ('gbk',) if IS_WINDOWS else ()

如果不能找到这个变量,那可能是pytorch版本不一样导致的,此时还可以有另一种解决办法,修改如下

# match = re.search(r'(\d+)\.(\d+)\.(\d+)', compiler_info.decode(*SUBPROCESS_DECODE_ARGS).strip())
match = re.search(r'(\d+)\.(\d+)\.(\d+)', compiler_info.decode(‘gbk’).strip())

不同的pytorch版本可能存在一些小差异,但基本这条语句类似。

  1. 继续修改当前环境里的,D:\Anaconda3\envs\pt2.0\Lib\site-packages\torch\include\torch\csrc\jit\runtime\argument_spec.h,修改如下
// static constexpr size_t ARG_SPEC_DEPTH_LIMIT = 128;
static const size_t ARG_SPEC_DEPTH_LIMIT = 128;

注意这里如果是加注释的话要注意注释格式中python与c++写法的不同。

  1. 继续修改当前环境里的,D:\Anaconda3\envs\pt2.0\Lib\site-packages\torch\include\torch\csrc\jit\ir\ir.h,注释掉下边这句,一些版本的pytorch里边可能直接没有这条语句。
// static constexpr Symbol Kind = ::c10::prim::profile_optional
  1. 修改detectron2里的,I:\detectron2\detectron2\layers\csrc\ROIAlignRotated\ROIAlignRotated_cuda.cu,将所有的ceil替换为ceilf,这里要注意区分大小写,有两处大写的Ceil不要替换,在使用一键替换时一定要严格限制大小写。
  2. 继续修改detectron2里的,I:\detectron2\detectron2\layers\csrc\deformable\deform_conv_cuda_kernel.cu,将所有的floor改为floorf
  3. 继续修改detectron2里的,I:\detectron2\detectron2\layers\csrc\cocoeval\cocoeval.cpp
// localtime_r(&rawtime, &local_time); 
localtime_s(&local_time,&rawtime);
  1. 继续修改detectron2里的,I:\detectron2\detectron2\layers\csrc\nms_rotated\nms_rotated_cuda.cu,其中对头文件定义中注释掉一些,添加上一些,如下
// Copyright (c) Facebook, Inc. and its affiliates.
#include <ATen/ATen.h>
#include <ATen/cuda/CUDAContext.h>
#include <c10/cuda/CUDAGuard.h>
#include <ATen/cuda/CUDAApplyUtils.cuh>
/*#ifdef WITH_CUDA
#include "../box_iou_rotated/box_iou_rotated_utils.h"
#endif
// TODO avoid this when pytorch supports "same directory" hipification
#ifdef WITH_HIP
#include "box_iou_rotated/box_iou_rotated_utils.h"
#endif*/
#include "box_iou_rotated/box_iou_rotated_utils.h"

此时prompt在detectron2路径下,运行

python setup.py build develop

如下则表示已经安装成功了。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/505278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【来点小剧场--爪哇岛寻宝】java实现网络编程,写一个简易的回显服务程序

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaEE初阶》 文章分布&#xff1a;这是一篇关于网络编程的文章&#xff0c;在这篇文章中我会剖析一段回显服务程序的执行步骤和代码编程&#xff0c;希望对你有所帮助&#xff01; 目录 客户端 服务端 总结 客户端 现在我们…

Postman完全卸载步骤

一、卸载应用程序 我们首先正常右键点击卸载通过windows程序卸载功能来卸载postman应用程序。 二、删除文件 &#xff08;1&#xff09;删除AppData》Roadming下的postman文件夹 &#xff08;2&#xff09;删除AppData》Roadming》\Microsoft\Windows\Start Menu\Programs下的p…

态势感知与信质、信量

未来的新智能是人机环境系统智能&#xff0c;而人机融合的态势感知是其关键&#xff0c;简单地说&#xff0c;态势感知&#xff08;situation awareness&#xff09;就是智能体在“一定时间和空间环境中的元素的感知&#xff0c;对它们的含义的理解&#xff0c;并对他们稍后状态…

uni——调用子组件失败解决方法($nextTick)

案例说明 调用子组件内的方法或者属性赋值报错的 this.$refs.goodsOrder.list [ ]解决代码 在外层包裹this.$nextTick(() > { 数据 }) this.$nextTick(() > {this.$refs.goodsOrder.list [] })

【JAVA面试】JVM

提示&#xff1a;文章先作为初版&#xff0c;等后续时间充足后&#xff0c;补充更深的内容 文章目录 JVM一、垃圾回收算法二、什么是STW三、JVM参数四、JVM内存模型 JVM 一、垃圾回收算法 JVM中的垃圾回收算法可以分为两种类型&#xff1a;基于引用计数的垃圾回收算法和基于可…

国考省考行测:数字推理题,趋势平缓作差,趋势陡峭看平方乘积,根号数列平方,分数小数拆开看

国考省考行测&#xff1a;数字推理题&#xff0c;趋势平缓作差&#xff0c;趋势陡峭看平方乘积&#xff0c;根号数列平方&#xff0c;分数小数拆开看 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考…

【Unity3D】Shader变体管理流程-变体剔除

一、什么是Shader变体管理 想要回答这个问题&#xff0c;要看看什么是Shader变体。 1. 变体 我们用ShaderLab编写Unity中的Shader&#xff0c;当我们需要让Shader同时满足多个需求&#xff0c;例如说&#xff0c;这个是否支持阴影&#xff0c;此时就需要加keyword&#xff08;…

强化学习p1-基本概念

Terminologies(名词) 状态(State) 每个时刻&#xff0c;环境有一个状态 (state)&#xff0c;可以理解为对当前时刻环境的概括 状态(State) 有时也被称为观测(Observation)&#xff0c;因为有时智能体并不能观测到环境改变后的全部&#xff0c;只能观测到部分。 环境(Environm…

计算机毕业论文内容参考|软件工程|网络流量异常信息分析方法研究

文章目录 导文文章重点摘要前言绪论课题背景国内外现状与趋势课题内容相关技术与方法介绍技术分析技术设计技术实现总结与展望导文 网络流量异常信息分析方法研究 文章重点 摘要 本课题针对网络安全中网络流量异常的分析方法进行研究,提出一种基于机器学习和深度学习的异常检…

OpenCV教程——处理图像像素及图像掩膜

1.像素值 像素值是图像被数字化时由计算机赋予的值&#xff0c;代表了图像中某一小方块&#xff08;即【像素点】&#xff09;的平均亮度信息。 灰度图像通常用8位表示一个像素&#xff0c;这样总共有256个灰度等级&#xff08;像素值在0&#xff5e;255之间&#xff09;。 …

最值得推荐的免费分区管理软件

磁盘管理是 Windows 的内置工具&#xff0c;用于操作硬盘上的分区&#xff0c;但自 Windows XP 以来直到Windowa11 该程序几乎没有变化。个人测试了五个备选方案&#xff0c;以了解它们之间的比较。 奇客分区 默认的分区个数根据磁盘大小&#xff1f;需要重新划分分区&#xf…

2023/5/8总结

JAVA基础知识&#xff08;2&#xff09; 1.方法 1、方法定义 格式&#xff1a;public static void 方法名&#xff08;&#xff09;{ //方法体 } 2、方法调用 格式&#xff1a;方法名&#xff08;&#xff09;&#xff1b; 3、方法的通用格式 public static 返回值类型方法名&…

Camtasia2023官方中文版免费下载

在现在的网络互联网时代&#xff0c;越来越多的人走上了自媒体的道路。有些自媒体人会自己在网络上录制精彩视频&#xff0c;也有一些人会将精彩、热门的电影剪辑出来再加上自己给它的配音&#xff0c;做成大家喜欢看的电影剪辑片段。相信不管大家是自己平时有独特的爱好也好、…

【机组组合】基于数据驱动的模型预测控制电力系统机组组合优化【IEEE24节点】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

MySQL ---- 事务

事务 1、事务简介 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撒销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 在实际的开发过程中&#xff0c;一个业务操作如&am…

如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)

如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows) 如何制作 ESXi USB 启动盘 请访问原文链接&#xff1a;https://sysin.org/blog/create-bootable-esxi-usb-installer/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysi…

第四十六章 Unity 布局(上)

学习了UI元素的使用&#xff0c;并不能构建出一个完整的UI界面&#xff0c;我们需要使用一些方法将这些UI元素按照“设计稿”的效果&#xff0c;将其摆放到对应的位置上。如何摆放这些UI元素&#xff0c;就是我们需要讲的“布局”&#xff0c;当然这需要借助一些布局组件来完成…

SpringBootFoundation

SpringBootFoundation 一. 项目创建1.1 创建项目1.2 并调整pom.xml1.3 创建子项目1.4 配置子项目pom1.4.1 使用`csmall-server`作为父项目 并且 添加依赖项1.5 关于聚合项目二. YAML语法的配置2.1 关于YAML语法一. 项目创建 1.1 创建项目 本项目是一个聚合项目的结构,首先,创…

clickhouse集群部署指南

一、前言&#xff1a; 上篇文章介绍了clickhouse单机部署指南&#xff0c;本章重点介绍下集群部署指南&#xff0c;文章重在实战&#xff0c;相关知识请自行学习。 二、环境准备&#xff1a; CentOS7 4核16G 3台(172.25.16.82、172.25.16.83、172.25.16.84) 三、安装包准备…

第三方ipad笔哪个牌子好用?ipad触控笔推荐平价

至于选择苹果原装的电容笔&#xff0c;还是平替的电容笔&#xff0c;要看个人的需求而定&#xff0c;比如画图用的&#xff0c;可以用Apple Pencil&#xff1b;比如学习记笔记用的&#xff0c;可以用平替电容笔&#xff0c;目前的平替电容笔无论是品质还是性能&#xff0c;都非…