Wei-ucas / TPSNet

Apache License 2.0
25 stars 9 forks source link

能否在通用数据集上使用呢 #5

Closed ocrhei closed 1 year ago

ocrhei commented 1 year ago

我看效果很好,但我看源码需要两个长边,而我数据集当初标注时并未分别将轮廓点前部分和后部分分别是两个长边,请问这种数据集该如何使用您的代码呢

Wei-ucas commented 1 year ago

您好,您说的这种情况确实不太方便处理,由于这个方法主要目的是实现端到端的检测识别,识别时需要把对应的文本区域特征提取出来,这一提取过程需要保证文字的方向是正确的,因此就需要要求数据集是按照方向以及两条边标注的。如果您的数据集不是弯曲文本,可以尝试将标注转化为四边形,然后使用一些规则将文本的长短边区分出来,例如采用textsnake的标签生成方法中的reorder_poly_edge方法

ocrhei commented 1 year ago

作者您好,我根据你的指点,成功的将您的代码应用到了其他数据集,但还存在一个小问题,就是splprep函数报错,我可视化看了,报错的都是小文本,请问该怎么办呢

image
ocrhei commented 1 year ago

会报这个错误, t, c, o = _fitpack._parcur(ravel(transpose(x)), w, u, ub, ue, k, ValueError: Invalid inputs.

Wei-ucas commented 1 year ago

你好,这一步的代码时利用splprep拟合轮廓线,这里报错说明轮廓的坐标点无法被拟合,可能是小文本的标注存在问题,建议可视化一下这里的top_line和bot_line,看是否是正常的轮廓线

ocrhei commented 1 year ago

感谢,已经解决了。 但还有个疑惑,就是为什么我开了翻转数据增强后,会严重掉点呢,我又试了CTW1500数据集,同样是打开翻转数据增强后会至少2个点,这是为什么呢,如何增加旋转数据增强并涨点呢。

Wei-ucas commented 1 year ago

您是指端到端检测识别还是仅仅指检测过程呢,如果是端到端识别,一般不采用翻转数据增强,因为反转后文字的方向可能是反的,就无法识别了。针对您说的这个问题,我个人的考虑是:CTW1500数据集由于标注点的顺序存在严格的方向,因此翻转了之后,对应的方向也就翻转了,TPS一定程度上可以学会方向的判断,所以即使翻转了,只要是方向和阅读顺序仍然一致,那么不至于对模型造成混淆。而textsnake的标签生成方法中的reorder_poly_edge方法忽略了标注的顺序,重新以从左到右从上到下为顺序,这样如果用了翻转,但GT没有跟着翻转(文字从右到左阅读,而GT仍然是从左到右),对模型的学习来说就是一种混淆。对于检测应当也有类似的问题,主要在于TPS会根据标注学习方向性,如果方向存在混淆,性能可能就会下降。

ocrhei commented 1 year ago

我是指端到端检测识别,不过我发现检测性能也下降了,不过我明白了,感谢您的指点。 就是还有个小小的疑惑,就是我看到您使用的totaltext数据集中的训练集和ABCNet使用的不太一样,请问这两种有什么区别呢,哪个最终的测试结果更好呢。

Wei-ucas commented 1 year ago

这两种只是图片命名不同,本质并无区别。我这边采用的是直接从totaltext下载的数据,把标注处理成了coco格式。ABCNet使用的数据对图片的命名格式做了一些处理,内容是相同的。两者并无区别。另外totaltext数据集更新过一次标注,原有的标注每条边可能都只有3个点,更新的标注轮廓点数量更多,但是是从原有标注生成的,反而可能出现一些错误,对性能有略微影响,使用旧的标注训练效果稍好一点。

ocrhei commented 1 year ago

我明白了,感谢作者的详细回复。

ocrhei commented 1 year ago

我没有问题了