高效MMdetection(3.1.0)环境安装和训练自己数据集教程(实现于Linux(ubuntu),可在windows尝试)

一、前言

很久没用mmdetection了,作为目标检测常见的几个深度学习框架,mmdetection用的人还是很多的,其中比较吸引人的一点就是mmdetection集成了非常多的算法,对于想做实验对比和算法学习的人来说,基于这个框架可以事半功倍。因为外面提出的各种各样的算法依赖的环境会有所不同,数据集的格式也有区别,我们单独去跑这一个个算法实际上是很费劲的,所以mmdetection的出现直接把这些算法集成到一个统一的平台,对于大家系统性的学习非常便利。

最近几天摸索了一下,过程还比较顺利,但是摸索也耗时间,所以在这里记一下,既为以后使用方便,也为有需要的人提供参考。

重点说明,本环境未使用 mim库进行环境安装,使用常规的conda、pip安装,过程非常简单高效。以前大致瞅见过 mim库,估计是可以自动检测软硬件环境以匹配合适的库进行安装,命令可能是模仿的 pip,这个库一般来说可以避免使用,所以这里未考虑使用mim库。

官网安装教程如下,网址:https://mmdetection.readthedocs.io/zh_CN/latest/get_started.html在这里插入图片描述

下面是本文推荐的安装教程。

二、环境安装

1、下载mmdetection框架的所有文件,可以:

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

也可以直接去官网:https://github.com/open-mmlab/mmdetection 下载压缩包
我下载的是3.1.0版本的压缩包
在这里插入图片描述
2、创建运行需要的虚拟环境
很常规的操作,不熟悉的需要时间理解摸索一下,
①一般涉及到使用的操作系统,Linux或windows,这里用的是Linux下的Ubuntu 16.04。
②然后是显卡驱动软件,深度学习要用显卡计算一般得有,显卡驱动的版本一般有12基本够用,显卡驱动软件版本就是nvidia-smi右上角的cuda version,表示环境中cudatoolkit可以安装的最高版本号。(之前有段时间以为需要单独安装CUDA,实际发现只需要安装显卡驱动软件 + 虚拟环境安装cudatoolkit 就可以跑深度学习代码)
③然后就是常规的虚拟环境创建,安装相关库。

假设创建一个名称为mmlab的虚拟环境

conda create -n mmlab python=3.8 -y

激活进入虚拟环境

conda activate mmlab

安装pytorch等深度学习库,我的显卡驱动软件是12.2的版本,我选择装CUDA11.3版本的pytorch,其他具体命令可去pytorch官网查询,我的是

conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch

这时可以验证一下pytorch库是否可以调用显卡,进入python环境

import torch
torch.cuda.is_available()
True

输出True则说明可正常调用显卡

接着是安装 mmengine

pip install mmengine

然后是mmcv,官网给了一个版本推荐:
在这里插入图片描述
我是根据这个推荐尝试了的,但是发现后面会报错,无法导入mmdet,而且提示我mmcv版本不对,所以不能完全按照教程来。后面我看了一下可能是装的mmdetection是3.x版本的,而教程里是2.X版本的教程。
我安装能用的是:

pip install mmcv==2.0.0rc4

这条命令的安装时间很长,估计有半小时以上

装完之后,可以进入python命令行测试一下

import mmdet

如果可以正常导入的话,说明库之间的调用是没问题的
最后就是进入mmdetection进行编译

cd mmdetection-main
pip install -v -e .

运行完就会提示安装成功。
上述就是我装环境的过程,完全没有使用mim,而且安装起来也不复杂,我提供的这个版本也是验证了可以使用的。总共没几条命令,特别简单,就是要花点时间。

三、训练自己的数据集

1、数据集准备
mmdetection要求数据集的格式是coco形式的,即训练、测试图片+两个各自的json文件,具体格式自行查询coco数据集制作或介绍的内容
2、网络配置
以前配置网络感觉过程还挺复杂的,在一些文件里 加数据集路径+数据集类别名等,现在不用这么复杂了,可以自己写一个配置文件覆盖掉提供的文件,基于自己提供的信息去训练网络。

①我一般在configs文件夹下创建一个专门用来跑自己想跑的算法的文件夹,假设为test_task
②把要跑的算法拷贝test_task,假设是fcos.py
③把_base_要求的文件也拷进来,可能会改内容。在test_task文件夹下创建一个_base_文件夹,放coco_detection.py , schedule_1x.py , default_runtime.py 代码,注意在fcos.py里修改相对路径

④自己写一个配置文件,比如fcos_base.py,用来给fcos.py继承,注意配置文件fcos_base.py的内容必须是fcos.py出现了的变量,仅是覆盖掉之前的配置,示例fcos_base.py内容主要如下:

""" 表示继承自fcos.py"""
_base_ = './fcos.py'

"""更改 model 中的 num_classes 以匹配数据集中的类别数,
   本地加载预训练模型加checkpoint参数,建议绝对路径"""
model = dict(
    backbone =dict(init_cfg=dict(checkpoint='./resnet50.pth')),
    bbox_head=dict(num_classes=1)
    )

"""修改数据集相关配置,dataroot建议数据集的绝对路径,metainfo给出数据集的类别,训练集和验证集的ann_file写自己的数据集路径和名称,batch_size也可以设置"""
data_root = 'data/balloon/'
metainfo = {
    'classes': ('balloon', )
    }
train_dataloader = dict(
    batch_size=1,
    dataset=dict(
        data_root=data_root,
        metainfo=metainfo,
        ann_file='train/annotation_coco.json',
        data_prefix=dict(img='train/')))
val_dataloader = dict(
    dataset=dict(
        data_root=data_root,
        metainfo=metainfo,
        ann_file='val/annotation_coco.json',
        data_prefix=dict(img='val/')))
test_dataloader = val_dataloader

# 修改评价指标相关配置
val_evaluator = dict(ann_file=data_root + 'val/annotation_coco.json')
test_evaluator = val_evaluator

所以基本上用着一个配置文件就可以完成个性化的训练任务,不需要去改那么多的参数和文件了

训练命令:

python tools/train.py configs/test_task/fcos_base.py

这样就可以开始训练了。
我的训练界面:
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cola架构:cola源码中访问者模式应用浅析

目录 1.访问者模式简介 2.cola访问者模式应用 2.1 cola被访问者类图 2.2 cola访问者类图 我们知道,如果一个对象结构包含很多类型的对象,希望对这些对象实施一些依赖其具体类型的操作,但又避免让这些操作“污染”这些对象的类&#xff0c…

day50 --动态规划9

198.打家劫舍 213.打家劫舍II 337.打家劫舍III 第一题:打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一…

Stable Diffusion AI绘图

提示词: masterpiece, best quality, 1girl, (anime), (manga), (2D), half body, perfect eyes, both eyes are the same, Global illumination, soft light, dream light, digital painting, extremely detailed CGI anime, hd, 2k, 4k background 反向提示词&…

WebSocket 入门案例

目录 WebSocket入门案例WebSocket-server新增项目:添加依赖:yml:启动类: frontend-server前端项目:添加依赖:添加yml:启动类:前端引入JS:前端页面:后端代码:测试: WebSocket 入门案…

css-边框流水线

效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"initial-scale1.0, user-scalableno" /><title></title><style type&…

物联网知识复习

物联网的内涵和体系结构 物联网的基本内涵 物联网的基本内涵在于物联&#xff0c;物物相连或者物和人相连的互联网。 也就是说&#xff0c;它是要由物主动发起的&#xff0c;物物互联的互联网。 它的第一层意思是说物和物相连&#xff1b;第二层意思是说物和人相连。 物联网的…

Redis数据类型——set类型数据交并差操作

1.业务场景 2.求两个set集合中交并补的操作

Easyx趣味编程7,鼠标消息读取及音频播放

hello大家好&#xff0c;这里是dark flame master&#xff0c;今天给大家带来Easyx图形库最后一节功能实现的介绍&#xff0c;前边介绍了绘制各种图形及键盘交互&#xff0c;文字&#xff0c;图片等操作&#xff0c;今天就可以使写出的程序更加生动且容易操控。一起学习吧&…

Leetcode周赛365补题(3 / 3)

目录 1、2、有序三元组的最大值 - 预处理前后最大值 遍历 &#xff08;1&#xff09;预处理前后值遍历&#xff08;枚举j&#xff09; &#xff08;2&#xff09;枚举k 2、无限数组的最短子数组 - 前缀和 滑动窗口 1、2、有序三元组的最大值 - 预处理前后最大值 遍历 …

【STM32】标准库的引入

一、为什么要会有标志外设库 1、传统单片机软件开发方式 (1)芯片厂商提供数据手册、示例代码、开发环境 (2)单片机软件工程师面向产品功能&#xff0c;查阅数据手册&#xff0c;参考官方示例代码进行开发 (3)硬件操作的方式是用C语言对寄存器进行读写以操作硬件 (4)主要工作量…

【vue】使用less报错:显示this.getOptions is not a function

在vue-cli中使用 lang“less” 时报错&#xff1a; Module build failed: TypeError: this.getOptions is not a function at Object.lessLoader 原因&#xff1a;版本过高所致&#xff0c;所用版本为 解决&#xff1a;降低版本&#xff1a;npm install less-loader4.1.0 --s…

Use nvidia card in docker

1.确保在宿主机上已经安装了nvidia 显卡的驱动 $ nvidia-smi 2.准备Nvidia-docker的环境 $ distribution$(. /etc/os-release;echo $ID$VERSION_ID) && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/k…

【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码

一、什么是后台交互&#xff1f; 在小程序中&#xff0c;与后台交互指的是小程序前端与后台服务器之间的数据通信和请求处理过程。通过与后台交互&#xff0c;小程序能够获取服务器端的数据、上传用户数据、发送请求等。 小程序与后台交互可以实现数据的传输、用户认证、实时消…

订水商城H5实战教程-04用户注册

目录 1 用户注册2 创建模型应用3 开发审核功能4 配置菜单5 发布预览最终效果 我们上一篇讲解了用户协议的功能&#xff0c;如果用户同意协议&#xff0c;就可以跳转到注册页面&#xff0c;要求用户录入个人基本信息&#xff0c;本篇我们介绍一下用户注册功能。 1 用户注册 用户…

Kafka快速入门(最新版3.6.0)

文章目录 一、初识MQ1.1 什么是MQ1.2 同步和异步通讯1.1.1 同步通讯1.1.2 异步通讯 1.3 技术对比1.4 MQ的两种模式 二、初识Kafka2.1 Kafka的使用场景2.2 Kafka基本概念2.3 Topic与Partition 三、Kafka基本使用3.1 部署前的准备3.2 启动kafka服务器3.3 Kafka核心概念之Topic3.4…

【机器学习合集】标准化与池化合集 ->(个人学习记录笔记)

文章目录 标准化与池化1. 标准化/归一化1.1 归一化归一化的作用 1.2 标准化批标准化方法 Batch Normailzation标准化方法的对比自动学习标准化方法 2. 池化2.1 池化的作用2.2 常见的池化方法2.3 池化方法的差异2.4 池化的必要性 标准化与池化 1. 标准化/归一化 1.1 归一化 归…

springcloud笔记 (8) -网关 Gateway

网关 出国需要过海关 网关&#xff1a;网络的关卡 网关的作用 1&#xff1a;路由转发 2&#xff1a;安全控制 保护每个服务&#xff0c;不需要将每个暴露出去 3&#xff1a;负载均衡 1.没有网关&#xff1a;客户端直接访问我们的微服务&#xff0c;会需要在客户端配置很多…

【实战】Kubernetes安装持久化工具NFS-StorageClass

文章目录 前言技术积累存储类&#xff08;storage class&#xff09;什么是NFS什么是PV\PVC为什么要用NFS-StorageClass 安装NFS-StorageClass保证N8S集群正常投用安装NFS工具与客户端NFS安装常见错误安装NFS-StorageClass存储器 前言 前面的博文我们介绍了如何用kuberadmin的…

ExcelPatternTool 开箱即用的Excel工具包现已发布!

文章目录 ExcelPatternTool功能特点&#xff1a;快速开始使用说明常规类型高级类型Importable注解Exportable注解IImportOption导入选项IExportOption导出选项单元格样式StyleMapping样式映射使用数据库作为数据源 示例Sample1&#xff1a;不同类型字段导出Sample2&#xff1a;…

乘势“2”上 双影来袭 | 距大势智慧2023秋季新品发布会还有2天!

乘势“2”上 双影来袭 全国产、真安全 大势智慧2023秋季新品发布会 倒计时2天 10.27 | 14:30 一键扫码预约 #实景三维##三维重建##实景三维中国##国产替代##新品发布# ​​​