首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于yolov5的工业缺陷检测方案

基于yolov5的工业缺陷检测方案

作者头像
Datawhale
发布于 2021-01-21 15:18:01
发布于 2021-01-21 15:18:01
2.9K00
代码可运行
举报
文章被收录于专栏:Datawhale专栏Datawhale专栏
运行总次数:0
代码可运行

作者:limzero,西安交通大学,Datawhale原创作者

比赛介绍

工业缺陷检测是当前深度学习落地的热门项目,其中瓷砖生产过程中的“质量检测环节”需要检测出瓷砖表面的瑕疵,目前比较依赖于人工,效果和效率都层次不齐。

最近天池上线的广东工业赛事针对瓷砖表面瑕疵进行智能检测,要求选手们相应的算法,尽可能快与准确的给出瓷砖疵点具体的位置和类别,主要考察疵点的定位和分类能力。

在本篇文章中,主要为大家介绍选择yolov5作为基线的方案,供大家参考。

基于yolov5的方案

线上结果:

  • 切成 640x640 滑动窗口预测,耗时<1.5 h, 平均一张图<3s! 线上50.
  • 长边resize到6400预测,平均一张图耗时:0.6 s. 线上55+

大家们都在疯狂卷mmdet,毕竟two-stage为王,但是如果没有算力可以考虑下yolov5。而且考虑到速度和精度的均衡(复赛要求<3s),如果使用two-stage的单图大尺度预测,个人感觉上限有限,而且比赛最后都是拼细节。所以肯定会朝着切图(特别是测试时切图)的方向发展。如果two-stage妄图切图到小块然后预测,时间限制肯定会劝退大部分two-stage模型,这也是选择yolov作为基线的原因!

原始图片尺度很大,目标相对原图尺度很小,这不利于模型学习,所以无论是在线随机crop还是离线crop制作训练集,都避免不了处理切图的问题。在线切图可以参考mmdetection的官方实现RandomCrop

离线切图:和在线切图一致,参考yolt切图方式,只是要将切好的图片和新标注都保存起来。本文中训练yolov5使用的是离线切图制作的voc格式数据集

  • 假设需要切图的大小为:640x640
  • overlap比例:0.2
  • 则步长为512
  • 从原图左上角开始切图,切出来图像的左上角记为x,y,
  • 那么可以容易想到y依次为:0,512,1024,....,5120.但接下来却并非是5632,因为5632+640>6000,所以这里要对切图的overlop做一个调整,最后一步的y=6000-640.(这是最关键的一点!!!)
  • 标签变化:切图对应的标签变化就是一个简单的加减(左上角坐标)几何变化
  • 对于所有的原始数据集,切成640x640,再剔除纯背景,大约会生成1.9w+的训练图像
  • 预测的时候也是将图片切成640x640.这样一张图片大约会变成150~200张小图,而yolov5l的FPS在v100上大约为256. 所以可以保证在3s内可以完成一张图的预测。

切图后训练数据可视化:

训练

  • yolov5l
  • 训练尺度:640x640
  • 30 epoch ; 0.1比例验证(训练未见过的图片的切片) ,严格的验证还需要算上切出来的背景块。
  • 线下:mAP@0.5: 60
  • 2卡2070s训练,训练时间<6hour。

测试

单卡:RTX 2070s

  • 1 切成 640x640 滑动窗口预测,耗时<1.5 h, 平均一张图<3s! 线上50.(低于原图预测的结果我是没想到的,没有NMS后处理?或者代码写错了?或者滑窗就是不行?还是一些后处理细节没考虑清楚?)
  • 2 长边resize到6400预测,平均一张图耗时:0.6 s. 线上55+

代码运行说明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python convert_to_voc.py #先将原始数据转为VOC格式的标注
python make_slice_voc.py #将上述图片切为小图,重新制作为voc.
python convert_voc_to_v5txt.py #将voc标注转换为yolov5的官方格式.
python make_yolov5_train_val.py #制作yolov5的train/val.

总结

  • 虽然检测比赛都是mmdet的天下,但是我相信在复赛有时间限制的情况下,加上这个赛题的特殊性,yolov5还是有比较强的竞争力的,特别是比赛后期。
  • V5提升空间很大:(1)本baseline使用两卡2070s小尺度单图训练,本身具有局限性;(2)除了yolov5l还有更强的v5x可选; (3)预测部分很粗糙,没有充分发挥yolov5速度快的特点;(4)结果后处理可以进一步探索
  • 关于切图滑窗预测, 如果处理好细节,切图预测理论上应该是会好于原图预测。特别是针对那些背景块,需要特殊处理,不然会引入极多的FP,必然导致mAP降低。关于overlap的问题,可以借鉴模型融合的方式,使用NMS或者WBF来对最后的重叠进行一个再处理。
  • 关于单图预测:考虑推理速度尺度,中心裁剪推理,因为所有图都有灰边背景,统计下这些背景的边框范围,进行centerCrop预测结果应该会更好。当然有更简单的方式,以直接在推理结果上面进行后处理。

训练/验证可视化

tensorboard

比赛地址

https://tianchi.aliyun.com/s/bc97f977ae47dcfa4b07c027cd28d907(复制粘贴或阅读原文)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Datawhale 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍 !!
YOLO系列的核心思想就是把目标检测转变为一个回归问题,利用整张图片作为网络的输入,通过神经网络,得到边界框的位置及其所属的类别。
JOYCE_Leo16
2024/04/09
35K1
YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍 !!
实战 | 基于YOLOv8的PCB板缺陷检测
基于DeepPCB这个公开数据集,总计有1500份的模板-缺陷图像数据对,总计图像3000张,对应text格式的1500个标注文本描述文件。包含PCB主要的六个类别错误,分别是:
OpenCV学堂
2023/08/22
1.3K0
实战 | 基于YOLOv8的PCB板缺陷检测
YOLO算法最全综述:从YOLOv1到YOLOv5
来源丨https://zhuanlan.zhihu.com/p/136382095
Datawhale
2020/10/23
2.9K0
YOLO算法最全综述:从YOLOv1到YOLOv5
基于YOLOv5的摄像头吸烟行为检测系统(pytoch)
AI工具如何改变生活,本文主要通过YOLOv5技术阐述生活中对摄像头进行监控,并对吸烟危险行为进行识别,详细阐述了如何提升吸烟行为的检测精度。
AI小怪兽
2023/11/30
1.2K0
YOLOV5入门讲解+常用数据集
目标检测是计算机视觉中比较简单的任务,用来在一张图篇中找到某些特定的物体,目标检测不仅要求我们识别这些物体的种类,同时要求我们标出这些物体的位置
淼学派对
2023/10/14
9.4K0
YOLOV5入门讲解+常用数据集
【目标检测】YOLOv5:640与1280分辨率效果对比
YOLOv5-5.0版本的四个预训练权重输入的图片尺寸固定为640x640。 但是在YOLOv5-6.1版本,多了几个例如yolov5l6.pt末尾带6的预训练权重,这几个权重是在更大分辨率1280x1280进行训练的。 因此我想在自己的电脑上测试一下相同的数据集从640x640到1280x1280效果会有多少提升。 原本是想在VisDrone数据集上进行对比测试,然后当换用更大分辨率之后,即使batch_size减为1,依然面临显存不足的问题。 于是我使用了自己的数据集,采用yolov5l模型,跑了100个epoch,mAP效果如下表所示:
zstar
2022/09/19
3.4K0
【目标检测】YOLOv5:640与1280分辨率效果对比
从0梳理1场CV缺陷检测赛事!
去年的广东工业大赛已入选到全球人工智能技术大赛热身赛,大赛聚焦布匹疵点智能检测,要求选手研究开发高效可靠的计算机视觉算法,提升布匹疵点检验的准确度,降低对大量人工的依赖,提升布样疵点质检的效果和效率。
Datawhale
2021/03/11
6110
基于Yolov8网络进行目标检测(一)-介绍和预测
之前提到过目标检测模型分为两类。一类是two-stage,将物体识别和物体定位分为两个步骤分别完成,这一类的典型代表是R-CNN, fast R-CNN, faster-RCNN家族。他们识别错误率低,漏识别率也较低,但是由于网络结构参数的计算量大,导致其检测速度慢,不能满足实时检测场景。为了解决精度与速度并存的问题,另一类方式出现了,称为one-stage, 典型代表是Yolo, SSD, YoloV2等。此类方法使用基于回归方法的思想,直接在输入图像的多个位置中回归出这个位置的区域框坐标和物体类别,他们识别速度很快,可以达到实时性要求,而且准确率也基本能达到faster R-CNN的水平。
python与大数据分析
2023/09/18
2.2K0
基于Yolov8网络进行目标检测(一)-介绍和预测
【Yolov5】1.认真总结6000字Yolov5保姆级教程[通俗易懂]
1.集成的资源我放在了文末,包括我自己做成的成品,可以直接train与detect。我发在百度网盘上。
全栈程序员站长
2022/07/23
9.2K1
【Yolov5】1.认真总结6000字Yolov5保姆级教程[通俗易懂]
【论文复现】YOLOv5复现
YOLOv5是Ultralytics公司在2020年6月发布的一款开源目标检测模型,其特点在于轻量化设计、易用性高以及出色的性能表现。该模型能够在各种硬件平台上实现速度与性能的良好平衡,并且因其卓越的实时性和准确性而在工业、安防、无人驾驶等多个领域得到了广泛应用。作为YOLO系列中的佼佼者,YOLOv5可以被视为YOLOv4的升级版,通过对网络结构、优化器超参数、数据预处理超参数以及损失函数超参数等多个方面进行精细调整,YOLOv5的性能相较于YOLOv4有了显著提升。然而,从整体架构上来看,YOLOv5仍然沿用了YOLOv4的Backbone+SPP+PaFPN+Head结构,没有进行大的改动。
Eternity._
2024/11/30
6160
【论文复现】YOLOv5复现
使用YOLOv5模型进行目标检测!
目标检测是计算机视觉领域的一大任务,大致分为一阶段目标检测与两阶段目标检测。其中一阶段目标检测模型以YOLO系列为代表。最新的YOLOv5在各个数据集上体现出收敛速度快、模型可定制性强的特点,值得关注。本文主要讲解如何从零训练自己的YOLOv5模型与一些重要参数的含义。
Datawhale
2021/07/12
11.4K0
使用YOLOv5模型进行目标检测!
实用目标检测器 | 性能超YoloV5,推理耗时不变(附github源码)
在实际应用场景中,有效性与高效性对于目标检测器非常重要。为了满足这两个问题,研究者全面评估了现有的改进的集合,以提高PP-YOLO的性能,同时几乎保持推理时间不变。
3D视觉工坊
2021/05/18
2.5K0
实用目标检测器 | 性能超YoloV5,推理耗时不变(附github源码)
【目标检测】从YOLOv1到YOLOX(理论梳理)
YOLO系列应该是目标领域知名度最高的算法,其凭借出色的实时检测性能在不同的领域均有广泛应用。 目前,YOLO共有6个版本,YOLOv1-v5和YOLOX,除了YOLOv5外,其它都有相应的论文,5篇论文我已上传到资源中,可自行下载:https://www.aliyundrive.com/s/ofcnrxjzsFE 工程上使用最多的版本是YOLOv3和YOLOv5,Pytorch版本均由ultralytics公司开发,YOLOv5仍在进行维护,截至目前,已经更新到YOLOv5-6.1版本。 项目地址:https://github.com/ultralytics/yolov5 在上篇博文中,详细记录了如何用YOLOv5来跑通VOC2007数据集,本篇博文旨在对YOLO系列算法的演化进行简单梳理,更多详细的内容可以看文末的参考资料。
zstar
2022/09/08
2.4K0
详细解读TPH-YOLOv5 | 让目标检测任务中的小目标无处遁形
针对无人机捕获场景的目标检测是最近比较流行的一项任务。由于无人机在不同高度飞行,目标尺度变化较大,这样给模型的优化也带来了很大的负担。此外,在无人机进行高速低空飞行时,也会带来密集目标的运动模糊问题。
集智书童公众号
2021/09/18
6.5K0
详细解读TPH-YOLOv5 | 让目标检测任务中的小目标无处遁形
超越YOLOv5的PP-YOLOv2和1.3M超轻量PP-YOLO Tiny都来了!
单阶段目标检测界的扛把子 --YOLO,以其 「又快又好的效果」 在学术及产业界全面风靡。自 20 年下半年 YOLOv4、YOLOv5、PP-YOLO、YOLO-Fastest 和 YOLOv4 Tiny 等等轮番轰炸、掀起 「YOLO 狂潮」 后,时隔半年,超越 YOLOv5 的 PP-YOLOv2 和 1.3M 超超超轻量级的 PP-YOLO tiny 一起来了!!!
机器之心
2021/05/07
8520
超越YOLOv5的PP-YOLOv2和1.3M超轻量PP-YOLO Tiny都来了!
用opencv的DNN模块做Yolov5目标检测(纯干货,源码已上传Github)
最近在微信公众号里看到多篇讲解yolov5在openvino部署做目标检测文章,但是没看到过用opencv的dnn模块做yolov5目标检测的。于是,我就想着编写一套用opencv的dnn模块做yolov5目标检测的程序。在编写这套程序时,遇到的bug和解决办法,在这篇文章里讲述一下。
计算机视觉研究院
2022/01/28
2.8K0
用opencv的DNN模块做Yolov5目标检测(纯干货,源码已上传Github)
YOLOv5 实现目标检测(训练自己的数据集实现猫猫识别)
2020年6月10日,Ultralytics在github上正式发布了YOLOv5。YOLO系列可以说是单机目标检测框架中的潮流前线了,YOLOv5并不是一个单独的模型,而是一个模型家族,包括了YOLOv5s(最小)、YOLOv5m、YOLOv5l、YOLOv5x(最大)。目前v6.0版本又新增一层YOLOv5n模型,代替YOLOv5s成为最小模型,在所有模型中速度更快但精度也更低。
全栈程序员站长
2022/07/01
5.3K0
YOLOv5 实现目标检测(训练自己的数据集实现猫猫识别)
河道水面垃圾识别检测算法 yolov5
河道水面垃圾识别检测系统采用yolov5忘了模型计算机视觉技术,水面垃圾识别检测算法通过在河道的摄像头,对水面垃圾进行实时监测自动识别。近几年来,目标检测算法取得了很大的突破。比较流行的算法可以分为两类,一类是基于Region Proposal的R-CNN系算法(R-CNN,Fast R-CNN, Faster R-CNN),它们是two-stage的,需要先使用启发式方法(selective search)或者CNN网络(RPN)产生Region Proposal,然后再在Region Proposal上做分类与回归。而另一类是Yolo。
燧机科技
2023/09/05
6750
河道水面垃圾识别检测算法 yolov5
YOLOv5在最新OpenVINO 2021R02版本的部署与代码演示详解
YOLOv5在OpenVINO上的部署,网上有很多python版本的代码,但是基本都有个很内伤的问题,就是还在用pytorch的一些库做解析,C++的代码有个更大的内伤就是自定义解析解释的不是很清楚,所以本人阅读YOLOv5的pytorch代码推理部分,从原始的三个输出层解析实现了boxes, classes, nms等关键C++代码输出,实现了纯OpenVINO+OpenCV版本的YOLOv5s模型推理的代码演示。下面就是详细的系统环境与各个部分解释,以及代码实现与演示图像。
CV君
2021/01/25
9780
YOLOv5在最新OpenVINO 2021R02版本的部署与代码演示详解
深度学习实战之布匹缺陷检测
缺陷检测是工业上非常重要的一个应用,由于缺陷多种多样,传统的机器视觉算法很难做到对缺陷特征完整的建模和迁移,复用性不大,要求区分工况,这会浪费大量的人力成本。深度学习在特征提取和定位上取得了非常好的效果,越来越多的学者和工程人员开始将深度学习算法引入到缺陷检测领域中。
用户1621951
2021/07/15
3.6K1
深度学习实战之布匹缺陷检测
推荐阅读
相关推荐
YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍 !!
更多 >
交个朋友
加入架构与运维学习入门群
系统架构设计入门 运维体系构建指南
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
加入前端学习入门群
前端基础系统教学 经验分享避坑指南
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档