zhengye1995 / Tianchi 2019 Guangdong Intelligent Identification Of Cloth Defects Rank5
Programming Languages
Labels
Projects that are alternatives of or similar to Tianchi 2019 Guangdong Intelligent Identification Of Cloth Defects Rank5
2019广东工业智造创新大赛【赛场一】季军解决方案 全套代码
队伍:天池水也太深了
2019广东工业智造创新大赛 布匹疵点检测
比赛地址:NEW !!!
感谢大家的关注,由于近期很多同学需要数据学习使用,经过和天池的沟通,可以将数据共享给大家学习使用
数据下载地址:
百度网盘 (密码:jp7d)
TIPS:
因为官方给的原始数据压缩包大于4gb,我这里对每一个包进行了分卷压缩,大家注意分卷解压缩使用
core slides:
算法流程&方案介绍 CFRCNN--变化检测思路
- 输入图片预处理
- 将代检测图片和模板图片沿通道方向合并, 变为hw6的矩阵
- 归一化
- resize padding等常规操作
- 经过CFRCNN模型
- 基本框架:Cascade-RCNN
- 输入改变为6个通道的conv, 同时输入待检测图像和对应模板进行变化检测
- backbone: resnet50
- cascade 三个head 根据比赛map计算iou进行对应调整
- 为了解决其中三类面积过大的问题, 额外训练一个小尺度大感受野的专家模型
- 采用fp16加速训练和增大输入面积来缓解部分小目标问题
- 后处理
- NMS
- 最大score二类后处理, 根据单个图片bbox最高score来对图像进行二次过滤, 判断该图像是否是正常样本
创新性
- 变化检测
- 根据赛题任务, 采用变化检测思路处理检测任务
- 调整输入层为样本和模板同时输入 让模型学到目标和模板之间的变化差异, 使模型在切换模板后依然有良好泛化能力
- 专家模型解决感受野不足问题
- 为了降低模型复杂度, 没有采用大感受野复杂模型或者增加大anchor, 而是以resnet50为backbone
- resnet50感受野不足, 并且原始anchor大小不足,导致缝头、缝头印和色差等面积很大的类漏检
- 训练一个400尺度的大感受野专家模型
- 去掉面积过小的目标, 保证梯度稳定
- cascade iou阈值适应赛题map要求
- cascade 每个head的预测bbox结果在其对应iou阈值的AP上效果最好
- 根据比赛0.1 0.3 0.5的iou要求, 将cas三个head的iou阈值调整为0.4 0.5 0.6(可能 0.3 0.4 0.5效果更佳,未能尝试)
- 同时rcnn 正负样例放松overlap要求放松为 0.6 0.2
- 最大score二类后处理
- 为了保持map的同时保证acc, 依据单个样本最高score的bbox置信度大小进行二次过滤分出正常图像
代码环境及依赖
- OS: Ubuntu16.10
- GPU: 2080Ti * 4
- python: python3.7
- nvidia 依赖:
- cuda: 10.0.130
- cudnn: 7.5.1
- nvidia driver version: 430.14
- deeplearning 框架: pytorch1.1.0
- 其他依赖请参考requirement.txt
训练数据准备(后面训练部分会有阐述如何一次性运行,这里只阐述过程)
-
相应文件夹创建准备
-
在data目录中创建fabric文件夹
-
进入fabric文件夹,创建以下文件夹:
annotations
Annotations
defect_Images
template_Images
-
-
训练数据路径移动
-
将 guangdong1_round2_train_part1_20190924,
guangdong1_round2_train_part2_20190924,
guangdong1_round2_train_part3_20190924和
guangdong1_round2_train2_20191004_images中
defect目录中的所有文件夹下的非模板图片复制到 data/fabric/defect_Images 目录下
-
将 guangdong1_round2_train_part1_20190924,
guangdong1_round2_train_part2_20190924,
guangdong1_round2_train_part3_20190924和guangdong1_round2_train2_20191004_images中
defect目录中的所有文件夹复制到 data/fabric/template_Images 目录下
-
-
label文件合并及格式转换
-
将round2中两个轮次的label文件合并到 anno_train_round2.json中,然后移动到data/fabric/Annotations 目录下
-
将刚才的label文件转换为COCO格式,新的label文件 instances_train_20191004_mmd.json 和 instances_train_20191004_mmd_100.json会保存在 data/fabric/annotations 目录下
-
-
预训练模型下载
- 使用mmdetection官方开源的casacde-rcnn-r50-fpn-2x的COCO预训练模型
- 下载预训练模型后进行转换变为支持CFRCNN模型的预训练模型
依赖安装及编译
-
依赖安装编译
-
创建并激活虚拟环境 conda create -n guangdong python=3.7 -y conda activate guangdong
-
安装 pytorch conda install pytorch=1.1.0 torchvision=0.3.0 cudatoolkit=10.0 -c pytorch
-
安装其他依赖 pip install cython && pip --no-cache-dir install -r requirements.txt
-
编译cuda op等: python setup.py develop
-
模型训练及预测
- 训练 1. 运行: cd train & ./train.sh
2. 训练过程文件及最终权重文件均保存在data目录中
-
预测
-
线上docker已经提交过预测全部内容,这里依然认为测试数据挂载在/tcdata
-
运行: ./run.sh
-
Contact
author:rill
email:[email protected]