FangShancheng / ABINet

Read Like Humans: Autonomous, Bidirectional and Iterative Language Modeling for Scene Text Recognition
Other
420 stars 72 forks source link

复现模型的准确率问题 #14

Open zdz1997 opened 3 years ago

zdz1997 commented 3 years ago

首先感谢作者的分享,看了您的文章,给了我很大的启发。 最近复现了一下您的程序,使用的是开源的code中yaml文件的默认参数,除了数据集路径与batchsize数值其他并未改动。但是训练的结果准确率却和ABInet的开源的model差了很多。

我们的复现结果:IIIT5k 准确率为89.8%,小于公布的96.4%;SVT:92.1%小于开源model的93.2%;IC15: 82.2%小于开源model的85.9%;SVTP: 87.1% 小于开源的89%;CUTE:84.7%小于开源model的89.2%。

有些数据集的准确率相差非常大,例如IIIT5k。请问是什么原因呢?可能是训练的epoch造成的吗?我复现vision model 训练了默认的8个epoch,language model 默认的epoch数是80,由于太大,我训练了5个epoch就停止了训练,这个时候从损失值来看网络差不多稳定了。在训练ABInet 时 训练了3 个epoch,此时我发现网络也已经差不多稳定了。如果完全复现80个和10个epoch,确实是一个很大的工程,我的两个2080ti的gpu大概需要30天,而文中写的使用4个1080ti也需要半个月吧

请问您训练时的参数是什么。模型的准确率相差太多是哪些地方我没注意到导致的呢? 再次感谢作者的工作与贡献。期待您的回复。

FangShancheng commented 3 years ago

您好,我们自己的复现中,结果基本上跟公布的模型相差不大。

这个结果跟我们运行的结果出入比较大,麻烦检查下:

  1. 环境问题,有没有尝试我们提供的镜像,运行中是否有哪里报错的情况?
  2. 速度问题,1080ti上我们在集群上train_abinet的速度大概是6天左右可以训练完,如果您那边得一个月这么长,建议检查下是不是存在数据瓶颈(日志中有数据读取时间)。2080上时间没测试过。
  3. 数据问题,从网盘下载的数据是否有缺失或大范围不完整的报错?
  4. 训练轮数问题,预训练语言模型实际不需要那么长时间,看着收敛即可。预训练视觉模型跟完整训练ABINet,在降低一次学习率(第6轮降低后),第8轮左右可以视情况停止。不知道您有没有关注tensorboard的评估曲线,是否已经收敛
  5. 此外,首先检查下视觉模型的效果,不知道现在视觉模型收敛的精度如何?
dy1998 commented 3 years ago

您好,我们自己的复现中,结果基本上跟公布的模型相差不大。

这个结果跟我们运行的结果出入比较大,麻烦检查下:

  1. 环境问题,有没有尝试我们提供的镜像,运行中是否有哪里报错的情况?
  2. 速度问题,1080ti上我们在集群上train_abinet的速度大概是6天左右可以训练完,如果您那边得一个月这么长,建议检查下是不是存在数据瓶颈(日志中有数据读取时间)。2080上时间没测试过。
  3. 数据问题,从网盘下载的数据是否有缺失或大范围不完整的报错?
  4. 训练轮数问题,预训练语言模型实际不需要那么长时间,看着收敛即可。预训练视觉模型跟完整训练ABINet,在降低一次学习率(第6轮降低后),第8轮左右可以视情况停止。不知道您有没有关注tensorboard的评估曲线,是否已经收敛
  5. 此外,首先检查下视觉模型的效果,不知道现在视觉模型收敛的精度如何?

速度我也测试了一下,使用双卡titanxp,batchsize缩半,一个epoch需要一天,如果按默认设置则需要10天,换到4卡上确实差不多5天,语言模型和视觉模型暂时还没测试,等八卡到了我也测试一下

FangShancheng commented 3 years ago

首先感谢作者的分享,看了您的文章,给了我很大的启发。 最近复现了一下您的程序,使用的是开源的code中yaml文件的默认参数,除了数据集路径与batchsize数值其他并未改动。但是训练的结果准确率却和ABInet的开源的model差了很多。

我们的复现结果:IIIT5k 准确率为89.8%,小于公布的96.4%;SVT:92.1%小于开源model的93.2%;IC15: 82.2%小于开源model的85.9%;SVTP: 87.1% 小于开源的89%;CUTE:84.7%小于开源model的89.2%。

有些数据集的准确率相差非常大,例如IIIT5k。请问是什么原因呢?可能是训练的epoch造成的吗?我复现vision model 训练了默认的8个epoch,language model 默认的epoch数是80,由于太大,我训练了5个epoch就停止了训练,这个时候从损失值来看网络差不多稳定了。在训练ABInet 时 训练了3 个epoch,此时我发现网络也已经差不多稳定了。如果完全复现80个和10个epoch,确实是一个很大的工程,我的两个2080ti的gpu大概需要30天,而文中写的使用4个1080ti也需要半个月吧

请问您训练时的参数是什么。模型的准确率相差太多是哪些地方我没注意到导致的呢? 再次感谢作者的工作与贡献。期待您的回复。

@zdz1997 请问现在复现的精度跟速度都如何了?

dy1998 commented 3 years ago

首先感谢作者的分享,看了您的文章,给了我很大的启发。 最近复现了一下您的程序,使用的是开源的code中yaml文件的默认参数,除了数据集路径与batchsize数值其他并未改动。但是训练的结果准确率却和ABInet的开源的model差了很多。 我们的复现结果:IIIT5k 准确率为89.8%,小于公布的96.4%;SVT:92.1%小于开源model的93.2%;IC15: 82.2%小于开源model的85.9%;SVTP: 87.1% 小于开源的89%;CUTE:84.7%小于开源model的89.2%。 有些数据集的准确率相差非常大,例如IIIT5k。请问是什么原因呢?可能是训练的epoch造成的吗?我复现vision model 训练了默认的8个epoch,language model 默认的epoch数是80,由于太大,我训练了5个epoch就停止了训练,这个时候从损失值来看网络差不多稳定了。在训练ABInet 时 训练了3 个epoch,此时我发现网络也已经差不多稳定了。如果完全复现80个和10个epoch,确实是一个很大的工程,我的两个2080ti的gpu大概需要30天,而文中写的使用4个1080ti也需要半个月吧 请问您训练时的参数是什么。模型的准确率相差太多是哪些地方我没注意到导致的呢? 再次感谢作者的工作与贡献。期待您的回复。

@zdz1997 请问现在复现的精度跟速度都如何了?

使用了作者给的视觉和语言预训练模型,只训练最后一步,使用4卡titanxp跑了5天,结果上差不多,可能@zdz1997 同学在预训练语言模型和视觉模型的时候没收敛,具体结果如下:

ic15:85.1 IIIT5k:96.4 SVT:93.4 SVTP:87.9 ic13:97.5 CUTE:90.3 AVG:92.4

zdz1997 commented 3 years ago

可能是我没有使用镜像环境的原因吧。单独测试视觉模型的准确率,相比于作者开源的pretrained model 大概低了3%。而我自己训练的视觉模型已经训练完了所有的epoch,最后观察曲线发现模型已经收敛了。至于后续的工作我再研究研究,谢谢各位的分享与回复哈。

zdz1997 commented 3 years ago

使用docker平台用了作者的镜像环境,我只训练了vision model(一共训练了8个epoch)。结果如下,和开源的vision model,差距还挺大的,我直接使用的开源的code的默认的参数,要想达到开源的model 的性能,我是需要额外设置什么吗?

Model | IIIT5k | SVT | IC13 | IC15 | SVTP | CUTE 我们训练vision model | 88.6% | 87.8% | 93.2% | 78.2% | 81.7% | 79.9% 您开源的vision model | 95.0% | 89.8% | 95.0% | 82.7% | 84.2% | 87.5%

FangShancheng commented 3 years ago

使用docker平台用了作者的镜像环境,我只训练了vision model(一共训练了8个epoch)。结果如下,和开源的vision model,差距还挺大的,我直接使用的开源的code的默认的参数,要想达到开源的model 的性能,我是需要额外设置什么吗?

Model | IIIT5k | SVT | IC13 | IC15 | SVTP | CUTE 我们训练vision model | 88.6% | 87.8% | 93.2% | 78.2% | 81.7% | 79.9% 您开源的vision model | 95.0% | 89.8% | 95.0% | 82.7% | 84.2% | 87.5%

@zdz1997 您好,很有可能是您使用的数据的问题,建议您直接用我们提供的训练数据。问题详细描述请参见这个issue #30

zdz1997 commented 3 years ago

感谢作者的code与dataset,用新的数据集训练后,vision model的准确率已经基本和您的model效果持平了,这数据集的功力也太可怕了 qwq........

lyc728 commented 2 years ago

你好,请问在中文下有相应的数据集吗?有测试过效果吗?

lyc728 commented 2 years ago

您好,我们自己的复现中,结果基本上跟公布的模型相差不大。

这个结果跟我们运行的结果出入比较大,麻烦检查下:

  1. 环境问题,有没有尝试我们提供的镜像,运行中是否有哪里报错的情况?
  2. 速度问题,1080ti上我们在集群上train_abinet的速度大概是6天左右可以训练完,如果您那边得一个月这么长,建议检查下是不是存在数据瓶颈(日志中有数据读取时间)。2080上时间没测试过。
  3. 数据问题,从网盘下载的数据是否有缺失或大范围不完整的报错?
  4. 训练轮数问题,预训练语言模型实际不需要那么长时间,看着收敛即可。预训练视觉模型跟完整训练ABINet,在降低一次学习率(第6轮降低后),第8轮左右可以视情况停止。不知道您有没有关注tensorboard的评估曲线,是否已经收敛
  5. 此外,首先检查下视觉模型的效果,不知道现在视觉模型收敛的精度如何?

你好,请问在中文下有相应的数据集吗?有测试过效果吗?

wu-yz commented 5 months ago

你好,我训练语言模型的时候loss很快就变成0了,但是评估的时候准确率还是不高,loss也挺大的,这是什么原因呢?