为深度学习创建并维护最佳数据集
深度神经网络继续在工业视觉系统中取得进展,因为有比以往更多的用户正在考虑如何使用深度学习来优化支出和提高产出质量。虽然这是一个令人兴奋的好消息,但是企业可能并不了解,在用户希望以更低成本、更快速和万无一失的人工智能(AI)检测取代传统方法的背后,开发者真正需要做的工作。
深度神经网络在训练阶段需要适当的数据,并且需要对这些训练数据进行定期维护,以确保神经网络能够保持长期准确性。有了适当的准备,这种定期维护并不会占用大量时间。然而,对训练数据进行正确的长期维护,仍然需要具备一定的专业知识。
创建训练数据集
基于深度学习的检测应用的基础是其数据集,即用于训练的图像集合。通过这个数据集,神经网络能精准地学习它应该寻找的目标,例如事先指定的形状、斑点和颜色(如特征检测或光学字符识别OCR),或者仅仅是任何不符合规定范本的东西(如异常检测)。经过训练的神经网络被称为模型。
刚接触深度学习的人经常会考虑需要什么样的图像,这取决于目标和应用。一些神经网络,比如用于识别印刷字符的神经网络,通常使用多种来源的各种样本进行训练,以确保模型具备最大的灵活性。即使系统只需要检测相对有限的字符库(即从A到Z的字母和从0到9的数字,以及一些额外的标记),这些字符也会以大量不同的字体和大小出现。
在Zillin.io中对图像进行标注来训练OCR模型
上图在训练OCR模型时,为由定向边界框标记的字符赋值,有助于教会神经网络字符可能是众多形状中的某一种,比如在大小、字体等特征方面存在差异。
另一方面,一个用于检测金属管道表面特征的深度学习模型,需要用这种特定类型金属管道的图像、和可能出现在该类管道上的所有不同特征进行训练。由于深度学习模型通常是针对一个明确定义的对象进行训练的,因此最好是专注于该对象,而不是努力追求无法实现的普遍性,这会使模型变得不可靠。
然后,图像经过标注过程,增加视觉线索,让模型知道一幅图像或图像的某个选定部分属于某个特定类别。边界框(在图像的选定部分上绘制一个矩形分割mask)是最简单的标注形式。边界框内的图像部分,被标记为深度学习模型在训练期间需要寻找的目标。比如训练用于辨认苹果的模型,需要使用大量图像,并且每张图像都在苹果周围画了边界框,然后将其标记为“苹果”;这样经过大量图像训练后的模型,才能在新图像中检测出苹果。
除了边界框之外,其他的标记工具还包括多边形、路径或画笔,这对于特征检测应用很有帮助,标注复杂的形状需要比边界框更高级的工具。
用多边形来标记出租车和公交车所覆盖的区域。
在明确了所需的样本类型和模型训练所需要的标注方法后,用户就要确定所需要的数据量。这也取决于具体的应用。当训练一个模型来检测特定的特征或物体时,这些特征或物体可能会从不同的角度被相机捕捉到,这时候需要大的数据集,以便为模型提供需要寻找的目标的大量范本。相反,如果想要确定任何偏离既定标准的特征或物体,则只需要向模型提供可接受样本的图像就足够了。
在太少和太多的样本之间取得适当的平衡是至关重要的,所掌握的数据集有限在工业环境中是很常见的,特别是对于那些需要用制造现场产生的缺陷样本进行训练的模型而言,确实很难收集充足的缺陷样本,这是一个很大的挑战。
例如,一个用于区分“塑料瓶表面的深色划痕(其导致塑料瓶无法出售)”和“落在塑料瓶上的头发(其并不影响塑料瓶的出售)”的模型。标注过程可以使用两类画笔工具,一类指定元数据为“划痕”,另一类指定元数据为“头发”,然后绘制框图,以涵盖划痕和头发的足够精确的轮廓。然而,如果每个类别只能提供一两张图像,即使是定义明确的特征也不能提供一个可靠的模型。
Zillin.io中的画笔工具使用
使用Zillin.io中的画笔工具,绘制出代表“划痕”或“头发”类别的框图,每个类别都设定了不同的颜色,以便更容易看到。然后将标注导出为一组正确指示的坐标,准备用于模型训练。
另一方面,如果用于训练的图像数据集太大,则有可能使模型过度拟合。过度拟合的模型会寻找与数据集中的标注所显示的特征完全对应的特征,从而导致模型的低灵活性和低效率。从几十张图像开始训练,然后在增加或减少图像数量后,验证模型准确性的演变,这样就能确定最佳数据集的大小。
用新的训练图像保持模型准确性
即使是一个经过优化训练的深度学习模型,也不会永远保持准确可靠。“模型漂移”,定义为深度学习模型的准确性会随着时间的推移而下降。有几个常见的原因会导致“模型漂移”,比如环境条件的变化。例如,一个用位于阳光直射下的物体的图像训练的模型,如果用这个模型去分析不是在阳光直射下的物体的图像(相比之下要暗得多),该模型的准确性可能会降低。
如果相机或照明重新定位,或者设备随着时间的推移而出现功能退化,这些情况也有可能导致模型漂移。如果为检测一种类型的特征而训练的模型,被用于检测一种类似但不同的特征,也会出现模型漂移。不管是什么原因,当发生模型漂移时,通常需要用新图像重新训练模型,同时重新标注现有的图像,或是从训练数据集中删除某些图像。
只有当一个模型在新环境下的表现不再良好时,设备管理才可能会要求重新训练。然而,在工业应用中,比较常见的做法是定期地对模型进行再训练,无论是否有任何明显不同的样本需要考虑。有些模型会在收到一定量的新数据时自动进行再训练。虽然可能比临时性的方法更繁琐,但是定期地重新训练一个模型通常不需要完全改变训练数据集,而是随着时间的推移逐渐引入对模型的修改。
实际上,只要目标系统的生命周期还在继续,神经网络模型的数据集的开发就不会结束。虽然对企业来说捕捉所需要的图像可能并不困难,但是随着所需要的图像数量的增加,标注图像的过程会变得更加费时费力。
因此,企业可能会选择将图像标注过程外包给第三方去做,比如像Zillin.io这样的工具,这样有助于协调世界各地的数十人或数百人对图像进行标注。这些第三方还能提供图像托管和存储服务,以及文件传输的安全渠道。事实上,尽管神经网络是一个强大的工具,但它们并不是一劳永逸的解决方案。在神经网络的整个生命周期中,它们都需要照顾和关注,以保持其准确性和可靠性,从而继续成为现代机器视觉检测系统中重要的、节省时间的要素。
原文地址:https://blog.csdn.net/2401_88870554/article/details/143824546
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!