【超详细】记录从零开始学mmdetection(一)

2023-11-17

(一)环境配置

本专题是为了记录学习mmdetection的过程,包括mmdetection的配置、代码的讲解,如何使用mmdetection训练自己的数据集。本节只记录第一部分,环境配置过程。本专题主要是在Linux下配置的,因为mmdetection在linux系统下较为友好,当然也可在windows10下配置,配置过程在我之前的博客中可以找到,在windows下配置较为复杂,建议大家在Linux下配置。

1. mmdetection介绍

mmdetection是商汤科技和香港中文大学开源的一个基于Pytorch实现的深度学习目标检测工具,支持Faster-RCNN、Mask-RCNN、YOLOV3、CascadeRcnn等目标检测框架,其主要特点是,模块化设计、支持多种目标检测模型、使用起来较为方便。

2. mmdetection配置

首先介绍一下自己的环境,Ubuntu20.04+cuda11.0。
mmdetection有以下要求,安装时需要注意,不要安装太早的版本。

  • Python 3.6+
  • PyTorch 1.3+
  • CUDA 9.2+ (If you build PyTorch from source,CUDA 9.0 is also compatible)
  • GCC 5+

2.1 下载源码

代码链接https://github.com/open-mmlab/mmdetection
首先先将代码clone到本地,在你想放代码的路径中打开终端,输入
git clone https://github.com/open-mmlab/mmdetection.git
如果下载失败,或者下载较慢的话,可以用使用github的镜像下载。代码文件夹如下图所示。
picture

2.2 环境配置

因为我们需要GPU进行加速运算,这里默认大家已经配置好了cuda+cudnn,没有安装的同学可以先自行百度如何安装,后续我会出一个安装的教程。

2.2.1 创建虚拟环境:

首先在终端输入cd mmdetection。创建一个虚拟环境命名为mmd,在终端输入命令
conda create -n mmd python=3.7
创建完虚拟环境后,先激活虚拟环境,输入
conda activate mmd

2.2.2 安装pytorch:

前面介绍到mmdetection是基于Pytorch的,需要先安装一个Pytorch。打开Pytorch官网选择你安装对应的版本,如果你跟我的版本一样也是cuda11.0,则在终端输入
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 -c pytorch若显示安装超时,再输入一遍即可。下载速度慢的话,可以更换conda的镜像源,更换镜像源以后,将-c pytorch去掉。

在这里插入图片描述

2.2.3 安装mmcv:

打开mmcv安装网站,如下图所示
在这里插入图片描述
找到对应cuda和pytorch版本的代码,注意需要把{mmcv_version}改为你想安装的mmcv的版本。如果跟我配置一样输入
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
这里注意!mmcv和下面安装的mmdet有版本对应关系,关系如下,安装时一定要注意。

MMDetection version MMCV version
master mmcv-full>=1.3.17, <1.5.0
2.19.0 mmcv-full>=1.3.17, <1.5.0
2.18.0 mmcv-full>=1.3.17, <1.4.0
2.17.0 mmcv-full>=1.3.14, <1.4.0
2.16.0 mmcv-full>=1.3.8, <1.4.0
2.15.1 mmcv-full>=1.3.8, <1.4.0
2.15.0 mmcv-full>=1.3.8, <1.4.0
2.14.0 mmcv-full>=1.3.8, <1.4.0
2.13.0 mmcv-full>=1.3.3, <1.4.0
2.12.0 mmcv-full>=1.3.3, <1.4.0
2.11.0 mmcv-full>=1.2.4, <1.4.0
2.10.0 mmcv-full>=1.2.4, <1.4.0
2.9.0 mmcv-full>=1.2.4, <1.4.0
2.8.0 mmcv-full>=1.2.4, <1.4.0
2.7.0 mmcv-full>=1.1.5, <1.4.0
2.6.0 mmcv-full>=1.1.5, <1.4.0
2.5.0 mmcv-full>=1.1.5, <1.4.0
2.4.0 mmcv-full>=1.1.1, <1.4.0
2.3.0 mmcv-full==1.0.5
2.3.0rc0 mmcv-full>=1.0.2
2.2.1 mmcv==0.6.2
2.2.0 mmcv==0.6.2
2.1.0 mmcv>=0.5.9, <=0.6.1
2.0.0 mmcv>=0.5.1, <=0.5.8
2.2.4 安装mmdet

在命令行内输入pip install mmdet即可

2.2.5 验证安装

在mmdetection中新建.py文件,先验证pytorch安装成功

import torch
print("torch和cuda是否安装成功:",torch.cuda.is_available())

输出“torch和cuda是否安装成功: True“证明安装成功

验证mmdetection是否安装成功。
https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn中下载权重,在mmdetection中新建一个文件夹checkpoints,将下载好的权重放入文件夹中,在终端输入以下代码。

python demo/image_demo.py demo/demo.jpg configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth

若安装正确,则输出以下结果。
在这里插入图片描述

3. 本节结束语

到此,mmdetection的环境配置已经完成,如果安装过程中出了什么错,可以在评论中留言大家讨论,如果有步骤错误的地方也请大佬指正。下一次更新mmdetection中的各个文件的含义,创作不易求大佬们点赞,感谢各位大佬。
在这里插入图片描述

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

【超详细】记录从零开始学mmdetection(一) 的相关文章

  • PyTorch 中的截断反向传播(代码检查)

    我正在尝试在 PyTorch 中实现随时间截断的反向传播 对于以下简单情况K1 K2 我下面有一个实现可以产生合理的输出 但我只是想确保它是正确的 当我在网上查找 TBTT 的 PyTorch 示例时 它们在分离隐藏状态 将梯度归零以及这些
  • 用我自己的值初始化pytorch卷积层

    我想知道是否有办法用我自己的值初始化 pytorch 卷积过滤器 例如 我有一个元组 0 8423 0 3778 3 1070 2 6518 我想用这些值初始化 2X2 过滤器 我该怎么做 我查找了一些答案 但他们大多使用火炬正态分布和其他
  • Pytorch 分析器显示两个不同网络的卷积平均执行时间不同

    我有两个网络 我正在对它们进行分析以查看哪些操作占用了大部分时间 我注意到CUDA time avg为了aten conv2d不同网络的操作有所不同 这也增加了一个数量级 在我的第一个网络中 它是22us 而对于第二个网络则是3ms 我的第
  • PyTorch - 参数不变

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

    我在用Cuda and Pytorch 1 4 0 当我尝试增加batch size 我遇到以下错误 CUDA out of memory Tried to allocate 20 00 MiB GPU 0 4 00 GiB total c
  • 我可以使用逻辑索引或索引列表对张量进行切片吗?

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

    我想找到沿特定轴的张量中非零元素的数量 有没有 PyTorch 函数可以做到这一点 我尝试使用非零 http pytorch org docs master torch html highlight nonzero torch nonzer
  • 为什么 PyTorch nn.Module.cuda() 不将模块张量移动到 GPU,而仅将参数和缓冲区移动到 GPU?

    nn Module cuda 将所有模型参数和缓冲区移动到 GPU 但为什么不是模型成员张量呢 class ToyModule torch nn Module def init self gt None super ToyModule se
  • 使用 KL 散度时,变分自动编码器为每个输入 mnist 图像提供相同的输出图像

    当不使用 KL 散度项时 VAE 几乎完美地重建 mnist 图像 但在提供随机噪声时无法正确生成新图像 当使用 KL 散度项时 VAE 在重建和生成图像时都会给出相同的奇怪输出 这是损失函数的 pytorch 代码 def loss fu
  • PyTorch:如何检查训练期间某些权重是否没有改变?

    如何检查 PyTorch 训练期间某些权重是否未更改 据我了解 一种选择可以是在某些时期转储模型权重 并检查它们是否通过迭代权重进行更改 但也许有一些更简单的方法 有两种方法可以解决这个问题 First for name param in
  • PyTorch 中复数矩阵的行列式

    有没有办法在 PyTorch 中计算复矩阵的行列式 torch det未针对 ComplexFloat 实现 不幸的是 目前尚未实施 一种方法是实现您自己的版本或简单地使用np linalg det 这是一个简短的函数 它计算我使用 LU
  • pytorch 中的 keras.layers.Masking 相当于什么?

    我有时间序列序列 我需要通过将零填充到矩阵中并在 keras 中使用 keras layers Masking 来将序列的长度固定为一个数字 我可以忽略这些填充的零以进行进一步的计算 我想知道它怎么可能在 Pytorch 中完成 要么我需要
  • 使 CUDA 内存不足

    我正在尝试训练网络 但我明白了 我将批量大小设置为 300 并收到此错误 但即使我将其减少到 100 我仍然收到此错误 更令人沮丧的是 在 1200 个图像上运行 10 epoch 大约需要 40 分钟 有什么建议吗 错了 我怎样才能加快这
  • 为什么 pytorch matmul 在 cpu 和 gpu 上执行时得到不同的结果?

    我试图找出 numpy pytorch gpu cpu float16 float32 数字之间的舍入差异 而我发现的内容让我感到困惑 基本版本是 a torch rand 3 4 dtype torch float32 b torch r
  • 如何更新 PyTorch 中神经网络的参数?

    假设我想将神经网络的所有参数相乘PyTorch 继承自的类的实例torch nn Module http pytorch org docs master nn html torch nn Module by 0 9 我该怎么做呢 Let n
  • Pytorch Tensor 如何获取元素索引? [复制]

    这个问题在这里已经有答案了 我有 2 个名为x and list它们的定义如下 x torch tensor 3 list torch tensor 1 2 3 4 5 现在我想获取元素的索引x from list 预期输出是一个整数 2
  • Pytorch“展开”等价于 Tensorflow [重复]

    这个问题在这里已经有答案了 假设我有大小为 50 50 的灰度图像 在本例中批量大小为 2 并且我使用 Pytorch Unfold 函数 如下所示 import numpy as np from torch import nn from
  • 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
  • PyTorch 给出 cuda 运行时错误

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

随机推荐

  • 数据分析之面试题目汇总(万字解读)

    1 解释数据清洗的过程及常见的清洗方法 数据清洗是指在数据分析过程中对数据进行检查 处理和纠正的过程 是数据预处理的一步 用于处理数据集中的无效 错误 缺失或冗余数据 常见的清洗方法包括 处理缺失值 处理异常值 去除重复值 统一数据格式等
  • 2_C/S模型编程示例1

    本文主要参考C语言中文网和linux网络编程 网络基础 socket编程 高并发服务器 1 网络程序设计模式 1 1 CS模式 客户机 client 服务器 server 模式 需要在通讯两端各自部署客户机和服务器来完成数据通信 1 本地可
  • Docker 安装 FastDFS

    FastDFS 是一个开源的分布式文件系统 对文件进行管理 功能包括 文件存储 文件同步 文件访问 文件上传 文件下载 等 解决了大容量存储和负载均衡的问题 特别适合以文件为载体的在线服务 如相册网站 视频网站等等 FastDFS 服务端有
  • 设计模式之惰性模式

    惰性模式 惰性模式并不是经典设计模式中的一种 可以把它看作一种拓展的设计模式 它的使用场景通常如下 当执行某段代码前有前置逻辑判断 但该前置逻辑判断在特定环境下不会发生改变时 只需要执行一次 如果已知前置的逻辑判断后 仍然每次执行方法都走一
  • VUE使用vue-print-nb实现打印功能,解决图片问题,样式问题

    vue做了一个打印功能 也遇到过一些问题 记录一下 有些问题欢迎大家批评指正 从网上找了一些打印方式最终决定用这种方式 安装 npm install vue print nb save 然后在main js中引入 import Print
  • QT 串口发送接收(带发送缓冲区)

    QT 串口发送接收 带发送缓冲区 串口代码更改 这里记录一下 接收因为是类似于中断的方式 接收一次处理一次 就没做接收缓冲区 与主板通讯模式为主从模式 串口发送函数用时钟轮询该函数 文章目录 QT 串口发送接收 带发送缓冲区 变量定义 串口
  • cuda编译错误

    error LNK2019 无法解析的外部符号 cudaDeviceSynchronize error LNK2019 无法解析的外部符号 cudaConfigureCall error LNK2019 无法解析的外部符号 cudaSetu
  • Qt5中.ui图形界面添加背景图片实操

    为了图形界面能看得下去 还是要添加一些图片之类的 基于之前的文章基于pyqt5简单搭建 ui图形界面 的界面框架来给界面简单添加一个背景图 1 电脑开始中找到 Qt Designer打开 2 弹出窗口点击 打开 有基础框架的 ui文件 所以
  • openstack镜像的管理与使用

    1 创建项目和用户 1 1 创建项目和用户 用SSH工具连接控制节点 这里是10 10 83 3 使用admin用户权限 执行如下命令 root admin openrc 1 2创建一个test项目 openstack project cr
  • python真的很骚可惜你不会

    python基本语法 博客主页 微笑的段嘉许博客主页 欢迎关注 点赞 收藏 留言 本文由微笑的段嘉许原创 51CTO首发时间 2023年1月日30 坚持和努力一定能换来诗与远方 作者水平很有限 如果发现错误 一定要及时告知作者哦 感谢感谢
  • asp.net core abp 视频教程1

    B站视频教程 abp视频教程1 本次视频主要讲解abp模板工程的下载及运行 践行费曼学习法
  • 数字IC手撕代码-兆易创新笔试真题

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • elementUI table宽度自适应fit

    fit true 或者直接为 fit 转载于 https www cnblogs com panax p 11239664 html
  • 零基础入门语义分割-Task3 语义分割模型发展

    零基础入门语义分割 Task3 语义分割模型发展 3 语义分割模型发展 3 1 学习目标 3 2 FCN 3 3 SegNet 3 4 Unet 3 5 DeepLab 3 6 RefineNet 3 7 PSPNet 3 8 基于全卷积的
  • Transformer--Attention is All You Need (推荐--非常详细)

    文章目录 前言 对Transformer的直观认识 论文地址 模型提出的背景 或者动机 本论文模型 Tranformer Model Architecture Encoder residual connection 残差连接 Layer N
  • 机器人操作系统ROS

    锋影 email 174176320 qq com 如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 ROS已经发布八周年了 在国外科研机构中非常受欢迎 目前 以美国西南研究院为首的几位大佬
  • 全连接层(Fully Connected Layer)

    一 概述 全连接层的每一个结点都与上一层的所有结点相连 用来把前边提取到的特征综合起来 由于其全相连的特性 一般全连接层的参数也是最多的 在卷积神经网络的最后 往往会出现一两层全连接层 全连接一般会把卷积输出的二维特征图转化成一维的一个向量
  • 金山WPS笔试题总结

    第一题 分别输出什么 var arr arr a 1 console log arr length 0 arr 2 2 console log arr length 3 arr length 0 console log arr a 1 这题
  • Mac安装protobuf 流程

    1 brew安装protobuf 1 安装brew ruby e curl fsSL https raw githubusercontent com Homebrew install master install 2 使用brew安装pro
  • 【超详细】记录从零开始学mmdetection(一)

    一 环境配置 本专题是为了记录学习mmdetection的过程 包括mmdetection的配置 代码的讲解 如何使用mmdetection训练自己的数据集 本节只记录第一部分 环境配置过程 本专题主要是在Linux下配置的 因为mmdet