tlc121 / FsFont

Official PaddlePaddle Implementation of Few-Shot Font Generation by Learning Fine-Grained Local Styles (FsFont)
Other
64 stars 8 forks source link

关于训练时遇到的问题 #15

Open love124356 opened 1 year ago

love124356 commented 1 year ago

您好,想请教一下关于训练的问题。

根据论文所说,您是训练至 50w iterations,但我目前遇到一个问题就是我大概在 15w 前 L1 都是 0.03x 以下,val 时的结果图还没那么好但有大致的轮廓,但越往后训练越不好,L1 升至 0.05 左右,并且 val 时生成的图形有残缺或是少了某个部首。

因为我在训练 LF-Font 时也有遇到类似问题,不知道是不是我的资料集比较难训练,还是有地方忽略了,但我是根据您 README 上的教学和预设的 hyper-parameters 去训练的。

希望您能拨空解惑,非常感谢!

tlc121 commented 1 year ago

您好,想请教一下关于训练的问题。

根据论文所说,您是训练至 50w iterations,但我目前遇到一个问题就是我大概在 15w 前 L1 都是 0.03x 以下,val 时的结果图还没那么好但有大致的轮廓,但越往后训练越不好,L1 升至 0.05 左右,并且 val 时生成的图形有残缺或是少了某个部首。

因为我在训练 LF-Font 时也有遇到类似问题,不知道是不是我的资料集比较难训练,还是有地方忽略了,但我是根据您 README 上的教学和预设的 hyper-parameters 去训练的。

希望您能拨空解惑,非常感谢!

数据量是多少,会不会太少了过拟合了

love124356 commented 1 year ago

您好,想请教一下关于训练的问题。 根据论文所说,您是训练至 50w iterations,但我目前遇到一个问题就是我大概在 15w 前 L1 都是 0.03x 以下,val 时的结果图还没那么好但有大致的轮廓,但越往后训练越不好,L1 升至 0.05 左右,并且 val 时生成的图形有残缺或是少了某个部首。 因为我在训练 LF-Font 时也有遇到类似问题,不知道是不是我的资料集比较难训练,还是有地方忽略了,但我是根据您 README 上的教学和预设的 hyper-parameters 去训练的。 希望您能拨空解惑,非常感谢!

数据量是多少,会不会太少了过拟合了

感谢您的回复! 我总共训练390个font, 1490个char,char相较您的资料集少。 目前训练到46w,L1 降至0.046左右,但字还是一样。 另外在15w的时候,虽然L1很低,但其实都没有正确的提取风格,越往后训练有提取出越接近reference image的风格,但字还是一样残缺…

tlc121 commented 1 year ago

其实都没有正确的提取风格,越往后训练有提取出越接近r

残缺的case能给一个看看不。一开始l1loss低是正常的。生成图片都是平均字,没什么特征,因为一个batch比较大,平均字能使loss最快减小。后期开始学习局部特征了,我理解validation set破碎大概率就是过拟合。可以看看30witer的结果,多保存几个模型。

love124356 commented 1 year ago

这是针对46w iter 的 seen font seen char 的 validation 结果,可以看到有几个字是残破的或是有一些污点 0460000-comparable_sfsu_

另外 30w iter 也是一样的 0300000-comparable_sfsu_

如果是过拟合,请问我有什么技巧可以解决这个问题吗? 像是调整参数之类的处理有办法解决吗? 还是就只能多保存一些模型,然后慢慢去试哪个 iter 会比较好? 另外我有注意到您的 LF-Font 生成结果是很正常的,不知道您有没有对其调整过一些参数呢? 谢谢!!

tlc121 commented 1 year ago

这是针对46w iter 的 seen font seen char 的 validation 结果,可以看到有几个字是残破的或是有一些污点 0460000-comparable_sfsu_

另外 30w iter 也是一样的 0300000-comparable_sfsu_

如果是过拟合,请问我有什么技巧可以解决这个问题吗? 像是调整参数之类的处理有办法解决吗? 还是就只能多保存一些模型,然后慢慢去试哪个 iter 会比较好? 另外我有注意到您的 LF-Font 生成结果是很正常的,不知道您有没有对其调整过一些参数呢? 谢谢!!

有两个解决方案,一个是减少font classifier loss的权重,这个loss有时候会抽风。一个就是加大训练集的字符数量,因为字符数量少了,对于模型来说很多字没见过,让他去预测剩余大量没见过的字也会有问题。

love124356 commented 1 year ago

这是训练集还是测试集?训练集上拟合ok嘛?

这是针对在训练集上模型看过的字所产生的图片,所以照理来说模型应该要生成的不错。 从 15w 后,L1 其实就蛮稳定,从 0.051 慢慢降至目前 46w 在 0.046 左右。

有两个解决方案,一个是减少font classifier loss的权重,这个loss有时候会抽风。一个就是加大训练集的字符数量,因为字符 数量少了,对于模型来说很多字没见过,让他去预测剩余大量没见过的字也会有问题。

请问这个 loss 是可以从 cfg 去修改的吗? 加大数量可能是没办法,因为我当初其实是用 ttf 转出 png,取所有 font 的可用字交集取出这些字的

tlc121 commented 1 year ago

这是训练集还是测试集?训练集上拟合ok嘛?

这是针对在训练集上模型看过的字所产生的图片,所以照理来说模型应该要生成的不错。 从 15w 后,L1 其实就蛮稳定,从 0.051 慢慢降至目前 46w 在 0.046 左右。

有两个解决方案,一个是减少font classifier loss的权重,这个loss有时候会抽风。一个就是加大训练集的字符数量,因为字符 数量少了,对于模型来说很多字没见过,让他去预测剩余大量没见过的字也会有问题。

请问这个 loss 是可以从 cfg 去修改的吗? 加大数量可能是没办法,因为我当初其实是用 ttf 转出 png,取所有 font 的可用字交集取出这些字的

cfg里default.yaml把gan_w调小点。

love124356 commented 1 year ago

cfg里default.yaml把gan_w调小点。

好! 我再试试看,谢谢您的帮助!

ybsun0215 commented 1 year ago

您好,方便提供一份数据集跑demo吗?谢谢