/TIANCHI_XUELANG_AI

天池雪浪布匹瑕疵检测,初赛线上949,排名9/2403

Primary LanguagePython

比赛信息

  • 本次大赛要求选手开发算法模型,通过布样影像,基于对布样中疵点形态、长度、面积以及所处位置等的分析,判断瑕疵的种类 。通过探索布样疵点精确智能诊断的优秀算法,提升布样疵点检验的准确度,降低对大量人工的依赖,提升布样疵点质检的效果和效率。
  • 比赛链接

文件说明

  • 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再训练一个模型,融合一下
  • 感觉再多训练几个模型融合线上还能提高 = =
  • 复赛代码(已更新)
  • 比赛数据