dailenson / SDT

This repository is the official implementation of Disentangling Writer and Character Styles for Handwriting Generation (CVPR 2023)
MIT License
968 stars 82 forks source link

训练自己的数据 #9

Closed TianZhenGG closed 1 year ago

TianZhenGG commented 1 year ago

如何制作并训练自己的数据阿

dailenson commented 1 year ago

如果您想生成自己的字体,请按照以下步骤处理自己的数据:

  1. 在较为干净的纸上写下15个字,然后逐个字拍照
  2. 裁剪图像,将每个字resize成64×64的大小

我们的论文补充材料在A.5章节 图11(a) 中提供了一些自己处理的数据样例。

Tavish77 commented 1 year ago

如果您想生成自己的字体,请按照以下步骤处理自己的数据:

  1. 在较为干净的纸上写下15个字,然后逐个字拍照
  2. 裁剪图像,将每个字resize成64×64的大小

我们的论文补充材料在A.5章节 图11(a) 中提供了一些自己处理的数据样例。

训练时用的是mdp数据格式,该如何制作这种格式呢,还是说可以直接读取RGB图像

Tavish77 commented 1 year ago

@TianZhenGG 你好 我想问一下生成的mdb数据如何转成jpg形式呢

TianZhenGG commented 1 year ago

@Tavish77 我是直接读取的图片操作的

TianZhenGG commented 1 year ago

@dailenson 请问下怎样测试自己的数据呢,我这里好像都是生成的一种比较潦草的风格,一点也不像我写的字。。

Tavish77 commented 1 year ago

我也想知道怎么准备自己的数据,需要将准备好的jpg图片转换成什么格式呢

Tavish77 commented 1 year ago

@dailenson 请问下怎样测试自己的数据呢,我这里好像都是生成的一种比较潦草的风格,一点也不像我写的字。。

我看数据读取 必须使用lmdb数据格式,你是怎么弄的

xueshanzhizhi commented 1 year ago

如何制作并训练自己的数据阿

你好 想问下你怎么读取预训练模型的 我读取预训练模型的时候 非常慢 要8个小时。我本来只是想使用test来尝试一下,结果读取不成功,跑不起来。我起了一个新的issue,也没解决,所以来问问。 你试过直接用python test.py 吗。读进去的要多久? 若是自己训练的话要多久?

dailenson commented 1 year ago

关于如何制作自己的数据,代码转换细节可以见#18

TianZhenGG commented 1 year ago

如果您想生成自己的字体,请按照以下步骤处理自己的数据:

1. 在较为干净的纸上写下15个字,然后逐个字拍照

2. 裁剪图像,将每个字resize成64×64的大小

我们的论文补充材料在A.5章节 图11(a) 中提供了一些自己处理的数据样例。 我这里改了一下测试代码,发现风格效果没变化:


data['coords_len'].cuda(), \
data['character_id'].long().cuda(), \
data['writer_id'].long().cuda(), \
data['img_list'].cuda(), \
data['char_img'].cuda()

def preproess_data(img_dir,char_dir): img = cv2.imread(img_dir) char = cv2.imread(char_dir) img = cv2.resize(img, (64, 64)) char = cv2.resize(char, (64, 64)) img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) char = cv2.cvtColor(char, cv2.COLOR_BGR2GRAY) img = img / 255.0 char = char / 255.0 return img,char img_list = [] for dir in os.listdir("zheng_li"): img_dir = "zheng_li/" + dir img,char = preproess_data(img_dir,"zhang_char.png") img_list.append(img) img_list = np.array(img_list) img_list = torch.from_numpy(img_list).unsqueeze(1).float() img_list = img_list.unsqueeze(0).cuda() char_img = torch.from_numpy(char).unsqueeze(0).float().unsqueeze(0).cuda()

preds = model.inference(img_list, char_img, 120) bs = character_id.shape[0] bs = 1 SOS = torch.tensor(bs * [[0, 0, 1, 0, 0]]).unsqueeze(1).to(preds)`

dailenson commented 1 year ago

如果您想生成自己的字体,请按照以下步骤处理自己的数据:

1. 在较为干净的纸上写下15个字,然后逐个字拍照

2. 裁剪图像,将每个字resize成64×64的大小

我们的论文补充材料在A.5章节 图11(a) 中提供了一些自己处理的数据样例。 我这里改了一下测试代码,发现风格效果没变化:

    data['coords_len'].cuda(), \
    data['character_id'].long().cuda(), \
    data['writer_id'].long().cuda(), \
    data['img_list'].cuda(), \
    data['char_img'].cuda()

def preproess_data(img_dir,char_dir):
    img = cv2.imread(img_dir)
    char = cv2.imread(char_dir)
    img = cv2.resize(img, (64, 64))
    char = cv2.resize(char, (64, 64))
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    char = cv2.cvtColor(char, cv2.COLOR_BGR2GRAY)
    img = img / 255.0
    char = char / 255.0
    return img,char
img_list = []
for dir in os.listdir("zheng_li"):
    img_dir = "zheng_li/" + dir
    img,char = preproess_data(img_dir,"zhang_char.png")
    img_list.append(img)
img_list = np.array(img_list)
img_list = torch.from_numpy(img_list).unsqueeze(1).float()
img_list = img_list.unsqueeze(0).cuda()
char_img = torch.from_numpy(char).unsqueeze(0).float().unsqueeze(0).cuda()

preds = model.inference(img_list, char_img, 120)
bs = character_id.shape[0]
bs = 1
SOS = torch.tensor(bs * [[0, 0, 1, 0, 0]]).unsqueeze(1).to(preds)`

char用我们提供的标准图像,img_list用你自己的写的

TianZhenGG commented 1 year ago

如果您想生成自己的字体,请按照以下步骤处理自己的数据:

1. 在较为干净的纸上写下15个字,然后逐个字拍照

2. 裁剪图像,将每个字resize成64×64的大小

我们的论文补充材料在A.5章节 图11(a) 中提供了一些自己处理的数据样例。 我这里改了一下测试代码,发现风格效果没变化:

    data['coords_len'].cuda(), \
    data['character_id'].long().cuda(), \
    data['writer_id'].long().cuda(), \
    data['img_list'].cuda(), \
    data['char_img'].cuda()

def preproess_data(img_dir,char_dir):
    img = cv2.imread(img_dir)
    char = cv2.imread(char_dir)
    img = cv2.resize(img, (64, 64))
    char = cv2.resize(char, (64, 64))
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    char = cv2.cvtColor(char, cv2.COLOR_BGR2GRAY)
    img = img / 255.0
    char = char / 255.0
    return img,char
img_list = []
for dir in os.listdir("zheng_li"):
    img_dir = "zheng_li/" + dir
    img,char = preproess_data(img_dir,"zhang_char.png")
    img_list.append(img)
img_list = np.array(img_list)
img_list = torch.from_numpy(img_list).unsqueeze(1).float()
img_list = img_list.unsqueeze(0).cuda()
char_img = torch.from_numpy(char).unsqueeze(0).float().unsqueeze(0).cuda()

preds = model.inference(img_list, char_img, 120)
bs = character_id.shape[0]
bs = 1
SOS = torch.tensor(bs * [[0, 0, 1, 0, 0]]).unsqueeze(1).to(preds)`

char用我们提供的标准图像,img_list用你自己的写的

好的,谢谢