【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,效果不是很好!!

猜你喜欢

转载自blog.csdn.net/qq_41251963/article/details/112940253