基于yolov8的钢材瑕疵检测系统 实验使用采用东北大学团队制作的钢材缺陷检测数据集 NEU-DET。 该数据集共有 1800 张图片包括开裂(Crazing, Cr)、夹杂物(Inclusion, In)、斑点(Patches, Pa)、点蚀表面(Pitted_Surface, PS)、轧制氧化皮(Rolled-in_Scale, RS)、划痕(Scratches, Sc)等 6 种不同的缺陷。 检测数据集包含YOLO txt格式。 图片数量如下: train(1440张) val(360张) 项目采用yolov8s进行训练设计了简单的界面可直接检测。 质量保证钢材表面缺陷检测是工业生产中的关键环节。这次我们基于YOLOv8s模型搭建了一套轻量级检测系统直接吃东北大学的NEU-DET数据集。先看这个数据集的脾气——6类缺陷总共1800张图裂痕、夹杂这些典型缺陷都齐活典型的工业小样本场景。数据目录结构长得挺标准NEU-DET ├── images │ ├── train │ └── val └── labels ├── train └── val但要注意标注文件里类别索引是从0开始计数的这在训练时容易埋雷。咱们得专门写个yaml配置文件path: ../NEU-DET train: images/train val: images/val names: 0: Cr 1: In 2: Pa 3: PS 4: RS 5: Sc训练命令比做菜还简单from ultralytics import YOLO model YOLO(yolov8s.yaml).load(yolov8s.pt) results model.train( datadata/neu-det.yaml, epochs100, imgsz640, batch16, device0 )这里有个小技巧——用预训练权重暖个场别被100个epoch吓到实际在3090上20分钟就跑完。训练完看指标mAP50-95在验证集冲到89.2%对小样本来说够用了。基于yolov8的钢材瑕疵检测系统 实验使用采用东北大学团队制作的钢材缺陷检测数据集 NEU-DET。 该数据集共有 1800 张图片包括开裂(Crazing, Cr)、夹杂物(Inclusion, In)、斑点(Patches, Pa)、点蚀表面(Pitted_Surface, PS)、轧制氧化皮(Rolled-in_Scale, RS)、划痕(Scratches, Sc)等 6 种不同的缺陷。 检测数据集包含YOLO txt格式。 图片数量如下: train(1440张) val(360张) 项目采用yolov8s进行训练设计了简单的界面可直接检测。 质量保证推理代码更带劲三行搞定检测model YOLO(best.pt) results model.predict(test.jpg, conf0.5) results[0].save(result.jpg)但实际部署时得加戏比如这个置信度阈值调节# 动态调整阈值 def adaptive_conf(cls_id): base_conf 0.5 if cls_id in [0,5]: # 裂纹和划痕类 return base_conf - 0.1 # 降低阈值 return base_conf 0.1 # 其他类别提高界面设计用Gradio快速搭个架子import gradio as gr with gr.Blocks() as demo: with gr.Row(): upload gr.Image(typefilepath) output gr.Image() with gr.Row(): gr.Examples(examples[test1.jpg,test2.jpg]) def detect(img_path): results model.predict(img_path) return results[0].plot() upload.change(detect, upload, output) demo.launch(server_port7860)跑起来就是个带示例图的网页应用产线老师傅也能玩得转。实测在1660Ti显卡上单张推理速度稳定在45ms左右完全够实时检测用。质量把控这块除了常规的测试集验证还建议导出ONNX格式时加上NMS层对误检样本做硬挖掘(hard mining)部署时用TensorRT加速到15ms以内最后说个实战经验——遇到扎堆的小瑕疵时把输入分辨率从640提到1280虽然速度掉到80ms但划痕检出率能涨7个百分点。具体怎么选看你产线是更看重速度还是精度了。