Windows10系统下swin-transformer目标检测环境搭建

2023-11-13


前言

刚搞明白了分类,又进来了检测这个大坑里。

CV第一步:从环境搭建开始!

环境总览:
Windows10/11+ Microsoft Visual Studio2019社区版
python3.8+pytorch1.8.1+torchvision0.9.1+cuda10.1
mmcv1.4.0+mmdet2.11.0

1.环境准备

(1)安装 Visual Studio

需要用到 C++ 安装编译库,所以需要安装 Microsoft Visual Studio,版本的话比较常见的是2019,最新的版本应该也可以,安装很简单。

下载地址:2019版Microsoft Visual Studio下载地址

下载地址:最新版Microsoft Visual Studio下载地址

安装时记住安装位置,然后在 系统变量path 中添加VS2019的cl.exe文件路径:
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.****\bin\Hostx86\x64
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat

星号的位置根据自己的安装情况进行替换 ),然后上移到最顶端,一路确定之后退出,关机重启。

(2)工程项目文件准备

swin transformer官方github仓库下载或克隆代码工程文件,名字就命名为 Swin-Transformer-Object-Detection 就可以啦,然后在这个文件夹下新建一个命名为 checkpoints 的文件夹,将官方公开的那些预训练模型放进去,整体就是这个样子的。

在这里插入图片描述

2.虚拟环境创建

老规矩,做一个新项目建一个新的虚拟环境。

在 Anaconda Powershell Prompt 中键入:

conda create -n swinmm python=3.8 -y
conda activate swinmm

PS: swinmm为环境名称,可自行更改!!!

3.安装pytorch

参考上一篇基于win10复现swin-transformer图像分类源码的安装和运行代码经验,接上一步键入:

conda install pytorch==1.8.1 torchvision==0.9.1 cudatoolkit=10.1 -c pytorch

4.安装mmcv

三种方式可以选择,自行尝试哪一种可以安装成功,这里是个大坑!

(1)自动安装(不稳定不推荐)

pip install openmim
mim install mmdet

(2)手动安装(强烈推荐!!!)

pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html

PS:
       one:命令中的 cu101torch1.8.0 为需要注意的地方,不是按照上述步骤的话自行更改,这里是1.8.0而不是1.8.1的原因官方有说明;

       two:具体的 cuda 和 pytorch 版本对应和安装命令可以在https://mmcv.readthedocs.io/en/latest/get_started/installation.html中查看;

       three:这里指定1.3.8版本是因为一开始我第二种方法没有成功,然后用的第三种方法从源码安装,结果装的 mmcv 是最新版本1.4.6,然后代码运行是会报错,提示:

AssertionError: MMCV==1.4.6 is used but incompatible. Please install mmcv>=1.2.4, <=1.4.0.

       所以mmcv的版本应该在1.2.4到1.4.0之间选择!

(3)从源码安装

使用命令:

git clone https://github.com/open-mmlab/mmcv.git

或者在该 github 仓库将 code 打包下载然后解压,然后在 Anaconda Powershell Prompt 中使用 cd 命令切换到该根目录下,然后:

#build
python setup.py build_ext
# install
python setup.py develop

5.安装mmdet

继续使用 cd 命令将路径切换到第一步准备的 Swin-Transformer-Object-Detection 工程文件路径下,比如我的就是:

cd E:/
cd Swin-Transformer-Object-Detection

继续键入:

pip install -r requirements.txt -i https://pypi.douban.com/simple/
pip install -r requirements/docs.txt -i https://pypi.douban.com/simple/
python setup.py develop

6.安装apex

如果训练 swin 的话还需要用到一个叫 apex 的东西,安装步骤同样参考上一篇基于win10复现swin-transformer图像分类源码中的第5步安装。

文字步骤如下,详细见原博客:

       在 github 下载源码https://github.com/NVIDIA/apex 到本地文件夹(安装步骤第一步网盘中也有相关文件资源);
       在命令行中切换到 apex 所在文件夹;
       输入命令: python setup.py install 等待安装完成即可。

7.测试

在 Pycharm 中打开 Swin-Transformer-Object-Detection 工程文件,将提示缺少的一些包给装上(第5步应该装的差不多了),然后新建 demo.py 文件,将以下代码复制进去:

from mmdet.apis import init_detector, inference_detector, show_result_pyplot
import cv2

# configs的路径可以按照这个寻找
config_file = 'E:/Swin-Transformer-Object-Detection/configs/swin/cascade_mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_giou_4conv1f_adamw_3x_coco.py'

# 这个就是权重文件,也就是第一步环境准备中新建的checkpoints文件夹
checkpoint_file = 'E:/Swin-Transformer-Object-Detection/checkpoints/cascade_mask_rcnn_swin_tiny_patch4_window7.pth'
device = 'cuda:0'
# init a detector
model = init_detector(config_file, checkpoint_file, device=device)
# inference the demo image

# 测试图片在官方工程文件的demo文件夹下
image = 'E:/Swin-Transformer-Object-Detection/demo/demo.jpg'

result = inference_detector(model, image)

show_result_pyplot(model, image, result, score_thr=0.3)

没有问题的话运行结果如下:

在这里插入图片描述


~~怎么训练还没有看,工程文件实在是太多太复杂了,一点也不像分类的那样明了,有问题后续再更新!~~

Swin-transformer纯目标检测训练自己的数据集


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows10系统下swin-transformer目标检测环境搭建 的相关文章

  • 检查 PyTorch 张量在 epsilon 内是否相等

    如何检查两个 PyTorch 张量在语义上是否相等 考虑到浮点错误 我想知道元素是否仅相差一个小的 epsilon 值 在撰写本文时 这是最新稳定版本 0 4 1 中的一个未记录的函数 但文档位于master unstable branch
  • 如何检查 PyTorch 是否正在使用 GPU?

    如何检查 PyTorch 是否正在使用 GPU 这nvidia smi命令可以检测 GPU 活动 但我想直接从 Python 脚本内部检查它 这些功能应该有助于 gt gt gt import torch gt gt gt torch cu
  • Pytorch 数据加载器:错误的文件描述符和 EOF > 0

    问题描述 在使用由自定义数据集制作的 Pytorch 数据加载器进行神经网络训练期间 我遇到了奇怪的行为 数据加载器设置为workers 4 pin memory False 大多数时候 训练都顺利完成 有时 训练会随机停止 并出现以下错误
  • PyTorch - 参数不变

    为了了解 pytorch 的工作原理 我尝试对多元正态分布中的一些参数进行最大似然估计 然而 它似乎不适用于任何协方差相关的参数 所以我的问题是 为什么这段代码不起作用 import torch def make covariance ma
  • Pytorch:了解 nn.Module 类内部如何工作

    一般来说 一个nn Module可以由子类继承 如下所示 def init weights m if type m nn Linear torch nn init xavier uniform m weight class LinearRe
  • 预训练 Transformer 模型的配置更改

    我正在尝试为重整变压器实现一个分类头 分类头工作正常 但是当我尝试更改配置参数之一 config axis pos shape 即模型的序列长度参数时 它会抛出错误 Reformer embeddings position embeddin
  • 我可以使用逻辑索引或索引列表对张量进行切片吗?

    我正在尝试使用列上的逻辑索引对 PyTorch 张量进行切片 我想要与索引向量中的 1 值相对应的列 切片和逻辑索引都是可能的 但是它们可以一起吗 如果是这样 怎么办 我的尝试不断抛出无用的错误 类型错误 使用 ByteTensor 类型的
  • PyTorch 教程错误训练分类器

    我刚刚开始 PyTorch 教程使用 PyTorch 进行深度学习 60 分钟闪电战我应该补充一点 我之前没有编写过任何 python 但其他语言 如 Java 现在 我的代码看起来像 import torch import torchvi
  • 在 PyTorch 中原生测量多类分类的 F1 分数

    我正在尝试在 PyTorch 中本地实现宏 F1 分数 F measure 而不是使用已经广泛使用的sklearn metrics f1 score https scikit learn org stable modules generat
  • 在非单一维度 1 处,张量 a (2) 的大小必须与张量 b (39) 的大小匹配

    这是我第一次从事文本分类工作 我正在使用 CamemBert 进行二进制文本分类 使用 fast bert 库 该库主要受到 fastai 的启发 当我运行下面的代码时 from fast bert data cls import Bert
  • 从打包序列中获取每个序列的最后一项

    我试图通过 GRU 放置打包和填充的序列 并检索每个序列最后一项的输出 当然我的意思不是 1项目 但实际上是最后一个 未填充的项目 我们预先知道序列的长度 因此应该很容易为每个序列提取length 1 item 我尝试了以下方法 impor
  • 为什么 pytorch matmul 在 cpu 和 gpu 上执行时得到不同的结果?

    我试图找出 numpy pytorch gpu cpu float16 float32 数字之间的舍入差异 而我发现的内容让我感到困惑 基本版本是 a torch rand 3 4 dtype torch float32 b torch r
  • 如何计算 CNN 第一个线性层的维度

    目前 我正在使用 CNN 其中附加了一个完全连接的层 并且我正在使用尺寸为 32x32 的 3 通道图像 我想知道是否有一个一致的公式可以用来计算第一个线性层的输入尺寸和最后一个卷积 最大池层的输入 我希望能够计算第一个线性层的尺寸 仅给出
  • 将 Keras (Tensorflow) 卷积神经网络转换为 PyTorch 卷积网络?

    Keras 和 PyTorch 使用不同的参数进行填充 Keras 需要输入字符串 而 PyTorch 使用数字 有什么区别 如何将一个转换为另一个 哪些代码在任一框架中获得相同的结果 PyTorch 还采用参数 in channels o
  • PyTorch 中的连接张量

    我有一个张量叫做data形状的 128 4 150 150 其中 128 是批量大小 4 是通道数 最后 2 个维度是高度和宽度 我有另一个张量叫做fake形状的 128 1 150 150 我想放弃最后一个list array从第 2 维
  • PyTorch 中的交叉熵

    交叉熵公式 但为什么下面给出loss 0 7437代替loss 0 since 1 log 1 0 import torch import torch nn as nn from torch autograd import Variable
  • 保存具有自定义前向功能的 Bert 模型并将其置于 Huggingface 上

    我创建了自己的 BertClassifier 模型 从预训练开始 然后添加由不同层组成的我自己的分类头 微调后 我想使用 model save pretrained 保存模型 但是当我打印它并从预训练上传时 我看不到我的分类器头 代码如下
  • Pytorch 与 joblib 的 autograd 问题

    将 pytorch 的 autograd 与 joblib 混合似乎存在问题 我需要并行获取大量样本的梯度 Joblib 与 pytorch 的其他方面配合良好 但是 与 autograd 混合时会出现错误 我做了一个非常小的例子 显示串行
  • ValueError:使用火炬张量时需要解压的值太多

    对于神经网络项目 我使用 Pytorch 并使用 EMNIST 数据集 已经给出的代码加载到数据集中 train dataset dsets MNIST root data train True transform transforms T
  • PyTorch 给出 cuda 运行时错误

    我对我的代码做了一些小小的修改 以便它不使用 DataParallel and DistributedDataParallel 代码如下 import argparse import os import shutil import time

随机推荐

  • 服务器基础知识

    服务器基础知识 服务器是网络环境中的高性能计算机 它侦听网络上的其他计算机 客户机 提交的服务请求 并提供相应的服务 为此服务器必须具有承担服务并且保障服务的能力 一 服务器的分类 1 塔式服务器 塔式服务器即常见的立式 卧式机箱结构的服务
  • 基于单片机ISP技术原理及在线编程器的实现

    编程接口一般 芯片不焊在电路中 如华邦的51单片机 40引脚 可能是串口下载 STC 焊在板上的USB转串口下载 下面的ATMEL的ISP是模拟SPI下载 用单片机的P1 5P1 6P1 7下载 以ATMEL公司的AT89S51 AT89S
  • 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)

    解决的问题 适配器模式把一个类的接口变换成客户端所期待的另一种接口 从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作 比如说我的hp笔记本 美国产品 人家美国的电压是110V的 而我们中国的电压是220V 要在中国能使用 必须找个
  • Csdn爬虫自动评论

    前言 因为发现自己的csdn博客被机器人自动评论 这些博客很多都是对别人进行评论 然后别人就有可能回访或者点赞关注等等 基本上总积分非常高 为了覆盖掉这些机器评论 本篇主要是实现java爬虫对自己的博客所有文章进行自动评论 一 准备分析工作
  • vscode插件一draw.io绘图工具

    vscode 插件推荐一draw io 日常工作中需要制作时序图 流程图等 这里推荐的是vscode的插件中draw io 先自行在官网下载vscode https code visualstudio com 安装后打开vscode 如图在
  • c++ map 析构函数_C++核心准则C.36:析构函数不应该失败

    C 36 A destructor may not fail析构函数不应该失败 Reason 原因 In general we do not know how to write error free code if a destructor
  • Crazyswarm framework

    Crazyswarm framework 1 Tools Crazyfile Chooser Simulation sim flag 2 软件架构 使用方法 参考论文 应用的论文 3使用教程 参考网页 配置文件 example 基础 轨迹生
  • k8s 部署dubbo

    docker pull chenchuxin dubbo admin docker tag chenchuxin dubbo admin hub redblue ai com dubbo admin cat lt lt END gt dub
  • sql 数据查询返回值问题

    1 create 返回值 若发生错误 返回false 成功则返回创建的数据 2 add 返回值 addAll 返回值 成功 id或true 失败 false 成功 如果主键是自动增长型 返回值为新增记录Id值 addAll为最大值 否则返回
  • Microsoft Store打不开的解决方案

    Microsoft Store无法打开的解决方案 一 方案一 1 按Win i键 点击 网络和internet 2 转到 代理 关闭 使用代理服务器 3 尝试打开 microsoft store 二 方案二 1 按Win R键 输入inet
  • PHP请求微信接口获取用户电话号

    前言情景剧 业务场景是为了在用户登录的时候判断其是否已经成功注册 没有成功注册的话就将获取到的openid和session key加密后作为token传给前端 然后让前台通过组件获得code之后连着token一起传给后端 后端拿着code再
  • 服务机器人串口配置

    服务机器人串口配置 1 确定串口号 2 查看串口号对应的kernels 3 修改rules 1 确定串口号 如下图 以雷达为了例子 插拔之后 可知串口号为 ttyUSB1 2 查看串口号对应的kernels 3 修改rules 更改KERN
  • 搭建Zerotier内网穿透网络及彻底删除zerotier方法

    搭建Zerotier内网穿透网络 1 注册zerotier账号并登录https my zerotier com 2 访问https my zerotier com network 点击Create a Network 之后再Your Net
  • Java 【基础】 模拟log4j,输出当前语句的行数,和类路径

    一直很好奇log4j 是如何获取到当前输出的行数的 今天学到了 原来是堆栈跟踪 把代码贴出来给大家看一下 模拟log4j public static void debug String string System out println 调
  • declare-styleable的使用

    declare styleable是给自定义控件添加自定义属性用的 可以定义多种类型 int Boolean string等等 参考链接
  • 正则表达式去除冗长代码,tppabs

    利用正则表达式去除网页中的冗长没用代码 1 btppabs h 2 tpa http 3 清除css内的 tpa http s gif png jpg 4 tpa
  • org.springframework.http.converter.HttpMessageNotWritableException

    这里说无法将 对应对象转换 原因在于没有导入json 依赖 所以无法转换 org springframework http converter HttpMessageNotWritableException No converter fou
  • SD/MMC存储器启动方案在SoC中的设计与实现

    原文地址 http blog csdn net allen6268198 article details 7745208 引言 SD MMC存储器以其成本低廉 存储容量大 性能优良 安全性高等特点越来越广泛地应用于便携式设备和家用电子设备
  • Android Studio中设置鼠标悬停显示文档提示方法

    有些小伙伴在开发的过程中可能会习惯使用文档注释 那么在Android Studio中如何设置启用文档注释呢 1 首先打开Android Studio 点击菜单栏中的 File选项菜单 点击如下的Settings 进行设置 2 点击Edito
  • Windows10系统下swin-transformer目标检测环境搭建

    Swin Transformer Object Detection环境搭建 前言 1 环境准备 2 虚拟环境创建 3 安装pytorch 4 安装mmcv 5 安装mmdet 6 安装apex 7 测试 前言 刚搞明白了分类 又进来了检测这