一、数据集收集思考,以目标检测方法实现缺陷检测为背景

1、缺陷或者异常的定义:

参考:

最新的工业异常定位(检测)综述 - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/545953517 (arxiv.org)icon-default.png?t=N7T8https://arxiv.org/ftp/arxiv/papers/2207/2207.10298.pdf

一般来说,工业领域中的异常通常指缺陷,这里不仅仅包括三伤(划伤、碰伤和压伤等),异色,亮痕等纹理变化的缺陷,而且有更为复杂的,需要进一步逻辑判断的功能缺陷。例如晶体管管脚是否插入到pin中,是否装错,装反或少装。下图第一行展示了MVTec AD数据集上的纹理缺陷,第二行展示了MVTec AD数据集上的功能缺陷。MVTec AD中大部分缺陷类型为纹理缺陷,少部分缺陷为功能缺陷,功能缺陷主要存在晶体管这个数据集中,因此这个数据集是MVTec AD15个数据集中最难检测的。

2、自身实践思考       

 在学习期间,大多数时间里我们使用的公开数据集,我们更在意算法的提升,但是真在工作岗位中运用深度学习的时候,才发现最难的是数据集构建,也真正理解什么是数据驱动。

1、准确性 

       以缺陷检测为例,缺陷检测并不是简单的二分类就可以,因为实际生产中需要细分缺陷,有的缺陷可以处理后继续使用,如污渍,生产环境中灰尘的干扰;有的属于损坏缺陷需要剔除。但是在标注过程中这些缺陷大小,位置都是随机的,这给标注带来很大的挑战。此外,当我们使用高清相机拍摄时也会将一些细小的缺陷拍出来,标注人员也有可能误标,这样训练的模型很容易误检。长久以来,我们的标注工作和提供数据人员是分开的,这有一定合理性,工厂的员工大概率不会标注,但是会标注的又不理解缺陷分类,这给标注的准确性带来很大的挑战,双方理解对方的工作很重要,但是大多数情况下,延续之前软件开发的流程,由双方负责人对接需求,过去这种模式确实很高效,即便调整也是逻辑调整,但是面对数据集驱动开发这种模式是不适宜的,事情经过多轮传递描述,到最后标注的时候已经不是很清楚了,一旦修改基本等于推导重来,费时费力。可惜目前好像普通公司没有这个意识,大家还是更看重算法,数据给的也很随意。最终实现不了要么认为开发人员不行,要么觉得AI(很多人不知道深度学习,数据驱动)解决不了工业问题。

2、全面性和及时性

        收集的数据不能简单追求数量,某个产线缺陷数量多,就只收集这类的,等到测试的时候,又是对所有产线测试,这样检测会产生漏检(如果背景区别很大也会产生误检),或者有的时候收集当前所有产线缺陷数据,但是处理不及时,等模型出来测试时,此类产线已经停产,只能在新产线上测试,也会影响检测结果。

3、文心一言回答:

深度学习图像数据集收集主要思路:

均匀性原则:图像数据集的类别分布应该是均匀的,不能出现某一类别的图像数据过多或者过少的情况。
多样性原则:图像数据集中的图像应该具有多样性,包括不同的拍摄视角、光照、背景、遮挡等因素。
代表性原则:图像数据集中的图像应该能够代表该类别中的大多数样本,不能出现某个类别的图像数据不够典型的情况。
标注准确性原则:图像数据集中的每个图像应该被准确地标注其所属类别,不能出现误标或漏标的情况。
数据隐私原则:图像数据集中的每个图像应该保护其隐私,不能出现泄露个人隐私或商业机密的情况。
可扩展性原则:图像数据集应该能够扩展和更新,以适应新的类别和新的样本。

设计者可以通过以下几种方式来了解数据是否达到需求:

直接询问:可以询问数据提供者或相关领域的专家,了解数据集的类别、数量、质量等是否符合需求。
数据预处理:对数据进行预处理,例如去重、清洗、标注等,以确保数据的质量和可用性。
数据测试:使用一些数据测试方法,例如交叉验证、混淆矩阵、ROC曲线等,来评估数据集的质量和性能。
模型训练和评估:将数据集用于模型训练和评估,例如使用深度学习模型进行分类或回归等任务,然后根据模型的性能指标来评估数据集的质量和可用性。
用户反馈:如果数据集用于实际应用中,可以通过用户反馈来了解数据是否达到需求。例如,可以收集用户的使用情况和反馈意见,以了解数据集的可用性和用户体验等。

总之,设计者可以通过多种方式来了解数据是否达到需求,并根据实际情况进行相应的调整和改进。

在实际数据集收集中,可以按照以下步骤:

明确收集目标:首先需要明确收集的目标和目的,例如要收集哪些方面的数据、数据需要满足什么样的要求等。
制定收集计划:根据目标和目的,制定相应的收集计划,例如选择哪些数据源、采用什么样的收集方法、如何保证数据质量和隐私等。
数据清洗和处理:在收集到数据后,需要进行清洗和处理,以去除无效、重复或错误的数据,对缺失值进行处理,以及对数据进行归一化、标准化等处理。
数据探索和可视化:通过数据探索和可视化,可以初步了解数据的分布和特征,发现数据中的异常值和潜在规律,以便更好地理解数据。
数据标注和编码:如果需要将数据用于机器学习或深度学习模型训练,需要将数据进行标注和编码,以将原始数据转化为模型可处理的格式。
数据测试和评估:在收集到一定量的数据后,可以使用一些数据测试和评估方法,例如交叉验证、混淆矩阵、ROC曲线等,来评估数据的质量和性能,以便更好地调整和改进收集计划。
迭代更新:数据集需要不断迭代和更新,以适应新的需求和变化。因此,在数据集收集过程中,需要注意数据的可扩展性和更新性,以便在需要时进行扩充和改进。

总之,在实际数据集收集中,需要掌握一些基本的统计知识和技能,以帮助我们更好地分析和解释数据。同时需要灵活运用这些知识,结合实际情况进行相应的调整和改进。

混淆矩阵和ROC曲线对于目标检测任务来说,都是非常重要的评估指标,它们的具体作用如下:

混淆矩阵:

混淆矩阵是用来评估分类器性能的一种方法,特别是对于多类别分类问题。在混淆矩阵中,每一行代表一个真实的类别,每一列代表一个预测的类别。通过统计每个单元格中的实例数量,可以评估分类器的准确性。
对于目标检测任务来说,混淆矩阵可以用来评估模型对于不同类别的检测性能。例如,如果模型在区分目标物体和背景方面表现良好,那么混淆矩阵中的相应单元格中的值应该比较低,反之亦然。

ROC曲线:

ROC曲线是一种用于评估分类器性能的工具,尤其是二元分类问题。ROC曲线绘制的是真正类率 (TPR) 和假正类率 (FPR) 的关系,其中真正类率是分类器正确分类的正样本的比例,假正类率是分类器错误分类的负样本的比例。
对于目标检测任务来说,ROC曲线可以用来评估模型在不同阈值下的性能。通过选择合适的阈值,可以使模型在保持高真正类率的同时,尽量降低假正类率,从而提高整体性能。

目标检测方法数据集每个类别的样本数量取决于数据集的规模和特定目标检测算法的需求。
一些常见目标检测方法数据集的每个类别的样本数量如下:
*PASCAL VOC数据集》:该数据集是目标检测常用的数据集,自2005年起每年举办一次比赛,最开始只有4类,到2007年扩充为20个类,共有两个常用的版本:2007和2012,每个类别至少需要100个样本。

*MS COCO数据集》:该数据集是微软团队发布的一个可以用来进行图像识别、分割、标注等任务的数据集,该数据集包含大量包含常见物体的日常场景图片,并提供像素级的实例标注以更精确地评估检测和分割算法的效果,每个类别至少需要数百个样本。

*Open Image数据集》:该数据集是谷歌团队发布的数据集,包含600个类别共计9.8万张图片,每个类别至少需要数百个样本。

数据不均衡会对模型产生以下影响:

模型收敛速度减慢。因为少数类别样本数量较少,模型在训练时容易陷入局部最优解,导致收敛速度变慢。
泛化能力偏差。因为少数类别样本特征过少,模型难以学习到足够的信息,导致泛化能力偏差。

解决数据不均衡的方法有:

数据增强。对图像进行旋转、镜像对称、随机裁剪、平移等操作,增加数据量。
重采样。对少数类别样本进行过采样,增加数据量。
特征提取。提取少数类别样本的特征,增加数据量。
使用GAN生成赝品数据。通过GAN生成少数类别的赝品数据,增加数据量。
算法改进。使用一些优化技巧让模型更加关注占比较少类的样本,从而使模型能专注学习此类的特征。

解决数据集长尾问题可以从以下几个方面入手:

标注处理:几乎所有数据集都存在错误标注现象,其中多以边缘数据为主。提高标注准确性是解决长尾问题的关键,可以采取以下措施:
对标注人员进行专业培训,提高标注准确性和专业水平;
建立标注质量检查机制,对标注结果进行严格审核和校验;
采用多级标注和交叉验证等方法,减少标注误差。

迁移学习:将一个预训练的模型调整为新的分类任务,然后在新的数据集上进行微调。这种方法可能会帮助减轻长尾分布的问题,因为预训练的模型在处理各种数据集方面都具有一定的泛化能力。

重采样:在训练集上实现样本平衡,如对尾部类别样本进行过采样,或者对头部类别样本进行欠采样,从而使得各类别样本在数据集中分布更加均匀。

重加权:在训练loss中,给不同的类别的loss设置不同的权重,对尾部类别loss设置更大的权重,从而使得模型在训练过程中更加关注尾部类别。Focus Loss。

阶段训练:有专门为解决少样本问题涉及的学习可以借鉴,如:meta-learning、metric learning、transfer learing等方法,调整训练策略,将训练过程分为两步:第一步不区分头部样本和尾部样本,对模型正常训练;第二步,设置小的学习率,对第一步的模型使用各种样本平衡的策略进行finetune。

需要注意的是,解决长尾问题需要结合具体任务和数据集的特点进行综合考虑,以上方法可以单独使用,也可以组合使用来提高模型的泛化能力和准确性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值