基于YOLOv5的手机顶盖焊缺陷检测系统

news/2024/7/10 23:34:16 标签: YOLO, 深度学习, 人工智能, 算法, 目标检测

 💡💡💡本文主要内容:详细介绍了工业手机顶盖焊缺陷测整个过程,从数据集到训练模型到结果可视化分析。

                                                               博主简介

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

 预测结果:

关注下方名片,即可获取源码。 


http://www.niftyadmin.cn/n/5427467.html

相关文章

C#使用TreeView控件实现的二叉树泛型节点类 BinaryTreeNode<T>泛型二叉树类BinaryTree<T>及其方法

目录 一、涉及到的知识点 1.TreeView控件 &#xff08;1&#xff09;添加 TreeView 控件到 Form: &#xff08;2&#xff09;添加节点: &#xff08;3&#xff09;为节点添加文本和图像: &#xff08;4&#xff09;事件处理: &#xff08;5&#xff09;自定义外观和行为…

计算机网络-第六章 应用层(1)

主要内容&#xff1a;域名系统DNS、万维网和http协议、电子邮件及SMTP/POP3/IMAP协议、动态主机配置、网络管理、系统调用和应用程序编程接口、P2P应用 前言 不同网络应用的应用进程还需要不同的通信规则&#xff0c;在运输层之上&#xff0c;需要有应用层协议。 每个应用进…

案例分析篇09:Web架构设计相关20个考点(7~11)(2024年软考高级系统架构设计师冲刺知识点总结)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

UE5蓝图联机 客户端修改值后,服务器未得知值已修改

修改变量的“复制”属性要选择以下这个。 目的是确保游戏状态中客户端和服务器已同步。 参考资料&#xff1a; 在Unreal Engine中&#xff0c;"复制"&#xff08;Replication&#xff09;是指确保游戏状态在网络中的多个客户端和服务器之间保持同步的过程。当你在游…

【GO语言卵细胞级别教程】10.探索Go语言中神奇的Map类型:解密键值对的魔力(含习题)

【GO语言卵细胞级别教程】10.探索Go语言中神奇的Map类型&#xff1a;解密键值对的魔力&#xff08;含习题&#xff09; 文章目录 【GO语言卵细胞级别教程】10.探索Go语言中神奇的Map类型&#xff1a;解密键值对的魔力&#xff08;含习题&#xff09;1.简介2. 基本语法3.Map基本…

最新CLion + STM32 + CubeMX 开发环境搭建

网上有不少相关教程&#xff0c;但都是基于老版本Clion&#xff0c;新版有一些改变&#xff0c;但整体是简单了。 PS&#xff1a;本教程基于CLion 2023.3.4 安装所需工具参考&#xff1a;Clion搭建stm32开发环境&#xff08;STM32F103C8T6&#xff09;&#xff0c;有这一篇就够…

贪心算法(算法竞赛、蓝桥杯)--线段覆盖

1、B站视频链接&#xff1a;A29 贪心算法 P1803 线段覆盖_哔哩哔哩_bilibili 题目链接&#xff1a;凌乱的yyy / 线段覆盖 - 洛谷 #include <bits/stdc.h> using namespace std;struct line{int l,r;bool operator<(line &b){return r<b.r;//重载小于号,按右端…

2024年轻量应用服务器_腾讯云轻量服务器介绍_轻量使用教程

腾讯云轻量应用服务器开箱即用、运维简单的轻量级云服务器&#xff0c;CPU内存带宽配置高并且价格特别便宜&#xff0c;大带宽&#xff0c;但是限制月流量&#xff0c;轻量2核2G3M带宽61元一年、2核2G4M优惠价99元一年&#xff0c;540元三年、2核4G5M带宽165元一年&#xff0c;…