crnn转数据集

在做crnn实验的时候数据的格式是一张图片对应一个标签,比如说 图片名称 1.jpg 内容是 你好呀 那么你的标签就应该是 1.txt

在网上找了一个数据集 https://github.com/YCG09/chinese_ocr

数据集下载地址 数据集:https://pan.baidu.com/s/1QkI7kjah8SPHwOQ40rS1Pw (密码:lu7m)

下载下来发现训练集又360w 测试集3w,它的数据格式是一个字典里面对应的是所有的字符,train.txt test.txt 分别是图片的名称 和十个字符的位置,和我要用的不太一样所以要改成自己的格式。

第一步,分成训练集和测试集,因为我在做crnn的时候需要把数据集转换成lmdb格式,所以需要把训练集和测试集单独分开。

这个地方的i主要是我要看有多少张图片,因为测试集只有3w张所以很快就输出。

复制代码
import os
import shutil
rootdir = os.getcwd()
#photonames = os.listdir(photodir)
f = open(’/home/witai/jcy/data_test.txt’)
lines = f.readlines()

i = 0
for line in lines:
i = i+1
x=line.split(’ ')
newpath = rootdir + ‘/images/’ + x[0]
newsavedir = ‘/home/witai/jcy/test/’+x[0]
#os.move(‘newpath’,‘newsavedir’)
shutil.move(newpath,newsavedir)
print i
复制代码
第二步,生成txt文件并且将字符写入txt

这里需要注意的是字典char_std_5990.txt这个文件夹里面的第一字符是从第一行开始还是第二行,我的是从第一行开始,而下载下来的文件是从第二行。

复制代码
#!/usr/bin/python2.6

-- coding: utf-8 --

import os
import shutil

def find(x):
a = int(x)
f = open(’/home/witai/jcy/char_std_5990.txt’)
lines = f.readlines()
i = 0
for line in lines:
i = i + 1
if i == a:
return line

if name == ‘main’:
f = open(’/home/witai/jcy/train2.txt’)
lines = f.readlines()
for line in lines:
x = line.split(’ ‘)
y = line.split(’.’)
txtname = ‘/home/witai/jcy/traintxt/’ + y[0] + ‘.txt’
f = open(txtname,‘a’)
for i in range(11):
if i > 0:
a = x[i]
b = find(a)
f.writelines(b)
复制代码
第三步,本来以为就ok了,结果打开txt发现所有的字符不在一行,每个字符占一行,一个txt就有10行。这里想了半天没想到解决方案,最后在网上找了一个去除换行和空格的代码

并且将txt放入photo目录下。以后如果找到解决方案了,再重写一个。

复制代码
import os

dir = os.getcwd()
inputdir = dir + ‘\1\’
outputdir = dir + ‘\2\’
txtnames = os.listdir(inputdir)
for txt in txtnames:
f = open(inputdir+txt)
for line in f.readlines():
originfile = open(inputdir+txt)
myset = []
for line in originfile.readlines(): # 读取文件每一行
line = line.strip() # 去掉每行前面和后面的空格和换行符
myset.append(line) # 将字符加入
result = ‘’.join(myset)
targetfile = open(outputdir+txt, ‘w’)
targetfile.write(result)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值