用MMdetection框架训练自己的数据集(全流程实战)

前面我们准备好了COCO格式的数据集:将YOLO格式的数据集转换为mmdetection格式-CSDN博客https://blog.csdn.net/qq_54708219/article/details/148224187?spm=1001.2014.3001.5501

下面我们使用MMdetection开始训练。

1.创建新的数据集类

首先,在mmdet/datasets里,创建属于自己的数据集文件。因为数据集是coco格式,可直接复制coco.py,文件名更改为Dataset_depth.py,然后把里面的标签改掉。我们需要把coco.py中的类名数据集中的类别标注的颜色换成自己的数据集的类名。这里,类名我修改为BoxDataset,数据集只有两个类别:'shallow_box'和'shallow_half_box',下面的palette是调色板,保持和classes长度一样即可,里面的颜色可以填成自己喜欢的,这里是直接保留了前两个后面全部删除:

2.录入数据集

在mmdet/datasets/init.py中仿照coco的格式把刚才创建的数据集类进行录入:

注意:如果注册完成训练仍然报KeyError,看一下报错的文件路径,可能是导入数据集类的时候一直是conda虚拟环境上的,而不是自己修改后的。解决方案就是顺着报错路径(conda环境路径)重新注册一遍数据集:

3.生成完整的配置文件

在configs文件夹下选择你想训练的模型,例如,我这里选择configs/deformable_detr/deformable-detr_r50_16xb2-50e_coco.py,然后在终端运行以下命令:

python tools/train.py <你所选择的模型路径>
python tools/train.py configs/deformable_detr/deformable-detr_r50_16xb2-50e_coco.py

此时运行会报错,因为他会自动寻找coco数据集而不是自己的(我自己没有下载coco数据集):

但是在当前目录下会生成work_dir文件夹,里面包含了完整的模型配置文件work_dirs/deformable-detr_r50_16xb2-50e_coco/deformable-detr_r50_16xb2-50e_coco.py:

4.修改生成的配置文件

接下来对work_dirs/deformable-detr_r50_16xb2-50e_coco/deformable-detr_r50_16xb2-50e_coco.py进行修改:

(1)数据集位置和数据集类:修改data_root(数据集相对路径)和dataset_type(之前注册的数据集类名):

同时在train_dataloader,test_dataloader,val_dataloader中修改data_root和type:

同时还修改一下val_evaluator和test_evaluator的ann_file:

(2)修改数据集类别数:ctrl+F召唤出搜索框,输入num_classes,把coco数据集的80类改为自己的数据集类别个数(我的是2类):

(3)修改batch_size

ctrl+F召唤出搜索框,输入batch_size,根据显卡算力设置train_dataloader,test_dataloader和val_dataloader的批量大小:

(4)注册数据集的metainfo

参考第一步,在配置文件中注册以下信息:

metainfo = dict(classes=('shallow_box', 'shallow_half_box'),palette=[(220, 20, 60), (119, 11, 32)]
)

然后在train_dataloader,test_dataloader,val_dataloader中都写入:

(5)修改训练轮数:ctrl+F召唤出搜索框,输入max_epochs,这个模型默认的训练轮数是50

5.训练

然后把3中的命令改为修改后的配置文件路径:

python tools/train.py <你所修改的模型配置文件路径>
python tools/train.py work_dirs/deformable-detr_r50_16xb2-50e_coco/deformable-detr_r50_16xb2-50e_coco.py

看到以下界面说明正常运行:

开始训练,显示学习率,loss等
每个epoch训练结束之后验证

这个时候模型也会自动保存每一轮的权重文件:

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

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

相关文章

VS Code中Maven未能正确读取`settings.xml`中配置的新路径

在VS Code中Maven未能正确读取settings.xml中配置的新路径&#xff0c;通常是由于以下原因导致的&#xff1a; 一、VS Code未使用你修改的settings.xml文件 VS Code的Maven插件可能使用了默认配置或指向其他settings.xml文件。解决方法&#xff1a; 手动指定settings.xml路径…

2021年认证杯SPSSPRO杯数学建模A题(第二阶段)医学图像的配准全过程文档及程序

2021年认证杯SPSSPRO杯数学建模 A题 医学图像的配准 原题再现&#xff1a; 图像的配准是图像处理领域中的一个典型问题和技术难点&#xff0c;其目的在于比较或融合同一对象在不同条件下获取的图像。例如为了更好地综合多种信息来辨识不同组织或病变&#xff0c;医生可能使用…

RPM之(1)基础使用

RPM之(1)基础使用 Author: Once Day Date: 2025年5月26日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: Linux实践记录_Once-Day的博客-CSDN博客 …

国内可做大批量pcb的工厂有哪些?

在电子产业升级浪潮中&#xff0c;PCB作为电子设备的基础载体&#xff0c;其批量生产能力直接决定着终端产品的市场响应速度与品质稳定性。本文精选五家具备核心竞争力的厂商&#xff0c;从工艺深度、产能规模到服务模式展开剖析&#xff0c;为采购决策提供专业参考。 猎板PCB…

【视频】使用海康SDK保存的MP4无法在浏览器(html5)中播放

1、问题描述 在使用海康 SDK 的 NET_DVR_SaveRealData 接口&#xff0c;将视频流保存成MP4文件后&#xff0c;通过浏览器无法播放MP4&#xff0c;播放其它的MP4正常。 2、原因分析 对比可以正常播放的MP4 和 无法播放的MP4文件&#xff0c;比较它们的详细信息&#xff0c;发…

AI时代新词-生成对抗网络(GAN)

一、什么是生成对抗网络&#xff08;GAN&#xff09;&#xff1f; 生成对抗网络&#xff08;Generative Adversarial Network&#xff0c;简称GAN&#xff09;是一种由生成器&#xff08;Generator&#xff09;和判别器&#xff08;Discriminator&#xff09;组成的深度学习模…

使用AutoKeras2.0的AutoModel进行结构化数据回归预测

1、First of All: Read The Fucking Source Code import autokeras as ak import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error# 生成数据集 np.random.seed(42) x np.random.rand(1000, 10) # 生成1…

实战设计模式之访问者模式

概述 访问者模式允许我们在不改变类的前提下&#xff0c;向已有类添加新的功能。简单来说&#xff0c;就是将算法与对象的数据结构进行分离的一种方法。在实际应用中&#xff0c;当我们需要对一组对象执行一些操作&#xff0c;而这些操作又需要随着需求的变化而不断变化时&…

centos7.9使用docker-compose安装kafka

docker-compose配置文件 services:zookeeper:image: confluentinc/cp-zookeeper:7.0.1hostname: zookeepercontainer_name: zookeeperports:- "2181:2181"environment:ZOOKEEPER_CLIENT_PORT: 2181ZOOKEEPER_TICK_TIME: 2000kafka:image: confluentinc/cp-kafka:7.0…

STM32:Modbus通信协议核心解析:关键通信技术

知识点1【 Modbus通信】 1、Modbus的概述 Modbus是OSI模型第七层的应用层报文传输协议 协议&#xff1a;说明有组包和解包的过程 2、通信机制 Modelbus是一个请求/应答协议 通信机制&#xff1a;主机轮询&#xff0c;从机应答的机制。每个从设备有唯一的地址&#xff0c;主…

LeetCode 3362.零数组变换 III:贪心+优先队列+差分数组——清晰题解

【LetMeFly】3362.零数组变换 III&#xff1a;贪心优先队列差分数组——清晰题解 力扣题目链接&#xff1a;https://leetcode.cn/problems/zero-array-transformation-iii/ 给你一个长度为 n 的整数数组 nums 和一个二维数组 queries &#xff0c;其中 queries[i] [li, ri] …

ORM++ 封装实战指南:安全高效的 C++ MySQL 数据库操作

ORM 封装实战指南&#xff1a;安全高效的 C MySQL 数据库操作 一、环境准备 1.1 依赖安装 # Ubuntu/Debian sudo apt-get install libmysqlclient-dev # CentOS sudo yum install mysql-devel# 编译时链接库 (-I 指定头文件路径 -L 指定库路径) g main.cpp -stdc17 -I/usr/i…

JESD204B 协议介绍

一、协议概述 JESD204B是由JEDEC&#xff08;固态技术协会&#xff09;制定的高速串行接口标准&#xff0c;专为模数转换器&#xff08;ADC&#xff09;、数模转换器&#xff08;DAC&#xff09;与逻辑器件&#xff08;如FPGA、ASIC&#xff09;之间的数据传输设计。其核心目标…

yolov8,c++案例汇总

文章目录 引言多目标追踪案例人体姿态估计算法手势姿态估计算法目标分割算法 引言 以下案例,基于c,ncnn,yolov8既可以在windows10/11上部署, 也可以在安卓端部署, 也可以在嵌入式端部署, 服务器端可支持部署封装为DLL,支持c/c#/java端调用 多目标追踪案例 基于yolov8, ncnn,…

运动规划实战案例 | 图解基于状态晶格(State Lattice)的路径规划(附ROS C++/Python仿真)

目录 1 控制采样 vs 状态采样2 State Lattice路径规划2.1 算法流程2.2 Lattice运动基元生成2.3 几何代价函数2.4 运动学约束启发式 3 算法仿真3.1 ROS C仿真3.2 Python仿真 1 控制采样 vs 状态采样 控制采样的技术路线源自经典的运动学建模思想。这种方法将机器人的控制指令空…

BERT框架:自然语言处理的革命性突破

引言 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;2018年Google推出的BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;框架无疑是一场革命。作为基于Transformer架构的双向编码器表示模型&#xff0c;BERT通过预训练学习…

【Fifty Project - D31】

结束了一个超级消耗周末&#xff0c;满安排之健身梅溪湖游泳做饭喝酒羽毛球赛 完全力竭了&#xff0c;久久不能恢复过来&#xff0c;暂停健身安排了 端午后再继续 今日完成记录 TimePlan完成情况7&#xff1a;30 - 8&#xff1a;10有氧爬坡√9&#xff1a;00 - 11&#xff1a;…

信息学奥赛一本通 1547:【 例 1】区间和

【题目链接】 ybt 1547&#xff1a;【 例 1】区间和 【题目考点】 1. 线段树 2. 树状数组 【解题思路】 本题要求维护区间和&#xff0c;实现单点修改、区间查询。 解法1&#xff1a;线段树 线段树原理&#xff0c;及实现方法见&#xff1a;洛谷 P3374 【模板】树状数组…

力扣面试150题--求根节点到叶节点数字之和

Day 48 题目描述 思路 我们利用sum这个全局变量来保存总和值&#xff0c;递归函数sum来计算每个根到叶子节点路径所代表的数&#xff0c;由于我们需要遍历到每条根到叶子节点的路径&#xff0c;所有我采取了前序遍历&#xff0c;如果不是叶子节点&#xff0c;就计算到该节点代…

DJI上云API官方demo学习

1、websocket&#xff0c;所在位置如下图&#xff0c;调用的可以用//websocket搜索 2、用到的http客户端&#xff0c;axios 3、很多和后端交互都是走的http请求