基于YOLO11的工件缺陷检测系统(Python源码+数据集+Pyside6界面)

 💡💡💡本文摘要:基于YOLO11的工件表面缺陷智能检测系统,阐述了整个数据制作和训练可视化过程

  博主简介

AI小怪兽,YOLO骨灰级玩家,1)YOLOv5、v7、v8、v9、v10、11优化创新,轻松涨点和模型轻量化;2)目标检测、语义分割、OCR、分类等技术孵化,赋能智能制造,工业项目落地经验丰富;

 1.YOLO11介绍

Ultralytics YOLO11是一款尖端的、最先进的模型,它在之前YOLO版本成功的基础上进行了构建,并引入了新功能和改进,以进一步提升性能和灵活性。YOLO11设计快速、准确且易于使用,使其成为各种物体检测和跟踪、实例分割、图像分类以及姿态估计任务的绝佳选择。

结构图如下:

1.1 C3k2

C3k2,结构图如下

C3k2,继承自类C2f,其中通过c3k设置False或者Ture来决定选择使用C3k还是Bottleneck

实现代码ultralytics/nn/modules/block.py

1.2 C2PSA介绍

借鉴V10 PSA结构,实现了C2PSA和C2fPSA,最终选择了基于C2的C2PSA(可能涨点更好?)

实现代码ultralytics/nn/modules/block.py

1.3 11 Detect介绍

分类检测头引入了DWConv(更加轻量级,为后续二次创新提供了改进点),结构图如下(和V8的区别):

实现代码ultralytics/nn/modules/head.py 

2.如何训练工件缺陷数据集

2.1 工件缺陷数据集介绍

工件数据集大小1400张,缺陷类型一共四种:zhen_kong、ca_shang、 zang_wu、 zhe_zhou

(针孔、擦伤、脏污、褶皱)

标签可视化分析

 

2.2 超参数修改

位置如下default.yaml

2.3 配置aluminum.yaml

ps:建议填写绝对路径

train: D:/YOLOv11/data/aluminum/train.txt
val: D:/YOLOv11/data/aluminum/val.txt

# number of classes
nc: 4

# class names
names: ["zhen_kong","ca_shang","zang_wu","zhe_zhou"]

2.4  如何训练

import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('ultralytics/cfg/models/11/yolo11.yaml')
    model.train(data='data/aluminum.yaml',
                cache=False,
                imgsz=640,
                epochs=200,
                batch=8,
                close_mosaic=10,
                device='0',
                optimizer='SGD', # using SGD
                project='runs/train',
                name='exp',
                )

2.5 训练结果可视化结果

YOLO11n summary (fused): 238 layers, 2,582,932 parameters, 0 gradients, 6.3 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 11/11 [00:08<00:00,  1.27it/s]
                   all        336        822      0.961      0.964      0.974      0.574
             zhen_kong        121        180      0.948       0.95      0.948      0.353
              ca_shang        161        241      0.912      0.907      0.956      0.559
               zang_wu        225        307      0.999          1      0.995      0.667
              zhe_zhou         94         94      0.983          1      0.995      0.714

预测结果:

3. 工件缺陷智能检测系统设计

3.1 PySide6介绍

        受益于人工智能的崛起,Python语言几乎以压倒性优势在众多编程语言中异军突起,成为AI时代的首选语言。在很多情况下,我们想要以图形化方式将我们的人工智能算法打包提供给用户使用,这时候选择以python为主的GUI框架就非常合适了。

        PySide是Qt公司的产品,PyQt是第三方公司的产品,二者用法基本相同,不过在使用协议上却有很大差别。PySide可以在LGPL协议下使用,PyQt则在GPL协议下使用。

        PySide目前常见的有两个版本:PySide2和PySide6。PySide2由C++版的Qt5开发而来.,而PySide6对应的则是C++版的Qt6。从PySide6开始,PySide的命名也会与Qt的大版本号保持一致,不会再出现类似PySide2对应Qt5这种容易混淆的情况。

3.2 安装PySide6

pip install --upgrade pip
pip install pyside6 -i https://mirror.baidu.com/pypi/simple

基于PySide6开发GUI程序包含下面三个基本步骤:

  • 设计GUI,图形化拖拽或手撸;
  • 响应UI的操作(如点击按钮、输入数据、服务器更新),使用信号与Slot连接界面和业务;
  • 打包发布;

3.3 工件缺陷检测系统设计

### 车辆零部件表面缺陷视觉检测方法与系统 车辆零部件表面缺陷视觉检测是一项复杂而重要的任务,旨在确保产品质量和安全性。此过程通常涉及以下几个关键技术环节: #### 图像采集 为了获取高质量的图像数据用于后续分析,需要采用高分辨率摄像头对目标物体进行拍摄。对于汽车零件而言,由于其形状各异且可能存在反射面等问题,在布置光源时应特别注意减少阴影干扰以及避免镜面反射影响成像质量[^1]。 #### 特征提取 一旦获得了清晰完整的图片之后,则要利用计算机算法从中抽取有用的特征信息作为判断依据。传统方式下可能会基于边缘轮廓、纹理特性等方面来进行描述;然而随着深度学习技术的发展,卷积神经网络(CNNs)已被证明能够更加高效准确地完成这项工作。例如,通过训练特定的数据集可以让模型学会区分正常状态下的金属光泽同瑕疵造成的暗斑之间的差异[^2]。 #### 缺陷分类判定 当所有必要的参数都被成功解析出来以后,下一步便是将其输入到预设好的决策树或者支持向量机当中去评估是否存在任何不符合标准的情况发生。值得注意的是,某些情况下可能还需要考虑环境因素所带来的不确定性——比如温度变化引起材料膨胀收缩而导致轻微形变等现象,并据此调整阈值范围以提高容错率[^3]。 #### 结果反馈控制 最后一步则是把最终结论传达给生产线上的操作人员或是直接连接至自动化设备上实施即时修正措施。这不仅有助于加快整个流程的速度同时也减少了人为失误的可能性。此外,还可以建立长期跟踪记录以便日后查询参考之用[^4]。 ```python import cv2 from sklearn import svm import numpy as np def load_image(file_path): img = cv2.imread(file_path,0) return img def preprocess(img): # 预处理函数,如灰度转换、噪声去除等 processed_img = ... # 对img做相应变换 return processed_img def extract_features(processed_img): # 提取特征函数,这里简化为返回随机数模拟实际操作 features = np.random.rand(10) return features def classify(features): clf = svm.SVC() X_train = [...] # 训练样本特征集合 y_train = [...] # 训练标签列表 clf.fit(X_train,y_train) prediction = clf.predict([features]) return 'Defective' if prediction==1 else 'Normal' if __name__=='__main__': file_name='part_surface.jpg' image=load_image(file_name) preprocessed_image=preprocess(image) feature_vector=extract_features(preprocessed_image) result=classify(feature_vector) print(f'The part is {result}.') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值