钢铁缺陷检测挑战赛-第1名方案
0.引言
作为一个新人练习赛,这个比赛可以非常好的帮助大家熟悉使用Paddle。在这里我使用PaddleDetection套件中的网络进行训练,本项目将带大家对PaddleDetection套件使用有一个实践的过程。
1.赛题介绍
本次比赛聚焦图像目标识别技术,需要选手从图像中识别出钢铁表面的缺陷位置,并给出锚点框的坐标,同时对不同的缺陷进行分类,以期产出泛化性更好、性能更稳定的钢铁表面缺陷识别模型。
2.数据介绍及数据准备
本数据集来自NEU表面缺陷检测数据集,收集了6种典型的热轧带钢表面缺陷,即氧化铁皮压入(RS)、斑块(Pa)、开裂(Cr)、点蚀(PS)、夹杂(In)和划痕(Sc)。
可在比赛页面看到详情:https://aistudio.baidu.com/aistudio/competition/detail/114/0/task-definition
数据格式转换,数据拆分
下面是Paddle提供的两个处理数据的命令说明文档。
PadlleX:
https://github.com/PaddlePaddle/PaddleX/tree/develop/docs/data
PaddleDetection:
https://github.com/PaddlePaddle/PaddleDetection/blob/release%2F2.3/docs/tutorials/PrepareDataSet.md
# 解压文件并移除多余的目录
! unzip /home/aistudio/data/data105746/train.zip -d /home/aistudio/data/steel
!rm -r /home/aistudio/data/steel/__MACOSX
! unzip /home/aistudio/data/data105747/test.zip -d /home/aistudio/data/steel
!rm -r /home/aistudio/data/steel/__MACOSX
# 安装paddlex 用于拆分数据集
# 升级pip
!pip install --upgrade pip -i https://mirror.baidu.com/pypi/simple
!pip install "paddlex>2.0.0" -i https://mirror.baidu.com/pypi/simple
# 修改文件名字 JPEGImages Annotations
!mv /home/aistudio/data/steel/train/ANNOTATIONS /home/aistudio/data/steel/train/Annotations
!mv /home/aistudio/data/steel/train/IMAGES /home/aistudio/data/steel/train/JPEGImages
#使用paddleX拆分数据集
!paddlex --split_dataset --format VOC --dataset_dir /home/aistudio/data/steel/train --val_value 0.001 --test_value 0.0
# 下载PaddleDetection
%cd /home/aistudio/work
!git clone https://gitee.com/paddlepaddle/PaddleDetection.git -b release/2.3
# 进入PaddleDetection
%cd /home/aistudio/work/PaddleDetection
# 安装其它依赖
!pip install -r /home/aistudio/work/PaddleDetection/requirements.txt
# 临时环境安装
!pip install pycocotools -i https://mirror.baidu.com/pypi/simple
!pip install lap -i https://mirror.baidu.com/pypi/simple
%cd /home/aistudio/work/PaddleDetection/
#转换train
!python tools/x2coco.py \--dataset_type voc \--voc_anno_dir /home/aistudio/data/steel/train/ \
--voc_anno_list /home/aistudio/data/steel/train/train_list.txt \
--voc_label_list /home/aistudio/data/steel/train/labels.txt \
--voc_out_name /home/aistudio/data/steel/train/voc_train.json#转换test
!python tools/x2coco.py \--dataset_type voc \--voc_anno_dir /home/aistudio/data/steel/train/ \
--voc_anno_list /home/aistudio/data/steel/train/val_list.txt \
--voc_label_list /home/aistudio/data/steel/train/labels.txt \
--voc_out_name /home/aistudio/data/steel/train/voc_val.json!rm -r /home/aistudio/data/steel/train/Annotations/*
!mv /home/aistudio/data/steel/train/*.json /home/aistudio/data/steel/train/Annotations/
3. 训练流程
在试了多种模型后,我发现faster_rcnn_swin_tiny_fpn_3x_coco效果最好。接下来就带着大家走一遍训练流程把。
3.1 配置好训练文件
3.1.1 faster_rcnn_swin_tiny_fpn_1x_coco
首先打开work/PaddleDetection/configs/faster_rcnn下的faster_rcnn_swin_tiny_fpn_1x_coco.yml 一般来说,需要修改的就是weights即模型保存路径。及训练轮次,学习率等。
可以将一些需要改动的参数放到此文件中,这样就不会防止改动了里面得文件导致使用其他模型时还要再去那个文件进行改动。此文件的参数优先级高于其他base文件。
3.1.2 faster_rcnn_swin_tiny_fpn_1x_coco
然后打开_BASE_的路径,即faster_rcnn_swin_tiny_fpn_1x_coco.yml文件
我们最需要改的是 第一个得数据集配置文件,以及训练参数配置文件。
3.1.3 coco_detection
打开work/PaddleDetection/configs/datasets/路径下的coco_detection.yml
改成如下。具体路径可以自己琢磨一下
3.1.4 其他
其他基本不用动。打开work/PaddleDetection/configs/faster_rcnn/_base_/路径下的faster_rcnn_swin_tiny_fpn.yml。可以修改其中的batch_size。这些事基本的超参,其他的可以自行研究。
4. 训练及评估
# 训练
!python tools/train.py -c configs/faster_rcnn/faster_rcnn_swin_tiny_fpn_3x_coco.yml --use_vdl=true --vdl_log_dir=vdl_dir/scalar --eval
# 单卡断点续训
# !python tools/train.py -c configs/faster_rcnn/faster_rcnn_swin_tiny_fpn_3x_coco.yml \
# -r /home/aistudio/work/output/faster_rcnn_swin_tiny_fpn_3x_coco/best \
# --eval \
# --use_vdl=true \
# --vdl_log_dir=vdl_dir/scalar \
# --eval
5. 生成比赛数据
# 推理图像和生成txt文件
!python tools/infer.py -c configs/faster_rcnn/faster_rcnn_swin_tiny_fpn_3x_coco.yml \
-o weights=/home/aistudio/work/PaddleDetection/output/faster_rcnn_swin_tiny_fpn_3x_coco/34 \
--infer_dir=/home/aistudio/data/steel/test/IMAGES/ \
--output_dir=/home/aistudio/data/steel/infer_output\
--draw_threshold=0.005 --save_txt=True
import csv
import os
headers = ['image_id','bbox','category_id','confidence']
classList = ['crazing','inclusion','pitted_surface','scratches','patches','rolled-in_scale']
rows = []rootdir = '/home/aistudio/data/steel/infer_output'
list = os.listdir(rootdir) #列出文件夹下所有的目录与文件
for i in range(0,len(list)):path = os.path.join(rootdir,list[i])if os.path.isfile(path) and path.endswith('txt'):txtFile = open(path)print(path)result = txtFile.readlines()for r in result:ls = r.split(' ')Cls = ls[0]sco = float(ls[1])xmin = float(ls[2])ymin = float(ls[3])w = float(ls[4])h = float(ls[5])xmax = xmin+wymax = ymin+hclsID = classList.index(Cls)imgID = list[i][:-4]row = [imgID,[xmin,ymin,xmax,ymax],clsID,sco]rows.append(row)
with open('submission.csv','w')as f:f_csv = csv.writer(f)f_csv.writerow(headers)f_csv.writerows(rows)
import pandas as pd
datafile = pd.read_csv('/home/aistudio/work/PaddleDetection/submission.csv')
# 按照列值排序
data = datafile.sort_values(by="image_id", ascending=True)
data.to_csv('submission_final.csv', mode='a+', index=False)
6.总结
1、用fasterrcnn的swin模型进行了训练。
2、数据全部放train里面了。
3、最后提交的时候要进行排序,不然分数会很低。
4、myconfig为配置文件。own_model为模型。
也尝试过paddledetection套件的其他一些模型,最终效果没有faster_rcnn_swin_tiny_fpn_3x_coco好。大家可以多做尝试。并尝试加一些trick。例如TTA和WBF等进行模型融合。
cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml
ppyolov2_r101vd_dcn_365e_coco.yml
等等。。。
大家有什么问题欢迎留言交流!
ConvNeXt得诞生,CNN YYDS!!!
请点击此处查看本环境基本用法.
Please click here for more detailed instructions.
钢铁缺陷检测挑战赛-第1名方案相关推荐
- 基于飞桨PP-PicoDet的钢铁缺陷检测
基于飞桨PP-PicoDet的钢铁缺陷检测 1.背景介绍 自动检查和缺陷检测系统使用 AI 来检查零部件的故障和缺陷.通过这种方法,制造厂能够自动检测成品表面的缺陷,该方法广泛应用于金属.半导体晶圆和 ...
- 基于PP-PicoDet的钢铁缺陷检测
基于PP-PicoDet的钢铁缺陷检测 1.背景介绍 近年来,AI视觉检测在安防.工业制造等产业智能化升级进程中发挥着举足轻重的作用. 自动检查和缺陷检测系统使用 AI 来检查零部件的故障和缺陷.通过 ...
- 智源计算所-互联网虚假新闻检测挑战赛(冠军)方案,开源分享
比赛链接为 https://www.biendata.com/competition/falsenews/ 比赛由智源研究院和中科院计算所主办,比赛平台为biendata. 冠军模型可以访问下述链接获 ...
- 百度吃鸡排名预测挑战赛第六名方案(基于PyCaret)
序言 笔者参加百度吃鸡排名预测挑战赛位列第六名,现将方案给出,欢迎批评指正,如有想上车参赛的同学请私信联系,另外提供代码和模型预测文件. 比赛介绍 <绝地求生>(PUBG) 是一款战术竞技 ...
- 天池“英特尔创新大师杯”深度学习挑战赛 第15名方案【自然语言处理方向】
序言 笔者参加"英特尔创新大师杯"深度学习挑战赛目前位列第15名,先将方案给出,欢迎批评指正,如有想上车参赛的同学请私信联系,另外提供代码和模型预测文件. 比赛介绍 大赛背景 人类 ...
- paddle学习赛——钢铁目标检测(yolov5、ppyoloe+,Faster-RCNN)
文章目录 一.赛事简介 二.ppyoloe+l模型,41.32分 (PaddleDetection-voc) 2.1 安装PaddleDetection 2.2 数据预处理 2.2.1 解压数据集 2 ...
- 工业缺陷检测比赛Top3方案
Datawhale干货 方向:深度学习,应用:工业缺陷检测 工业缺陷检测是当前深度学习落地的热门项目,近年来许多的比赛平台都举办了关于缺陷检测的比赛,如kaggle前不久举办的钢铁缺陷检测,以及天池刚 ...
- 道路缺陷检测学习笔记
目录 裂缝分割 检测裂缝 裂缝分割 道路裂缝分割检测,没有模型,有数据集: GitHub - arthurflor23/surface-crack-detection: An experiment w ...
- 钢铁平面焊接缺陷检测,有方案、有代码
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 来源:AI公园 作者:Soham Malakar 编译:ronghuaiyang 导读 计算机视觉在工 ...
最新文章
- 【java】兴唐第二十三节课作业
- SQL Server中执行正则表达式
- ways to talk with girls
- Android.mk解析【转】
- Taro+react开发(68):页面数据太长不走url走localstorage
- redis通过lua脚本实现分布式锁
- 代码审计工具Fortify 17.10及Mac平台license版本
- 申请 GoDaddy SSL 证书
- 现代检测技术-测量误差和处理
- AWS Landing Zone Solution
- 计算机省技能竞赛总结,2014技能大赛总结:技能大赛个人总结
- 沃趣赵晨 | 从技术岗位到产品经理:漫谈IT产品经理的生存之道
- visio设置图片默认大小_教大家Visio怎么随意调节图形的大小
- 跟随自己,让自己的灵魂做主
- NOIP2014提高组A.石头剪刀布(解题报告)
- java停车场管理系统
- 如何看待PMP的2022年11月新考纲?
- 看我如何玩转PHP代码加密与解密
- 计算机专业实习怎么找?大厂付费内推实习证明有用吗?
- NVIDA显卡支持的编码器+解码器对应表