【MMDetection-学习记录】 训练自己的VOC数据集

使用labelimg制作voc数据集 https://blog.csdn.net/qq_41251963/article/details/111190442

在mmdetection文件夹下新建data文件夹,存放训练数据;(使用kaggle(猫狗分类)数据集  【网盘下载:https://pan.baidu.com/s/1ZmyGPUp1jOHoNE24V0YAKw  提取码:je6k】,进行标注)

本次标注猫狗各150张训练;

新建myself文件夹,作为自己的工作目录;

 

创建好的数据集:
运行voc2.py 生成txt文件

import os
import random 
random.seed(0)

xmlfilepath=r'./Annotations'
saveBasePath=r"./ImageSets/Main/"
 
trainval_percent=1
train_percent=1

temp_xml = os.listdir(xmlfilepath)
total_xml = []
for xml in temp_xml:
    if xml.endswith(".xml"):
        total_xml.append(xml)

num=len(total_xml)  
list=range(num)  
tv=int(num*trainval_percent)  
tr=int(tv*train_percent)  
trainval= random.sample(list,tv)  
train=random.sample(trainval,tr)  
 
print("train and val size",tv)
print("traub suze",tr)
ftrainval = open(os.path.join(saveBasePath,'trainval.txt'), 'w')  
ftest = open(os.path.join(saveBasePath,'test.txt'), 'w')  
ftrain = open(os.path.join(saveBasePath,'train.txt'), 'w')  
fval = open(os.path.join(saveBasePath,'val.txt'), 'w')  
 
for i  in list:  
    name=total_xml[i][:-4]+'\n'  
    if i in trainval:  
        ftrainval.write(name)  
        if i in train:  
            ftrain.write(name)  
        else:  
            fval.write(name)  
    else:  
        ftest.write(name)  
  
ftrainval.close()  
ftrain.close()  
fval.close()  
ftest .close()

 

将configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py  文件复制到myself文件夹下,并在datasets/voc0712中注释掉VOC2012;

myself文件夹下faster_rcnn_r50_fpn_1x_coco.py配置文件更改如下:

_base_ = [
    '../configs/_base_/models/faster_rcnn_r50_fpn.py',
    '../configs/_base_/datasets/voc0712.py',
    '../configs/_base_/schedules/schedule_1x.py', '../configs/_base_/default_runtime.py'
]

更改mmdet/datasets文件夹下的voc.py

将class改为自己的类;

将configs/_base_/models/faster_rcnn_r50_fpn.py 中的num_classes 改为2.

 

 

将mmdet\core\class_names.py中的类改成自己的类;

使用tools文件夹下的train.py 进行训练;传入相应的参数;  --work-dir为工作环境。--gpus为gpu个数。

python tools\train.py myself\faster_rcnn_r50_fpn_1x_coco.py --gpus 1 --work-dir myself

如果遇到编码问题,则到相应的文件下更改:

如下面错误:则找到提示未知 

在with open()函数中加encoding='utf-8'

 

运行成功:

自动下载预训练模型。

myself目录下会生成配置文件及日志信息;

 

测试训练的模型:

python demo\image_demo.py demo\cat-dog.jpg myself\faster_rcnn_r50_fpn_1x_coco.py myself\epoch_1.pth

 只训练一个epoch,效果不是很好!!

MMDetection是一个基于PyTorch的开源目标检测库,它允许用户使用预训练模型并轻松地定制和训练自己的目标检测模型。如果你想要使用VOC(Visual Object Classes)数据集进行训练,这是一个广泛使用的计算机视觉数据集,包含了多个类别的物体实例。 以下是使用MMDetection训练自定义VOC数据集的基本步骤: 1. **数据准备**:首先,你需要下载VOC数据集,通常包含JPEG图像和XML标注文件。VOC数据集分为trainval、train和test三个部分。将它们按照MMDetection的要求进行组织,例如创建一个`images`和`annotations`目录结构。 2. **数据转换**:使用MMDetection提供的工具如`mmdet.datasets.coco.CocoDataset`的子类(对于VOC应该是`mmdet.datasets.voc.VOCDataset`)的`load_annotations`方法来加载并处理XML标注信息。这一步会生成用于训练的`.json`配置文件。 3. **构建数据集**:利用`mmdet.datasets.builder.build_dataset`函数构建训练数据集实例,并指定你刚才处理好的VOC数据路径。 4. **模型选择**:从MMDetection的预训练模型库中选择一个适合的目标检测模型,比如` FasterRCNN`, `YOLOv3`等。 5. **配置训练**:编写训练配置文件`config.py`,设置网络结构、优化器、学习率策略等参数,以及数据集相关的配置。 6. **开始训练**:通过`mmdet.apis.train_detector`函数运行训练过程。提供配置文件和数据集,以及可能需要的GPU ID。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐亦亦乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值