比赛信息
- 本次大赛要求选手开发算法模型,通过布样影像,基于对布样中疵点形态、长度、面积以及所处位置等的分析,判断瑕疵的种类 。通过探索布样疵点精确智能诊断的优秀算法,提升布样疵点检验的准确度,降低对大量人工的依赖,提升布样疵点质检的效果和效率。
- 比赛链接
文件说明
- code : 存放所有相关代码的文件夹
- main.py : 主函数, 运行该函数进行模型的训练及预测,可以得到最终结果
- split_good_bad.py : 将原始文件按照有无瑕疵分成good和bad两个文件夹
- extract_xml.py : 将所有xml文件提取出来放在xml文件夹下面
- DataAugmentForTrain.py : 对训练数据进行线下增强
- DataAugmentForValid.py : 将增强后的数据作为validation
- del_copy_for_train.py : 讲增强后的数据及原始数据全都copy到data_for_train文件夹中用于训练
- merge.py : 融合最终的多个结果
- data : 存放原始数据文件,官方数据下载地址
- submit : 存放提交文件
操作说明
- step1 : 手动解压原始数据压缩文件,得保证解压后的文件名没有乱码!!!!!!!
- step2 : 手动在keras源码中修改插值方式,keras默认插值resize会出现波纹:
- 在~/anaconda2/lib/python2.7/site-packages/keras_preprocessing/imge.py的第33行后面加入 'antialias': pil_image.ANTIALIAS
- 变成: ''' _PIL_INTERPOLATION_METHODS = { 'nearest': pil_image.NEAREST, 'bilinear': pil_image.BILINEAR, 'bicubic': pil_image.BICUBIC, 'antialias': pil_image.ANTIALIAS, #added by mao } '''
- step3 : 运行main.py
思路说明
- 本次比赛我们团队分两个支路进行,我负责的这块使用的是keras,队友负责的那块使用的是pytorch, 所以会有两个模型训练预测part1和part2,这个在main.py里面有注释
- part1部分:
- 数据增强线下:每张图片扩充到两张,加入了裁剪,改变亮度,加噪声,cutout等方式,当然增强的时候利用了xml文件的信息,保证了框也随之变化.
- 数据增强线上:使用keras内置的增强方法,开启了旋转,镜像,shear等
- 模型:densenet
- 修改loss, 参考
- part2部分:
- 数据增强:只有线上,使用pytorch内置的增强方式
- 模型:resnet152
- 单模92左右,3个densenet模型融合线上能达到93.8%左右
- 比赛最终用的是3个densenet和1个resnet(队友pytorch训练)出来的结果进行融合,达到了线上94.9%,9/2403的成绩
- 注意,模型初始化用的是imagenet预训练权值,在开始模型训练前会自行下载
随机性
- 线下线上增强是随机增强的,这会有一个随机性,结果可能会在线上最好成绩附近波动
另
- 针对目标检测的数据增强,数据预处理等相关脚本见:Data_Preprocess_For_CV
- part2部分为队友用pytorch,finetune resnet152, 在线镜像增强,输入resize到800,原始数据,训练得到。
- 上传代码未包括队友的部分
- 如果想达到949的精确度,可以在main.py代码里面将模型改为resnet152再训练一个模型,融合一下
- 感觉再多训练几个模型融合线上还能提高 = =
- 复赛代码(已更新)
- 比赛数据