training data generation
Opened this issue · 3 comments
wayneszq commented
hi,great code. Thanks for sharing. 在训练过程中,发现了一个地方有些疑问。
在数据生成的代码中有一些疑问, 在gernerator.py 的 line 180,这里需要随机生成文字。但是看到这里的逻辑确实从所有font文件中加载所有字符,而不是使用Generaotr初始化时传入的字典(self.alpha)。这个可能会导致不能更换字符集的问题。
`
def gen_image(self):
idx = np.random.randint(len(self.max_len_list))
image = self.gen_background()
image = image.astype(np.uint8)
target_len = int(np.random.uniform(self.min_len, self.max_len_list[idx], size=1))
# 随机选择size,font
size_idx = np.random.randint(len(self.font_size_list))
font_idx = np.random.randint(len(self.font_path_list))
font = self.font_list[size_idx][font_idx]
font_path = self.font_path_list[font_idx]
# 在选中font字体的可见字符中随机选择target_len个字符
text = np.random.choice(FONT_CHARS_DICT[font_path], target_len)
text = ''.join(text)
`
考虑使用:
text = random.choices(self.alpha[1:], k=target_len)
替换
text = np.random.choice(FONT_CHARS_DICT[font_path], target_len)
但是不知道会不会出现有些字符在font文件中不存在的情况。
yizt commented
@wayneszq 感谢您的反馈,这个问题之前已经修复了,请看fontutils.py中word_set.__contains__(c)
word_set = set(cfg.word.get_all_words())
... ...
for font, font_path in zip(font_list, font_path_list):
font_chars = get_font_chars(font_path)
font_chars = [c.strip() for c in font_chars if len(c) == 1 and
word_set.__contains__(c) and
is_char_visible(font, c)] # 可见字符
font_chars = list(set(font_chars)) # 去重
font_chars.sort()
font_chars_dict[font_path] = font_chars
wayneszq commented
感谢,利用上面的功能确实可以解决:“有些字符在font文件中不存在的情况”。
另外请教两个问题:
-
有尝试过CRNN处理彩色文字吗?可以分享下经验吗
我把网络输入的第一个CNN input channel的输入改成了3, 正在尝试彩色的效果。loss目前下降到了0.088,60epoch左右。好像loss也没有再下降了。 -
请问有计划添加val 模块吗?包括tensorboard的eval图片展示等等功能。