Coder Social home page Coder Social logo

xuelangtianchi's Introduction

视觉计算辅助良品检测


环境

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尺寸。

(注:详细代码在XueLangDataSet文件中)

训练

  • 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属性配置好路径。

(注:该验证集与线上auc得分误差在[0.001-0.02]之间)
  • 3、开始训练

执行main.py中的训练部分即可,通过vidom查看损失情况及在验证集上的AUC分数。

(注:默认多GPU训练,可在config文件中取消)

测试

  • 1、配置模型

在code/utils/config.py中给load_model_path属性配置 最终模型的路径。

  • 2、配置测试集

在code/utils/config.py中给test_data_roots属性配置 测试集文件夹路径。

  • 3、开始测试

执行mian.py中的测试部分即可,执行完成后,将生成csv并保存到文件夹submit/*.csv。


**

数据集准备

  • 动态裁剪: 训练过程中当开始加载每张图时才进行随机裁剪。
(注:裁剪仍过于严格,按照IOU放宽范围可试)
  • 数据挖掘:有瑕疵原图裁剪无瑕疵样本。

  • 多尺度融合:按照概率,0.5几率选择原图训练,0.5几率选择裁剪样本训练。

(注:前排大佬选择多模型融合,即原图训练模型,裁剪样本训练模型,最终结果融合。但比赛限制模型数量)

预测数据

  • 验证与预测时仅支持batch为1:一张图产生 420大小,半步长210滑动的96张裁剪样本 + 1张原图。

说明

  • 所有参数均在config.py中配置,十分方便。

  • 提升方法:

    1、该项目未使用各种数据增强的方法,可试。

    2、该项目输入尺寸为224,可增大尺寸训练。

    3、该项目网络仅为单模型Resnet152,前排大佬使用多模型融合,可试。

    4、....


Q&A

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]之间,且误差不随线上更换数据集而改变,故可以在本地无限次测试~


特别鸣谢:朱辉师兄

xuelangtianchi's People

Contributors

bobo0810 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xuelangtianchi's Issues

help

你好,请问这个模型测试结果准确率多少?

数据集解压出来没有test文件。

你好,我从百度云盘里下载的数据没有下面两个数据文件,这两个在哪里呀
─xuelang_round1_test_a_20180709

└───xuelang_round1_test_b

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.