MMDetection环境安装配置

MMDetection 支持在 Linux,Windows 和 macOS 上运行。它需要 Python 3.7 以上,CUDA 9.2
以上和 PyTorch 1.8 及其以上。

MMDetection 至今也一直更新很多个版本了,但是对于最新的pytorch版本仍然不支持,我安装的时候仍然多次遇到mmcy与pytorch版本不对应的情况,因此总结以下可用的安装方案。

1、创建并激活Conda 虚拟环境

conda create --name openmmlab python=3.8 -y
conda activate openmmlab

2、安装Pytorch

首先查看自己电脑的 CUDA 版本

nvidia-smi

输出:
在这里插入图片描述
可以看到当前系统安装了 NVIDIA 驱动程序(版本 570.124.04),并且有两个 NVIDIA RTX A5500 GPU,CUDA 版本为 12.8。

我的是 CUDA12.8,但是安装与 12.8 对应的 Torch 时,后面会出现与 mmcv 版本不匹配的问题,从而导致安装失败。

因此,我在这里选择了 CUDA 11.8 版本的 Torch,pytorch 的下载链接在这里(PyTorch 以前版本),往下拉,选择合适的 pytorch。虽然现在已经到了 2.X 的 PyTorch,但是 mmcv 的版本更新并没有 PyTorch 快,因此,为了与 mmcv 保持版本对应一致,这里选择了 2.1.0 版本的 Torch

# CUDA 11.8
conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia

安装成功后可以通过以下命令查看安装的版本信息:

 conda list torch

可以看到我在虚拟环境中再安装了一个 PyTorch 版本的 CUDA 版本:
在这里插入图片描述
验证安装是否成功:

python -c "import torch; print(torch.cuda.is_available())"

显示为 True 则表示安装成功,若显示为 False 则未安装成功,需要排查原因重新安装。

3、安装 mmcv

首先要安装 mimmmengine

pip install -U openmim
mim install mmengine

安装mmcv这里需要注意一下,因为非常容易出错,需要选择合适的版本,选择版本的地址在这里(mmcv版本),mmcv 建议不要选择太高,最好在 2.0.0-2.1 之间。因为在上一步的安装中,我们安装的是 torch2.1.0 版本,这里一步选择下拉框中的选择 cuda11.8torch2.1.x 以及后面 mmcv2.1.0,这几个一定保持对应,否则后面再安装完成后测试的时候,会因为版本不对应出错

mmcv安装命令:

pip install mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.1/index.html

当然这里也可以选择torch别的版本,截止目前,mmdetection中mmcv支持的最高torch版本是2.1.x

4、安装 mmdet

方案 a:如果你开发并直接运行 mmdet,从源码安装它:

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .
# "-v" 指详细说明,或更多的输出
# "-e" 表示在可编辑模式下安装项目,因此对代码所做的任何本地修改都会生效,从而无需重新安装。

方案 b【推荐】:如果你将 mmdet 作为依赖或第三方 Python 包,使用 MIM 安装:

mim install mmdet -i https://pypi.tuna.tsinghua.edu.cn/simple

5、验证安装

为了验证 MMDetection 是否安装正确,我们提供了一些示例代码来执行模型推理。
步骤 1. 我们需要下载配置文件和模型权重文件。

mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .

下载将需要几秒钟或更长时间,这取决于你的网络环境。完成后,你会在当前文件夹中发现两个文件 rtmdet_tiny_8xb32-300e_coco.pyrtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth

步骤 2. 推理验证。
方案 a:如果你通过源码安装的 MMDetection,那么直接运行以下命令进行验证:

python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpu

你会在当前文件夹中的 outputs/vis 文件夹中看到一个新的图像 demo.jpg,图像中包含有网络预测的检测框。

方案 b:如果你通过 MIM 安装的 MMDetection,那么可以打开你的 Python 解析器,复制并粘贴以下代码:

from mmdet.apis import init_detector, inference_detectorconfig_file = 'rtmdet_tiny_8xb32-300e_coco.py'
checkpoint_file = 'rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'
model = init_detector(config_file, checkpoint_file, device='cpu')  # or device='cuda:0'
inference_detector(model, 'demo/demo.jpg')

你将会看到一个包含 DetDataSample 的列表,预测结果在 pred_instance 里,包含有检测框,类别和得分。

如果输出以下内容,则表示安装成功了:
在这里插入图片描述
虽然有个警告,但是不影响,因为没传save_dir参数,加上就好了

结束

到这里就算安装完成了,下次有时间整理下我用MMDetection训练自己的实例分割数据集,以及一些模型改进优化技巧

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

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

相关文章

如何实现k8s高可用

一、控制平面高可用设计 多主节点部署 • API Server 冗余:部署至少 3 个 Master 节点,每个节点运行独立的 API Server,通过负载均衡器(如 Nginx、HAProxy、云厂商 LB)对外提供统一入口。 • 选举机制:Sche…

记录心态和工作变化

忙中带闲的工作 其实工作挺忙的, 总是在赶各种功能点. 好巧的是iOS那边因为上架的问题耽搁了一些时间, 从而让Android的进度有了很大的调整空间. 更巧的是后端那边因为对客户端的需求不是很熟悉, 加上Android海外这块的业务他也是第一次接触. 所以需要给他留一些时间把各个环节…

JVM 双亲委派机制

一、从 JDK 到 JVM:Java 运行环境的基石 在 Java 开发领域,JDK(Java Development Kit)是开发者的核心工具包。它不仅包含了编译 Java 代码的工具(如 javac),还内置了 JRE(Java Run…

java开发之异常

一 结构 Throwable分为Exception和error Exception分为RuntimeException(运行时异常)和其他异常 主动抛出运行时异常和非运行时异常的区别 1、throw RuntimeException(或运行时异常的子类) 编译时不会报错。 2、throw Excepti…

MySQL 中 JOIN 和子查询的区别与使用场景

目录 一、JOIN:表连接1.1 INNER JOIN:内连接1.2 LEFT JOIN:左连接1.3 RIGHT JOIN:右连接1.4 FULL JOIN:全连接二、子查询:嵌套查询2.1 WHERE 子句中的子查询2.2 FROM 子句中的子查询2.3 SELECT 子句中的子查询三、JOIN 和子查询的区别3.1 功能差异3.2 性能差异3.3 使用场…

2025年第三届盘古石杯初赛(智能冰箱,监控部分)

前言 所以去哪里可以取到自己家里的智能家居数据呢???? IOT物联网取证 1、分析冰箱,请问智能冰箱的品牌? [答案格式:xiaomi] Panasonic2、请问智能冰箱的型号? [答案格式&#x…

【强化学习】强化学习算法 - 马尔可夫决策过程

文章目录 马尔可夫决策过程 (Markov Decision Process, MDP)1. MDP 原理介绍2. MDP 建模/实现步骤3. MDP 示例:简单网格世界 (Grid World) 马尔可夫决策过程 (Markov Decision Process, MDP) 1. MDP 原理介绍 马尔可夫决策过程 (MDP) 是强化学习 (Reinforcement L…

用户现场不支持路由映射,如何快速将安防监控EasyCVR视频汇聚平台映射到公网?

一、方案背景​ 随着数字化安防与智能交通管理发展,视频监控远程管理需求激增。EasyCVR作为专业视频融合平台,具备多协议接入等核心功能,是智能监控的重要工具。但实际部署中,当EasyCVR处于内网且路由器无法进行端口映射时&#…

MODBUS RTU调试助手使用方法详解

一、软件简介 485调试助手是一款常用的串口通信调试工具,专门用于RS-485总线设备的测试、调试和通信监控。它支持多种串口参数设置,提供数据收发功能,是工业现场调试的必备工具之一。 二、软件安装与启动 1. 系统要求 Windows 7/10/11操作…

ECMAScript 2018(ES2018):异步编程与正则表达式的深度进化

1.版本背景与发布 发布时间:2018年6月,由ECMA International正式发布,标准编号为ECMA-262 9th Edition。历史意义:作为ES6之后的第三次年度更新,ES2018聚焦于异步编程、正则表达式和对象操作的标准化,推动…

【C语言】链接与编译(编译环境 )

前言: 在前面讲解文件操作,了解了文件的类别,文件的打开与关闭,字符读写函数, 字符串读写函数,格式化输入输出函数 在C语言编程中,编译与链接是将源代码转化为可执行程序的关键步骤。为了详细…

Java视频流RTMP/RTSP协议解析与实战代码

在Java中实现视频直播的输入流处理,通常需要结合网络编程、多媒体处理库以及流媒体协议(如RTMP、HLS、RTSP等)。以下是实现视频直播输入流的关键步骤和技术要点: 1. 视频直播输入流的核心组件 网络输入流:通过Socket或…

系分论文《论系统需求分析方法及应用》

系统分析师论文范文系列 【摘要】 2022年6月,我作为系统分析师参与了某金融机构“智能信贷风控系统”的建设项目。该系统旨在通过对业务流程的数字化重构,优化信贷审批效率并降低风险。项目涉及信贷申请、资质审核、风险评估、额度审批等核心流程&#x…

stack和queue简单模拟实现

stackreverse_iteratorqueuepriority_queue仿函数具体代码 stack Stacks are a type of container adaptor, specifically designed to operate in a LIFO context (last-in first-out), where elements are inserted and extracted only from one end of the container. 上述描…

Linux内核可配置的参数

sysctl -a 命令会列出当前Linux内核所有可配置的参数及其当前值。这些参数允许你在系统运行时动态地调整内核的行为,而无需重新编译内核或重启系统。 内容非常多,因为内核有很多可调的方面。我们可以把它们大致分为几个主要类别: kernel.*: …

【背包dp-----分组背包】------(标准的分组背包【可以不装满的 最大价值】)

通天之分组背包 题目链接 题目描述 自 01 01 01 背包问世之后,小 A 对此深感兴趣。一天,小 A 去远游,却发现他的背包不同于 01 01 01 背包,他的物品大致可分为 k k k 组,每组中的物品相互冲突,现在&a…

操作系统:os概述

操作系统:OS概述 程序、进程与线程无极二级目录三级目录 程序、进程与线程 指令执行需要那些条件?CPU内存 需要数据和 无极 二级目录 三级目录

RAG文本分块

不论是向量化模型还是大语言模型,都存在输入长度的限制。对于超过限制的文本,模型会进行截断,造成语义缺失。分块可以确保每个文本片段都在模型的处理范围内,避免重要信息的丢失。 文本分块的核心原则 高质量分块的核心原则是&a…

2025 年九江市第二十三届中职学校技能大赛 (网络安全)赛项竞赛样题

2025 年九江市第二十三届中职学校技能大赛 (网络安全)赛项竞赛样题 (二)A 模块基础设施设置/安全加固(200 分)A-1 任务一登录安全加固(Windows,Linux)A-2 任务二 Nginx 安全策略&…

量子隧穿:PROFINET到Ethernet ip的无损耗协议转换方案转

在本季度的生产工作中,我们成功实现了仓储物流自动化分拣系统中的关键技术突破。我们面临的主要挑战是将采用EtherNet/IP协议的输送带控制器与PROFINET协议的上位系统进行有效通信。通过引入ethernet IP转PROFINET网关倍讯科技BX-606-EIP,我们实现了输送…