-
参赛地址:雪浪制造AI挑战赛
-
排名:32/2403
python版本 | pytorch版本 | 系统 |
---|---|---|
3.5 | 0.3.0 | Ubuntu |
- 官方数据集结构
项目默认data文件夹下为已解压的数据集
data
│
└───xuelang_round1_train_part1_20180628
│ │ 吊纬
│ │ 毛斑
│ │ 正常
│ │ ...
│
└───xuelang_round1_train_part2_20180705
│ │ 吊纬
│ │ 毛斑
│ │ 正常
│ │ ...
└───xuelang_round1_train_part3_20180709
│ │ 吊纬
│ │ 毛斑
│ │ 正常
│ │ ...
└───xuelang_round1_test_a_20180709
│
└───xuelang_round1_test_b
注:训练集下载
- 训练使用的数据集
生成的xuelangtrainpart123_dataset.txt 为训练时用的数据集,训练过程中当加载每张图时才进行随机裁剪。
将官方数据集分为两部分:无瑕疵原图、有瑕疵原图。该数据集使用了一份无瑕疵原图、两份有瑕疵原图。
从有瑕疵原图中产生有瑕疵训练样本分为四种情况:
随机从该图中的所有bbox中抽取一个bbox。
当抽取的bbox的w、h<420时从橘色方块部分随机产生裁剪样本左上角坐标,宽高均为420。
当抽取的bbox的w<420、h>420时从橘色方块部分随机产生裁剪样本左上角坐标,宽高均为420。
当抽取的bbox的w>420、h<420时从橘色方块部分随机产生裁剪样本左上角坐标,宽高均为420。
当抽取的bbox的w、h>420时 0.5概率使用原bbox,0.5概率在原bbox中随机裁剪420尺寸。
- 1、开启Visdom (Visdom类似TnsorFlow的tensorboard,可视化工具)
# First install Python server and client
pip install visdom
# Start the server
python -m visdom.server
开始训练后浏览器访问 http://localhost:8097/ ,在Environment里选择XueLang_ResNet152_bo即可看到可视化界面。
- 2、准备验证集
下载finaVal验证集,在code/utils/config.py中val_data_root属性配置好路径。
- 3、开始训练
执行main.py中的训练部分即可,通过vidom查看损失情况及在验证集上的AUC分数。
- 1、配置模型
在code/utils/config.py中给load_model_path属性配置 最终模型的路径。
- 2、配置测试集
在code/utils/config.py中给test_data_roots属性配置 测试集文件夹路径。
- 3、开始测试
执行mian.py中的测试部分即可,执行完成后,将生成csv并保存到文件夹submit/*.csv。
- 动态裁剪: 训练过程中当开始加载每张图时才进行随机裁剪。
-
数据挖掘:有瑕疵原图裁剪无瑕疵样本。
-
多尺度融合:按照概率,0.5几率选择原图训练,0.5几率选择裁剪样本训练。
- 验证与预测时仅支持batch为1:一张图产生 420大小,半步长210滑动的96张裁剪样本 + 1张原图。
-
所有参数均在config.py中配置,十分方便。
-
提升方法:
1、该项目未使用各种数据增强的方法,可试。
2、该项目输入尺寸为224,可增大尺寸训练。
3、该项目网络仅为单模型Resnet152,前排大佬使用多模型融合,可试。
4、....
Q:为何按照420裁剪,最后又resize到224训练?
A: 选择420是因为服务器最大可按照420训练,再大就out of memory。之后又选择resize到224训练是因为我后来发现 使用pytorch提供的Resnet152预训练模型,该模型为Imagenet按照224训练得到,故resize到224训练效果会更好。
Q:该比赛最值得说道的一点是什么?
A: 通过part123数据集精心抽取的原图作为测试集,使得该验证集与线上auc得分误差在[0.001-0.02]之间,且误差不随线上更换数据集而改变,故可以在本地无限次测试~
特别鸣谢:朱辉师兄