Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

英文字母相关问题。 #83

Open
HughesField opened this issue Jun 10, 2024 · 8 comments
Open

英文字母相关问题。 #83

HughesField opened this issue Jun 10, 2024 · 8 comments

Comments

@HughesField
Copy link

请问怎么使用自己书写的英文字母进行训练呢,以及怎样可以得到英文字母的书写轨迹(坐标)呢,非常感谢。
另外有没有可能以连笔的单词进行训练,实现没训练过的单词也能做到(输入字母)输出连笔单词呢?

@dailenson
Copy link
Owner

dailenson commented Jun 12, 2024

首先下载我们的英文预训练模型,然后执行python test.py --pretrained_model checkpoint_path --store_type online --sample_size 500 --dir Generated/English即可输出英文图像。如果想要合成轨迹数据,在test.py中将--store_type的参数设置成online即可。至于连笔单词,这个工作暂时还不支持哈

@HughesField
Copy link
Author

您好,请问使用 test.py 最后生成的结果,每个字符的书写点序列是在.mdb文件里对吗?在windows office和python试了一些方法解析数据库文件,提示文件类型不符或者其他错误。请问是就是使用一般数据库文件格式打开,只是我windows access 安装不正确;还是是使用别的方法解析呢?
image

@aceliuchanghong
Copy link

您好,请问使用 test.py 最后生成的结果,每个字符的书写点序列是在.mdb文件里对吗?在windows office和python试了一些方法解析数据库文件,提示文件类型不符或者其他错误。请问是就是使用一般数据库文件格式打开,只是我windows access 安装不正确;还是是使用别的方法解析呢? image

import os
import lmdb
import pickle

script = {"CHINESE": ['CASIA_CHINESE', 'Chinese_content.pkl'],
          'JAPANESE': ['TUATHANDS_JAPANESE', 'Japanese_content.pkl'],
          "ENGLISH": ['CASIA_ENGLISH', 'English_content.pkl']
          }

root = '../data' # 记得改下
dataset = 'CHINESE'
num_img = 15
index = 1
max_len = 150
if __name__ == '__main__':
    data_path = os.path.join(root, script[dataset][0])
    lmdb_path = os.path.join(data_path, 'train')
    print(lmdb_path)

    lmdb = lmdb.open(lmdb_path, max_readers=8, readonly=True, lock=False, readahead=False, meminit=False)
    print(lmdb.begin(write=False).get('num_sample'.encode('utf-8')).decode())
    with lmdb.begin(write=False) as txn:
        num_sample = int(txn.get('num_sample'.encode('utf-8')).decode())
        for i in range(index):
            data = pickle.loads(txn.get(str(i).encode('utf-8')))
            print(data)
            tag_char, coords, fname = data['tag_char'], data['coordinates'], data['fname']
            print(str(i) + "个:\ntag_char: {}\ncoords_shape: {}\nfname: {}".format(tag_char, coords.shape, fname))

@HughesField
Copy link
Author

非常感谢!

@HughesField
Copy link
Author

    您好,这边我在阅读您的代码的时候对一些数据结构不太明白。
    其中用于训练的和生成的data.mdb数据,每项有三个关键字,键coordinates对应的数据是一个汉字的5列n行矩阵。util.py中的coords_render函数接收coordanates矩阵时按照第五列/第四列的0或1进行分割。请问这两位标志位是代表什么含义/怎么对笔画进行分割的呢?
    期待您的回复。

@dailenson
Copy link
Owner

dailenson commented Jul 22, 2024

    您好,这边我在阅读您的代码的时候对一些数据结构不太明白。
    其中用于训练的和生成的data.mdb数据,每项有三个关键字,键coordinates对应的数据是一个汉字的5列n行矩阵。util.py中的coords_render函数接收coordanates矩阵时按照第五列/第四列的0或1进行分割。请问这两位标志位是代表什么含义/怎么对笔画进行分割的呢?
    期待您的回复。

矩阵的每一行是一个五元组,五元组的前两位是[x,y]坐标,最后三位是笔画的三种状态位,[0,0,1]代表起笔,抬笔是[0,1,0],[0,0,1]是停笔。从第四列或者第五列分割是为了按笔画把字符分开~

@HughesField
Copy link
Author

作者大大您好,我在使用 --store_type online 模式运行test.py之后,在文件夹中
image
得到这样一些文件。我在查看data.mdb的内容后,对里面的矩阵代表的含义不太了解。例如:
image
image
请问您能否帮忙解答呢,非常感谢。

@dailenson
Copy link
Owner

数据的存储格式可以是五元组也可以是若干个笔画组成在一起,如果想要具体了解的话建议结合渲染代码理解,可以自行debug一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants