使用labelme制作COCO类型的自定义数据集
一、COCO类型数据集
本文重点介绍COCO类自定义数据集制作,关于COCO数据格式参考以下链接:COCO数据集格式
二、自定义数据集制作步骤
(1)数据集文件夹说明
最终需要的文件夹目录如下图所示,其中data位于mmdetection项目根目录下。
(2)使用labelme标注工具进行标注
具体使用方法参考:LabelMe使用_labelme中所有的create的作用解释-优快云博客
(3)生成需要训练,验证,测试的图片txt文件
使用create_txt.py生成train2019.txt,val2019.txt,test2019.txt,分别对应需要训练,验证,测试的图片名(仅包括名,无扩展名.jpg)如:10001.jpg即保存为10001。create_txt.py文件代码 以及txt文件内容展示如下
# !/usr/bin/python
# -*- coding: utf-8 -*-
import os
import random
trainval_percent = 0.8 # 验证集+训练集占总比例多少
train_percent = 0.7 # 训练数据集占验证集+训练集比例多少
jsonfilepath = 'labels/total'
txtsavepath = './'
total_xml = os.listdir(jsonfilepath)
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('./trainval.txt', 'w')
ftest = open('./test.txt', 'w')
ftrain = open('./train.txt', 'w')
fval = open('./val.txt', 'w')
for i in list:
name = total_xml[i][:-5] + '\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()
(4)通过classify.py程序将json文件与图片分类
此步骤是为了 将所有标注文件与图片文件按照 上一步三个txt文件里的进行分类对应。
此步骤需要创建文件夹如下图所示。注意!!!images
import shutil
import cv2 as cv
sets=['train', 'val', 'test']
for image_set in sets:
#分别读取三个txt文件中内容并拼接出 所有图片名
image_ids = open('./%s.txt'%(image_set)).read().strip().split()
#将每一类的图片和对应的json文件存入对应的文件夹
for image_id in image_ids:
img = cv.imread('images/total2019/%s.jpg' % (image_id))
json='labelme/total/%s.json'% (image_id)
cv.imwrite(