文章目录
一、划分ICDAR2019-LSVT数据集并生成对应标签文件
自己的数据集为开源的ICDAR2019-LSVT数据集,下载下来后包括train_full_images_0和train_full_images_1。
1.下载数据后,将数据合并在一个文件夹内,这些数据的label存在train_full_labels.json文件里,将json文件里数据的label读取出来并保存在txt里。为了训练,对此数据集进行划分,划分为训练集和验证集,并将所对应的label分别存在各自的txt文件里,这里以train为例,val同理,修改文件路径等即可。
import os
import numpy as np
import json
import argparse
import os
from glob import glob
# 定义参数
jsonPath = "/Users/yi/Desktop/ICDAR2019-LSVT/icdar2019-lsvt-train/train_full_labels.json"
absPath="icdar2019-lsvt-train/train_full_images/"
def get_args():
#val_full_images
parser = argparse.ArgumentParser()
parser.add_argument('--input', default='/Users/yi/Desktop/ICDAR2019-LSVT/icdar2019-lsvt-train/train_full_images/')
parser.add_argument('--out_dir', default='/Users/yi/Desktop/ICDAR2019-LSVT/icdar2019-lsvt-train/train_full_images/')
return parser.parse_args()
def cidar2019(jpg_files, task="Label"):
count = 0
if not os.path.isdir(get_args().out_dir):
os.makedirs(get_args().out_dir)
# 创建label存储的文件,例 test.txt
label_file = open('/Users/yi/Desktop/ICDAR2019-LSVT/icdar2019-lsvt-train/train_full_images/%s.txt' % (task), 'w')
for jpg_name in jpg_files:
#使用json.load()加载并读取json文件,json.loads()为读取json字符串
json_file = json.load(open(jsonPath, "r", encoding="utf-8"))
#for multi in json_file:
#if multi == jpg_name:
annot_ppocr = []
imagePath = get_args().input + jpg_name + ".jpg"
#获取自己文件当前的相对路径
absPath = os.path.join(imagePath.split("/")[-3],imagePath.split("/")[-2], imagePath.split("/")[-1])
#json串的循环访问
for mm in json_file[jpg_name]:
pts = []
#获取transcription字段内容
transcription = mm["transcription"]
#获取points字段内容
points = mm["points"]
pts