基于Faster-RCNN的目标检测【训练自制的数据集】

制作属于自己的数据集

labelImg安装

由于在上一篇中已经安装有Anaconda,因此可打开cmd直接通过pip指令进行安装。安装的 pip指令 及其对应的结果如下。

// pip指令
pip install labelImg

在这里插入图片描述

手动制作数据集

创建数据集文件夹

在这里插入图片描述

以埋地目标的数据集为例:
建立一个叫做【dataset】的文件夹,里面包括:

  • 【JPEGImages】文件夹:用于存放原图片,jpg还是png的都可以,同时需要注意为每张图片进行重命名标号。部分的数据集示意图如下。
    在这里插入图片描述

  • 【Annotations】文件夹:用于存储原图片加标签后后生成的对应的xml文件,具体的xml文件内容如下。
    在这里插入图片描述

  • 【ImageSets】文件夹:用来存放训练和测试网络所需的训练集、验证集、以及测试集。注意,这里为了使得自制的数据集与官方的Pascal VOC数据集的形式高度一致,需要在【ImageSets】文件夹下再建立一个 【Main】文件夹 ,用于存放将数据集划分后生成的【trainval.txt】、【test.txt】、【train.txt】、以及【val.txt】。(划分数据集所用的python代码在后面会给出)
    在这里插入图片描述
    在这里插入图片描述

  • 【classes.txt】:用于列出需要分类的类别。这里只有 埋地目标[object] 这一个类别,因此只在txt文件中写下“object”即可。
    在这里插入图片描述

进入labelImg手动加标签

  • Step1: 在所建【dataset】文件夹的路径下,按下 【shift+鼠标右键】 ,接着打开 【Windows PowerShell】 界面,最后输入下面的指令。
labelImg ./JPEGImages ./classes.txt

对应的操作界面如下。
在这里插入图片描述

  • Step2: 进入labelImg界面后,首先点击 【change save Dir】,选取之前创建好的【Annotations】文件夹,这样生成的xml文件会自动存入到该文件夹中。

  • Step3: 点击 【create RectBox】 来框定图片中的目标,并给出所属类别,对应的示意图如下。
    在这里插入图片描述

  • Step4: 框好该图片中所有需要标注的类别后,点击 【save】 即可将对应的xml文件存入【Annotations】文件夹中。接着点击 【Next Image】 继续处理下一张图片,直到处理完毕全部图片,完成后的文件夹中所存内容示意图如下。
    在这里插入图片描述

利用制作好的数据集训练网络

划分数据集的python代码如下:

import os
import random
#################################################需要修改的位置##########################################
xmlfilepath = 'C:/Users/gaojiaxin/Desktop/assignment/dataset/annotations'              #读取标签文件(xml文件)所在的位置。
saveBasePath = r"C:/Users/gaojiaxin/Desktop/assignment/dataset/ImageSets/Main/"        #将划分好的数据集依次存储在路径里。
#划分原则为:test数据集与trainval数据集各占总数据集的一半;接着trainval数据集中,train数据集与val数据集各占一半。
trainval_percent = 0.5
train_percent = 0.5
#########################################################################################################
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)

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()

将对应的数据集划分完毕后,可用 【dataset】文件夹 去替换Faster-RCNN源码中的 【VOCdevkit】文件夹 对网络进行训练。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值