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

给定的SRNET-datagen skeletonize.py中,生成的t_sk效果很差 #11

Open
joshua23333 opened this issue Nov 11, 2019 · 11 comments
Open

Comments

@joshua23333
Copy link

您好,我想在自己的数据上自己训练一版SRNet,但是在给定的skeletonize.py文件中生成的t_sk效果很差,这样的数据送进去训练导致gan部分G的loss是D的loss的数十倍,想问您当时用给定的skeletonize.py生成的t_sk下,训练的时候有遇到这样的loss情况吗,在训练了37万轮后基本不收敛,还是维持这样的G loss比D loss为70多的比例

@ursaminor0401
Copy link
Collaborator

您好,我想在自己的数据上自己训练一版SRNet,但是在给定的skeletonize.py文件中生成的t_sk效果很差,这样的数据送进去训练导致gan部分G的loss是D的loss的数十倍,想问您当时用给定的skeletonize.py生成的t_sk下,训练的时候有遇到这样的loss情况吗,在训练了37万轮后基本不收敛,还是维持这样的G loss比D loss为70多的比例

您好,我也一直在想办法提高t_sk的生成质量,我是用在线生成数据训练的,就是在生成每一个batch的数据后,对经过resize的图片生成t_sk,这样就不需要将t_sk进行resize造成损失。

我发现如果字体边界能更清晰一些(渲染的字号调大、透视变换调小,增大字符间距离),t_sk的生成质量能得到一定提高,而Synthtext源码中在用freetype渲染字符的时候是逐字符渲染的,就造成了很多字符粘连,因此导致t_sk质量变差,可以将SRNet-datagen项目中Synthtext/render_text_mask.py中的render_normal和render_curved函数修改为整个单词进行渲染,拉大字符间距离,会得到一些改善。我会在之后抽时间不断调整,达到较好效果并更新项目。

我在训练的时候d_loss基本稳定在1-3之间,g_loss在最开始的时候是40左右,但很快降到18以下,最终在10-15之间震荡,没有遇到g_loss比d_loss多70倍的情况,您可以打开自动生成的结果图看看是不是完全没学到?

@joshua23333
Copy link
Author

我改成了在线生成t_sk, 但是一个batch消耗的时间巨大,相比原来一轮20s,现在可能要160s的样子。
另外就是您能提供您训练时候的原始数据嘛,比如背景图片,字体之类的,主要是背景图片,Synthtext中提供的背景图片,有些对于训练来言太过于复杂了。

@ursaminor0401
Copy link
Collaborator

我改成了在线生成t_sk, 但是一个batch消耗的时间巨大,相比原来一轮20s,现在可能要160s的样子。
另外就是您能提供您训练时候的原始数据嘛,比如背景图片,字体之类的,主要是背景图片,Synthtext中提供的背景图片,有些对于训练来言太过于复杂了。

字体文件我是从windows系统抓出来的ttf,背景图片一部分是用的dtd纹理数据集,这个可以下载到,还有就是公司内部的数据,这部分数据不方便提供出来,建议从dtd中挑选一些比较干净的背景图片,或者从一些公开ocr数据集中提取无文字的部分先做一些简单的实验。

@joshua23333
Copy link
Author

好的谢谢您,然后我自己训练的过程中进行测试,发现生成的t_sk效果非常差,与给定的i_sk相差太多,可以说没有学习到骨架信息。根据您训练好的model文件我进行inference的时候,生成的t_sk和i_sk也差的非常多,t_sk大部分还是一团白色,完全没有办法看出文字的骨架,请问这部分问题您有解决吗?

@ursaminor0401
Copy link
Collaborator

好的谢谢您,然后我自己训练的过程中进行测试,发现生成的t_sk效果非常差,与给定的i_sk相差太多,可以说没有学习到骨架信息。根据您训练好的model文件我进行inference的时候,生成的t_sk和i_sk也差的非常多,t_sk大部分还是一团白色,完全没有办法看出文字的骨架,请问这部分问题您有解决吗?

我输出的o_sk和o_t也是比较差,但是o_f的输出问题不大,我不清楚是因为t_sk数据生成质量的问题还是模型本身的问题,原论文中作者也没有给出这两个中间结果的demo。我之前单独训练了一个t_sk的模型也是学不到,所以猜想这部分只是对模型有一个指导作用,不过我觉得可以在优化t_sk的质量后看看效果。

@FBEMPSS
Copy link

FBEMPSS commented Nov 20, 2019

您好,我想在自己的数据上自己训练一版SRNet,但是在给定的skeletonize.py文件中生成的t_sk效果很差,这样的数据送进去训练导致gan部分G的loss是D的loss的数十倍,想问您当时用给定的skeletonize.py生成的t_sk下,训练的时候有遇到这样的loss情况吗,在训练了37万轮后基本不收敛,还是维持这样的G loss比D loss为70多的比例

您好,我也一直在想办法提高t_sk的生成质量,我是用在线生成数据训练的,就是在生成每一个batch的数据后,对经过resize的图片生成t_sk,这样就不需要将t_sk进行resize造成损失。

我发现如果字体边界能更清晰一些(渲染的字号调大、透视变换调小,增大字符间距离),t_sk的生成质量能得到一定提高,而Synthtext源码中在用freetype渲染字符的时候是逐字符渲染的,就造成了很多字符粘连,因此导致t_sk质量变差,可以将SRNet-datagen项目中Synthtext/render_text_mask.py中的render_normal和render_curved函数修改为整个单词进行渲染,拉大字符间距离,会得到一些改善。我会在之后抽时间不断调整,达到较好效果并更新项目。

我在训练的时候d_loss基本稳定在1-3之间,g_loss在最开始的时候是40左右,但很快降到18以下,最终在10-15之间震荡,没有遇到g_loss比d_loss多70倍的情况,您可以打开自动生成的结果图看看是不是完全没学到?

最终训练的结果d_loss,只能到1.4左右,g_loss在12左右,请问您的最终训练结果也是这样的吗

@ursaminor0401
Copy link
Collaborator

您好,我想在自己的数据上自己训练一版SRNet,但是在给定的skeletonize.py文件中生成的t_sk效果很差,这样的数据送进去训练导致gan部分G的loss是D的loss的数十倍,想问您当时用给定的skeletonize.py生成的t_sk下,训练的时候有遇到这样的loss情况吗,在训练了37万轮后基本不收敛,还是维持这样的G loss比D loss为70多的比例

您好,我也一直在想办法提高t_sk的生成质量,我是用在线生成数据训练的,就是在生成每一个batch的数据后,对经过resize的图片生成t_sk,这样就不需要将t_sk进行resize造成损失。
我发现如果字体边界能更清晰一些(渲染的字号调大、透视变换调小,增大字符间距离),t_sk的生成质量能得到一定提高,而Synthtext源码中在用freetype渲染字符的时候是逐字符渲染的,就造成了很多字符粘连,因此导致t_sk质量变差,可以将SRNet-datagen项目中Synthtext/render_text_mask.py中的render_normal和render_curved函数修改为整个单词进行渲染,拉大字符间距离,会得到一些改善。我会在之后抽时间不断调整,达到较好效果并更新项目。
我在训练的时候d_loss基本稳定在1-3之间,g_loss在最开始的时候是40左右,但很快降到18以下,最终在10-15之间震荡,没有遇到g_loss比d_loss多70倍的情况,您可以打开自动生成的结果图看看是不是完全没学到?

最终训练的结果d_loss,只能到1.4左右,g_loss在12左右,请问您的最终训练结果也是这样的吗

是的,d_loss是判别器loss,生成器效果好了,判别器自然分不清图像是生成的还是真实的,g_loss我最终是在10-15之间。

@FBEMPSS
Copy link

FBEMPSS commented Nov 20, 2019

您好,我想在自己的数据上自己训练一版SRNet,但是在给定的skeletonize.py文件中生成的t_sk效果很差,这样的数据送进去训练导致gan部分G的loss是D的loss的数十倍,想问您当时用给定的skeletonize.py生成的t_sk下,训练的时候有遇到这样的loss情况吗,在训练了37万轮后基本不收敛,还是维持这样的G loss比D loss为70多的比例

您好,我也一直在想办法提高t_sk的生成质量,我是用在线生成数据训练的,就是在生成每一个batch的数据后,对经过resize的图片生成t_sk,这样就不需要将t_sk进行resize造成损失。
我发现如果字体边界能更清晰一些(渲染的字号调大、透视变换调小,增大字符间距离),t_sk的生成质量能得到一定提高,而Synthtext源码中在用freetype渲染字符的时候是逐字符渲染的,就造成了很多字符粘连,因此导致t_sk质量变差,可以将SRNet-datagen项目中Synthtext/render_text_mask.py中的render_normal和render_curved函数修改为整个单词进行渲染,拉大字符间距离,会得到一些改善。我会在之后抽时间不断调整,达到较好效果并更新项目。
我在训练的时候d_loss基本稳定在1-3之间,g_loss在最开始的时候是40左右,但很快降到18以下,最终在10-15之间震荡,没有遇到g_loss比d_loss多70倍的情况,您可以打开自动生成的结果图看看是不是完全没学到?

最终训练的结果d_loss,只能到1.4左右,g_loss在12左右,请问您的最终训练结果也是这样的吗

是的,d_loss是判别器loss,生成器效果好了,判别器自然分不清图像是生成的还是真实的,g_loss我最终是在10-15之间。

但是,测试效果出来会发现,文本的内容会有损失,效果并不是特别好,是不是因为g_loss还是太高了的原因

@ursaminor0401
Copy link
Collaborator

您好,我想在自己的数据上自己训练一版SRNet,但是在给定的skeletonize.py文件中生成的t_sk效果很差,这样的数据送进去训练导致gan部分G的loss是D的loss的数十倍,想问您当时用给定的skeletonize.py生成的t_sk下,训练的时候有遇到这样的loss情况吗,在训练了37万轮后基本不收敛,还是维持这样的G loss比D loss为70多的比例

您好,我也一直在想办法提高t_sk的生成质量,我是用在线生成数据训练的,就是在生成每一个batch的数据后,对经过resize的图片生成t_sk,这样就不需要将t_sk进行resize造成损失。
我发现如果字体边界能更清晰一些(渲染的字号调大、透视变换调小,增大字符间距离),t_sk的生成质量能得到一定提高,而Synthtext源码中在用freetype渲染字符的时候是逐字符渲染的,就造成了很多字符粘连,因此导致t_sk质量变差,可以将SRNet-datagen项目中Synthtext/render_text_mask.py中的render_normal和render_curved函数修改为整个单词进行渲染,拉大字符间距离,会得到一些改善。我会在之后抽时间不断调整,达到较好效果并更新项目。
我在训练的时候d_loss基本稳定在1-3之间,g_loss在最开始的时候是40左右,但很快降到18以下,最终在10-15之间震荡,没有遇到g_loss比d_loss多70倍的情况,您可以打开自动生成的结果图看看是不是完全没学到?

最终训练的结果d_loss,只能到1.4左右,g_loss在12左右,请问您的最终训练结果也是这样的吗

是的,d_loss是判别器loss,生成器效果好了,判别器自然分不清图像是生成的还是真实的,g_loss我最终是在10-15之间。

但是,测试效果出来会发现,文本的内容会有损失,效果并不是特别好,是不是因为g_loss还是太高了的原因

我这里有时也会出现一些字符变化的badcase,可能是数据问题也可能是模型还没有调到最佳状态,我的g_loss最终是在10-15,下不去10,效果还可以但是badcase也不少,我怀疑数据上还存在一些问题尤其是t_sk的生成,我打算优化一下数据生成,不给那么多复杂的变换,先让模型学习一下简单些的试试。

@DYF-AI
Copy link

DYF-AI commented Sep 30, 2020

您好,我想在自己的数据上自己训练一版SRNet,但是在给定的skeletonize.py文件中生成的t_sk效果很差,这样的数据送进去训练导致gan部分G的loss是D的loss的数十倍,想问您当时用给定的skeletonize.py生成的t_sk下,训练的时候有遇到这样的loss情况吗,在训练了37万轮后基本不收敛,还是维持这样的G loss比D loss为70多的比例

你好,请问你是如何解决SRNnet-datagen的bug:
ModuleNotFoundError: No module named 'numpy.core.multiarray\r'

@Asia-DMC
Copy link

Asia-DMC commented Jul 6, 2021

您好,我想在自己的数据上自己训练一版SRNet,但是在给定的skeletonize.py文件中生成的t_sk效果很差,这样的数据送进去训练导致gan部分G的loss是D的loss的数十倍,想问您当时用给定的skeletonize.py生成的t_sk下,训练的时候有遇到这样的loss情况吗,在训练了37万轮后基本不收敛,还是维持这样的G loss比D loss为70多的比例

您好,我也一直在想办法提高t_sk的生成质量,我是用在线生成数据训练的,就是在生成每一个batch的数据后,对经过resize的图片生成t_sk,这样就不需要将t_sk进行resize造成损失。
我发现如果字体边界能更清晰一些(渲染的字号调大、透视变换调小,增大字符间距离),t_sk的生成质量能得到一定提高,而Synthtext源码中在用freetype渲染字符的时候是逐字符渲染的,就造成了很多字符粘连,因此导致t_sk质量变差,可以将SRNet-datagen项目中Synthtext/render_text_mask.py中的render_normal和render_curved函数修改为整个单词进行渲染,拉大字符间距离,会得到一些改善。我会在之后抽时间不断调整,达到较好效果并更新项目。
我在训练的时候d_loss基本稳定在1-3之间,g_loss在最开始的时候是40左右,但很快降到18以下,最终在10-15之间震荡,没有遇到g_loss比d_loss多70倍的情况,您可以打开自动生成的结果图看看是不是完全没学到?

最终训练的结果d_loss,只能到1.4左右,g_loss在12左右,请问您的最终训练结果也是这样的吗

是的,d_loss是判别器loss,生成器效果好了,判别器自然分不清图像是生成的还是真实的,g_loss我最终是在10-15之间。

但是,测试效果出来会发现,文本的内容会有损失,效果并不是特别好,是不是因为g_loss还是太高了的原因

我这里有时也会出现一些字符变化的badcase,可能是数据问题也可能是模型还没有调到最佳状态,我的g_loss最终是在10-15,下不去10,效果还可以但是badcase也不少,我怀疑数据上还存在一些问题尤其是t_sk的生成,我打算优化一下数据生成,不给那么多复杂的变换,先让模型学习一下简单些的试试。

为啥我训练的结果也在10-15,但是只有背景提取出来了,字体完全出不来,怎么回事

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

5 participants