在本集中,我们将讨论使用深度学习机制来完成传统基于规则的系统无法完成的任务。我们使用两个案例来说明如何使用深度学习在数小时内解决非传统和识别问题。
这是 Iain Smith 关于机器视觉的 2 部分中的第 2 部分。
Iain Smith 是 Fisher Smith 的董事总经理兼联合创始人。 Fisher Smith 设计并提供机器视觉系统,用于自动检查和识别工业生产线上的制造零件。 https://fishersmith.co.uk
音频文字.
Erik:欢迎来到工业 IoT Spotlight,这是您从工业 IoT 思想领袖那里获得洞察力的第一站,他们正在与您的主持人 Erik Walenza 一起改变当今的业务。
欢迎回到工业物联网聚焦播客。我是您的主持人,IoT ONE 的首席执行官 Erik Walenza。今天我们的嘉宾将是 Iain Smith,Fisher Smith 的董事总经理兼联合创始人。 Fisher Smith 设计并提供机器视觉系统。这是我们与 Iain 关于机器视觉主题的第二次讨论。在本次演讲中,我们专注于使用深度学习算法来完成传统基于规则的系统具有挑战性或不可能完成的任务。我们还浏览了两个案例研究。第一个案例说明了如何使用深度学习在几个小时内解决一些识别问题。而第二种情况说明了一个难题,这在基于规则的系统中是不可能的,并且正在推动深度学习能力的界限。
如果您发现这些对话很有价值,请给我们留下评论和五星级评价。如果您想分享您公司的故事或推荐一位演讲者,请发送电子邮件至 team@IoTone.com。谢谢你。伊恩,欢迎回来。并感谢您再次加入我们。
Iain:很高兴再次与你交谈,Erik。
Erik:让我们来了解一下您是谁以及您的公司 Fisher Smith 所做的事情的第 62 个背景,然后我们可以深入探讨我们今天要关注的主题。
Iain:所以我在机器视觉行业工作了大约 20 年,在英国获得了工程数学学位,然后几乎直接进入了视觉检测机器制造商的工作。然后在过去的 15 年,将近 16 年中,我一直在经营 Fisher Smith,非常专注于工业机器视觉的视觉方面。
这往往主要是检查、质量控制、机器人引导任务,我们倾向于与一系列视觉供应商合作,然后我们通过集成设备、编写软件、做前端来增加设备的价值结束,部署,让系统在工厂车间实际运行以解决应用程序。我们通常通过一系列客户来做到这一点。这些客户主要是自动化公司,他们在制造机器,他们在做机器人,他们在做传送带,材料处理,零件的移动,组装,我们作为专业供应商进来做该生产线的视觉方面。所以我们是一个很小的专业团队,只专注于工业领域的机器视觉。
Erik:今天,我们希望对深度学习及其影响进行更多深入研究。我认为在上一次播客中,我们涵盖了更多,可以说是传统解决方案,尽管其中一些解决方案仍处于机器视觉技术的前沿。作为一个起点,如果我能理解你对此的定义,那就太好了,因为我们有深度学习这个术语,我们有机器学习,然后我们有人工智能作为一个总括概念。这些术语之间是否存在技术差异?或者这些不同的类别在层次结构方面是什么?你怎么看这些?在机器视觉的背景下,深度学习实际上意味着什么?
伊恩:是的。所以,我想,所有这些术语可能都被滥用了,它们经常被交换和互换。人工智能确实高于所有这些,作为基于计算机的智能的更一般概念,通常人工智能的普遍共识是人类的意识和智能水平。而我们真正关注的只是一个特定的、专注的或有针对性的人工智能,在这个特定的功能上,人工智能与真正的深度学习的分离开始发生。
所以我们真的在工业视觉环境中研究深度学习,这意味着特别是在图像上教授神经网络,并在这些图像中寻找特定的特征。我们不只是将神经网络用于数据处理、语音识别或任何其他可以愉快地进入深度学习网络和神经网络的数据源。我们真的只专注于图像处理方面。然后甚至在图像处理中,它再次将重点放在特定的工业应用中。
Erik:让我们稍微深入一点,那么这与传统流程有何不同?所以我想用传统的工艺,你看这个形状的直径可能是两毫米,也许,如果它超出了 X 点的范围,那么它是一个错误?或者,也许我们正在寻找黑色,如果有白色颜料,那么这是一个错误?深度学习与当今大多数情况下您可能已经采用或仍可能采用的程序方法有何不同?
Iain:是的,所以这是一个非常不同的概念。所以传统的机器视觉和深度学习在很多方面确实是相得益彰的。在某些领域它们重叠,你认为我可以用一种方式或可以用传统方式来做。但很多时候,两者是分开的。就像你说的那样,传统方法往往更多,所以它们是基于规则或基于逻辑的,你说我要计算图像中这么多暗像素或蓝色像素;我将进行测量,通常是在不同的对比度区域中找到一个对比度区域,或者图像的一个位的特征,或者另一个图像中的不同特征,然后在它们之间进行测量。
对于其中一些技术,经典的机器视觉仍然是正确的方法。但是深度学习改变的地方在于它可以应对不同的教学方式,然后它可以更好地应对不同的场景。但它试图找到这种分离的位置,以找出最好的部署方式。例如,如果您正在查看故障检测,如果您正在查看平淡的背景,例如灰色传送带或灰色表面,您正在寻找一块金属或涂漆材料上的划痕,并且背景始终是一种颜色,一种灰色,一种蓝色,而且你知道上面的缺陷是黑色标记,那么使用传统的机器视觉方法很容易设置,你可以说,好吧,我要去忽略蓝色像素,或忽略灰色像素。我会寻找任何与此不同的东西。我要寻找黑色像素。
然后你可以开始计算它们并说,好吧,这么多黑色像素对客户来说是不可接受的。这是一个错误,我们拒绝零件。这就是传统的基于逻辑规则的方法。但是,一旦该背景或物体不是一个良好一致的均匀表面,如果它是多种颜色或具有表面纹理,有暗区,亮区,是织物或其他一些复杂的形状和颜色,如谷物木材或各种不同的表面纹理,而您正在寻找划过它们的划痕,传统技术完全失败了。
你不能轻易说出你是否在看一点木头,并且你正在寻找划痕,你的木头有所有这些纹理,这些线条和轮廓已经穿过它。那么如何使用基于规则的方法来量化划痕呢?你不能说它又长又细又黑,因为世界上所有其他的谷物都已经又长又细又黑了。你可能会说它是水平的,而所有其他的谷物都是垂直的。但这可能只在某些情况下有效。可能是某些瑕疵较浅或有些较深,或者某些瑕疵实际上是非常相似的颜色。
对于人类来说,这通常是对传统视觉技术的挫败感。对于受过一些训练的人,他们可以看着那个物体说,不,我们不喜欢这块木头,这块织物上的那个瑕疵。这是错的。但是试图编纂它,试图把它放在逻辑规则周围说,嗯,它更黑暗吗?好吧,不是所有的时间。是不是更轻了?有时,但没有。与其他好产品中已有的形状相同还是不同?几乎不可能使用传统的机器视觉方法来实现这一点。
这就是深度学习真正获胜的地方,你可以给它很多关于好的样本以及所有通过和好的变化的样本,然后你可以给它不好的样本。并且 [听不清 10:40] 通过适当的培训水平将这些不同的类别分开,并开始发现传统机器视觉技术几乎不可能发现的错误。
我已经谈到了缺陷,这往往是我们所做工作的质量控制方面。这就是我们的许多项目最终失败的地方。但真正的深度学习在一些领域获胜。一是发现缺陷。另一个是物体检测,如果你没有这样定义的形状,或者没有强烈的对比度,你可以使用深度学习来实际匹配图像中的特征,并在图像中查找和定位特征。
深度学习的核心和经典用例是分类,将苹果、橙子、梨和香蕉分开,然后说,是的,这绝对是这种类型,这绝对是那种类型。然后我们现在经常将其视为一种分层方法,我们可以构建一个深度学习应用程序,在其中寻找缺陷类型,然后一旦我们发现该缺陷,那么我们实际上是在使用深度学习作为二次操作,现在我们已经提取了缺陷,我们会的,这是划痕,这是油迹,这是指纹,这是一张纸板,所有不同的类型,因此,您可以开始进行适当的分离,并使用该反馈真正为客户提供有关其流程的有价值信息,以及缺陷来自何处,他们的高价值问题是什么。
而使用传统技术,其中一些是可能的。但可以肯定的是,如果你只是在寻找一个发现的暗像素区域,那就不好了,然后尝试进行大量滚动并说,好吧,如果它又长又薄,并且在这个方向上,那就是划痕。但如果它又长又细又弯曲,那么它可能是一些织物或头发或类似的东西,并且试图以基于规则的方式实际分离它们可能非常困难。而深度学习实际上就是为了完成所有这些工作。
Erik:所以,在深度学习环境中,它比分类更容易,因为算法可以告诉你形状在某种程度上是相似的。但是关于深度学习的抱怨之一或挑战之一是它也有点像一个黑盒子,所以它可以告诉你这些是相似的,但它不一定能解释为什么它们是相似的。你如何绕过这个理解障碍?
Iain:这是我们在解释这一点时遇到的主要障碍之一,甚至是在向客户分配机器或系统时遇到的关键障碍之一。当你不得不对他们说,好吧,我们把你所有的好照片都放在了黑盒子的这一边,中间发生了一些神奇的事情,然后在另一端,它说这个很好,那个不好。有些人无法真正理解神经网络内部发生的事情。
但现实情况是,您不一定知道深度学习在该图像中选择了哪些特征来区分一类与另一类、好与坏、苹果与橙子。这可能是您意想不到的事情。这是我们必须非常小心的事情。因为你可能会在不经意间发现你认为你已经教过一种特定的故障类型,所以深度学习实际上并不是在故障本身上,而是可能是该故障与零件边缘的接近程度。
因此,例如,如果您已经训练了所有图像,并且划痕靠近零件的边缘,那么深度学习可能已经检测到划痕的某些方面,一点点对比度,改变纹理,不管它可能是什么,但它也可能拾取了零件的边缘,这是一个重要的特征,总是出现在它附近。然后,当相同的划痕出现在零件的中间时,深度学习就会完全错过它。它试图理解我们不能假设它找到了划痕或瑕疵,并且它了解瑕疵是什么。
还有其他因素在起作用,神经网络的训练方式,图像被分解、操纵、改变、以各种方式转换,数学上所有非常合理的概念都可以是相当抽象的。它可能会在其中找到一些数据来分隔您无法明显分辨或您无法明显看到或归因于您面前的内容的类。
Erik:最近有一项研究,我认为是谷歌在使用深度学习来观察肺癌,他们将这一结果与通常会评估肺癌的任何外科医生的结果进行比较。我认为结果是人类可以很容易地识别出这是一种癌症,而机器却忽略了它。还有其他一些机器可以非常准确地识别,而人类完全错过了它。因此,在某些情况下,他们使用不同的流程进行识别,我想这对于试图了解质量控制流程的人来说可能会非常令人沮丧。
伊恩:是的。传统的视觉技术已经存在很多年了。因此,他们开始在行业中得到普遍理解,因此可能正在购买项目的人已经将许多项目带入他们的业务并且对他们有机器视觉的人了解他们希望该系统实现什么,以及他们希望我们如何向他们展示我们的方法,以便他们了解正在发生的事情,并签字以了解如果他们需要调整某些东西,他们可以控制这种强大的方法。
他们可以看到那里发生了什么,他们可以看到,是的,他们要求我们检测的特征,我们正在检测它们何时发生这样的变化,我们可以看到值的变化,我们可以证明我们符合他们的规范。对于深度学习,它在很大程度上是基于结果的标志,因为您要求客户说,好,给我们好的,给我们坏的,我们会让他们通过并给你结果,它说这些是好的,这些是坏的。但是我们不能告诉你它是如何做出这个选择的,因为这一切都发生在深度学习中。
Erik:所以你之前给出的例子是划痕在边缘或内部,所以挑战似乎是在内部有划痕的情况下训练数据中没有足够的样本。所以我们没有足够的数据来训练模型。在很多情况下,如果质量控制很糟糕,那么你有大量的错误示例,然后你就有了一些很好的训练数据。但是在质量控制已经相当好的情况下,你可能没有那么多实际故障的例子。您如何了解如何收集数据以及何时有足够或不足的数据来训练深度学习模型?
Iain:这是传统机器视觉和深度学习之间最大的区别之一,使用传统机器视觉,你基本上可以拍摄一张图像,你可以设置你的规则和你的逻辑,你可以在该图像上进行测试,然后说,好吧,我正在测量这个,我想找到这个。如果它的模式与我教它的变化超过 10%,我将拒绝它。如果我在这里计算的像素数超过了某个值,我将拒绝它,如果需要,您可以在一张图像上设置这些规则。然后你可以开始用其他图像挑战它。
使用深度学习,你需要大量的图像开始,而数量是可变的。因此,根据故障的细微程度,您可能能够以谈论数十张图像作为起点而侥幸逃脱。但是,如果您想让某些东西变得非常强大,那么更多就是更多。如果您可以提供更多尝试放入该深度学习模型的所有不同类别的样本,那么您将获得更好、更可靠的结果。但是您还需要花时间在那里实际将它们分开。因此,如果您只有一个单一故障的一张图像,那么您在多个位置可靠地发现该故障的机会是有限的。有技巧。
因此,我们使用的大部分软件之一是一种称为 ViDi 的认知产品,它可以选择将引入的变体添加到经过训练的图像中。所以你基本上可以拍摄一张作为你训练的一部分的图像,然后说,所有训练过的图像,我将以两度的步长将它们全部旋转 ±90 度。我打算让它们都稍微亮一点,稍微暗一点来尝试,因此人为地引入了一些我们可能期望的变化作为增加训练集的一种方式。
因此,如果我只有少量的故障图像,我可以添加其中一些操作,包括位置、大小、比例、偏斜、亮度和对比度,以尝试通过添加其中一些操作来使我的训练集更加健壮在第一天,但它仍然没有替代品。它当然可以提供帮助。但是,如果您真的没有数据开始,那么将很难使用。
当然,这也可能导致分离,我们倾向于在深度学习中使用两种不同技术的商业软件。一个是你专门教导错误的地方。因此,当然,对于认知产品,我们将其称为有监督的培训,您可以在其中专门利用这些错误中的每一个。这就是故障所在,您将在每个故障图像上突出显示它。这是这种类型的故障,您必须手动标记所有这些图像,特别是故障所在。然后,您可以更有针对性地了解故障类型或您要查找和突出显示的功能。但这样做的缺点是你确实需要有很多不同的变化。
因此,如果您正在查看划痕,您希望这些划痕具有良好的训练集,其中这些划痕在您希望找到它们的不同位置具有不同的大小、不同的长度、不同的曲率。因为使用这种方法,您所教的内容将考虑各种因素,包括位置、大小、长度、围绕您标记的区域的像素在训练神经网络时都会进入混合部分决定如何区分该类或其他所有错误。
如果你没有很多拒绝的图像,我们称之为无监督训练或新奇检测的另一种方式是你只在好的图像上训练它。你说这些图片都是好产品,这些都是可以接受的。你训练它们,然后你要求它找到不同的东西。如果您的错误与该技术一起使用,那么这是一个好方法,有些可以,有些则不能。但是,如果错误适用于该技术,那么您选择的是好的,并且您正在突出那些图像上的区域,这些区域与具有它们的好那些不符合。
因此,它允许您检测以前可能未见过的故障或差异或变化。所以这两种技术,我们通常也将它们结合起来,因为您可能希望通常有一个缺陷检测,它正在寻找与好产品的差异。但也可能有一些非常具体或相当精细或微妙的特征,该技术不能可靠地分离。当它们更明显时,它可能会发现它们。但是当它们更微妙时,我们需要采用一种更直接和监督的训练方法,在这种方法中,您将手动突出显示错误作为训练的一部分。然后将两者结合起来,您可以让两个深度学习模型并行运行,从而真正为您提供两全其美的效果。
Erik:然后我想接下来可能会是这种培训,是否有任何现成的软件可供人们购买,他们可以插入,他们可以上传图像,并输出功能模型?或者几乎所有这些都需要数据科学家现在进入数据集以创建功能模型?
伊恩:所以你可以选择任何一种方式。在一个层面上,任何人都可以去谷歌、亚马逊、微软注册一个账户,你可以访问他们的虚拟机。你可以使用开源的深度学习程序,比如 TensorFlow,你可以以绝对最低的成本开始新闻,你可以去训练一个深度学习网络。显然,您必须大致了解自己在做什么,这需要开销。但是那里有教程。
所以在一个层面上,你可以以最低的成本去做。你不需要任何东西。如果您拥有自己的硬件,则可以依靠将图像上传到云并使用虚拟机来完成所有培训。我们真正关注的是市售产品。尽管某种数据科学家方面的事情非常有趣,但对我们来说,它在商业上并不是很可行。如果我们能够在相对较短的时间内部署解决方案,那么我们就可以解决客户的问题,部署解决方案,让它在工厂车间工作,然后我们可以继续进行下一个项目。
我们不想花几个小时、几天或几个月来训练神经网络。因此,为此,我们当然会专注。而我今天真正谈论的是基于这些市售产品。提到一对,我想我已经提到过一个,它是 Cognex ViDi 软件。我们还使用德国公司 MVTec [听不清 27:28] 深度学习库。
这些都是商业上可用的深度学习产品,你有一个软件用户界面可以让你进行培训。因此,您可以导入图像,您可以在图像上标记您感兴趣的功能。然后您可以在本地硬件上本地训练该模型,然后您可以在这些软件环境的框架内再次部署它。这确实是我们看到的直接工业部署的地方,这对我们来说是最明智的市场途径。
所以它可能不是最强大、最灵活的,显然,像谷歌这样的公司已经有了他们的自动驾驶汽车,他们发现了所有这些路牌、店面、汽车、车牌,所有这些都在非常之内,非常复杂和强大的神经网络,深度学习,人工智能,由于几个原因,通常没有使用云作为计算平台的好处。
因此,一个是商业原因,这些通常是公司使用的特定和专有流程和产品,并且通常对将所有图像数据及其质量控制数据泄露到云端存储在其他地方持谨慎态度。但是也有实际的方面,所以培训是其中的一个元素。但是当我们谈论部署深度学习系统时,这通常是在生产机器上。
我们可能会在一秒钟内检查多个部分,在这种情况下,在生产线上用相机拍摄图像,然后将该图像上传到某个云服务,在虚拟机上进行深度学习,获取结果并发送回到机器以通过或失败,它可能足够快,但我们可能无法保证它的可靠性或延迟。这将取决于本地网络条件、本地互联网条件和其他瓶颈。这将太冒险,太难看。因此,我们通常会研究所谓的边缘推理,您正在学习本地计算机进行深度学习运行时,在本地计算机上对相机进行推理,然后将结果反馈给那里。所以这就要求计算机有能力做到这一点。
这就是你开始的地方。您通常正在考虑使用 GPU 加速。对于我们正在使用的大多数产品,即市售产品,GPU 加速是基于 Nvidia 的,因为 Nvidia 拥有的 CUDA 库是在软件中使用的库。基本上,您使用的最高规格显卡,您在网络上的速度越快,您的深度学习运行速度就越快。这就是我们倾向于部署的方式。
在训练方面,所有相同的事情都适用于我们在训练时通常在这里所做的就是使用具有图形加速功能的本地计算机。例如,我们有一台游戏专用笔记本电脑,它能够训练这些深度学习模型。在几分钟之内,如果它是一个小图像集、小图像大小,可能是几个小时,我们有时可能会让它运行一夜以进行更复杂的训练集。培训通常更多是离线过程。因此,为此使用基于云的服务更为可行。但在本地硬件上进行本地操作也是一个合理的开销。
我们开始看到的是,像康耐视这样的公司正在探索基于云的服务是否可行。但同样,我们有这两种东西。一是我们可能有千兆字节的图像要上传。通常,您可以为深度学习拍摄和提供的图像越多,您的模型就越好、越健壮。当然,在英国,我们有不对称的互联网连接,所以上传速度可能只有下载速度的 10% 20%。
因此,要将数十或数百 GB 的图像上传到云服务,可能需要几天时间。因此,从应用程序的角度来看,实际上在本地计算机上本地运行东西可能是有益的。当然,我们使用的软件是经过许可的。因此,如果我们使用专有或许可软件,而不是像谷歌和亚马逊那样,如果我们使用专有或许可软件,如果你有一个物理 USB 加密狗,你可以将它用于本地笔记本电脑或本地 PC,如何如果您在云中拥有一台虚拟机,那么该许可是否有效,这可能是一点点?
所以我们看到了一些像康耐视这样的主导公司的一些变化,他们开始探索一种模式,我们作为合作伙伴作为集成商可以利用我们的合作伙伴关系,而不是我们维护自己的本地基础设施,我们依靠我们的供应商基础设施来进行培训。然后更进一步的是,客户愿意这样做吗?一些客户绝对不希望他们的数据存储在某个地方的云中。他们会更乐意在本地拥有它,即使这意味着投资一些像样的 PC 硬件来训练它。
Erik:是的,我认为,我们在其他物联网用例中看到的或多或少的情况是,普遍向云迈进。所以在这个方向上有一个轨迹,但它很低,非常谨慎。而且它与成本模型无关,这就是人们朝着这个方向发展的原因。因此,任何被视为将 IP 置于风险之中的高风险用例,我认为这些用例的进展都会非常缓慢。
Iain,如果您可能有一个客户并且介意您已经为此工作过,您可以带我们了解一下情况吗,您不必提及客户的名字,而只是引导我们从最初的对话到决策过程对于这种特殊情况,正确的方法是什么,以及如何选择正确的技术。你的评估过程是什么,我认为人们对如何部署它有一个端到端的视角是非常有用的?
Iain:所以我可能可以通过我们提出的几个用例与您交谈。所以,我们不久前有一个是用于一些塑料镜片的。所以这些是实心透镜,我认为它们被用于某种烟雾或火灾探测器系统。他们正在接受人工检查。他们检查它们的方式是通过人类观察它们,它们下面有一个网格,一张白纸,上面有黑线。并且人类能够通过它查看镜头是否正确形成,然后您会看到在这种经典的鱼缸或针垫类型的扭曲中扭曲的网格。
但是如果那个镜头有瑕疵,那么你就会发现线条不会均匀扭曲。当您通过镜头观察时,它们会不均匀且变化无常。我们对此进行了研究,并尝试使用传统的机器视觉方法来做到这一点。我不会说这是不可能的,但是很难做到并且稳健地做到这一点,部分原因是产品有一点点可变性,这是可以接受的。这不是一个精确的产品,它必须是统一的。但这种一致性可能会有所不同。只要它是一个均匀的失真,它就可以变化。
因此,如果您尝试建立一个基于规则的系统来查找边缘,它们是黑白的,非常漂亮和直接,那么您可以做到这一点。但是它们之间的间距会一直变化,变化不大,但它可能有点不均匀,具体取决于失真是如何发生的。然后你开始在两个轴上这样做。然后当你得到一点点时会发生什么,比如气泡或黑色标记或那里的瑕疵?您能检测到这一点,因为现在您需要在网格之间寻找黑色像素吗?这不是不可能的,但要做到并且稳健地做到这一点非常非常困难。
虽然我们基本上能够重现这一点,但在这种情况下,拍摄图像并将它们放入 Cognex ViDi。实际上,只有相当多的样品,我们说的是任何类型的 10 个好产品样品,然后我们可以放入其中一个带有气泡的样品,一个在镜片上曲率不均匀的样品,一个带有划痕或斑点的样品它,直接,它会拿起这些功能。无论您看到网格中的哪种扭曲,它都可以非常快速地拾取这些瑕疵。
实际上,因为这些零件的制作时间很长,我们有 20 或 30 秒的时间来检查每个零件。一旦它经过训练,我们发现我们实际上可以在没有 GPU 加速的情况下运行它,所以我们可以在 CPU 上运行它,而且速度不是很快。你说 10 或 15 秒来检测它。但我们有那么多时间。这是客户可以接受的。这意味着我们可以使用几乎标准的机器视觉硬件设置进行部署,但我们刚刚对一些图形加速软件进行了深度学习培训。
但是,我们使用 ViDi 或 [听不清 39:08] 之类的东西来执行此操作的好处之一是,当您将其部署给客户时,我们将需要能够从摄像头拍摄图像,那些产品有传统的视觉工具和相机接口等等。所以我们可以使用相同的软件环境来抓取图像,让它通过深度学习,也许可以使用标准视觉工具对其进行一些后期处理。
因此,可能会对所发现的缺陷的大小设置一些用户可编辑的阈值。所以基本上,找出发现的缺陷,然后对那些成为运行时、用户可编辑的缺陷进行标准的 blob 和像素计数类型分析,这样他们就可以调整质量水平而无需重新训练深度学习,然后包装所有在用户界面中。这是我们正在研究的一个领域。
Erik:你能告诉我这个开发的时间表是什么,以及包括硬件、软件在内的全部预算是多少,这样的部署的全部预算可能是多少?
伊恩:是的,当然。所以时间尺度,就我们评估它而言,一旦我们从客户那里得到样本,我认为我们在一个小时左右的时间里训练了深度学习模型。一旦我们得到图像,培训可能只用了不到一个小时,他们就能够开始进行测试,并在几天内有效地回去向客户展示。所以它的各个方面很快,因为它只是工作。
培训工作非常迅速。我们马上就得到了很好的结果。我们能够转移到部署。我认为,如果我说大约 30,000 欧元,那是硬件的总成本。如此合理的高分辨率相机,照明,网格,我们用作成像解决方案的一部分,工业计算机进行处理,软件许可,以及我们实际将一点用户界面放在一起的时间,做所有沟通、签署和集成的安装方面。
这与传统的机器视觉相比相当有利。例如,如果我们使用具有相同分辨率的智能相机来做到这一点,我们可能会花费 75% 或 80% 的成本。但在同一个球场上,情况并非总是如此,因为一旦你开始关注更快的系统、更高端的系统,我们开始需要更多的显卡、更大的硬件,以及更多的图像处理和深度学习时间,那么这些成本显然会增加很多。
Erik:这将如何扩展?假设最初开发解决方案需要 30,000 欧元,如果他们说我们有另外 5 家工厂,或 5 条完全相同的生产线,我们想要部署它,是否也是 30,000 欧元,或者您正在查看 70%, 50%,如果您想扩展完全相同的解决方案,成本会是多少?
Iain:在那个特定的问题上,你会看到 70% 左右的人进行重复,因为我们在深度学习培训期间编写用户界面进行开发方面的大量开销已经全部完成。因此,硬件成本、软件许可以及仍然需要支付一些部署费用才能在现场实际设置和运行案例。但显然,我们不必创建用户界面或类似的东西,因为可以从前一个中复制。
因此,在更大的部署中,这种差异可能会更大。我们可以降低到 50-60% 的重复成本。因此,我们所做的很多事情,重复次数很少达到数十和数百次,往往是一条生产线,或者最多 5 条,也许最多 10 条。如果你的规模非常大,如果你说的是真的只是从中挑选名字,是的,真的。但是三星或索尼可能拥有数百条生产消费电子产品的生产线,那么您可能不一定会看到其中一些商业化的现成产品。
您可能正在考虑从头开始,因为,好吧,开发开销要高得多,但是部署成本可能会低得多。但是话虽如此,我们的供应商,如果我们对他们说,我们有 100 折部署或 1,000 折部署,他们会非常热衷于在此基础上讨论商业条款。所以我敢肯定,各种事情的成本可能会降到这样的水平。
另一个小例子,我们目前正在积极使用的一个例子是,我们有一个手动组装过程,我们试图检测一个特定的特征,客户将 500 或 600 个这些特定项目用螺栓固定到这个系统上,他们正在构建的这个框架。他们试图做的是消除验证每一个都已正确放置并处于正确位置所需的人工检查量。
而且因为不是一条可能完全自动化的生产线,我们可以将相机直接放在我们正在观察的物体上,我们可以控制照明,我们可以控制它的测试,我们谈论的是一个大项目你有很多人爬梯子在它周围移动东西,所以仅限于我们能做的事情。我们对环境没有同样的控制权。我们必须将摄像机从物体上移开,这样人们就可以在它们面前四处走动。我们不能在表面上发出愚蠢的亮光来照亮它。我们必须依赖环境照明。
这一切都使得检测这些物体非常棘手,因为它们出现在不同的角度,不同的高度,我们有一个相机,高分辨率,彩色相机,看着场景,或者实际上其中几个一直看着大约。我们正试图确定所有这些不同的物体都在那里吗?物体本身在用螺栓固定时,可以扭曲和顺应。他们坚持法案的其他方面。并且取决于它们被收紧的程度和它们所抓住的东西,它们会轻微变形。它们看起来有点小。
它们基本上只有一种颜色,有几种不同的尺寸。但是颜色不是构建的受控方面。只要它是功能性的并且颜色大致正确,它是可以接受的。所以我们有所有这些变化:照明,阴影。我们有多个位置、多个姿势和角度,它们出现在这些位置,以及对象的实际颜色和大小的变化。我们正试图将它们全部定位在这个表面周围。我们目前正在使用深度学习来教授这个功能的样子。
我认为,我们现在最多可以训练 2,000 或 3,000 张图像,而这些图像中的每一张都可能包含多个实例。我还没有真正触及的另一件事是,你需要所有这些深度学习技术都依赖于一个基本事实,人类会说,这是好的,这是坏的,或者这是这种类型的特征,这是这种类型的功能。所有这些图像都需要尽可能准确且一致地正确标记,以允许深度学习说,好吧,我知道这些是这个类,这些就是这个类。因为在训练开始时没有人机交互,它不知道自己在分类什么。
因此,就时间而言,这是一个相当大的开销。它不一定是特别高的技能。但这确实需要有人坐在那里说,我要在这个周围画一个盒子,我们现在要在这个周围画一个盒子。我们目前发现的是最好的技术是什么?我们如何最好地封装这些对象?
因为有时它们是完全可见的,有时它们是部分可见的,有时我们看到的更多的是它的侧面而不是它的正面。我们如何去教它?对此没有正确的答案。它变得有点反复试验,有点尝试一种技术。好的,我们将训练所有这些,我们只关注它的某些方面。如果我们看不到那方面,我们就不会训练他们。然后我们训练同一个模型的另一个版本,我们更多地包括它的周围环境,说,就是这样,但它被这个包围了,所以我们有更大的区域来定义它。
而且我们不得不花费大量时间来训练深度学习模型并对其进行测试。我们没有得到很好的结果。好的。现在,要重新训练它,我们必须检查所有这 2,000 张图像,我们必须重新绘制所有这些图像上的每一个框并重新训练它,看看这是否会给我们带来不同的更好结果。是不是更一致?这样更靠谱吗?我们是否需要开始将它们分成不同的类?这是直视它的物体。
这就是对象,如果它站在它的一边,那么我们是否应该对待这两者而不是将它们都归为一个类并说它们都是一样的?但它们从侧面或正面看起来确实有很大不同。我们是否开始将它们分开并说,这是前面的对象,这是侧面的对象?这就是我们发现深度学习的地方,尽管它非常强大,尽管它使我们能够做一些我们以前用传统技术确实会遇到困难的事情,但它不是免费的:存在大量的间接成本。
我们甚至看到这个软件的一些制造商和供应商,他们自己,我会说,在苦苦挣扎,但他们发现他们收到了很多询问。或者我们真的希望您评估您的产品是否可以解决我们项目中的问题,您能帮我们评估一下吗?但是这种评估时间既费时又便宜,而且在软件制造商端会占用大量资源。所以它非常强大,但就训练级别的时间以及人类需要添加的时间而言,它有相当大的开销。
Erik:在这种情况下,你认为最终结果会是在这 500 次实例中,你会说,嗯,这 300 次肯定是通过,或者这 20 次肯定失败,但剩下的,我们需要让人类去看看他们的第二个检查器?您是否认为您实际上能够提出足够的准确性,以至于最终无需人类参与?
Iain:我认为在这个特定的应用程序中,如果我们达到 80-90% 的成功率,然后要求人工干预剩余的几个,那么在这个特定的用例中,这个客户可以接受。显然,如果您正在查看生产线上的 100% 质量检查,那么这些数字不会激发信心。但是有了这个,因为无论如何它都是手动操作,他们习惯于花费大量时间检查和重新检查它,因为它是最后出来的高质量组件。这不是一个快速的过程。然后一些人为干预是可以接受的。还有一个事实是对该系统进行了妥协,我们知道我们将研究构建的某些方面。其中一些对象自然会被稍后的构建甚至同一阶段的某些东西所掩盖。所以可能有一些我们物理上看不到的位。和深度学习一样好,它看不到图像是否没有呈现给它。所以对那个特定的项目有一个理解。
Erik:到目前为止,我们一直在谈论将机器视觉与相机系统结合使用,对吧?但我想你可以使用红外线,你可以以非常相似的方式使用其他传感器。你有没有发现它特别有用?或者您是否发现更标准的摄像头系统通常是最有效的解决方案。
Iain:所以,到目前为止,我们只用标准相机观察过这个问题。但可以肯定的是,使用康耐视产品,它能够处理多通道图像。所以颜色很好。黑白都不错。但是没有理由说这些数据不能是 3D 数据。我的意思是,当您获得图像时,会出现红外或热成像,它基本上与标准的彩色相机或黑白相机的格式相同。
再一次,3D 我们会很高兴地工作,可能需要成为我们所说的范围图像,2.5D 图像,其中你有一个 XY 图像,高度为颜色,如果你喜欢,像素,而不是一个完整的点云。但这些技术适用于任何图像格式。但我没有真正提到的是,我们正在使用的这些商业产品,其中的神经网络已经过预训练,已经准备好偏向工业类型的图像。
因此,如果我们提供工业类型检查的标准、图像、黑白或彩色,那么深度学习已经是某种预设。不必费力地磨练您正在查看的功能。在某种程度上,这有一点灵活性。但是,如果你去亚马逊或其他人从 peg 神经网络中取出一个新鲜的神经网络并从头开始在图像上训练它,那么你根本不会缩小范围。
所以我们正在使用的软件产品,如果你想说,它是狗、猴子还是猫,工业检查可能不太可能做。但是如果我们看的是一块印刷电路板,让我们找到芯片的末端,或者让我们检查每个引脚上的焊料是否正确形成,然后这些图像会直接通过我们的深度学习网络。重新查看这里的速度要快得多,因为网络已经倾向于与该图像类型一起工作。
Erik:我真的很感谢这里的深入研究。有没有最后的想法,或者我认为我们今天在这里涵盖了很多领域?
Iain:我认为我们已经介绍了很多。还有很多其他用例。深度学习和深度学习,即使在机器视觉领域也并不新鲜。但我们现在真正得到的是商业上可行的现成产品,我们可以在相当短的时间内部署这些产品。所以现在这在商业上变得非常非常可行,并且越来越被接受。它为我们打开了以前真正关闭的途径。这有点令人惊叹。
当我们开始看到特别是 Cognex ViDi 时,因为培训用户界面呈现得非常好,您可以很快地使用它。它真的让我们把目光从我们之前说过的应用程序目录中移开,要么我们做不到,要么我们真的不认为如果我们部署它会变得健壮。就在临界线上,我们认为我们可以找到或者我们可以找到这种类型的故障,但不是那个。你开始回顾那些并认为,实际上,这是可能的。现在这真的是可行的。
我们看到一些软件公司专注于某些特定的用例。因此,肯定 Cognex 和 MVTec 已经开始使用的其中一项重要功能是文本阅读,并且 [音频不清晰 58:02] 已经有了一种训练好的字体,用于开始工业识别文本阅读、OCR、OCV,它已经通过神经网络进行了训练使用深度学习技术,然后作为运行时返回给您,供您使用,它的功能只是您给它您通常在查看工业标记。所以我们不一定在谈论手写的东西。
但是几乎所有工业字体都印在任何东西的标签上,或标记在可追溯性的东西上,甚至只是用于食品和防火包装之类的东西,你有日期代码、锁代码之类的东西,这些字体已经接受过大量文本图像网络的训练,它们确实非常强大。没有任何教导,你就说读这行文字。将它读回给你并取回它是非常强大的。
我们认为这是可以培训的主要好处之一,因此最终用户不必进行培训。他们可以直接受益于他们有一个现成的阅读文本的深度学习模型。当然,我知道一些公司正在研究其他用例。还有其他我们可以关注的事情。
所以也许对于物流来说,这是一个盒子。如果你可以说好吧,那就是盒子,我们在哪里寻找它上面的标签?然后它加快了一切。或者车牌识别,找到一个白色矩形或黄色矩形,我们将在那里读取代码,某些,可能是稍微小众的用例,但是可以在产品基本上销售之前完成培训方面的区域,然后你'刚刚准备好使用预训练的深度学习模型,您可以直接使用它来解决某些任务。所以我认为随着我们真正前进,我们会看到更多这样的事情发生。
Erik:我猜对你来说,也许它没有发生得这么快。但是对于很多人来说,我认为这似乎是从无到有,突然之间,我们正在朝着具有成本效益的解决方案迈进。因此,感谢您引导我们完成它并让我们了解我们的最新情况。是的,真的很感谢你的时间,伊恩。
伊恩:没问题,很高兴。
Erik:感谢您收看另一个版本的工业物联网聚光灯。不要忘记在 IotoneHQ 的 Twitter 上关注我们,并查看我们在 IoTONE.com 上的案例研究数据库。如果您有独特的见解或项目部署故事要分享,我们很乐意在未来的版本中介绍您。写信给我们 erik.walenza@IoTone.com。