ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

陶瓷盘表面缺陷检测:VOC/COCO数据集制作与YOLOv8训练实战

陶瓷盘表面缺陷检测:VOC/COCO数据集制作与YOLOv8训练实战 简介本资源是面向工业视觉检测领域的目标检测专用数据集聚焦陶瓷盘表面缺陷识别任务适用于计算机视觉初学者、算法工程师及智能制造质检方向的研究者。数据集共1400张高质量JPG图像与配套标注完整划分为训练集、验证集与测试集支持YOLOv5等主流模型快速上手训练与评估。压缩包含2000个文件其中639张JPG图像、1358份PASCAL VOC格式XML标注文件每图一标以及3份COCO格式JSON标注文件便于在不同框架间灵活切换整体体积304.7MB结构规整、开箱即用。已有204人学习下载配套作者发布的YOLOv5实战项目博文CSDN专栏链接可查提供从数据加载、模型训练到推理部署的全流程参考特别适合需要真实工业缺陷样本进行模型验证与调优的实践者。1. 项目背景与数据集价值拆解1.1 为什么陶瓷盘表面缺陷检测是个硬骨头陶瓷盘是日用陶瓷里出货量最大的品类之一从酒店餐饮到家用餐具每天产线上流转的盘子数以万计。但就是这个看似不起眼的日用品质检环节一直是最让工厂头疼的瓶颈。传统做法是人工肉眼挑选产线上一个熟练质检员一天要看几千个盘子每个盘子要在几秒内判断有没有裂纹、崩边、斑点、针孔、釉泡、落渣这些缺陷。人不是机器连续看一两个小时眼睛就花了漏检率会明显上升而且不同质检员之间标准也不统一今天这个人觉得合格的明天换个人可能就判废了。我接触过不少做陶瓷质检的项目发现一个共性问题陶瓷盘表面缺陷检测比一般工业质检要难不少。首先是釉面反光陶瓷盘子出窑后表面有一层光滑的釉在光源下会形成高光区域缺陷在强反光的背景下很容易被藏起来。其次是缺陷类型繁多而且同类缺陷的形态千差万别——裂纹有的细如发丝有的弯曲延伸斑点有的针尖大小有的成片分布崩边可能发生在口沿任意位置。这些都给目标检测算法的特征学习带来了比较大的挑战。也正是因为这个场景有真实需求、有技术难度、有明确的应用落地点我才觉得有必要把这套数据集的制作思路和训练方法完整梳理出来。这次分享的内容以陶瓷盘表面缺陷为目标检测研究对象数据同时提供VOC和COCO两种主流标注格式就是为了让做算法的人拿到手就能直接开工不用在格式适配和脚本编写上浪费时间。无论你是刚入门目标检测的学生还是在工厂摸爬滚打多年的算法工程师这份数据集和配套训练流程都能给你提供一个可以直接参考复现的完整闭环。1.2 这套数据集和市面公开数据集的差异接触过工业检测数据集的朋友都知道学术界公开的陶瓷缺陷数据集数量并不多有些还只提供单一格式的标注或者图像分辨率过低缺陷特征不清晰。工业生产场景下对数据集的要求其实比学术竞赛更苛刻一方面要保证缺陷样本的真实性和多样性另一方面要确保标注的精度足够支撑实际产线的漏检率控制。这套陶瓷盘表面缺陷数据集在设计时主要从三个维度做了考量。第一个维度是缺陷类型的覆盖度把陶瓷盘表面常见的几类缺陷都纳入了检测范围包括裂纹、崩边、斑点、针孔、釉泡、落渣等确保训练出来的模型能够应对产线绝大多数情况。第二个维度是场景仿真度图像采集尽量在模拟产线环形光源的条件下进行还原真实工况下的光照、角度和背景干扰避免训练集和测试集两张皮。第三个维度是格式兼容性同一份数据同时产出VOC和COCO两种标注算法工程师想用哪个框架、哪种工具链都可以直接对接不需要额外写转换脚本。我一直认为工业视觉项目的成败七成在数据和标注三成在算法和调参。这套数据集在这七成的部分下了不少功夫后面的章节我会从格式解析、数据制作、模型训练到问题排查完整走一遍这套流程让大家既能理解数据格式里每个字段的含义也能照着步骤自己做出同级别的工业检测数据集。2. VOC与COCO两种标注格式的深度解析2.1 VOC标注格式的内部结构VOC格式源自PASCAL VOC目标检测竞赛它的组织方式非常直观每个图像文件对应一个同名的XML标注文件标注文件里把所有目标的类别和边界框信息用树状结构组织起来。我做数据集的时候把目录规范成了这样dataset_root/ ├── JPEGImages/ # 存放原图jpg或png格式 ├── Annotations/ # 存放每张图对应的xml标注文件 ├── ImageSets/ │ └── Main/ # 存放train.txt, val.txt, trainval.txt打开一个典型的XML标注文件里面的核心节点大概长这样annotation folderJPEGImages/folder filenameceramic_001.jpg/filename size width1280/width height960/height depth3/depth /size object namecrack/name poseUnspecified/pose truncated0/truncated difficult0/difficult bndbox xmin256/xmin ymin178/ymin xmax742/xmax ymax583/ymax /bndbox /object /annotation这里面最关键的几个字段我要单独说明一下。bndbox里的xmin、ymin、xmax、ymax分别代表目标边界框的左上角和右下角坐标单位是像素。truncated表示目标是否在图像边缘被截断difficult表示该目标是否难以辨认。这两个字段对于工业检测场景来说比较重要因为产线上拍到的缺陷经常处于盘子边缘会有截断的情况而一些极小的针孔坑点连人眼都要仔细看才能确认这类样本就得靠difficult字段把难度标记出来。VOC格式最大的优势就是简单、透明、易读随便用文本编辑器打开XML就能看到每个框的坐标和类别。调试阶段我经常直接用脚本扫描XML里的坐标和类别快速判断标注有没有脏数据。缺点也不是没有——一张图如果有几十个目标XML文件会非常冗长解析效率不如COCO的JSON而且VOC格式本身没有规定统一的类别映射表不同数据集的类别索引全靠使用者自己约定这在跨项目复用的时候容易踩坑。2.2 COCO标注格式的json组织方式COCO格式是微软团队在Common Objects in Context数据集上定义的标注规范现在基本成了目标检测领域的通用语言。它把所有标注信息集中到一个JSON文件里顶层是一个字典包含info、licenses、images、annotations、categories五个核心字段。images是一个列表每张图像的信息用字典描述至少包含id、file_name、width、height四个字段。categories是类别定义列表每项包含id和name。annotations是标注列表其中每条标注对应图像中的一个目标包含id、image_id、category_id、bbox、area、segmentation、iscrowd等字段。这里有一个特别容易踩坑的地方就是COCO的bbox格式。它和VOC的xmin, ymin, xmax, ymax完全不同COCO用的是[x, y, width, height]也就是边界框左上角的坐标以及框的宽高。很多从VOC转过来的同学会习惯性地把后两个数字当成右下角坐标结果训练出来的模型检测框整体偏移mAP就是上不去。我自己的经验是转换的时候写个单元测试随机抽几张图把转换后的框画在原图上人工看一眼确认坐标语义正确了再继续。segmentation字段是COCO支持多边形分割标注的入口。对于缺陷检测来说如果只是做目标检测可以传一个空列表或者用边界框生成一个简单四边形如果想顺带做实例分割就可以用标注工具产出的多边形坐标来填充。area字段是目标区域的面积对于标签是iscrowd0的单实例可以直接用bbox的宽乘高来近似如果要精确一些就用segmentation多边形算真实面积。iscrowd在陶瓷缺陷场景下一般统一填0表示这个框对应的是独立实例不是密集人群或成片物体。2.3 两种格式怎么选、怎么转换这两种格式谁更好其实没有绝对答案选哪个取决于你的下游任务和训练工具链。我的实践经验是做数据标注和人工校验阶段用VOC格式更舒服因为每个文件独立改一张图不影响全局而且标注工具兼容性好到了训练阶段如果目标检测框架基于Detectron2、MMDetection这类库直接用COCO格式会更省心因为很多模型的评估代码默认读COCO的JSON。实际项目中完全没必要手动维护两套数据正确做法是维护一套源数据我通常以VOC格式为源然后写脚本一键转出COCO格式。转换的核心思路是遍历Annotations目录下的所有XML文件解析出图像尺寸、目标类别和边界框坐标然后把这些信息分别填充到COCO的images、categories和annotations列表中。我习惯把转换脚本做成可复用的工具核心逻辑大概是这样import xml.etree.ElementTree as ET import json import glob import os def voc_to_coco(xml_dir, img_dir, output_json): categories [{id: 1, name: crack}, {id: 2, name: chip}, {id: 3, name: spot}] images [] annotations [] ann_id 1 xml_list sorted(glob.glob(os.path.join(xml_dir, *.xml))) for img_id, xml_path in enumerate(xml_list, start1): tree ET.parse(xml_path) root tree.getroot() filename root.find(filename).text width int(root.find(size/width).text) height int(root.find(size/height).text) images.append({ id: img_id, file_name: filename, width: width, height: height }) for obj in root.findall(object): name obj.find(name).text cat [c for c in categories if c[name] name][0] bbox obj.find(bndbox) xmin float(bbox.find(xmin).text) ymin float(bbox.find(ymin).text) xmax float(bbox.find(xmax).text) ymax float(bbox.find(ymax).text) w xmax - xmin h ymax - ymin annotations.append({ id: ann_id, image_id: img_id, category_id: cat[id], bbox: [xmin, ymin, w, h], area: w * h, segmentation: [], iscrowd: 0 }) ann_id 1 with open(output_json, w) as f: json.dump({images: images, annotations: annotations, categories: categories}, f, indent2)这段脚本虽然简单但在实际项目中帮我避过不少雷。需要注意的一点是因为JSON文件可以随意加字段建议在顶层额外保存一个info字段记录数据集版本、制作日期和类别说明这样后续回溯的时候不会忘了这份数据是谁、在什么条件下产出的。3. 数据采集与标注从产线到可训练数据集的完整流程3.1 缺陷样本的采集条件设计数据集的源头是原始图像的采集。陶瓷盘的缺陷检测有一个天然的难点合格的盘子表面干净均匀有缺陷的盘子往往在釉色和纹理上有细微差异如果现场打光不给力很多缺陷拍照后基本看不见。为了让采集的图像能真正用于模型训练必须以比人眼更挑剔的标准来设计采集环境。我建议采用封闭式暗箱或遮光罩内部用环形LED光源从45度角左右的低角度照射盘子表面。为什么用环形光加低角度因为陶瓷釉面是镜面反射和漫反射的混合体垂直光打下去会产生严重的镜面反射把缺陷细节全部淹没在高光里而低角度环形光会在釉面形成匀亮的漫反射区域缺陷部位因为表面形态和反射率不同会在暗背景下显现出清晰的明暗轮廓。实测下来裂纹和崩边在低角度光下对比度最高针孔和釉泡则需要适当增加光源亮度来让凹陷产生局部阴影。采集装置的相机选型也需要认真考虑。普通的USB摄像头分辨率和动态范围都很难满足工业检测需求建议至少使用500万像素以上的工业面阵相机配一个焦距合适的定焦镜头保证盘子在整个视野内占满80%以上。光圈不要开到最大稍微收两到三档保证景深足够覆盖盘面从中心到边缘的高度差。曝光时间要固定不要用自动曝光否则不同图像的亮度不一致模型会学到亮度这个无关特征。场景设计明确了以后采集时的缺陷样本来源我通常会分两路一路是质检线上人为挑出来的真实缺陷品这是主力样本另一路是人工制造的模拟缺陷比如用硬物磕碰出崩边、用高温笔划出裂纹样纹路。真实缺陷样本保真度高但数量有限模拟缺陷可以大批量生产但形态和真实缺陷会有偏差。最优策略是尽量多采真实缺陷模拟缺陷作为补充和数量扩展标注的时候在备注字段里把样本来源记录下来方便后续分析模型在两类样本上的表现差异。3.2 标注规范与质检流程标注环节是数据集项目中投入人力最大的部分也是最容易出现脏数据的环节。如果标注标准不统一同一个缺陷不同标注员可能一个框得大、一个框得小深度学习模型对标注噪声非常敏感框的位置抖一抖训练出来的检测框精度就会明显下降。我整理了一份适配陶瓷缺陷场景的标注规范核心要点有这几个第一明确缺陷的最小标注尺寸。陶瓷盘上的针孔有些只有两三个像素大这种目标即使标出来在常用的640x640输入尺寸下也基本无法被网络有效学习。我的处理方式是短边小于10像素的缺陷不标或者单独归入difficult样本10到30像素之间的缺陷正常标注但需要评估检测效果30像素以上的缺陷是主力学习样本。这个阈值不是拍脑袋定的和模型输入分辨率、下采样倍数都有关系后面训练章节会展开讲。第二边界框范围要贴合缺陷真实轮廓。以崩边为例崩掉的缺口往往是一个弧形区域框的上下左右边界应当紧贴缺陷区域的外接矩形不要多留空白背景也不要裁掉缺陷主体。裂纹这种长条形缺陷比较特殊外接矩形会包含大量正常釉面区域这种不可避免但如果裂纹旁边有次要的微小缺损不要分两个框合并在一个框里标注否则会引入不一致性。第三一张图多个同类缺陷时不能漏标。陶瓷盘表面有时会有密集的斑点群这种图看起来标注工作量很大但不能因为差不多就只标一部分。漏标实际上是训练数据里最严重的噪声之一因为模型会把没标的位置当成负样本同一个地方一会儿有缺陷一会儿没缺陷网络会学得非常困惑。标注工具我一般用LabelImg它原生支持PASCAL VOC格式的XML输出使用逻辑简单标注员培训成本低。如果团队更习惯COCO格式可以用LabelMe但导出的JSON是LabelMe自己的结构还需要经过一次转换才能变成标准COCO格式。工具只是末节真正的关键在标注完成后的二次质检——我要求每一张图都经过标注员自检质检员抽检两道工序质检抽检比例不低于30%发现一张标注错误就退回重标并且记录错误类型定期给标注员做复盘培训。3.3 数据增强与train/val划分策略原始图像采集到位、标注质检完成之后还需要做数据预处理才能进入训练环节。陶瓷盘缺陷数据集的一个显著特点是某些缺陷类别天然样本少——比如落渣这种缺陷出现频率远低于斑点如果直接拿原始分布去训练模型对少量类别的学习会严重不足。数据增强是缓解类别不平衡最直接的手段。工业视觉场景下我强烈推荐在线的增强策略也就是训练时实时对图像做变换而不是事先把所有增强图存到硬盘上。常见的增强操作包括随机水平翻转、随机缩放、随机亮度对比度调整、高斯噪声添加等。对于陶瓷盘这个场景有一个增强方向特别有效随机旋转。因为盘子本身是圆的从产线上拍到的盘子朝向是任意的缺陷在盘面圆周方向上的位置分布也比较随机旋转增强相当于模拟了真实的朝向变化。注意旋转增强需要同步修改标注框的坐标所以尽量用支持标签跟随变换的库比如Albumentations或者mmdet的增强模块。关于数据集划分我坚持一个原则划分的粒度是图像而不是目标。训练集、验证集、测试集的比例我通常用7:2:1并且保证同一块盘子的不同角度照片只能出现在同一个集合里防止数据泄漏。判断数据泄漏有一个很直观的现象训练mAP高得离谱验证mAP却远低于训练这往往不是过拟合而是训练集里混入了和验证集非常相似的图像。陶瓷盘子是批量生产的同款盘子可能一个批次拍了上百张如果划分不谨慎模型很容易记住盘子外观而不是学到缺陷特征换一批新盘子就崩了。我自己在划分的时候还有个习惯测试集单独从不同批次、不同窑炉、甚至不同产线采样的图像里选这样测试结果更接近实际部署时的泛化表现。数据集的目录里除了train/val/test的划分文件还会附带一份数据说明文档记录每张图像的采集批次、盘子型号、光源参数和标注员信息这份元数据在排查模型表现不佳的时候会提供非常大的帮助。4. 基于VOC和COCO数据集的目标检测模型训练流程4.1 用YOLOv8训练陶瓷盘缺陷检测模型拿到标注好的数据集之后接下来就是要把它跑进目标检测框架里。这几年工业界用YOLO系列是最省心的选择尤其是Ultralytics的YOLOv8默认支持VOC和COCO两种格式的自动转换只需要把目录结构整理好框架会自动把标注转成自己内部使用的格式。我以YOLOv8为例把整个训练流程过一遍其它框架的逻辑大同小异。如果你的数据是VOC格式目录结构保持第2节里说的那样然后在yaml配置文件里指定路径path: /path/to/ceramic_dataset train: images/train val: images/val test: images/test names: 0: crack 1: chip 2: spot 3: pinhole 4: glaze_bubble 5: drop_slag注意这里的names索引必须从0开始连续递增和VOC标注XML里的类别名称一一对应。YOLOv8内部会把VOC的XML转换成它自己的txt格式每个txt文件一行对应一个目标格式是class_id x_center y_center width height其中中心和宽高都是相对于图像尺寸归一化到0到1之间的浮点数。如果数据集是COCO格式Ultralytics也提供了coco128这类示例配置运行的时候传入coco格式的JSON路径即可不过我更建议直接用VOC目录结构因为对工程师来说文件级别的排错更直观。训练命令很简洁yolo detect train dataceramic.yaml modelyolov8n.pt epochs150 imgsz640 batch16初次跑实验我习惯先用yolov8n这个小模型做快速验证确认数据没毛病、mAP能涨起来再换yolov8s或者yolov8m做正式训练。用小模型快速验证数据质量有个好处如果数据有问题小模型通常表现为mAP极低或loss不下降反馈信号非常快一次完整训练只要一两个小时而直接用大模型跑一轮要好几个小时甚至一天等发现数据有错就太浪费时间了。4.2 输入分辨率、anchors与小缺陷检测的关系陶瓷盘缺陷检测里最常见的痛点是微小缺陷漏检——针孔、细裂纹这些目标在整体图像里占比太小模型学不到足够特征。这个问题不能光靠换一个更大的模型来解决更关键的是调整输入分辨率。目标检测网络一般会做5次下采样最终特征图的步长stride是32像素。也就是说输入640x640的图像时特征图上每个网格对应原图32x32的区域一个只有16x16像素的小缺陷在特征图上可能连一个完整的锚点都覆盖不到。解决思路有两个方向一个是把输入尺寸调大比如从640提到1280代价是显存占用和训练时间明显增加另一个是引入切片推理Slicing Inference把大图切成若干小图分别检测再合并结果这个方案在遥感小目标检测里用得很多拿来检测陶瓷盘上的微小缺陷同样有效就是部署逻辑会复杂一些。训练参数方面YOLOv8默认开启自动锚框优化一般不需要手动调anchor大小。但如果你发现模型对某一类长条形的裂纹召回率很低可以考虑在训练前用K-Means统计数据集里所有标注框的宽高分布看看默认锚框是否和实际分布偏差太大。工业场景下锚框分布和通用目标数据集差异很大陶瓷盘上的缺陷标注框长宽比可能从1:1到1:10都有适当调整锚框尺寸能让模型收敛更快。这里我建议记录一个标准实验配置表方便复现和调参参数推荐值说明imgsz640 / 1280缺陷尺寸小时优先试1280batch16 / 32根据显存调整越大越稳epochs150小样本时配合早停optimizerSGD / AdamW小数据集用AdamW更省心lr00.01 / 0.001预训练模型用0.01augment默认增强可适当增加旋转和翻转patience50早停阈值防止过拟合训练过程中我会盯着loss曲线和验证集的PR曲线而不是只盯着训练loss。训练loss降得很低但验证mAP不涨十有八九是过拟合了这时候可以加大数据增强强度或者引入Dropout。4.3 评估指标解读正确看待mAP和漏检率很多人第一次训练完模型看到mAP达到0.9就觉得可以上线了但在工业质检项目里mAP只是参考产线真正关心的是漏检率和误检率。mAP把precision和recall做了折中而产线只关心两件事坏盘子不能被放过漏检好盘子不能被误杀误检。陶瓷盘缺陷检测通常要控制在漏检率极低、同时误检率可接受的范围内。你可以通过调整置信度阈值来权衡把置信度阈值设低模型的recall会上升漏检减少但误检也会增加阈值设高则相反。一个更优雅的做法是引入ROC或者PR曲线找到precision-recall曲线上的拐点作为置信度阈值而不是默认用0.25。我用验证集评估时习惯输出这样一份详细报告每个类别的precision、recall、F1-score、以及不同IOU阈值下的mAP。重点关注每个类别的单独指标不要只看总体mAP。比如斑点类别样本多总体mAP可能被它拉得很高但落渣类别的recall可能低得可怜在模型上线前必须针对性解决。5. 常见问题与排查技巧实录5.1 数据与标注导致的训练异常问题一训练loss一直不降甚至变成NaN。这个我遇到得不少排查顺序是先看数据里有没有损坏的图片文件再看看有没有空的标注XML没有object节点的文件最后看类别索引是否越界或者和不同格式的映射是否错位。一个特别隐蔽的坑是从COCO转换到YOLO格式时类别索引对齐问题——COCO的category_id可能从1开始而YOLO需要从0开始如果映射关系里忘了减1整个数据的类别就是错乱的。问题二验证集mAP低但训练集mAP很高。这种情况先划分数据看是不是同一个盘子的多张照片被同时分到了训练集和验证集导致模型其实是在记忆图像背景而不是泛化缺陷特征。如果确认划分没问题再看是不是训练数据量太少导致的过拟合试着加强数据增强或者用带预训练权重的模型来初始化。问题三标注框和实际缺陷位置对不上。这种情况在复杂的盘面纹路背景下最容易出现标注员疲劳操作时框会偏移。我的处理办法是写一个可视化脚本把标注框和类别名称画在图像上随机抽几百张图快速翻看直观感受比任何统计指标都敏感。如果发现某一张图明显标错了直接改xml或json然后重新生成训练文件。5.2 模型层面的排查与调优技巧陶瓷盘缺陷检测模型表现不佳时先从最简单的方向入手检查待检缺陷的像素尺寸是否和模型输入分辨率匹配。假设你的缺陷平均只有20x20像素而模型输入是640x640网络最后几层特征图上基本没有该缺陷的信息再调参数也没用。这时候把输入分辨率提高到1280或者使用切片推理效果立竿见影。如果缺陷尺寸没问题但某一类缺陷的recall始终上不去很可能标注的总样本量不够。我的经验是每个类别至少要有300到500个标注实例如果低于这个量级优先考虑用离线增强复制样本温和变换把该类别数量拉上来。不要一上来就用过采样过采样容易让模型对特定图片过拟合建议配合多种增强组合使用。最后再提醒一个很多新手会忽略的问题类别名称的拼写一致性。XML里的类别名和yaml配置文件里的names列表必须严格一致哪怕一个字母大小写不一致训练出的模型都会出现无法识别的情况。我自己的做法是写一个脚本自动统计所有XML里出现过的类别名称集合和yaml里的names做比对不一致就直接报错省去了人工检查的繁琐。5.3 实际部署时常见的工程坑模型在实验环境跑得好换到产线工控机上就掉点的案例太多了。首先是推理环境差异CUDA版本和torch版本不一致会导致结果波动建议直接用Docker镜像固化环境。其次是输入图像格式差异采集端可能输出BGR的raw图但训练时用的是RGB的jpg颜色通道顺序反转会让模型在部署时完全失灵这个坑我栽过一次之后就再也没忘过。光照条件变化是产线和实验室最大的区别。同一个盘子实验室的环形光和环境光是固定的产线上可能因为旁边窗户的日光、灯管的频闪导致亮度波动。为了增强模型的鲁棒性训练数据里要尽量覆盖不同亮度和色温的样本部署时最好固定光源和遮光装置并且每过一段时间用标准样板校验一下系统的检测效果。部署性能优化上可以考虑TensorRT加速把训练好的模型编译成engine文件。陶瓷盘缺陷检测对实时性要求比较高产线节拍通常要求每秒检测一到两个盘子TensorRT在保证精度的前提下能把推理速度提升一到三倍具体取决于工控机的显卡型号。如果工控机用的是CPU推理那就得老老实实压分辨率、换更轻量级的模型在精度和速度之间找一个可接受的平衡点。6. 后续可以扩展的方向陶瓷盘表面缺陷检测做完基础的目标检测之后我发现这个数据集还可以往几个方向继续深挖。最大的方向是实例分割现在的标注都是边界框级别的如果后续把标注升级成多边形级别就能用Mask R-CNN或者YOLOv8-seg做像素级的缺陷分割对缺陷形状的分析和工艺溯源会更有价值。另一个方向是引入无监督异常检测的思路用大量正常盘子训练一个backbone然后再用少量缺陷样本做微调这在有些工厂场景下能显著降低标注成本。还有一个实用方向是模型的轻量化部署。陶瓷厂的老旧产线上不一定都有高性能GPU工控机如果能把模型蒸馏成一个MobileNet或者GhostNet主干的小网络在嵌入式设备上实现高速推理对中小型陶瓷企业的吸引力会非常大。我自己试过用YOLOv8n做蒸馏精度会损失一点但推理速度提升明显可以根据产线的漏检要求做取舍。每次重看这套陶瓷盘数据集和相关实验记录我都会有些新的感悟。说到底数据集的制作和模型训练是一个反复打磨的过程没有一蹴而就的神话只有从采集、标注到训练、部署每个环节认真对待的笨功夫。希望这篇分享能给正在做或准备做工业目标检测的朋友带来一些参考价值。本文还有配套的精品资源点击获取
返回列表