yinchangchang / ocr_densenet

第一届西安交通大学人工智能实践大赛(2018AI实践大赛--图片文字识别)第一名;仅采用densenet识别图中文字
459 stars 159 forks source link

有关训练准确率问题 #12

Open loralyc opened 5 years ago

loralyc commented 5 years ago

您好,我下载了您的代码和数据,训练很长一段时间准确率一直在80-90徘徊,召回率一直在60-80徘徊,而F最高只有68,和您前面给出的数据差距挺大的,能请问下可能是什么原因吗?谢谢!

yinchangchang commented 5 years ago

需要加载densenet的预训练模型

loralyc commented 5 years ago

@yinchangchang 您好,我再检查了一下,之前训练的时候已经有加载了densenet的预训练模型了,而且也成功下载了

yinchangchang commented 5 years ago

以前也有其他人遇到相似的问题,后面都解决了,可能原因有以下两个:

  1. 加载densenet时候出错了,可能没有加载上
  2. pytorch,torchvision或者其他包的版本不对

建议你重新clone最新的代码,按照readme和requirement.txt新建一个虚拟环境试试

loralyc commented 5 years ago

@yinchangchang 您好,我昨天重新clone最近的代码,按照要求新建了虚拟环境,训练了十几个小时准确率最高只有三十几。 我检查一下发现一个可能的原因: 在加载预训练模型的时候load_state_dict()函数中,如果直接运行会报错missing key(s) in state_dict,在添加了strict=False就可以正常运行了,但似乎就没有有效的加载预训练模型的参数 请问下这个是什么原因呢?

yinchangchang commented 5 years ago

是的, 加载预训练模型很重要的,densenet的初始化参数好,就很容易学到有效地信息

loralyc commented 5 years ago

@yinchangchang 但是直接运行代码好像预训练模型不能成功加载,能不能请问下您还有修改了模型结构什么的吗? 安装环境时已经安装了对应版本的包了

yinchangchang commented 5 years ago

我这边跑起来是没有问题的

你那边的问题,可能是用了hard mining导致无法收敛,我稍微修改了下代码,你重新pull下来,再试一下

2018hello commented 5 years ago

你好 请问下怎么顺利加载densenet,用load_state_dict()的strict=False,正确率就在80-90%?

yinchangchang commented 5 years ago

用最新的代码,是不需要加载densenet,我用titan xp 训练10个小时以后,是可以到94%