dailenson / SDT

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

测试集预测结果样式和自定义图片的结果样式 #35

Open cactusgame opened 8 months ago

cactusgame commented 8 months ago

非常感谢分享了这么好的项目! 初步尝试使用后,有2个问题希望请教一下

问题一:使用源码测试集的结果

下图

image


问题二:使用自定义图片的结果

我使用电脑自带的”黑体“作为新的writer,并同时修改了writer_dict等配置,生成了1000多张style图片,sample_size是50,模型未进行微调(和上面的模型一样),期望模型的预测结果接近“黑体”。但结果如下,和“黑体”相差很大

image

在论文中,我看到如下两段比较困惑:

所以,第二个问题是,我预期模型可以输出“黑体”样式,那么是否需要用“黑体”进行微调?如果需要微调,大概需要准备多少数据?是否有最佳实践可供参考?

dailenson commented 8 months ago

感谢对我们工作的关注~关于第一个问题,可以先测一下生成结果的DTW指标,如果DTW有问题就是性能没有复现出来。第二个问题,我们的工作是生成手写体的,黑体跟手写体还有有一些差异的,建议自己手写一些字然后输入到模型中去生成,这个过程是不需要finetune的,具体的教程近期我会出一个放在置顶issue上。A4A6可以不用管,A4是生成离线的手写中文,是另外一个任务,A6主要是讨论模型的输入选择轨迹模态还是离线模态比较好。

cactusgame commented 8 months ago

感谢对我们工作的关注~关于第一个问题,可以先测一下生成结果的DTW指标,如果DTW有问题就是性能没有复现出来。第二个问题,我们的工作是生成手写体的,黑体跟手写体还有有一些差异的,建议自己手写一些字然后输入到模型中去生成,这个过程是不需要finetune的,具体的教程近期我会出一个放在置顶issue上。A4A6可以不用管,A4是生成离线的手写中文,是另外一个任务,A6主要是讨论模型的输入选择轨迹模态还是离线模态比较好。

非常感谢回复。

image

cactusgame commented 8 months ago

@dailenson 麻烦问一下,test.py运行时,默认每次只从writer的字迹中取15个作为style参考,15是如何确定的?是不是这里采样越多输入给模型,style就会和writer的字迹越像?

dailenson commented 8 months ago

@dailenson 麻烦问一下,test.py运行时,默认每次只从writer的字迹中取15个作为style参考,15是如何确定的?是不是这里采样越多输入给模型,style就会和writer的字迹越像?

15是一个比较折中的数值,可以得到比较好的性能,并且这个数量也不算太多。是的,一般来说给的样本参考越多,模型的性能会更好。

dailenson commented 8 months ago

感谢对我们工作的关注~关于第一个问题,可以先测一下生成结果的DTW指标,如果DTW有问题就是性能没有复现出来。第二个问题,我们的工作是生成手写体的,黑体跟手写体还有有一些差异的,建议自己手写一些字然后输入到模型中去生成,这个过程是不需要finetune的,具体的教程近期我会出一个放在置顶issue上。A4A6可以不用管,A4是生成离线的手写中文,是另外一个任务,A6主要是讨论模型的输入选择轨迹模态还是离线模态比较好。

非常感谢回复。

  • 问题1 dtw显示the avg fast_norm_len_dtw is 43.8289909362793, 这次结果如下。虽然和测试集不是特别像,但能看出style是相近的。 image
  • 问题2 我试过多个不同的机打体,包括机打手写体(如翩翩体),预测出的结果都和下图类似,和输入的style_image相差甚远。我正在尝试照片手写,有进展了我会继续同步。

image

正常运行的情况下dtw指标的结果应该是0.8左右。你复现出的结果差的有点多,建议再仔细看下readme的教程,看看运行过程中是否有错误。

cactusgame commented 8 months ago

非常感谢,我已经可以复现0.8左右的dtw。上面的错误是由于我稍微修改了一点代码,调用了utils里的coords_render方法,这个方法内部会改变入参的值

image

正常运行的情况下dtw指标的结果应该是0.8左右。你复现出的结果差的有点多,建议再仔细看下readme的教程,看看运行过程中是否有错误。

cactusgame commented 8 months ago

有个疑问,得出dtw 0.8的测试集的writer,同一个writer的字迹是否在训练集中出现过呢?我看train style 和test style中writer id有重复的(指0,1,2,3这些数字),但writer fname又不一样。所以测试集中的writer id,和train中的writer id,是否代表同一个writer?

A4A6可以不用管,A4是生成离线的手写中文,是另外一个任务,A6主要是讨论模型的输入选择轨迹模态还是离线模态比较好。

dailenson commented 8 months ago

有个疑问,得出dtw 0.8的测试集的writer,同一个writer的字迹是否在训练集中出现过呢?我看train style 和test style中writer id有重复的(指0,1,2,3这些数字),但writer fname又不一样。所以测试集中的writer id,和train中的writer id,是否代表同一个writer?

A4A6可以不用管,A4是生成离线的手写中文,是另外一个任务,A6主要是讨论模型的输入选择轨迹模态还是离线模态比较好。

训练集跟测试集的书写者是不相交的,在训练过程中从来没见过测试集中的书写者。你所说的writer id是后处理过的,训练集中的0和测试集中的0并不代表同一个书写者。数据集的划分详情可以进一步看下我们的论文,上面写的很清楚。

cactusgame commented 8 months ago

非常感谢,这下清晰多了

训练集跟测试集的书写者是不相交的,在训练过程中从来没见过测试集中的书写者。你所说的writer id是后处理过的,训练集中的0和测试集中的0并不代表同一个书写者。数据集的划分详情可以进一步看下我们的论文,上面写的很清楚。

aceliuchanghong commented 2 months ago

您好, 我有一些关于SDT的问题想要咨询一下,不知道可以加一下微信吗? 我对AI生成字体非常感兴趣,不知道可以付费咨询一下吗 我的微信号是:sisconsavior