神经网络是机器视觉系统的未来吗?

作者:Tigervs    发布时间:2019-07-21    浏览量:

什么是神经网络?为什么它们是工业图像处理感兴趣的主题?它们消除了开发人员定义差异化标准的需要; 相反,神经网络自己学习标准,并将“知识”应用于精确任务。然而,它们本身无法可靠而无误地开箱即用。他们必须首先接受深入的培训。本白皮书详细描述了如何进行此培训,所需的准备步骤以及设置神经网络所涉及的各个开发步骤。

案例介绍

苹果和梨

他们说你永远不应该比较苹果和橘子,但是当谈到机器视觉系统时,苹果和梨并没有好多少。即便如此,仍然需要能够精确处理这类任务的系统:根据图像数据区分两种类型的水果。

传统上,开发人员需要思考哪些标准是区分两种水果所必需的。人们可以想象一种相对简单的方法:苹果有红色调,梨是绿色的。因此,一个标准是颜色信息。但请记住:有些苹果也可能有绿色调,例如当它们未成熟时。如果将颜色作为唯一标准,则可以预期未成熟的苹果将被误认为是梨。为了确保更高的准确性,添加一个额外的标准是有意义的:形状。虽然苹果往往呈圆形,但梨更加拉长。


图1:通过基于摄像头的机器学习系统可视化苹果和梨的分类结果。

因此在这种分类情况下,差异化相对简单。标准(通常称为“特征”)并不难确定。但是,当我们在不同类型的苹果之间进行分类时,我们该怎么办?颜色和形状不一定足以使识别成为可能。在这个例子中,我们的自定义(“手工制作”)功能被推到了极限。

不同类别的对象之间的分类越困难,开发人员组成能够自动检测可以将类彼此分离的特征的算法变得越困难。

机器学习算法是一种很有前景的解决方案,尤其是卷积神经网络,简称CNN。CNN可以自动学习区分对象所需的标准。这使得它们不仅适用于最困难的分类问题,而且适用于需要极大灵活性的任何应用案例。

卷积神经网络(CNN):成功案例

CNN背后的概念并不新鲜。早在1968年,加拿大神经生物学家David Hubel与瑞典神经生理学家Torsten Wiesel就猫科动物视皮层进行了合作。视觉皮层是大脑中用于将视觉数据处理成可用信息的部分。因此,他们的目标是回答有关大脑通过眼睛(“我看到一个苹果”)进入大脑的视觉图像信息产生关于物体的上下文有用信息的方式的问题。两位研究人员向猫展示了不同方向的光条,在此过程中确定视觉皮层内的不同细胞被激活,这取决于条形图的方向。他们还能够证明复杂的光线模式,如眼睛形状,

Hubel和Wiesel的努力产生了一个能够描述细胞激活及其特定图像信息转发的模型。这形成了计算机辅助图像分类建模的基础。

30年后,法国计算机科学家Yann LeCun将对Hubel和Wiesel的工作着迷。他将视觉皮层功能的描述叠加到算法上 - 在此过程中创建了第一个CNN。

尽管他付出了努力,CNN多年来仍然不适合实际应用。造成这种情况的主要原因是CNN需要大量的计算能力。使用串行技术处理数据的CPU处理器,意味着一个接一个的数据记录,在网络学习到足够工作之前需要数年时间。

正是在图形处理器单元(GPU)的出现,并行处理数据,CNN模型再次变得相关 - 事实上,近年来它已经享有强大的重生。研究人员正在庆祝手写识别,医疗诊断,自动驾驶车辆预警系统,机器人和生物识别中的物体识别等方面取得的巨大成功。与其他竞争学习技术相比,CNN在挑战性应用中经常产生更好的结果。谷歌,IBM,微软和Facebook等大公司投入的数十亿美元表明了这项技术的巨大兴趣和潜力。

CNN不仅仅是处理器密集型的; 他们也渴望获得数据。为了从头开始训练CNN,需要大量已经分类的图像数据。今天的开发人员可以获得存储有此信息的可自由访问的数据库。ImageNet 1是最受欢迎的图像数据库之一。它包含超过1400万个分类图像。还有一系列专门针对特定分类问题的数据库。例如,有一个名为德国交通标志识别基准的数据库,其中包含超过50,000张交通标志图像。在该特定示例中,CNN在2012年测试期间实现了99.46%的成功率 - 优于人类分类器实现的98.84%的成功率。然而,在实践中,开发人员通常面临高度专业化的分类问题,因此无法获取他们自己的图像数据库存。幸运的是,没有必要收集数百万张图片。被称为“转移学习”的技术技巧允许大大减少必要的体积,在某些情况下仅需几百或几千个图像。

开发人员可以自由访问软件堆栈的主要部分。CNN有很多框架:Caffe,Torch和Theano--一长串软件库专门用于这个主题。2015年11月,Google甚至开放了自己的内部机器学习软件TensorFlow,这是从图像搜索到Google Photo等各种Google产品的不可或缺的组成部分。

CNN还在庆祝机器视觉应用领域日益增长的作用。按照嵌入式视觉开发人员调查2由嵌入式视觉联盟在2016年进行的,77%的受访报告的分类任务处理现有或计划使用神经网络。这一趋势正在上升:2015年进行的同一调查3仅发现61%。同样的2016年研究还发现,86%的CNN神经网络被用于分类算法。结果表明,公司不再需要像谷歌或Facebook这样的公司的规模和资源来开发基于CNN的产品或服务。

CNN的发展过程

想象一下,您确实需要将苹果与梨分开,作为工业规模的水果分选系列的一部分,并且还希望根据其质量自动将不同的水果分批分批。需要以下流程步骤:

  1. 收集图像数据
  2. CNN的设计
  3. 执行自学习算法
  4. 对受过训练的CNN进行评估(并根据需要对步骤1,2或3进行重新处理)
  5. 部署受过训练的CNN

以下文字详细介绍了各个步骤。

收集图像数据

机器学习的基本原理(或者,确切地说,“监督机器学习”)涉及使用许多示例向计算机教授要解决的问题。对于水果分类线,这将涉及拍摄许多图片,显示各种类型,质量和大小的单个苹果或梨。还必须记录每个图像上可以看到的内容的精确描述,这意味着所有三个属性的特定值(“标签”)(参见图2)。这创建了一组输入/输出对,然后几乎字面上显示给计算机的眼睛,指示哪个图像应该产生什么答案(“Braeburn,Class I,Size M”)。


图2:带有附加文本输出的图像数据。神经网络可以使用这些输入/输出对来学习区分。

重要的是,在数据记录期间,所有可能的待测属性组合(在这种情况下,类型,质量和尺寸)都存在于图像中。通常,必须注意应用的视觉变化(不仅是水果类型,而且还有图像中水果的各种照明条件,背景和位置)用样本图像表示。从实用的角度来看,建议采用与最终生产环境中拍摄图像完全相同的方式拍摄图像。记录每张图像中水果的类型,质量和大小的属性应由经过培训的专家进行; 只有实际的水果销售人员,而不是系统程序员,才能正确评估商品的质量。

数据收集过程中一个非常重要的问题是所需的样本图像数量:可以想象,图像的方差越大,所需的样本图像数量就越多。如介绍中所述,ImageNet等应用程序可能很快就需要数百万张图像。这样的数据采集操作很少是经济的,但是,有不同的选择来解决这个问题。与传统的图像处理系统一样,可以更严格地控​​制生产环境。此外,通过对已捕获图像的色调,图像歪斜和缩放进行系统改变,然后将它们用作新样本,也可以人为地扩大所收集的数据量(数据增加)。

CNN的设计

由于具有各种功能的各种层,最先进的CNN脱颖而出。与传统的基本多层感知器4不同,当前网络由一系列交替的卷积和汇集层形成(见图3)。


图3:设置最先进的CNN。输入(图像)通过输出在一系列不同的层中处理。

卷积层通过应用数学“卷积”运算将输入图像的相邻区域的像素值转换为单个值。卷积操作就像一个特征检测器,它只查找图像中的特定属性(例如识别水平方向的边缘)。在处理链中进一步建立汇集层,总结用于较大图像区域的这些特征检测器的幅度。这些层形成金字塔,导致越来越专业的特征检测器,其评估图像的更大和更大区域。回到水果分选线的例子,可以想象网络的第一层响应梨的特征点特征; 相反的上层验证了茎的视觉连贯性,


图4:经过训练的网络具有所谓的特征检测器,其对图像中的特定结构作出反应。虽然网络的第一层对梨特有的斑点图案的反应更多,但是更高层次的层对茎和阴影的视觉连贯性做出反应。

实际上,CNN的精确结构通常是由研究人员开发的网络的变体,例如AlexNet 5,VGG Net 6或GoogLeNet 7。通常需要调整,因为要解决的特定任务可以在输入图像的分辨率或可用计算能力方面具有特定要求。使用上述开源深度学习框架对这些网络进行编程,该框架提供包括卷积层在内的所有各种核心元素作为软件功能。根据要求,需要相当程度的专业知识。初步可行性研究通常只需几个定制即可实现,而真正的100%优化解决方案需要经验丰富的专家进行密集的工作。

执行自学习算法

一旦建立了CNN的数据和设计,就必须执行所谓的自学习算法。它的不同变体总是作为部署的深度学习框架的一部分。这些算法基于“反向传播算法”概念,其核心是(随机)优化过程。这些算法负责配置CNN的空闲参数(“权重”),以便网络为所提供的数据工作。因此,自学习算法用于“训练”网络。

在应用程序解决方案的整个开发过程中执行这种自学习算法是处理器密集程度最高的一步:如果必须使用数百万个样本图像,那么您本身就需要一个或多个更好的GPU服务器(有关此内容的详细信息)下一节),通常需要几天到几周才能处理数据。只有一种方法可以避免这种额外的复杂性:使用转移学习技巧为您的应用程序。

与网络设计一样,不同级别的质量期望可能需要不同级别的专业知识:每个可用的自学习算法将具有影响其性能的不同参数(例如学习或衰减率,批量大小)。还有一些技巧,如Dropout,Batch和Layer Normalization程序,每个技巧都有助于使最终的CNN更加强大。还必须清楚的是,没有自学习算法可以是确定性的; 它还必须始终包含随机组件。这意味着开发人员通常必须评估中间结果并对算法的执行进行手动更改。

评估网络

必须对由自学习算法产生的经过训练的CNN进行统计评估。这涉及获取一组样本图像,其中一个已经知道它们显示的内容并将它们与网络计算的值进行比较。这会产生错误率,通常表示网络正确识别了图像内容属性的百分比。如果结果不满足预定的质量要求 - 例如,将5%的Braeburn苹果确定为Granny Smiths肯定是不可接受的 - 那么必须回到之前的三个开发步骤并改进它们。

原则上,此评估所需的数据始终存在,因为准确地收集数据用于培训网络。关键是永远不要使用它在训练期间已经看到的图像来测试网络。这样做会自动导致低估系统的真实性能,而真正的错误只会在生产过程中出现。在极端情况下,即,如果测试和训练数据完全相同,则网络通过心脏学习这些图像,在评估期间获得满分,然后在将新图像输入生产系统时失败。为了避免这个问题,重要的是部署诸如交叉验证之类的程序,从而在培训和评估阶段系统地分离数据。

部署受过训练的CNN

一旦最后一步的结果令人满意,那么下一步就是将训练好的网络转移到生产系统中。流行的深度学习框架提供了丰富的工具,可以将网络的各种必要元素打包到软件库中,以便它们可以链接到系统的其他组件,例如连接到相机或控制对检测到的图像内容的反应。

如果在CNN评估图像期间对运行时性能有特定要求,则可能产生额外的工作。这通常是因为在训练网络(GPU服务器)时的硬件设置可能与生产环境非常不同。人们可能会被迫使用特殊方法(例如量化)来减少已经训练过的网络以适应目标系统。然而,通过良好的网络设计可以避免这种具有技术挑战性的活动。

转学习

正如已经提到的,CNN在纯粹的形式中是高度数据饥渴的,并且在训练期间同样是处理器密集型的。幸运的是,通常有一个很好的选择来简化生活(作为开发人员),特别是通过使用称为转移学习的方法。这使得可以使用大量通用图像(例如ImageNet数据库中的图像)训练的网络,并使用少量特定于域的图像使其适应具体的应用程序。开发人员“显示”诸如AlexNet,VGG Net或GoogLeNet之类的网络特定于应用程序的训练图像,然后将结果值作为特征向量存储在网络的最后一层中。这些向量表示以高度紧凑的方式呈现给网络的图像,并且可以通过标准机器学习过程分类,例如逻辑回归,支持向量机或“简单”多层感知器。这样,CNN取代了传统的图像处理工具,如Hough变换,SIFT特征,Harris Corner或Canny Edge探测器。近年来,比较科学研究和许多实际应用清楚地表明,CNN中的学习特征向量比传统的手工特征检测器更加适用。Harris Corner或Canny Edge探测器。近年来,比较科学研究和许多实际应用清楚地表明,CNN中的学习特征向量比传统的手工特征检测器更加适用。Harris Corner或Canny Edge探测器。近年来,比较科学研究和许多实际应用清楚地表明,CNN中的学习特征向量比传统的手工特征检测器更加适用。

CNN的处理器

在CNN的发展过程中,如上所述在培训和申请过程之间进行区分。这两个步骤的硬件要求完全不同。



图5:图形处理器单元(GPU)是CNN培训过程的首选硬件。对于嵌入式视觉系统中的集成和应用,现场可编程门阵列(FPGA)用作训练网络运行的处理单元。

在可能的情况下,应将高性能GPU处理单元用于CNN培训过程。像NVIDIA这样的制造商提供专为此任务量身定制的AI超级计算机,如DGX-1; 也可以使用价格更实惠的NVIDIA Titan X卡。据NVIDIA报道,这些可以比普通CPU更快地训练CNN 80倍。

一旦网络经过培训,就可以将其转移到具有低硬件要求的嵌入式视觉系统和处理单元。建议将现场可编程门阵列(FPGA)用于处理单元,因为它们可以并行和高速处理图像数据。

因此,这种嵌入式视觉系统的关键部件是能够记录待分类图像数据的摄像机; 用于传输图像数据的电缆; CNN使用的处理单元对图像数据进行分类。


图6:用于CNN实际应用的嵌入式视觉系统。嵌入式摄像机(Basler dart BCON)通过柔性带状电缆连接到带有FPGA(Xilinx Zynq)的处理单元。图像数据的分类在FPGA上运行,因此可以实时计算。

采用FPGA的嵌入式视觉系统提供了一系列优势,使其非常适合与CNN一起使用:

  • FPGA能够执行卷积运算和网络所需的其他数学运算,以并行和高速对图像进行分类。此设置实时提供图像分析和分类。
  • FPGA比GPU需要更少的功率,因此更适合低功耗嵌入式系统。Microsoft Research 8最近发布的一份报告称,FPGA的能效比GPU高出10倍。
  • FPGA的大片上存储和带宽使CNN可以实时分类高分辨率图像。
  • 具有直接FPGA连接的摄像机(例如Basler的dart BCON)将数据直接传送到FPGA。这是CNN等处理器密集型应用的关键优势,因为通过USB传输的数据必须在到达FPGA之前通过各种硬件组件(如主机控制器)运行。因此,直接相机/ FPGA连接可促进高效实施。

简要总结

  1. 虽然致力于传统分类问题的开发人员必须制定出自己手工制作的“功能”或标准,但CNN会自行学习这些差异化标准。
  2. 网络使用一组图像自动学习这些区分标准,其中已知所显示的内容。无论是在所需图像的体积方面还是在处理能力方面,该学习过程都是高度资源密集的。
  3. 然而,转移学习的原理使得可以实现具有低图像和处理能力的生产就绪解决方案。
  4. 具有直接相机FPGA连接的嵌入式视觉系统(例如Basler BCON)非常适合与CNN一起使用。
  5. 根据嵌入式视觉联盟2016 年进行的嵌入式视觉开发者调查9,77%的受访者报告当前或计划使用神经网络来处理机器视觉应用中的分类任务。

相关新闻推荐

关注官方微信

微信二维码
版权所有 深圳市如虎科技有限公司 Copyright © 2018-2019 Tigervs.Com All Rights Reserved 粤ICP备19029139号-1