新版mmdetection跑通自己的voc数据集【2020MMdetection】【详细】

本文档详细介绍了如何使用新版mmdetection框架跑通VOC格式的数据集,包括数据集准备、参数修改、训练、测试、评估和可视化等步骤。涉及到的关键操作包括修改模型配置、数据配置、类别数、标签类别和图片格式,以及训练过程中的参数设置。文章还提供了训练保存的模型、测试和评估的命令,以及可视化结果的方法。
摘要由CSDN通过智能技术生成

问题
用新版mmdetection跑通自己的数据集。数据集的格式是voc格式的。

解决办法
一、数据集准备

将所有的图片放在

./data/VOCdevkit/VOC2007/JPEGImage

将所有的标签放在

./data/VOCdevkit/VOC2007/Annotations

将图片划分训练集、验证集和测试集,名字存在txt文件里

./data
└── VOCdevkit
    └── VOC2007
        ├── Annotations  # 标注的VOC格式的xml标签文件
        ├── JPEGImages   # 数据集图片
        └── ImageSet
             └── Main
		 	     ├── test.txt   # 划分的测试集
		 	     ├── train.txt   # 划分的训练集
		         ├── trainval.txt
		         └── val.txt   # 划分的验证集


划分代码在下面,将生成4个txt文件:

#读取文件夹下的文件并将其文件名(无后缀)分成4份保存在保存在一个txt文件中
#作者:阿玉
#时间:2020.5.12
#说明:文件分为训练集、验证集和测试集,tranval为训练集和验证机的合集。
#为了划分数据集写的
#可修改参数:将被划分的文件夹路径,存储txt文件的路径及4个文件的名字,固定随机数的seed,
#训练集和验证集的占比,共8个参数

import os
import random

trainval_percent = 0.8 #确定用于训练的数据占比
train_percent = 0.75 #确定在用于训练的数据中,训练集的占比
xmlfilepath = r'F:\AdatabaseForGraduation\vocModify\all_voc' #将被划分的xml文件
txtsavepath = r'F:\AdatabaseForGraduation\vocModify' #划分后 得到的txt保存的地方

#固定随机数的生成
random.seed(4)

total_xml = os.listdir(xmlfilepath) #读取文件夹下所有文件的名字
num = len(total_xml) #文件夹下文件的数目
list = range(num)
tv = int(num * trainval_percent) #trainval的数目
tr = int(tv * train_percent) #train的数目
trainval = random.sample(list, tv) #被选中的文件编号
train = random.sample(trainval, tr)

ftrainval = open(os.path.join(txtsavepath,'trainval.txt'), 'w') #打开文件等待写入
ftest = open(os.path.join(txtsavepath,'test.txt'), 'w')
ftrain = open(os.path.join(txtsavepath,'train.txt'), 'w')
fval = open(os.path.join(txtsavepath,'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()


坏图检测程序,程序报 NoneType has no attribute to shape很可能数据集中有坏图,可以先查一遍是不是数据出错,再考虑程序问题。

# coding=utf-8
import os.path
import cv2                   #导入opencv库

path = r'/data/scratchData/VOCdevkit/VOC2007/JPEGImages'
# 得到文件夹下所有文件名称
pics 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值