MMDetection 详细安装过程

news/2025/2/4 15:33:14/

MMDetection是由商汤科技和香港中文大学开源的基于Pytorch的深度学习计算机视觉工具箱,针对目标检测、实例分割、全景分割、模型蒸馏等计算机视觉任务,复现了诸多最新论文成果,尤其是大量CVPR论文。它将数据集构建、模型搭建、训练策略等过程封装成模块,基于Pytorch实现了大量目标检测算法,通过模块调用,能用少量代码实现新算法,大幅提高代码复用率。

整个MMLab家族除了MMDetection,还包含针对目标跟踪任务的MMTracking,针对3D目标检测任务的MMDetection3D等开源项目,他们都是以Pytorch和MMCV以基础。Pytorch不需要过多介绍,MMCV是一个面向计算机视觉的基础库,最主要作用是提供了基于Pytorch的通用训练框架,比如我们常提到的Registry、Runner、Hook等功能都是在MMCV中支持的。另外,MMCV还提供了通用IO接口、多种CNN网络结构、高质量实现的常见CUDA算子,这里就不进一步展开了。

目录

一、安装过程

1.创建conda虚拟环境

2.安装pytorch

3.安装MIM

cv%E5%92%8Cmmengine-toc" name="tableOfContents" style="margin-left:40px">4.安装mmcv和mmengine

5.git克隆源码文件

二、验证

验证安装是否成功

三、解决过程中的报错问题

Failed to connect to github.com port 443 after 21090 ms: Timed out

报错场景

解决方法

cv%3E%3D2.0.0rc4%2C%20%3C2.2.0-toc" name="tableOfContents" style="margin-left:40px">AssertionError: MMCV==1.7.2 is used but incompatible. Please install mmcv>=2.0.0rc4, <2.2.0

报错场景

解决方法


一、安装过程

1.创建conda虚拟环境

(1)首先确保本地已经安装了conda。打开命令行输入下列命令可以检验是否安装及当前conda的版本。

conda -V

(2)然后打开pycharm,使用下列命令开始创建一个新的conda虚拟环境,并激活。

anaconda命令创建python版本为x.x,名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装目录envs文件下找到

conda create -n your_env_name python=x.x

此处我设置新conda虚拟环境名称是openmmlab,python的版本是3.8。

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

 过程如下图所示,

安装结果如下图所示, 

2.安装pytorch

安装pytorch的时候采用 pip 或者 pip3都可以。

需要注意的是,此处我安装的是cuda11.8,这里的 torch==2.1.0 是因为在下一步要与mmcv保持版本对应一致。

pip3 install torch==2.1.0 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

过程如下图所示,

3.安装MIM

使用下列命令通过pip安装openmim,

pip install -U openmim

过程如下图所示, 

安装结果如下图所示,  

cv%E5%92%8Cmmengine" name="4.%E5%AE%89%E8%A3%85mmcv%E5%92%8Cmmengine">4.安装mmcv和mmengine

(1)使用下列命令通过mim安装mmcv

mim install mmcv-full

过程如下图所示,

(2)使用下列命令通过mim安装mmengine,

 mim install mmengine

(3)使用下列命令通过pip安装mmengine第三方包,

pip install mmengine

过程如下图所示,  

(4)之后使用下列命令通过pip安装mmdet第三方包,

使用 mmdet 作为依赖项或第三方包,

pip install mmdet

过程如下图所示, 

5.git克隆源码文件

首先在某个路径下,通过git克隆下载好mmdetection源码文件,

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

运行下列命令,进入该路径之后,使用pip安装。

cd D:\my_ruanjian\mmdetection\mmdetection\mmdetection
pip install -v -e .

编译成功后打印下我的pip list,

二、验证

验证安装是否成功

使用pycharm打开项目文件(注意将解释器配置成自己创建的虚拟环境),在image_demo.py中进行验证,

官网给出了验证过程,当然我们也可以在pycharm中进行验证。首先在官网下载需要的模型文件和权重文件。

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

在cmd运行上面指令,一般会下载到当前文件夹下。

之后在pycharm的image_demo.py运行前传入这两个文件的地址以及demo图片的地址作为参数传入。

复制三个文件的绝对路径,示例如下:(注意是双斜杠\\)

D:\\my_ruanjian\\mmdetection\\mmdetection\\mmdetection\\demo\\demo.jpg
D:\\my_ruanjian\\mmdetection\\mmdetection\\mmdetection\\rtmdet_tiny_8xb32-300e_coco.py
--weights
D:\\my_ruanjian\\mmdetection\\mmdetection\\mmdetection\\rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth
--show

 点击运行代码的按钮,

出现上述图像,说明安装成功了。

最终,打印下我的pip list,如下图所示,

如果遇到报错问题,请看第三小节。 

三、解决过程中的报错问题

该小节记录了我在安装过程中遇到的报错问题,以及该问题的解决方法。

Failed to connect to github.com port 443 after 21090 ms: Timed out

报错场景

在使用 Git 进行代码管理的过程中,经常会遇到各种各样的问题,其中之一就是在执行 git clone 或 git pull 等操作时出现 “fatal: unable to access ‘https://github.com/…/.git’: Recv failure Connection was reset” 的报错。这个问题通常是由网络连接问题或代理设置不正确导致的。

解决方法

取消代理设置,这是最常见的解决方法之一。

通过在终端执行以下命令,可以取消 Git 的代理设置:

git config --global --unset http.proxy 
git config --global --unset https.proxygit config --global http.proxy http://127.0.0.1:7890

这样就可以清除 Git 的代理设置,让其直接连接网络进行操作。

cv%3E%3D2.0.0rc4%2C%20%3C2.2.0" name="AssertionError%3A%20MMCV%3D%3D1.7.2%20is%20used%20but%20incompatible.%20Please%20install%20mmcv%3E%3D2.0.0rc4%2C%20%3C2.2.0">AssertionError: MMCV==1.7.2 is used but incompatible. Please install mmcv>=2.0.0rc4, <2.2.0

报错场景

运行代码后报错,

报错提示是因为当前使用的MMCV版本(1.7.2)与要求的不兼容,需要安装MMCV>=2.0.0rc4且<2.2.0的版本。

解决方法

错误原因在于该版本不兼容,至少安装2.0.0rc4版本的。

因此卸载掉之前安装的低版本,重新安装高版本。

pip uninstall mmcv
pip uninstall mmcv-full
mim install "mmcv<2.2.0,>=2.0.0"

OK,重新运行代码之后,可以看到代码运行结果了。 


http://www.ppmy.cn/news/1569261.html

相关文章

使用 Elastic Cloud Hosted 优化长期数据保留:确保政府合规性和效率

作者&#xff1a;来自 Elastic Jennie Davidowitz 在数字时代&#xff0c;州和地方政府越来越多地承担着管理大量数据的任务&#xff0c;同时确保遵守严格的监管要求。这些法规可能因司法管辖区而异&#xff0c;通常要求将数据保留较长时间 —— 有时从一年到七年不等。遵守刑事…

python算法和数据结构刷题[2]:链表、队列、栈

链表 链表的节点定义&#xff1a; class Node():def __init__(self,item,nextNone):self.itemitemself.nextNone 删除节点&#xff1a; 删除节点前的节点的next指针指向删除节点的后一个节点 添加节点&#xff1a; 单链表 class Node():"""单链表的结点&quo…

【建站】专栏目录

建站专栏的想法有很多&#xff0c;想写穷鬼如何快速低成本部署前后端项目让用户能访问到&#xff0c;如何将网站收录到百度&#xff0c;bing&#xff0c;google并优化seo让搜索引擎搜索到网站&#xff0c;想写如何把网站加入google广告或者接入stripe信用卡首款平台收款&#x…

从零开始实现一个双向循环链表:C语言实战

文章目录 1链表的再次介绍2为什么选择双向循环链表&#xff1f;3代码实现&#xff1a;从初始化到销毁1. 定义链表节点2. 初始化链表3. 插入和删除节点4. 链表的其他操作5. 打印链表和判断链表是否为空6. 销毁链表 4测试代码5链表种类介绍6链表与顺序表的区别7存储金字塔L0: 寄存…

无人机红外热成像:应急消防的“透视眼”

无人机红外热成像&#xff1a;应急消防的“透视眼” 亲爱的小伙伴们&#xff0c;每年一到夏天&#xff0c;应急消防的战士们就像上紧了发条的闹钟&#xff0c;时刻准备应对各种灾害。炎热天气让火灾隐患“蹭蹭”往上涨&#xff0c;南北各地还有防洪救灾、台风、泥石流等灾害轮…

hive:数据导入,数据导出,加载数据到Hive,复制表结构

hive不建议用insert,因为Hive是建立在Hadoop之上的数据仓库工具&#xff0c;主要用于批处理和大数据分析&#xff0c;而不是为OLTP&#xff08;在线事务处理&#xff09;操作设计的。INSERT操作会非常慢 数据导入 命令行界面:建一个文件 查询数据>>复制>>粘贴到新…

ASP.NET Core 中间件

目录 一、常见的内置中间件 二、自定义中间件 三、中间件的执行顺序 四、其他自动逸中间件案例 1. 身份验证中间件 2、跨域中间件&#xff08;CORS&#xff09; ASP.NET Core 中&#xff0c;中间件&#xff08;Middleware&#xff09;是处理 HTTP 请求和响应的组件链。你…

在C语言中使用树结构保存目录和文件信息

在C语言中,处理目录和文件的层次结构时,选择合适的树结构可以显著提高程序的效率和可维护性。本文将探讨如何使用树结构来保存目录名、子目录名和文件名,并实现查找功能。我们将重点介绍多叉树(N-ary Tree)的实现,并对比其他树结构(如红黑树、B+树等)的适用场景。 1. …