crnn转换数据集

摘要:
importosimportshutilrootdir=os.getcwd()#photonames=os.listdir(photodir)f=open('/home/wai/jcy/data_test.txt')lines=f.readlines()i=0forlineinlines:

在做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)

免责声明:文章转载自《crnn转换数据集》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HiveSQL 数据操控、查询语言(DML、DQL)在Linux下最好用的截图工具Flameshot下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

easyuitabs(选项卡)

配置好easyui环境 1.笔记: tabs(选项卡) class: //<div style="700px;height:auto"></div> 是否可以关闭:closable:true 选项卡标签的宽度:data-options="tabWidth:200" 下拉菜单: <div id="mm">   <di...

C# 与 C++ 数据类型比较及结构体转换

转发至http://www.blogjava.net/heting/archive/2010/03/20/315998.html C++            C#=====================================WORD            ushortDWORD            uintUCHAR            ...

mysql中文、英文别名排序问题,order by 关键字详解

 order by 关键字详解:   SELECT intcode AS 商品编码, product_title AS 名称, retailprice AS 零售价, purchaseprice AS 合同进价 FROM product_detail WHERE brand='0063飘柔' AND purchaseprice>10 ORDE...

PHP CLI模式开发

PHP CLI模式开发不需要任何一种Web服务器(包括Apache或MS IIS等),这样,CLI可以运行在各种场合。有两种方法可以运行PHP CLI脚本。 第一种方法是使用 # php /path/to/yourFile.php 调用PHP CLI解释器,并给脚本传递参数。这种方法要指定php解释器的路径。第二种方法是首先运行chmod +x <要...

php redis 基础操作 Thinkphp 直接套用

/*1.Connection*/ $redis = new Redis(); $redis->connect('127.0.0.1',6379,1);//短链接,本地host,端口为6379,超过1秒放弃链接 $redis->open('127.0.0.1',6379,1);//短链接(同上) $redis->pconnect('...

Bmob云IM实现头像更换并存入Bmob云数据库中(1.拍照替换,2.相册选择)

看图效果如下: 1.个人资料界面 2.点击头像弹出对话框 3.点击拍照 4.切割图片,选择合适的部分   5.点击保存,头像替换完毕,下面看从相册中选择图片。 6.点击相册 7.任选一张图片 8.切割图片  9.图片替换成功 亲测退出账户后重新登陆或者换模拟器登陆有效!!! 图片已经上传到云端了!!! 下面先上xml代码: 里面出现的可能报...