ICDAR2019 ReCTS task1 比赛总结
ICDAR2019 ReCTS task1 比赛总结
- 写在前面
- 比赛介绍
- 比赛方案
- 数据集
- 网络选择
- 训练调参
- 赛后总结
写在前面
这是自己的第一篇博客,拿来总结一下今年四月份的比赛——ICDAR 2019 ReCTS,同时记录一些自己的想法,方便以后回看。
比赛介绍
链接: 比赛信息.
这个比赛主要分为四个任务,字符识别,文本识别,文本检测,端到端识别。
我参与的是第一个任务,最终获得学生组第一(识别准确率94.73%)。
字符识别本质上就是一个分类任务,与大多数深度学习入门训练(如 MINIST手写数字识别,猫狗图片分类)并无太大差别。所以这篇博客主要是记录一些技巧以及细节(数据扩增,炼丹调参)。
比赛方案
数据集
比赛官方给的数据集就是街道上招牌里的字符图片,例如:
除了官方给的数据,我们通过指定字体和背景的方法生成了一些合成数据,例如:
在剔除了少量不合理类别之后,最终我们选择了4061类作为最终的分类目标,相当于对于官方给的数据集,选出对应标签是属于这4061类的字符图片。在合成数据集的时候,也是合成这4061类字符的图片。每个类别合成了150张图片(100张训练,50张验证)。对于官方数据集,我们通过分析发现各类字符的图片出现的次数非常不均衡:有2000类左右的字符,其对应图片只有两张甚至一张。所以为了解决这个数据不均衡的问题,我们对官方数据集做了处理:对于出现次数较多的字符,砍掉一部分图片,对于出现次数较少的字符,加入一部分合成数据集的图片作为补充。
最终,合成数据集作为预训练数据集,调整后的官方数据集作为finetune数据集。
网络选择
对于这个分类任务,因为残差神经网络在各种任务中的优异表现以及其易训练的特性,我们选择了ResNet50作为backbone,比赛期间我试过SE-Net(在ResNet50上加入了SE模块),但是在预训练的数据集(合成数据集)上的效果(训练相同的epoch达到的识别准确率以及模型最终收敛的识别准确率)都没有单纯的ResNet50效果好,所以最终还是选择了ResNet50。
训练调参
训练调参是个玄学环节。通常来说,我们只需要调整batchsize以及learning rate这两个参数就可以了,对于使用SGD优化算法来说,还可以调整momentum以及weight decay这两个参数。
此次比赛中,在确定了图像输入大小是32X32的前提下(这个大小一般也是试出来的,在试了64X64和32X32之后,发现32X32效果更好一些),通过调参发现batchsize设置为32的效果比64好(64的话一般就达到一块12G卡的上限了),这点我到现在也没想通。因为一般来说是在算力范围内,batchsize越大越好。momentum和weight decay没有作调整,选用0.9和5e-4。
最终的训练是先在合成数据集上预训练,模型收敛之后再在调整过的官方数据集上训练(训练过程中当验证loss不下降的时候将learning rate减小为原来的1/3,初始learning rate是0.001),最后再在原始的官方数据集上训练。(最后这一步是为了让模型见识尽可能多的贴近于官方测试集的图片,让模型“见多识广”)。
在官方测试集上我们还用了多模型集成的方法来获得最终结果。
赛后总结
先说不足之处吧:
- 由于这次比赛的数据集是街道上的招牌里的字符,其分布很容易产生不均衡(对于某些字,比如“小”,“汤”,在店名里会经常出现),我们这次的解决方案仅仅是对数据集做了筛选和补充,没有在算法层面上做处理(比如设置一些超参数来使得模型给予不常出现的样本更高的权重)。
- 合成数据集是通过指定字体和背景,再加上一些图像变换来生成的。采用GAN可以生成更贴近官方数据集的字符图片。
- 网络选择的是ResNet50,可能DenseNet等其他网络能有更好的表现,但是受限于算力和时间没有去尝试。
- 调参方面完全手动,算是小范围的grid search。最近在看了《EfficientNet》这篇论文之后,发现图像分辨率以及网络深度,宽度实际上可以用一定的理论支撑去进行调整。此外,这篇论文里面的EfficientNet-B0的架构是搜出来的,根据论文里面的描述,效果非常好(同样高的准确率,更少的参数量)。针对特定的数据集,采用搜索网络架构的方法可能可以找到更适合的网络。
在有以上诸多不足的情况下,拿了个学生组第一也是没有想到(最终的结果也比一些公司的高)。可能相较于其他参赛选手,我们方案胜在三个阶段的训练过程,其中在合成数据集上的预训练让模型的泛化性增强了一丢丢,第二个阶段的训练也让模型稍稍克服了一些数据不均衡的问题。调参过程也让模型的准确率尽可能高了(相较于那些没有反复调参的选手)。还有就是最终的多模型集成对于结果可能也提高了那么一两个点。
总而言之,一次既锻炼自己同时也挣得1500刀的比赛,都是要恰饭的嘛。
ICDAR2019 ReCTS task1 比赛总结相关推荐
- 数字时代,谁能成为小功率UPS领域的“王者”?
在数字时代,电力作为支撑现代化.智能化和智慧化的关键因素,扮演着不可替代的角色,已渗透到生产生活的方方面面. 在这其中,UPS有了更大的用武之地,发挥着越来越来越重要的作用.尤其是在不断涌现的边缘计算 ...
- DSTC10开放领域对话评估比赛冠军方法总结
本文介绍了国际竞赛DSTC10开放领域对话评估赛道的冠军方法MME-CRS,该方法设计了多种评估指标,并利用相关性重归一化算法来集成不同指标的打分,为对话评估领域设计更有效的评估指标提供了参考.相关方 ...
- python判断汉字偏胖_OCR 汉字识别学习笔记2019-01-02
一.git上star比较多的项目 *好 10.psenet的实现,最新的,pytorch: whai362/PSENet 14. kuangshi research in text detection ...
- OCR 上git上star比较多的项目
一.git上star比较多的项目 1.https://github.com/breezedeus/cnocr ***** 1.https://github.com/tmbdev/ocropy 2. ...
- 金连文:“文字检测与识别:现状及展望” | CAAI AIDL 演讲实录
点击我爱计算机视觉标星,更快获取CVML新技术 CAAI原创 丨 作者金连文 转自中国人工智能学会,52CV获得金老师授权转载,严禁二次转载. 8月31日-9月1日,由中国人工智能学会主办,华中科技大 ...
- 【打卡】广告-信息流跨域ctr预估(待更新)
赛题介绍 广告推荐主要基于用户对广告的历史曝光.点击等行为进行建模,如果只是使用广告域数据,用户行为数据稀疏,行为类型相对单一.而引入同一媒体的跨域数据,可以获得同一广告用户在其他域的行为数据,深度挖 ...
- ICDAR 2019比赛及数据集下载-任务-ICDAR2019任意形状文本的鲁棒阅读挑战
ICDAR 2019比赛及数据集下载 https://rrc.cvc.uab.es/?ch=14&com=tasks 任务-ICDAR2019任意形状文本的鲁棒阅读挑战 我们提议的比赛包括三个 ...
- 美团将主办 ICDAR2019「中文门脸招牌文字识别」比赛,并公开首个真实场景招牌图像数据集...
雷锋网 AI 科技评论按:国际文档分析与识别国际会议(International Conference on Document Analysis and Recognition,ICDAR)是由国际模 ...
- 第十六届全国大学生智能车竞赛比赛获奖证书格式说明以及下载链接
简 介: 本文给出了 第十六届全国大学生智能车竞赛 获奖证书的格式说明以及制作方法.证书的格式也参照了 第十五届智能车竞赛电子证书格式说明 .同时,获奖证书下载链接在后面给出. 关键词: 全国大学生智 ...
最新文章
- python语言1010的八进制_python打印十六进制
- Spring-Boot使用RedisCluster
- spring集合的注入
- 服务动态选择域名问题
- outlook域用户名怎么填_家谱制作软件怎么做成电子版
- 华为入局 VR 眼镜能让 VR 早普及几年?|CSDN博文精选
- 细说.NET中的多线程 (四 使用锁进行同步)
- web视频播放插件:Video For Everybody
- VisualStudio\Spy++查窗口句柄,监控窗口消息
- vue中pdf预览组件_基于vue的pdf预览组件
- 高频易揭:美五大高频易访录
- 数据库备份的三种方式 不要再干掉数据库跑路啦~
- 分而治之——最大子列和
- 水晶易表(Xcelsius) 2008 学习
- 计算机科学与技术真的会掉头发吗,大学里容易“掉头发”的3个专业,为了防秃头,大家慎重报考!...
- Javascript特效:五彩小球
- 闰秒问题的全面解读与防范
- matlab求两向量夹角_【求精干货】高中数学知识点总结归纳高一学生必须掌握
- java对接微信支付收不到支付通知问题(亲身实践)
- 一个简单的软件测试流程