1. 为什么焊接缺陷检测是值得做的毕业设计:从选题价值到技术选型
如果你正在为毕业设计题目发愁,焊接缺陷检测识别系统是一个相当合适的方向。焊接质量检测在压力容器、船舶、管道、汽车制造等行业都有真实需求,不是纸上谈兵的样子工程。用目标检测模型去识别焊缝图像里的气孔、夹渣、未熔合、裂纹等缺陷,既有学术包装空间,又有落地场景,答辩时也好讲故事。
这几年我陆陆续续带过几届学生做类似的课题,包括某高校一个同学的模拟项目X,走的都是“YOLOv11 + 自制数据集 + 网页演示 + 毕业论文”这条路线。从最终效果看,绝大多数人都能跑出一个像样的Demo,只是中间踩坑的路数各不相同。这篇文章就把从课题定位、数据准备、模型训练、系统集成到论文写作的完整链路拆开讲一遍,尤其把那些文档里不会写清楚的细节拿出来说。
先说为什么选YOLOv11。很多学生一开始会纠结:用传统图像处理不行吗?用Faster R-CNN是不是更稳妥?我的看法很直接:传统方法对焊接缺陷这种纹理复杂、目标小、对比度低的场景几乎没法做泛化,因为缺陷的形态、位置、明暗变化太大,规则写不过来;Faster R-CNN精度虽然不错,但推理速度慢、部署麻烦、训练调试也更折腾。YOLO系列在精度和速度之间平衡得最好,官方文档全、社区案例多、预训练权重丰富,对毕设周期来说是最不会翻车的选择。
YOLOv11这个命名需要稍微说明一下:官方仓库里写作YOLO11,大家习惯叫YOLOv11,意思一样。它继承了YOLOv8的工程化优势,增加了更灵活的网络结构设计,在检测小目标和遮挡场景上有改进。焊接缺陷图像往往是小目标密集出现,比如一簇飞溅、一串气孔,YOLOv11的这些特性正好能派上用场。
当然,选型再正确,也只是起点。真正的分水岭在于数据、训练细节和系统的完整度。下面按项目推进顺序来讲,每部分都是可以直接照着操作的程度。
2. 焊接缺陷分类与数据集准备的学问:这一步没做好,后面全是白费
很多人的毕设失败不是死在模型上,而是死在数据集上。焊接缺陷不像猫猫狗狗那样随手能搜到一堆图,它的图像获取门槛高、标注成本大,而且缺陷类别之间的外观差异很微妙。先把“要检测什么”这件事彻底搞清楚,再动手收集和标注。
2.1 常见的焊接缺陷类别与检测难点
按焊接工艺标准,缺陷大致可以分为形状缺陷、气孔、夹渣、未熔合、未焊透、裂纹、飞溅等。毕设系统不需要把所有类别都做全,选六类以内比较合理,类别太多会大幅增加标注和训练难度。
我建议学生优先做下面这几类,它们在X射线底片、高清工业相机图像、甚至手机翻拍的焊缝照片里都有辨识度:
| 缺陷类别 | 外观特征 | 检测难点 |
|---|---|---|
| 气孔 | 圆形或椭圆形暗斑,内部较均匀 | 小目标,容易与噪声混淆 |
| 夹渣 | 不规则块状亮/暗区域,边界粗糙 | 形态差异大,同一类内不统一 |
| 未熔合 | 沿熔合线分布的细长暗线 | 细长形目标,长宽比极端 |
| 裂纹 | 不连续或连续细线,常有分叉 | 对比度低,线状特征容易被忽略 |
| 咬边 | 焊缝边缘凹陷形成的沟槽 | 和背景纹理接近,边界模糊 |
| 飞溅 | 离散的球状或尖刺状小点 | 数量多、尺寸极小、容易漏检 |
类别表做出来以后,你论文里的“问题分析”章节就有着落了。每个类别都可以写一段特征分析,说明为什么传统边缘检测、阈值分割搞不定它,而深度模型能学到多层级特征。
2.2 图像数据从哪来:公网收集、现场拍摄与模拟生成
焊接缺陷数据集的来源主要有三条路,我建议三条同时用。
第一,公开数据集。网上能找到一些焊接X射线图像集、表面缺陷图像集,某高校、某实验室发布的研究用数据集也在其列。注意看授权说明和引用要求,论文里要规范引用来源。这类数据的好处是类别标注往往已经做好,坏处是图像风格和你后面实际使用的场景未必一致。
第二,现场拍摄。如果条件允许,去实训车间或合作工厂拍真实焊缝。拍的时候尽量固定相机角度、光源和拍摄距离,让图像背景相对统一。这种做法在毕业答辩里非常加分,因为你可以强调“基于实际生产环境采集的数据”。
第三,数据增强和合成。当真实缺陷图像不足时,可以用裁剪、旋转、亮度变化、加入噪声等方式扩充。也可以先拍一批无缺陷焊缝图像,把已有缺陷小图用“粘贴合成”的方式放进背景图里,生成新的训练样本。这种方法不完美,但足以让模型先跑起来。
关于数据量,我的经验是:每类缺陷至少200到300个标注实例,总图片数500到1500张,就能支撑一篇毕设论文。如果有人跟你说必须要几万张图才能做目标检测,那是没做过实际项目。小数据集配合预训练权重、合理增强和交叉验证,一样能拿得出手。
2.3 标注工具与标注规范:标签文件的坑比想象中多
标注推荐两个工具:一个是LabelImg,轻量、适合小数据集;另一个是Label Studio,支持多种标注类型、多人协作、导出格式丰富。导出时统一转成YOLO格式,即每张图对应一个txt文件,每行是“类别id 中心x 中心y 宽 高”,坐标全部归一化到0到1之间。
标注环节有四个高频错误,几乎每届学生都会踩:
一是框太紧或太松。紧贴目标边缘,不要留大面积背景,也不要截掉缺陷本身。YOLO的锚框学习对标注框质量很敏感,框太松会让预测框波动很大。
二是漏标小目标。小飞溅、小气孔因为看不清,容易被一带而过。漏标对训练的影响不只是少一个样本,还会让模型把那个位置当作负样本学习,下次见到同类目标反而不敢检。
三是类别混淆。同一张图里夹渣和未熔合同时出现时,标注员容易标错。建议标注前先做一套规范说明图,类别之间加了哪些判定规则要写清楚。
四是标签文件和图片对不上。图片改名、移动目录后,txt和jpg不同名,训练时模型会报错或直接忽略。建议所有图片统一命名规则,比如weld_0001.jpg对应weld_0001.txt,不要用中文名和特殊符号。
2.4 数据增强不是越多越好:要贴合焊接场景
YOLOv11训练时默认会开一些增强,包括随机翻转、马赛克增强、HSV色域扰动等。很多同学喜欢把增强参数拉满,结果训练半天loss降不下去,原因是增强过头,把真实缺陷的形态扭曲得不认识了。
焊接缺陷图像有自己的特殊性:缺陷多为灰度变化不明显的暗色区域,旋转90度、随机透视这种强增强容易破坏缺陷的长条形态,比如裂纹旋转后就不再像裂纹。建议保留水平翻转、小幅旋转(±10度以内),关闭或调低马赛克增强,因为焊接缺陷本身很多是小目标,马赛克增强会把目标进一步缩小,反而更难学。
另外可以做一个特别适合焊接场景的增强:亮度对比度扰动。X射线底片翻拍图的光照变化很大,通过随机Gamma变换模拟不同曝光,能有效提升模型在真实图像上的稳健性。这一步在论文实验里可以作为一组消融实验来写:加这个增强比不加提升多少mAP,数字一出来,论文实验章节立刻显得充实。
3. YOLOv11训练全流程:从环境搭建到跑通第一个模型的完整记录
训练阶段是毕设过程中事故率最高的阶段,不是环境装不上,就是训练到一半显存爆掉,再不然就是精度奇低不知道该调什么。下面直接把完整流程捋一遍。
3.1 环境安装:Python、PyTorch与Ultralytics的版本匹配
先说明,YOLOv11由Ultralytics提供实现,基础环境要求并不高。推荐配置是Python 3.8到3.11之间,PyTorch 2.0以上,CUDA 11.8或12.1。如果你用官方镜像,安装步骤可以压缩成两条命令:
pip install ultralytics pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121第一个pip安装的是整个YOLO训练推理工具链,包括数据集处理、训练、导出、命令行接口;第二个装的是带CUDA加速的PyTorch。如果本机没有NVIDIA显卡,或者显存不够,直接使用云端的GPU环境或Colab即可,小规模训练完全够用。
安装完可以用一行命令验证环境是否正常:
python -c "import torch; print(torch.cuda.is_available())"输出True说明能用到GPU,输出False就得回头查显卡驱动和CUDA版本。这一步我见过无数人卡住,绝大多数原因是PyTorch装的是CPU版本,或者驱动太老。记住一个原则:先装显卡驱动,再装CUDA toolkit,最后装PyTorch,顺序反了很容易出问题。
3.2 数据集目录结构:严格按照YOLO规范摆放
统一数据格式能让你少骂三天街。建议按下面的目录结构组织:
datasets/ └── weld_defect/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── weld.yaml其中images和labels下的文件名必须一一对应。划分比例建议训练集:验证集:测试集=7:2:1,并且划分时保证每类缺陷在各个子集里的占比大致一致。不要用随机划分了事,因为焊接缺陷图像往往有较强的场景连续性,同一批料、同一光照条件下的图像全部进训练集,验证集就失去意义。
3.3 数据配置文件weld.yaml:几个容易忽略的字段
weld.yaml是训练入口,最简版本如下:
path: datasets/weld_defect train: images/train val: images/val test: images/test nc: 6 names: ['porosity', 'slag', 'lack_of_fusion', 'crack', 'undercut', 'spatter']这里最容易翻车的是path路径。训练时如果不加绝对路径,YOLO会沿着当前工作目录去找,一旦你在别的目录下启动训练就会报错“dataset not found”。建议直接用绝对路径,或者训练命令里加data=完整的绝对路径。另外nc必须是整数,names的顺序要和标注脚本里设置的类别id对应,否则会出现“类别名字看起来对但检测结果错位”的诡异问题。
3.4 训练命令与关键参数:每一个参数都值得了解
基础训练命令如下:
yolo detect train \ data=/home/user/datasets/weld_defect/weld.yaml \ model=yolo11n.pt \ epochs=150 \ imgsz=640 \ batch=16 \ device=0 \ project=runs/weld \ name=exp_baseline逐个拆开解释,这些参数答辩时老师真的会问:
- model=yolo11n.pt:加载预训练权重。n代表nano版本,适合小数据集和资源受限场景;s、m、l、x版本参数量和精度依次提升。毕设时间充裕的可以先跑nano验证流程,再用yolo11m.pt做最终模型。
- epochs:150轮在几百张图的小数据集上是合理配置。别迷信“SGD要训练几百轮才收敛”,小数据集用150到200轮足够。
- imgsz:训练图像缩放尺寸。640是默认值,对焊接小目标来说,调到800甚至960能直接改善小目标召回率,代价是显存占用翻倍和训练变慢。
- batch:受显存限制。16G显存跑yolo11n、imgsz=640,batch开到16没问题;显存不够就降batch,同时适当降低学习率。
- device=0:指定GPU编号;CPU环境不写device或写cpu,但速度会非常慢。
如果你要复现别人的结果,训练命令里还有几个增强相关参数值得注意,比如close_mosaic、degrees、translate、scale、fliplr。调试阶段可以先用默认配置跑,等精度遇到瓶颈时再动增强。
3.5 训练过程中的日志怎么看:不是等训练完才关注
训练时终端会输出每轮的box_loss、cls_loss、dfl_loss、precision、recall、mAP50、mAP50-95。很多学生完全不看过程,等150轮跑完发现mAP只有0.2,再来问怎么办,那就太浪费时间了。
正确的做法是前20轮就看趋势。如果box_loss持续下降,mAP50稳步上升,说明模型在正常学习。如果loss一路跳来跳去且mAP一直为零,多半是标签文件错误或数据集划分出了问题,需要立刻停止排查。如果训练前50轮mAP不错,后面反而下降,说明过拟合开始出现,应该提前停。YOLO内部其实会保留最好权重,但如果能自己盯着曲线做判断,调优速度会快很多。
训练完成后,预测单张图的命令是:
yolo detect predict \ model=runs/weld/exp_baseline/weights/best.pt \ source=/path/to/test_image.jpg \ conf=0.25 \ save=Trueconf是置信度阈值。焊接缺陷检测做完后我一般会让文章的阈值设在0.3到0.5之间,原因后面评估部分再展开。
4. 评估指标与针对性调优:把mAP从0.5提升到0.8的可行路径
如果第一次训练mAP50只有0.5左右,别慌,这在焊接缺陷场景里属于正常水平。小目标、低对比度、类别多样,能一次到位才是意外。关键是要读懂指标,然后照着正确方向调。
4.1 mAP、Precision、Recall分别意味着什么
目标检测的评估里,预测框和真实框的重合度用IoU衡量,一般IoU大于0.5算一个正确检出(TP)。Precision是“检出来的框里有多少是对的”,Recall是“真实缺陷里有多少被检出来了”。mAP50指IoU阈值0.5下的平均精度均值,mAP50-95则是把IoU阈值从0.5逐步提高到0.95再取平均,要求更严格。
对焊接缺陷检测来说,我更推荐优先看Recall和mAP50。因为缺陷漏检在工业场景里比误检严重得多:一个漏检的裂纹可能造成工件报废甚至安全事故。所以调优目标应该是“在保证精度不被拖垮的前提下,尽可能提高召回率”。
4.2 从训练曲线和验证结果定位问题
训练结束后一定要打开result曲线图,结合验证集预测图一起看。常见的病征和病因如下:
- mAP50高但mAP50-95很低:预测框和真实框重合度不够,框的位置和大小不够精准。可以调高imgsz,或者更换更大模型。
- Recall低、Precision高:模型过于保守,不敢预测。应降低conf阈值,或者增加容易漏检类别的样本量。
- Precision低、Recall高:模型乱预测,常见于背景相似、负样本不足。需要增加不含缺陷的负样本图像,或在论文实验里专门分析误检原因。
- 某一类mAP明显低于其他类:类别样本不平衡。优先针对这类做数据增强,或采样复制。
- 预测图里缺陷被检出但框明显偏大:标注框本身就偏大,回去修标注,重训。
4.3 一版更比一版高的调优方案表
我自己带学生时,会把调优过程做成一张表,每一行对应一次实验,论文里的消融实验直接就用这张表:
| 实验编号 | 修改内容 | mAP50 | 说明 |
|---|---|---|---|
| 1 | yolo11n,imgsz=640,默认增强 | 0.51 | 基线 |
| 2 | 增加亮度对比度增强 | 0.58 | 更贴合成像条件 |
| 3 | imgsz从640提高到800 | 0.62 | 小目标改善明显 |
| 4 | yolo11s替代nano | 0.66 | 参数量增大收益 |
| 5 | 补充负样本图像 | 0.69 | 降低误检 |
| 6 | 调低conf阈值到0.3 | 0.70 | 提升召回 |
这里每次只动一个变量,确保能写出每个操作对效果的影响。答辩老师最喜欢问的就是“你为什么做这个改进”,有这张实验记录表,就能给出清晰、有逻辑的回答。
4.4 小目标检测的进阶手段:切图与推理时增强
如果你的数据里飞溅、气孔这类小目标特别多,常规训练还是不够,可以考虑两个进阶方案。
第一个是切图训练。把原始大图按512或640的窗口切成多块,每块独立训练和推理,最后把结果映射回原图坐标。切图后小目标的相对尺寸变大,模型更容易学习到特征。这个方法在焊接X射线检测项目里非常常见。
第二个是推理时多尺度测试。预测时同时用0.8倍、1.0倍、1.2倍三个尺度缩放图像,对结果做融合。OpenMMLab系列工具里叫TTA,Ultralytics里也可以开启。该方法能稳定提升mAP1到2个百分点,代价是推理时间变长。毕设论文里作为“系统优化”章节去写,效果很好。
5. 把模型变成能演示的完整系统:Web页面、实时摄像与批处理
很多毕设只交一个训练好的模型权重,到答辩时现场跑一张图就完事。这可不行,焊接缺陷检测识别系统的落点是一个“系统”,要求有界面、有交互、能展示完整业务流程。下面给出一套成本最低但效果最好的实现组合。
5.1 用Streamlit搭建Web演示页面
Streamlit是纯Python写的Web应用框架,你不需要学前端,就能把模型预测功能包装成网页。一个标准的页面应该包含三个区域:左上角上传图片或选择测试文件,中间区域展示检测结果图,右侧栏显示每类缺陷的统计信息,比如“检测到气孔3个、夹渣1个,平均置信度0.87”。
页面核心代码逻辑如下:
import streamlit as st from ultralytics import YOLO model = YOLO("runs/weld/exp_best/weights/best.pt") uploaded_file = st.file_uploader("上传焊缝图像", type=["jpg", "png", "bmp"]) if uploaded_file is not None: results = model.predict(uploaded_file, conf=0.25, imgsz=640) annotated = results[0].plot() st.image(annotated, caption="检测结果", use_column_width=True)这段代码能跑通就够用。如果你想让界面更像生产系统,再加历史记录、检测结果导出CSV、文件批量处理这三个功能。批量处理在毕设答辩现场演示时尤其加分,因为你可以一次拖入几十张测试图,系统自动完成检测并生成一张汇总表。
5.2 摄像头实时检测:焊接场景的另一种玩法
有些毕设要求系统支持实时检测,也就是对着焊接过程的视频流做逐帧识别。YOLOv11在GPU上跑640分辨率的推理速度能到几十毫秒一帧,实时性完全没问题。实现也简单:
import cv2 from ultralytics import YOLO model = YOLO("best.pt") cap = cv2.VideoCapture(0) while cap.isOpened(): ret, frame = cap.read() if not ret: break results = model.predict(frame, conf=0.25, imgsz=640) annotated = results[0].plot() cv2.imshow("Weld Defect Detection", annotated) if cv2.waitKey(1) & 0xFF == ord("q"): break需要留意的是,真实焊接过程会产生强烈弧光和飞溅,普通摄像头很难拍清楚缺陷。所以实时检测演示更适合用录制好的焊接视频来做“准实时”检测,也就是读视频文件逐帧处理,而不是真的接工业相机。论文里如实写“完成了视频流实时检测的验证”,不要去编造现场实测数据。
5.3 系统架构图与演示流程设计
系统架构可以从三个层面去写:数据层(图片/视频输入)、模型层(YOLOv11检测与后处理)、应用层(Web界面和报告输出)。画图时不要用特别花哨的架构图,简洁清晰的方框层级图最稳妥,答辩老师一眼就能看懂。
演示流程建议设计成三条线:单张图片检测、批量图片检测、视频文件检测。每条线演示时间控制在1分钟以内,总共5分钟基本能把系统全貌讲完。现场如果网络不好,所有演示文件一定要提前缓存到本地,模型预热后再开始推理,避免第一张图卡顿。
6. 论文结构安排:为什么很多毕设论文被批“像说明书”
同样是代码跑通了的项目,有人论文拿优秀,有人被批“工作量不足、没有深度”,差距往往在论文结构和论证逻辑上。焊接缺陷检测系统的论文大体可以按六章来写,但每章的重点和写法有讲究。
6.1 摘要与绪论:要在前三页抓住评审老师
摘要不是把正文章节复述一遍,而是要提炼出“针对什么问题、用了什么方法、达到什么效果”。建议结构是:一句焊接缺陷检测的背景和意义,一句现有方法的局限性,一句本文方法的创新点,三到五句实验设置和核心结果,最后一句总结价值。
绪论部分最容易犯的病是通篇引用CV经典论文、YOLO演进史写了一大堆,却和焊接缺陷本身毫无关联。正确写法是:先花一页讲焊接工艺为什么会产生缺陷、人工检测的痛点在哪里,然后引出机器视觉、深度学习方法的必要性。引用深度模型文献时,重点说明它们在工业缺陷检测上的适用性,而不是把注意力机制默写一遍。
6.2 相关技术介绍:别写成API文档
这一章很多学生喜欢把TensorFlow、PyTorch、OpenCV、YOLOv11各写一节,加起来就是几十页,去答辩一问三不知。我的建议是只写四个模块:目标检测任务定义,YOLO系列的核心思想,YOLOv11的模型结构概览,以及评价指标定义。每个模块控制在两页以内,重点是让评审老师觉得你真的理解这些技术,而不是名词堆砌。
YOLOv11的原理部分不需要画特别复杂的网络结构图,能够说清楚主干网络提取特征、颈部网络融合多尺度特征、检测头输出类别和边界框这条主线就够了。对普通本科生毕设,模型内部每一个C2PSA模块的细节属于加分项,不是必选项,不要硬讲自己都不懂的部分。
6.3 系统设计与实验章节:用数据说话
系统设计章节要给出完整的数据流:图像输入后经过预处理、缩放、模型推理、非极大值抑制、置信度过滤、结果可视化。每个环节都要说明参数选择,比如imgsz为什么取800,conf阈值为什么取0.3。
实验章节必须有至少四类内容:数据集描述,包括图片数量、类别分布、划分方式;训练配置,包括轮数、batch、优化器和学习率;结果分析,包括训练曲线、mAP表、各类别AP和典型预测图;对比实验,包括YOLOv5/v8/v11或不同模型规模的对比。最后一定要挑一张包含多个缺陷的复杂图,展示模型同时检出气孔、夹渣和裂纹的效果,这样的图在答辩现场最吸睛。
6.4 图表规范与文献引用:细节决定印象分
截图一定要重新标注,不要直接拿训练日志里的乱码截图。所有曲线图的横纵坐标加单位,图例清晰,图像分辨率要够高。预测结果图不能用Ctrl+S截屏了事,最好用程序保存带框标注的原分辨率图,这样放大细节仍然清晰。
文献引用不要只引深度学习三巨头,要找到焊接检测领域的专门文献,哪怕只有三五篇,也能说明你确实调研了该方向。引用格式统一,正文里不要出现“百度百科”来源。
7. 我见过最容易翻车的七个坑:每一条都是真实案例
最后这部分,写点训练之外的实战经验。这些内容是我和几届学生一路踩过来的,写在这里希望能帮你省出几周时间。
7.1 标签类别id错位,训练时还发现不了
有个同学自己做了一个四类缺陷数据集,标注时用了0、1、2、3,但names列表写成了其他顺序,训练时损失看着正常,推理时却把气孔标成夹渣。这类问题排查起来很费劲,因为模型精度并不低,只是类别对应关系乱了。建议训练完成后,一定要用包含全部类别的测试图做一次人工确认,四个类别逐一对比预测框类别是否和真实一致。
7.2 划分数据集时没有打乱,导致验证集完全失效
焊接图像经常是一批一批拍的,前200张都是同一种照明和背景。如果直接按顺序划分训练集和验证集,模型学到的是背景特征,验证集却恰好和训练集高度相似,mAP虚高到离谱。答辩时换一批现场图一测就露馅。正确做法是先对整个数据集做随机shuffle,再做分层划分,最好按拍摄批次分组,保证同一个批次的图像不要同时出现在训练集和验证集。
7.3 训练中断后从头再来,进度归零
训练到第120轮时断点续训还是很多学生不会。YOLO训练时每隔若干轮会自动保存last.pt,从断点恢复的命令很简单:
yolo detect train \ data=weld.yaml \ model=runs/weld/exp_baseline/weights/last.pt \ epochs=150 \ resume=True参数resume=True会接着上次的轮数和优化器状态继续训练。如果你只保存了best.pt,从头再来不仅浪费时间,而且最后得到的不一定比之前好。
7.4 过度追求高精度,反而拖垮了系统演示
我有一次看到一个学生把训练集加到了非常大,每个类别上千张图,模型精度确实到了0.85,但训练加调优足足花了三周,最后系统演示却因为推理太慢被老师质疑“实用性”。毕设是有时间成本的,mAP到0.7以上已经能讲出比较完整的实践故事,剩下的时间应该留给系统完善和论文写作。
7.5 所有增强都开,导致验证集也“被增强”了
YOLO的验证阶段不会做随机增强,但如果你的验证集本身是用自动增强脚本生成的数据,比如把原始图旋转复制了一遍,那验证结果就不能算数。验证集必须保持真实、原始,不能包含任何增强后的副本,否则论文里的泛化能力论证站不住脚。
7.6 答辩前一周还在改标签,风险极高
标注、训练、调优、写论文的合理时间比例应该是2:2:3:3。最后一次改标签最晚在答辩前十天完成,之后只做系统演示和论文校对。越是临近答辩越不要动模型和数据,很多学生最后一改,精度反而崩了。
7.7 忽视负样本:无缺陷区域也被当成缺陷
如果训练集里全部是含缺陷的图,模型没见过正常的焊缝长什么样,就会把纹理噪声误检为气孔。要专门收集一批无缺陷焊缝图放进数据集,类别都标空,让模型学会“没有缺陷就是没有”。这几乎是焊接缺陷检测项目里最容易被忽略、性价比最高的改进点。
8. 最后再聊几句关于毕设节奏的话
做一个焊接缺陷检测识别系统,知识栈并不高不可攀,但环节非常多。数据、代码、系统、论文四条线缺一不可,任何一个环节拖延都会牵连全局。我的建议是先花一周把整体流程完整跑通一遍,哪怕精度很低,再用两到三周集中做调优,最后两周写论文和做演示,这样心里有谱得多。
如果你正准备做这个课题,希望这篇东西能帮你少走几条弯路。找一个公开数据集先跑通,再琢磨自己的改进点,这永远是性价比最高的起步方式。等到训练曲线开始下降、缺陷一个个被框出来的那一刻,你会觉得之前所有的环境折磨和标注加班,都值了。