💡💡💡本文主要内容:详细介绍了工业手机顶盖焊缺陷测整个过程,从数据集到训练模型到结果可视化分析。
博主简介
AI小怪兽,YOLO骨灰级玩家,1)YOLOv5、v7、v8优化创新,轻松涨点和模型轻量化;2)目标检测、语义分割、OCR、分类等技术孵化,赋能智能制造,工业项目落地经验丰富;
原创自研系列, 2024年计算机视觉顶会创新点
《YOLOv8原创自研》
《YOLOv5原创自研》
《YOLOv7原创自研》
23年最火系列,内涵80+优化改进篇,涨点小能手,助力科研,好评率极高
《YOLOv8魔术师》
《YOLOv7魔术师》
《YOLOv5/YOLOv7魔术师》
《RT-DETR魔术师》
应用系列篇:
《YOLO小目标检测》
《深度学习工业缺陷检测》
《YOLOv8-Pose关键点检测》
1.手机顶盖焊缺陷检测
在焊接的后续工序中,目视进行全数检测时,不仅非常费时,同时也很难确保技能出众且有经验的检测员,可能会遗漏一些细微缺陷,出现人为失误,这是一个非常严峻的问题。此外,在使用视觉系统或传统红色激光位移传感器进行的焊接检测中,会因焊接焊炬的光或工件的漫反射光而发生误检测。
1.1 数据集介绍
数据集大小5208张,类别["LouHan","DuanHan","BaoDian","DuanXuHan","NeiCeXiaCi"]
数据集下载地址:目标检测数据集:手机顶盖焊缺陷检测数据集-CSDN博客
细节图:
2.基于YOLOv5的手机顶盖焊缺陷检测
2.1 修改TopWeld.yaml
train: ./data/TopWeld-CE09/train.txt
val: ./data/TopWeld-CE09/val.txt
# number of classes
nc: 5
# class names
names: ["LouHan","DuanHan","BaoDian","DuanXuHan","NeiCeXiaCi"]
2.2 修改train.py
def parse_opt(known=False):
parser = argparse.ArgumentParser()
parser.add_argument("--weights", type=str, default=ROOT / "weights/yolov5s.pt", help="initial weights path")
parser.add_argument("--cfg", type=str, default="models/yolov9/yolov5s.yaml", help="model.yaml path")
parser.add_argument("--data", type=str, default=ROOT / "data/TopWeld.yaml", help="dataset.yaml path")
parser.add_argument("--hyp", type=str, default=ROOT / "data/hyps/hyp.scratch-high.yaml", help="hyperparameters path")
parser.add_argument("--epochs", type=int, default=100, help="total training epochs")
parser.add_argument("--batch-size", type=int, default=16, help="total batch size for all GPUs, -1 for autobatch")
parser.add_argument("--imgsz", "--img", "--img-size", type=int, default=640, help="train, val image size (pixels)")
parser.add_argument("--rect", action="store_true", help="rectangular training")
parser.add_argument("--resume", nargs="?", const=True, default=False, help="resume most recent training")
parser.add_argument("--nosave", action="store_true", help="only save final checkpoint")
parser.add_argument("--noval", action="store_true", help="only validate final epoch")
parser.add_argument("--noautoanchor", action="store_true", help="disable AutoAnchor")
parser.add_argument("--noplots", action="store_true", help="save no plot files")
parser.add_argument("--evolve", type=int, nargs="?", const=300, help="evolve hyperparameters for x generations")
parser.add_argument(
"--evolve_population", type=str, default=ROOT / "data/hyps", help="location for loading population"
)
2.3 结果可视化分析
YOLOv5s summary: 157 layers, 7023610 parameters, 0 gradients, 15.8 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 30/30 [01:50<00:00, 3.68s/it]
all 938 2842 0.772 0.643 0.609 0.262
LouHan 938 2112 0.931 0.955 0.965 0.409
DuanHan 938 420 0.566 0.664 0.61 0.212
BaoDian 938 196 0.599 0.863 0.717 0.283
DuanXuHan 938 105 0.763 0.733 0.748 0.404
NeiCeXiaCi 938 9 1 0 0.00464 0.00165
confusion_matrix.png文件是一个混淆矩阵的可视化图像,用于展示模型在不同类别上的分类效果。混淆矩阵是一个n×n的矩阵,其中n为分类数目,矩阵的每一行代表一个真实类别,每一列代表一个预测类别,矩阵中的每一个元素表示真实类别为行对应的类别,而预测类别为列对应的类别的样本数。
PR_curve.png
PR曲线中的P代表的是precision(精准率),R代表的是recall(召回率),其代表的是精准率与召回率的关系,一般情况下,将recall设置为横坐标,precision设置为纵坐标。PR曲线下围成的面积即AP,所有类别AP平均值即Map
预测结果:
关注下方名片,即可获取源码。