detectron2训练自己的数据集_MMDetection v2.0 训练自己的数据集

上一次安装mmdetection的docker环境离现在已经快一个月了,本来打算隔三五天记录一下,然后一直拖延到现在都没记录更新。。。。这个项目是打算记录安装环境,训练模型最后到源码解析。

1 新建容器

进入正题 mmdetection docker环境上次已经介绍一次了 ,现在我们新建一个容器

sudo nvidia-docker run  -shm-size=8g -name mm_det -it -v  /train_data:/mmdetection/data

nvidia-docker:新建容器能调用GPU

-name : 容器名称 可自行修改

-v :映射宿主目录到容器目录, /train_data 是宿主目录,映射到容器目录 /mmdetection/data

退出容器

exit

重新进入容器

sudo docker exec -i -t mm_det /bin/bash

doxker exec :在运行的容器中执行命令

-i -t : 交互模式执行

mm_det : 容器名称

/bin/bash :执行脚本

2 准备自己的VOC数据集

mmdetection 支持VOC数据集,还有COCO数据集格式,还可以自定义数据格式,现在我们采用VOC的数据格式,mm_det容器已经映射宿主目录了,在宿主目录/train_data,新建目录存放数据集,可在容器内/mmdetection/data里在操作,新建目录结构如下

VOCdevkit

--VOC2007

----Annotations

----ImageSets

------Main

----JEPGImages

Annotations 目录存放.xml文件,JEPGImages 存放训练图片,划分数据集使用以下代码,

代码保存在/VOCdevkit/VOC2007 目录下 ,直接执行

import os
import random

trainval_percent = 0.8
train_percent = 0.8
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSetsMain'
total_xml = os.listdir(xmlfilepath)

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)

ftrainval = open('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/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()

上述代码分割数据集,训练集占80%,测试集占20% 运行代码后可在/VOCdevkit/VOC2007/ImageSets/Main看见三个.txt文件

6313c1fdf5341cb86b378fa814b35501.png

三个.txt文件里面分别是训练测试图片名称的索引,数据集准备到这就完成了

3 修改 VOC0712.py 文件

cd /mmdetection/configs/_base_/datasets

进入目录后打开voc0712.py

4c4d920b20ba9a951c22ac4e8b6cba76.png

在data的配置 要删除屏蔽VOC2012的路径,和VOC2012变量 保存文件

4 修改 voc.py 文件

cd /mmdetection/mmdet/datasets

打开 voc.py文件

412f645cf759f99f8b03f48a919336e1.png

这个CLASSE 是VOC标签的类别 我们要换成自己数据集的类别标签

5 修改class_names.py 文件

cd /mmdetection/mmdet/core/evaluation

打开 class_names.py 文件

32f8ba11a7b56e0886944a2ebbc110d3.png

修改 voc_classes() 函数返回的标签,换成自己数据集的标签 保存退出

6 修改 faster_rcnn_r50_fpn_1x_coco.py

cd mmdetection/configs/faster_rcnn

我们这次选用faster_rcnn 模型训练,打开faster_rcnn_r50_fpn_1x_coco.py文件

b95ad9ebff56f9ca043d8f7b5220b0ff.png

faster_rcnn_r50_fpn_1xcoco.py文件里面调用了三个文件,第一个是模型配置文件,第二个是数据集配置文件,后来两个是配置学习率,迭代次数,模型加载路径等等,我们把原来COCO_detection.py 修改成VOC0712.py 文件

7 修改faster_rcnn_r50_fpn.py

cd /mmdetection/configs/_base_/models

打开 faster_rcnn_r50fpn.py 文件 ,修改num_classes 数量,num_classes 的值等于类别数量,不需要加背景了

29a12cf60341c8f0ccffb8c788ad7ace.png

以上就是需要修改的内容,修改完成后开始训练模型

8 训练模型

python3 ./tools/train.py ./configs/faster_rcnn_r50_fpn_1x.py

69847d71cf942a862549659ce49d227a.png

训练完成后可以参考/mmdetection/demo/image_demo.py文件进行测试

以上就是使用自己的数据集集训练mmdetection faster_rcnn模型的所有内容

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值