无脑013—— win11配置mmdetection实现训练自己的vol格式(xml)数据集

news2024/9/21 12:37:43

昨天使用cascade——rcnn 实现了MSAR 1.0的训练,今天来回顾一下
参考资料:
http://t.csdn.cn/8A5WE
http://t.csdn.cn/ccOZg
电脑 笔记本电脑,拯救者Y7000P 2018款,GTX1060显卡6G显存 ,cmd输入代码nvcc-version显示的CUDA版本 10.1,以下所有程序都在wsl虚拟机中执行

1.conda 创建新环境

conda create -n mmdet python=3.8
conda activate mmdet
conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 cudatoolkit=10.2 -c pytorch

2.安装mmcv

pip install -U openmim #最后安装结束显示的openmim=0.3.9
mim install mmengine #最后安装结束显示的mmengine=0.8.4
mim install mmcv==2.0.0rc4 #Successfully installed mmcv-2.0.0rc4

3.安装mmdetection

输入cd 进入文件夹进行mmdet安装

cd mmdet/
pip install -v -e .
#运行完成显示 Successfully installed mmdet-3.1.0 pycocotools-2.0.7 scipy-1.10.1 shapely-2.0.1 terminaltables-3.1.10

注意,安装完成后,如果测试图片报错,显示mmcv版本过低,可以自行升级。

4.图片推理测试

去官网下载他们已经训练好的模型权重文件进行测试
https://github.com/open-mmlab/mmdetection/tree/main/configs/rtmdet
比如我下载的RTMDet- tiny
在这里插入图片描述
为他新建一个文件夹pt,放入下载好的文件
在这里插入图片描述

输入测试语句:

python demo/image_demo.py demo/fenda.jpg configs/rtmdet/rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --show

文件保存到output文件夹中,
测试了三张图片
结果还可以
在这里插入图片描述

5. 准备训练自己的数据集

随便拍了十张图片,用labelimg进行标注
图片保存到G:\bsh\mmdet\data\images
这里使用的是xml格式
在这里插入图片描述
标签生成到这里:G:\bsh\mmdet\data\Annotations
在这里插入图片描述
然后使用我的代码生成数据加载的列表txt文件,

# coding:utf-8


import random
import argparse
import xml.etree.ElementTree as ET
import os
from os import getcwd

'''
如果你的数据集的路径长这样:
G:/bsh/dataset/luosi/Annotations
G:/bsh/dataset/luosi/images

'''
#这里是需要修改的地方,
ProjectPath = 'G:/bsh/mmdet/data/'  #改成自己的路径,注意最后的/别拉下,否则不能合成路径

img_type = 'png' # 改成自己的图片类型,目前只支持三种类型jpg、png、bmg ,如果修改,自己去加到代码第140行

#下边的就不用管了
dataAllPath = ProjectPath

parser = argparse.ArgumentParser()
# xml文件的地址,根据自己的数据进行修改 xml一般存放在Annotations下
parser.add_argument('--xml_path', default=ProjectPath+'Annotations', type=str, help='input xml label path')
# 数据集的划分,地址选择自己数据下的ImageSets/Main0
parser.add_argument('--txt_path', default=ProjectPath+'ImageSets/Main', type=str, help='output txt label path')
opt = parser.parse_args()

trainval_percent = 1.0  # 训练集和验证集所占比例。 这里没有划分测试集
train_percent = 0.8  # 训练集所占比例,可自己进行调整

xmlfilepath = opt.xml_path
txtsavepath = opt.txt_path
total_xml = os.listdir(xmlfilepath)
if not os.path.exists(txtsavepath):
    os.makedirs(txtsavepath)

num = len(total_xml)
list_index = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list_index, tv)
train = random.sample(trainval, tr)

file_trainval = open(txtsavepath + '/trainval.txt', 'w')
file_test = open(txtsavepath + '/test.txt', 'w')
file_train = open(txtsavepath + '/train.txt', 'w')
file_val = open(txtsavepath + '/val.txt', 'w')

for i in list_index:
    name = total_xml[i][:-4] + '\n'
    if i in trainval:
        file_trainval.write(name)
        if i in train:
            file_train.write(name)
        else:
            file_val.write(name)
    else:
        file_test.write(name)

file_trainval.close()
file_train.close()
file_val.close()
file_test.close()

sets = ['train', 'val', 'test']

print(dataAllPath)

print("生成成功,去检查一下吧~")

生成一个imageset文件夹,深层文件夹中存放的txt文件时所有图片的名称,不包括后缀

在这里插入图片描述
然后为了减少后续改代码的工作量,我们直接新建voc的文件夹来偷梁换柱,手动移动一下图片、标签、txt文件

G:\bsh\mmdet\data文件夹的内容如下:

data
│   └── VOCdevkit
│        └── VOC2007 
│              ├── Annotations
│              │   ├── 003002_0.xml
│              │   ├── 003002_1.xml
│              │   └── ......
│              ├── ImageSets
│              │   └── Main
│              │        ├── test.txt
│              │        ├── train.txt
│              │        ├── trainval.txt
│              │        └── val.txt
│              └── JPEGImages
│                   ├── 003002_0.jpg
│                   ├── 003002_1.jpg
│                   └── ......


然后开始配置代码文件

6.配置代码文件

这一部分我参考的资料是
http://t.csdn.cn/8A5WE
首先

6.1 修改configs文件夹

配置文件指的是 mmdetection/configs 下的文件,也就是你要训练的网络的一些配置。默认情况下,这些配置文件的使用的是 coco 格式,只有 mmdetection/pascal_voc 文件夹下的模型是使用 voc 格式,数量很少。如果要使用其他模型,则需要修改配置文件,这里以mmdetection/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x.py 为例。

1️⃣ 我们先在目录 mmdetection/configs/pascal_voc 下创建一个 cascade_rcnn_r50_fpn_1x_voc0712.py 作为cascade使用voc数据集的配置文件。就是我们的模型,使用以下基础配置文件,如果想要修改,可以直接去基础配置文件里面改。

_base_ = [
    '../_base_/models/cascade_rcnn_r50_fpn_voc.py',
    '../_base_/datasets/voc0712.py',
    '../_base_/schedules/schedule_1x.py', 
    '../_base_/default_runtime.py',
]
 
runner = dict(type='EpochBasedRunner', max_epochs=7)	# max_epochs就是我们要训练的总数,根据自己情况修改。

2️⃣继续在 mmdetection/configs/base/models 目录下的创建一个 cascade_rcnn_r50_fpn_voc.py配置文件,文件的内容从同目录下 cascade_rcnn_r50_fpn.py 里面复制一下,然后进行以下修改。
在 cascade_rcnn_r50_fpn_voc.py配置文件中搜索 num_classes ,改成自己的类别数量,比如说我有一个类,我就改成1,一共有三处num_class需要修改。
3️⃣继续在 mmdetection/configs/base/datasets/voc0712.py中注释掉voc2012的部分, 大概62-70行,都注释掉,如图

在这里插入图片描述

4️⃣
※ 【可选】如果自己的显存比较小的话,可以修改 base/datasets/voc0712.py 文件里面的 img_scale 共两处,例如改成(600,400)。
※【可选】为了让训练过程更直观,以及节省存储空间,可以修改 base/default_runtime.py 里面的 interval ,一共有两个,第一个是模型权重的保存间隔,一般我们设置的比较大一点,例如20(根据你训练的总epoch而定)。第二个是日志的保存间隔,一般我们设置的比较小一点,例如1(根据你训练的总epoch而定)。

6.2 修改mmdet文件夹(修改完这里边的内容需要重新编译)

1️⃣ 修改 G:\bsh\mmdet\mmdet\evaluation\functional\class_names.py ,把 voc_classes() 方法返回值,修改为自己的类别。例如我只有一类,我就改成下面这样,只有一类的后边加个逗号,有多类的不用加逗号。
在这里插入图片描述
2️⃣ 修改 mmdetection/mmdet/datasets/voc.py ,把 CLASSES ,修改为自己的类别。例如我只有一类,我就改成下面这样,只有一类的后边加个逗号,有多类的不用加逗号。
在这里插入图片描述
千万注意,我框起来的地方的位置,(‘card’)这一句是在’classes’后边的,上图是正确的,下图是错误的,会报错: elements in datasets sequence should be config or BaseDataset instance, but got <class ‘str’>:~~~~~~~血 的 教训!!!

在这里插入图片描述
⚠️⚠️⚠️ 两个文件夹都修改完后,在mmdetection文件夹下,运行命令,python setup.py install,重新编译一下,为了让所修改的内容生效。这个过程大概10分钟能完成

7.开始训练

输入代码

python tools/train.py configs/pascal_voc/cascade_rcnn_r50_fpn_1x_voc0712.py

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

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

相关文章

[docker]笔记-portainer的安装

1、portainer是一款可视化的容器管理软件&#xff0c;利用portainer可以轻松方便的管理和创建容器。portainer本身是一个容器&#xff0c;完全免费并且具有汉化版。本文介绍portainer的安装和使用。 2、安装好容器并配置好容器环境&#xff0c;可参照https://blog.csdn.net/bl…

redis实战篇之导入黑马点评项目

1. 搭建黑马点评项目 链接&#xff1a;https://pan.baidu.com/s/1Q0AAlb4jM-5Fc0H_RYUX-A?pwd6666 提取码&#xff1a;6666 1.1 首先&#xff0c;导入SQL文件 其中的表有&#xff1a; tb_user&#xff1a;用户表 tb_user_info&#xff1a;用户详情表 tb_shop&#xff1a;商户…

使用Vagrant创建和管理本地Kubernetes(K8s)集群的步骤是什么

文章目录 步骤1&#xff1a;准备环境步骤2&#xff1a;创建Vagrantfile步骤3&#xff1a;启动虚拟机步骤4&#xff1a;安装Kubernetes步骤5&#xff1a;配置Kubernetes网络插件步骤6&#xff1a;将Worker节点加入集群步骤7&#xff1a;验证集群步骤8&#xff1a;部署应用步骤9&…

部署笔记:文件句柄调整和磁盘分区 02

系统默认是1024&#xff0c;基本不够&#xff0c;会报“too many open files”的错误。因此需要调整。 系统文件句柄数调整 # 编辑打开文件&#xff0c;在文末追加两行配置 vim /etc/security/limits.conf # 需要添加的配置&#xff0c;注意别漏了前面的*号 # * 指所有用户、…

gitlab 合并分支

打开我们的gitlab&#xff0c;找到我们的项目&#xff0c;在左侧菜单中找到Merge requests&#xff0c;点击Merge requests&#xff0c;进入下一个页面 点击New merge requests&#xff0c;创建一个新的merge&#xff0c;进入下一个页面 选择自己分支和目标分支&#xff0c;自己…

如何在Windows中使用C#填写和提取PDF表单

如何在Windows中使用C#填写和提取PDF表单 PDF表单不仅允许用户填写和提交数据&#xff0c;也允许用户创建各种表单域收集用户的数据&#xff0c;并通过提取表单字段值&#xff0c;将收集和合并提交的数据进一步分析或处理。PDF通过电子方式填写、保存和共享的形式&#xff0c;…

WebDAV之π-Disk派盘 + 百灵创作

百灵创作是一款简约而不简单、功能强大且安全的高颜值码字工具,为网络写手和小说作者提供跨平台的写作环境,并提供强大的数据备份和云同步技术,以保障作者的数据安全,并提供流畅的多端无缝切换体验。 百灵创作的特点和功能包括: 简约而不简单:提供简洁直观的界面和操作,…

成都瀚网科技有限公司:抖音怎么绑定抖音小店才好?

抖音是一款非常流行的短视频应用&#xff0c;为用户提供了一个展示才华、分享生活的平台。在抖音上&#xff0c;用户可以通过绑定抖音商店来销售自己的产品或服务&#xff0c;从而实现商业变现。那么&#xff0c;抖音如何绑定抖音商店呢&#xff1f; 1、抖音如何绑定抖音商店&a…

注解方式配置SpringMVC

注解配置SpringMVC 1. 初始化类&#xff0c;代替web.xml2. 创建SpringConfig配置类&#xff0c;代替spring的配置文件3. 创建SpringMVCConfig配置类&#xff0c;代替SpringMVC.xml配置文件4. 项目结构 1. 初始化类&#xff0c;代替web.xml Spring3.2引入了一个便利的WebApplic…

解放程序员生产力的AI代码助手重磅来袭

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

生信教程:多序列比对

摘要 所有系统发育推断方法都需要同源数据集作为输入。因此&#xff0c;当核苷酸序列用于系统发育分析时&#xff0c;第一步通常是推断不同类群序列中的哪些核苷酸彼此同源&#xff0c;以便这些核苷酸之间的差异仅源于序列进化中发生的变化。不同序列的核苷酸之间的同源性推断最…

Windows11 上使用 QEMU 创建 Ubuntu aarch64(ARM64)虚拟机

文章目录 背景步骤要点一、下载QEMU二、下载 QEMU UEFI 固件文件三、Ubuntu 光盘镜像文件四、安装设置 QEMU五、创建虚拟网卡1、安装 tap-windows2、重命名新网卡3、共享物理网卡的网络 六、创建硬盘镜像七、从iso镜像安装虚拟机八、启动镜像九、连接 ssh过程中 powershell 执行…

【已更新建模代码】2023数学建模国赛B题matlab代码--多波束测线问题

一、 问题重述 1.1问题背景 海洋测深是测定水体深度与海底地形的重要任务&#xff0c;有两种主要技术&#xff1a;单波束测 深与多波束测深。单波束适用于简单任务&#xff0c;但多波束可提供更精确的地形数据。多 波束系统的关键在于覆盖宽度与重叠率的设计&#xff0c;以确保…

【Python 自动化】小说推文一键生成思路概述

最近看了一下小说推文成品软件的思路&#xff0c;发现可以完全迁移到我的 BookerAutoVideo 上面来。这篇短文里面&#xff0c;我试着分析一下整个推文视频生成的流程&#xff0c;以及简要阐述一下有什么工具。 整体流程是这样&#xff1a; 分句 原文是按照段落组织的&#xf…

下载安装包,安装 PySide2 到 windows 系统

20201206 修订&#xff1a;修改 PyCharm 中工具的配置描述 一、下载两个.whl 文件到本地&#xff0c; 可以在此下载 https://mirrors.tuna.tsinghua.edu.cn/ 我选用的是以下两个版本&#xff1a; shiboken2-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-none-win_amd64.whl …

Netty源码剖析之HashedWheelTimer时间轮

版本信息&#xff1a; JDK1.8 Netty-all:4.1.38.Final 时间轮的介绍 我们知道钟表分为很多块&#xff0c;每时钟滴答一次就往前走一个块&#xff0c;而时间轮就是使用这个思想。如下图 上图总共分为8块&#xff0c;每过100ms就往前走一块&#xff0c;然后周而复始。此时&#…

关于faust勒索病毒,这些您该了解,勒索病毒解密,数据恢复

faust勒索病毒是一种近年来流行的恶意软件&#xff0c;它通过对计算机系统进行加密并要求支付赎金来达到释放系统的目的。faust勒索病毒的流行程度和危害性不断上升&#xff0c;给企业和个人带来了严重的安全威胁。接下来云天数据恢复中心将从faust勒索病毒的背景、特点、危害、…

paddlespeech on centos7

概述 paddlespeech是百度飞桨平台的开源工具包&#xff0c;主要用于语音和音频的分析处理&#xff0c;其中包含多个可选模型&#xff0c;提供语音识别、语音合成、说话人验证、关键词识别、音频分类和语音翻译等功能。 paddlespeech整体是比较简单易用的&#xff0c;但是安装…

开学季!ChatGPT遭多国高校“封杀”!

美国OpenAI公司研发的聊天机器人ChatGPT&#xff0c;在过去的几个月席卷全球。 OpenAI的创始人之一马斯克&#xff08;Elon Musk&#xff09;曾在社交媒体平台上称赞ChatGPT&#xff1a;“这是全新的世界。和家庭作业说再见吧&#xff01;”&#xff08;Its a new world. Good…

轮播图横向和纵向同时滚动

轮播图横向和纵向同时滚动: <view><swiper v-if"noticeList.length > 0" style"margin-left: 20rpx;position: fixed;margin-top: 10rpx;z-index: 9999;width: 710rpx;border-radius: 20rpx !important;overflow: hidden;transform: translateY(0)…