opconty / Transformer_STR

PyTorch implementation of my new method for Scene Text Recognition (STR) based on Transformer,Equipped with Transformer, this method outperforms the best model of the aforementioned deep-text-recognition-benchmark by 7.6% on CUTE80.
https://mp.weixin.qq.com/s/a_ahIwxiCaO7Bxmj81HUTw
224 stars 53 forks source link

大神,您好,我使用您提供的transforms替换crnn+ctc中的bilstm,效果很差 #10

Open wuxiaolianggit opened 3 years ago

wuxiaolianggit commented 3 years ago

大神,您好,我使用您提供的transforms替换crnn中的bilstm,效果很差,loss先下降后上升,然后一直不下降,怎么回事呢? @ @opconty

opconty commented 3 years ago

transforms替换的是最后输出层哈,可以参考下文章的结构改一改。Seq阶段的BiLSTM是需要的。

wuxiaolianggit commented 3 years ago

首先很感谢大佬的开源工作和回复,我还有一个问题想问您,您的loss计算不用ctc,在计算loss的时候使用交叉熵计算loss,那ground truth和pred的维度是怎么做到对齐的呢 @opconty

opconty commented 3 years ago

计算loss和预测结果的输出与gt问题,文本识别中常用CTC和基于attention的方法,可以参看下这篇关于attention的文章 (挺不好意思,感觉在不断分享自己的东西,不过文中确实说的很明白清楚,希望消除你的疑虑。)

wuxiaolianggit commented 3 years ago

真的很感谢大佬的回复,我仔细看看大佬的文章啊

wuxiaolianggit commented 3 years ago

您好,大神,仔细读了您的代码,发现特征提取之后维度顺序是x = self.adaptive_avg_pool(x.permute(0,3,1,2)) # [b, c, h, w] -> [b, w, c, h],然后经过bilstm,在利用tarnsformer对其进行pred,但是对其进行PositionalEncoding编码时,感觉没有利用到位置信息,如果把[b,w,c]变成[w,b,c]会不会就利用了位置信息,会不好一点?

wuxiaolianggit commented 3 years ago

您好,大神,仔细读了您的代码,发现特征提取之后维度顺序是x = self.adaptive_avg_pool(x.permute(0,3,1,2)) # [b, c, h, w] -> [b, w, c, h],然后经过bilstm,在利用tarnsformer对其进行pred,但是对其进行PositionalEncoding编码时,感觉没有利用到位置信息,如果把[b,w,c]变成[w,b,c]会不会就利用了位置信息,会不好一点? @opconty

opconty commented 3 years ago

b是batch size维

wuxiaolianggit commented 3 years ago

好的,多谢大神回复

wuxiaolianggit commented 3 years ago

大神您好,我调整了训练参数,从新训练了模型,效果和之前的crnn效果差不多,没有下降也没有提高,看了您的代码,是只支持定长训练,是这样吗 @opconty

opconty commented 3 years ago

如果需要batch的话是要定长的。你是在英文数据集上的效果也和crnn差不多吗?之前实验对比过会与明显的提升的

wuxiaolianggit commented 3 years ago

您好,大佬,我用的是中文数据集训练的,如果我增加transformer中nhead的数量,变成8,效果会不会好一点呢 @opconty

opconty commented 3 years ago

可以尝试下

ps:中文数据集是否可分享一下呢,很多人说中文上效果不理想,我想抽空康康

wuxiaolianggit commented 3 years ago

不哈意思啊,大佬,我用的中文数据集是公司内部数据集,我尝试用合成数据的代码生成一批,到时候上传到百度云上给您啊。

opconty commented 3 years ago

好的,没事儿

QuentinAI commented 3 years ago

您好,请问您现在还有使用transformer+ctc吗?效果如何呢?最近也准备先尝试一下ctc的,后面再试一下attention的 @wuxiaolianggit

xudongwang0828 commented 3 years ago

你好,想问一下,都调整了哪些超参数呀,还有就是,你是训练了多少个iter,效果就好了呢,我之前训练crnn的时候2w个iter的时候的字准就有75%了,现在这个训练了效果很差,字准才2%,我用的也是中文数据集,然后只是拿transformer替换掉了atten解码部分。非常期待您的回答! @wuxiaolianggit

lyc728 commented 2 years ago

你好,想问一下,都调整了哪些超参数呀,还有就是,你是训练了多少个iter,效果就好了呢,我之前训练crnn的时候2w个iter的时候的字准就有75%了,现在这个训练了效果很差,字准才2%,我用的也是中文数据集,然后只是拿transformer替换掉了atten解码部分。非常期待您的回答! @wuxiaolianggit 你好,请问下你数据形式是什么样的呢?

lyc728 commented 2 years ago

可以尝试下

ps:中文数据集是否可分享一下呢,很多人说中文上效果不理想,我想抽空康康

能否指点下数据集怎么构造呢?

lyc728 commented 2 years ago

你好,数据集是怎么构造的?