计算机能力挑战赛是线上的吗,全国高校计算机能力挑战赛验证码识别竞赛一等奖调参经验分享...
前言:这是为验证码识别竞赛而开发的一个基于pytorch实现的端到端的验证码识别系统。前后开发大概有2个月,其中大部分时间都在调参,后期参考kaggle大神经验,加入了一些trick,但是由于第一个榜截止了,所以没有得到测试集结果,只有验证集的参考结果。该库比较简单,适合入门竞赛,不过调参难度比较大,需要尝试合适的超参数,如果超参数不合适,可能会导致无法收敛,具体问题还需具体分析。
作者:pprp
编辑:BBuf
1. 竞赛背景
本次比赛是全国高校计算机能力挑战赛中的人工智能赛道里的验证码识别,该比赛需要识别26(大写)+26(小写)+数字(10)= 62个字符,随机组成的四位验证码图片。
2. 赛题分析
训练集仅有5000张,而所有的数字组合有
个组合。
验证码识别的难度系数较大,人眼也很容易识别出错。
噪声比较严重,存在遮挡字符的情况。
3. 数据集
1575527368225
比赛提供的数据集如上图所示,120
40的像素的图片,然后标签是由图片名称提供的。
训练集测试集划分:80%的数据用于训练集,20%的数据用于测试集。
训练图片个数为:3988
测试图片个数为:1000
训练的数据还是明显不够的,考虑使用数据增强,最终选择了Augmentor库作为图像增强的库。Augmentor库很适合做图像分类的数据增强。由于验证码与普通的分类图片有一定区别,所以选择的增强方式有一定局限,比如不能翻转,不能左右颠倒,不能crop等, 但是也有一些比较好用的方法,比如说distortion(弹性变形), perspective skewing (透视偏斜),图片缩放等方法也适用于验证码识别。
经过几轮实验,最终选取了distortion类的方法作为具体增强方法,输入为训练所用的图片,输出设置为原来图片个数的2倍,具体代码见dataAug.py, 核心代码如下:
def get_distortion_pipline(path, num):p = Augmentor.Pipeline(path)p.zoom(probability=0.5,min_factor=1.05,max_factor=1.05)p.random_distortion(probability=1,grid_width=6,grid_height=2,magnitude=3)p.sample(num)if __name__ == "__main__":# 生成训练集两倍的数据量get_distortion_pipline("path to image folder", 2 * len(train_folder))
将得到的图片重命名为auged_train文件夹,最终数据集组成如下:
root|---data|--- train:3988张|--- test:1000张|--- auged_train:7976张
训练流程是每隔epoch先遍历train文件夹,然后遍历auged_train文件夹,最后对test文件夹进行一次测试,完成一次遍历。PS:数据集下载链接在文末。
4. Trick总结
上图就是整个验证码识别的流程图,也是baseline, 在此基础上可以使用很多分类网络中用到的trick。
比赛从以下几个角度进行调参优化:
调整超参数:
CosineAnnealingLR
ReduceLROnPlateau
StepLR
MultiStepLR
GradualWarmupScheduler(warm up)
Learning Rate 调整
decay参数调整
learning rate scheduler尝试:
更改优化器:
Adam优化器
RAdam优化器
AdamW优化器
AdaBound优化器(尝试过后效果很差,网络不收敛,可能是由于超参数设置问题)
数据增强
augmentor库中的distortion方法
attention机制
尝试se模块
修改backbone:
添加dual pooling 模块
添加bnneck模块
添加ibn模块
senet
densenet
resnet18
更换loss:
使用center loss+CrossEntropyLoss,收敛比较慢,对参数敏感
5. 调参过程记录
调参过程记录:null代表未记录
Name
item1
item2
item3
item4
item5
测试:线上
baseline0
Ret18
lr=1e-3
4:1划分
Adam
88%:84%
baseline1
Res34
lr=1e-3
4:1划分
Adam
90%:84%
baseline2
Res18
lr=1e-3
4:1划分
RAdam
null:90%
baseline3
Res18
lr=3e-4
4:1划分
RAdam
未收敛
baseline4
Res18
lr=1e-1
4:1划分
RAdam
96.4%:87%
baseline5
Res18
lr=1e-1
4:1划分
RAdam
aug0
98%:93%
baseline6
Res18
lr=1e-1
9:1划分
RAdam
aug1
60%:null
baseline7
Res18
lr=1e-3
4:1划分
RAdam
aug2
null:94%
baseline8
Res18
lr=1e-3
4:1划分
AdamW
aug2
98.4%:92.56%
baseline9
Res18
lr=1e-3
4:1划分
RAdam
aug3
null:93.52%
baseline10
Res18
lr=1e-3
4:1划分
RAdam
aug4
null:94.16%
baseline11
Res18
lr=1e-3
9:1划分
RAdam
aug5
60%:null
baseline12
Res18
lr=3.5e-4
4:1划分
RAdam
aug2
null:94.72%
baseline13
Res18
lr=3.5e-4 decay:6e-4
4:1划分
RAdam
aug2
null:95.16%
baseline14
Res18
lr=3.5e-4 decay:7e-4
4:1划分
RAdam
aug2
bad
baseline15
Res18
lr=3.5e-5 decay:6.5e-4
4:1划分
RAdam
aug2
null:95%
baseline16
Res18
lr=3.5e-5 decay:6.5e-4
4:1划分
RAdam
drop(0.5)
null:97%
以上的aug代表数据增强:
aug0: +distrotion
aug1: 9:1划分+扩增3倍
aug2: +distortion+zoom
aug3: +tilt+扩增两倍
aug4: aug2+aug3混合
aug5: 9:1划分 +tilt倾斜
数据增强示意图:
example1
example2
example3
后期尝试的主要方案有以下:
learning rate scheduler尝试:CosineAnnealingLR, ReduceLROnPlateau,StepLR,MultiStepLR
更改backbone: senet, densenet
在res18基础上添加:attention机制,dual pooling, ibn模块,bnneck等
尝试center loss,收敛很慢,但是效果应该不错
还未尝试的方案:
label smooth
多模型ensemble
6. 相关链接
augmentor API:https://augmentor.readthedocs.io/en/master/index.html
链接:https://pan.baidu.com/s/13BmN7Na4ESTPAgyfBAHMxA 提取码:v4nk
增强后的数据集,建议使用dataset2
后记:整个比赛下来得到了一等奖,整个过程可谓过山车一般,比赛还没有放榜的时候,觉得问题不会很难,因为提前查看了网上的验证码库,研究了一下发现,大部分验证码都很简单,比较清晰,但是这次验证码下来以后就发现难度比较大。之后就选择了一个能达到80%准确率的baseline开始调整。其中比较有感触的是比赛结束前突发奇想,加入了dropout,效果一下提升了很多,榜一排名到了30左右。
计算机能力挑战赛是线上的吗,全国高校计算机能力挑战赛验证码识别竞赛一等奖调参经验分享...相关推荐
- 计算机二级vb考试大纲与样卷,全国高校计算机等级考试广西二级VB考试大纲和模拟试卷.doc...
全国高校计算机等级考试广西二级VB考试大纲和模拟试卷 PAGE PAGE 13 全国高校计算机等级考试 (广西考区)二级考试大纲 考试科目: <Visual Basic.NET程序设计> ...
- 2013 全国高校计算机等级考试(广西考区)一级笔试试题,全国高校计算机等级考试(广西考区)一级笔试试题卷.PDF...
全国高校计算机等级考试(广西考区)一级笔试试题卷 全国高校计算机等级考试(广西考区)一级笔试试题卷 2009 年 6 月 27 日 闭卷考试 考试时间:60 分钟 考试类别:[7] 试卷种类:[A] ...
- 2013年6月22日全国高校计算机联合考试广西考区一级笔试试题,全国高校计算机联合考试(广西考区)一级笔试试题卷6月25日b...
全国高校计算机联合考试(广西考区)一级笔试试题卷 2011年6月25日闭卷考试考试时间:60分钟 试卷种类:[B] 考生注意:①本次考试试卷种类为[B],请考生务必将答题卡上的试卷种类栏中的[B]方格 ...
- 2013年6月22日全国高校计算机联合考试广西考区一级笔试试题,全国高校计算机联合考试(广西考区)一级笔试试题卷2010年6月26日A.doc...
全国高校计算机联合考试(广西考区)一级笔试试题卷2010年6月26日A 全国高校计算机联合考试 广西考区 一级笔试试题卷 2010年6月26日闭卷考试考试时间:60分钟 试卷种类:[A] 考生注意:① ...
- 2013 全国高校计算机等级考试(广西考区)一级笔试试题,全国高校计算机等级考试广西考区一级笔试试题卷...
全国高校计算机等级考试广西考区一级笔试试题卷 全国高校计算机等级考试广西考区一级笔试试题卷 2004后6月 试卷种类:A考试时间:60分钟 考生注意:①本次考试全部选择题,每题下都有四个备选答案,但只 ...
- 第26届中学生计算机大赛,南京中学生自编APP获全国高校计算机大赛一等奖
英文打字速度和正确率是国际高中的学生需要经常练习的一项能力,在各种标化考试中非常重要.目前,练习.测试这项能力比较普遍的软件乱码频现."作弊"诀窍,让其功能性大打折扣.近日,南外仙 ...
- 非科班Java尝试全国高校计算机能力挑战赛第三届计挑赛
写在前面:①大佬勿在意,小打小闹!②若不决参加与否,希望下文可以给你帮助(仅限程序设计赛项). 文章目录 一.个人真实情况 二.比赛最细简介 三.最全参赛准备 四.比赛时候遇到不会做怎么办? 一.个人 ...
- 全国高校计算机能力挑战赛
CSDN话题挑战赛第1期 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题:大学生竞赛指南 话题描述: ...
- 全国高校计算机能力挑战赛真题(二)
全国高校计算机能力挑战赛Java模拟练习题(二) 竞赛官网:http://www.ncccu.org.cn/ 全国高校计算机能力挑战赛真题(一) 1.模拟时间:90分钟 2.单选题15题(每题3分), ...
最新文章
- 数据仓库数据模型之:极限存储--历史拉链表
- 将AI落地到福州、贵阳的「幕后推手」,到底在想些什么?
- Django目录结构说明
- java注销对话框_【java小程序实战】小程序注销功能实现
- 隐马尔科夫模型C#类库调用示例
- jdbc mysql 源码_【JDBC系列】从源码角度理解JDBC和Mysql的预编译特性
- MySQL 基础知识(基本架构、存储引擎差异)
- Oracle命令--如何查看oracle中创建的所有目录
- Spring Boot(17)配置文件解析
- Spring : 静态代理模式和JDK、CGLIB动态代理
- 源文件和头文件的区别
- 利用空闲服务器搭建frps服务端-实现穿透代理
- Socket实战——Teardrop代码编程
- 辅导班师资力量介绍!
- 宜家订单JSON_在宜家网上商城购物是一种什么体验?
- 大白话Vue之publicPath
- 逆风撑船,文旅地产的前方是什么?
- 高考决定命运吗?高中毕业,我用十年从深圳流水线厂妹做到谷歌高薪程序员
- 修订版开源项目成功的十条准则
- C/C++趣味程序设计百例(11~20)
热门文章
- IntelliJ 平台 2020 年路线图
- 硬核推荐:博主神器OpenWrite,免费的一文多发平台,无需部署,注册即用,安全可靠!...
- IntelliJ IDEA 2019 快捷键终极大全,速度收藏!
- docs邮箱服务器,邮件服务器更换域名
- html网页共用头部和脚部,如何在HTML不同的页面中,共用头部与尾部?_html/css_WEB-ITnose...
- IJCV2021 人脸关键点检测器PIPNet
- 透明物体分割学习笔记
- EfficientNetV2 笔记
- torch.mean
- 表格检测开源网络推荐