神经网络会成为机器视觉的未来趋势吗?

作者:Peter Behringer /Dr. Florian Hoppe

什么是神经网络?为什么它会成为工业图像处理系统的热点话题?因为神经网络不仅使开发人员从复杂的差异化标准界定程序中解脱出来,还能够自主识别并学习这一标准,并将这一“能力”应用于精确的任务中。但神经网络并不能保持持续可靠地运作,也无法主动实现与时俱进的更新。它们必须先接受专业且深入的培训。本文详细描述了应该如何进行这一培训,所需的准备工作以及与建立神经网络有关的各个开发步骤。

1 简介
1.1 苹果和梨
有人说苹果和桔子根本不具备可比性,而如果谈及机器视觉系统的话,苹果和梨这一组合似乎也找不到任何共同点。即便如此,我们仍然急切地需要能够精确处理不同任务的系统,类似能够基于图像数据区分两种不同类型水果的任务。

一般来说,开发人员总是会陷入“区分两种水果需要基于怎样的标准”这样一个怪圈。可以设想一个比较简单的区分方法:苹果是淡红色的,而梨是绿色的。这样一来,设定的标准之一即与颜色相关的信息。但请记住:有些苹果也是绿色的,比如当它们还未成熟时。因此如果将颜色视作唯一的区分标准,那么不成熟的苹果也会被误认为是梨。为确保更加精确的结果,增加一个衡量标准是很有必要的:比如形状。苹果通常更偏向于圆形,而梨则呈现比较细长的椭圆形。

图1:通过基于相机的机器视觉系统可视化呈现苹果和梨的分类结果。

图1:通过基于相机的机器视觉系统可视化呈现苹果和梨的分类结果。

在这个分类示例中,对物体进行区分显然是比较简单的。制定这一区分标准(通常称为“特征识别”)并不难。那么当我们需要对不同种类的苹果进行分类时,又该怎么做呢?颜色和形状在这种情况下已经不足以成为区分不同苹果的标准。在这个例子中,我们自定义(“手工定制”)的特征识别功能达到了极限。

针对不同对象的区分和分类越困难,对于开发人员来说,设计出一种能够自动检测出不同对象之间差别和特征的演算法就显得愈加重要。

机器学习算法是前景非常广阔的一种工具和解决方法,尤其是卷积神经网络(简称CNN)。卷积神经网络能够自动学习区分不同对象所需的标准。这使得它们不仅能够胜任最棘手的分类任务,同时也适用于灵活性极高的各种应用案例。

1.2 卷积神经网络(CNN):成功案例
卷积神经网络并不是一个最近才出现的新概念。早在1968年,加拿大神经生物学家David Hubel与瑞典神经生理学家Torsten Wiesel针对猫科动物视觉皮层进行了合作研究。视觉皮层是大脑皮层中主要负责将视觉数据处理成可用信息的部分。因此他们的目标是寻求如何从大脑接受到眼睛所采集的视觉图像信息(比如“我看到一个苹果”)中,获得目标对象有用信息方式的答案。这两名研究人员给猫演示不同走向的光条,在这一过程中发现视觉皮层的不同细胞会根据光条的走向被激活并做出反应。他们同时还发现复杂的光线图案,比如眼睛的形状,能够激活视觉皮层更深层部位的细胞。

通过Hubel和Wiesel的努力,最终研发出一个能够演绎细胞激活和转发特定图像信息过程的模型。这也为计算机辅助图像分类建模奠定了基础。

30年后,法国计算机科学家Yann LeCun再次为Hubel和Wiesel所取得的成就所激励。他将视觉皮层功能的演绎叠加到一个演算中 -- 并从中成功创建出第一个卷积神经网络应用。

但即便如此,卷积神经网络在之后的很多年仍未能适用于实际操作和应用。其中最主要的原因是卷积神经网络需要投入大量的计算能力。使用串行技术处理数据的CPU处理器需要对数据记录挨个进行分析,意味着在这一网络能够最终应用于工作之前需要花费多年时间。

直到图形处理器单元(GPU)的出现,能够对数据实现并行处理,卷积神经网络才再一次被人们记起 -- 实际上近年来卷积神经网络的发展已经有了很大的起色。研究人员对卷积神经网络在笔记识别、医疗诊断、自动驾驶车辆预警系统,机器人物体识别以及生物识别技术应用方面取得的巨大成功感到欣慰。与其它竞争性学习技术相比,卷积神经网络在具有挑战性的应用中通常能够产生更好的结果。包括Google、IBM、微软和Facebook等大型企业所投资的数十亿美元巨额资金无不表现出其对这一领域的极大兴趣以及这一技术本身所具有的巨大潜力。

卷积神经网络不仅需要密集的处理器运作;同样对数据有极大需求。对卷积神经网络进行一次彻底培训,需要输入大量已经分类的图像数据。目前开发人员能够自由访问与此相关的数据库。最常用的图像数据库之一是ImageNet1。 它包含超过1400万幅分类图像。同时还有一系列针对具体分类问题而存在的专门数据库。比如,一个名为德国交通标志识别基准的数据库中就保存了5万余幅关于交通标志的图像。在这一例子中,卷积神经网络在2012年测试中取得了高达99.46%的成功率 -- 超过人工分类取得的98.84%。然而,在实践过程中,开发人员通常会面临高度专业化的分类问题,因此无法获取自己的图像数据库。但幸运的是,现在他们并不需要采集数百万张图像。一项被称为“迁移学习”的技术小窍门能够大大减少所需的图像数量,有时甚至只需要几百或几千幅图像。

软件堆栈的主要部分都可以供开发人员自由使用。目前已经开发出一系列适用于卷积神经网络的深度学习框架:包括Caffe,Torch和Theano在内的众多软件库都是专为这一课题而研发。2015年11月,Google甚至为此开放了内部机器学习软件TensorFlow,这一软件是从图像搜索到Google Photo等多种Google产品的基本组成部分。

卷积神经网络同时也开始在机器视觉应用领域中发挥越来越大的作用。根据2016年嵌入式视觉联盟进行的嵌入式视觉开发者调查2,77%的受访者表示目前正在或计划将要利用神经网络来处理分类工作。这一趋势正在上升:于2015年3进行的同一项调查显示,仅61%的受访者有此打算。2016年进行的该项调查还发现,86%的卷积神经网络被用于分类算法。这一结果表明,除了像Google或Facebook这样拥有庞大规模和丰富资源的大公司之外,普通的公司也能够自主研发基于卷积神经网络的产品或服务。

2 卷积神经网络开发步骤
设想一下,作为工业级水果分选线的一部分,您确实需要将苹果和梨子区分开,此外还需要根据其质量将不同的水果自动分批。那么接下来将要经过以下步骤:
1. 采集图像数据
2. 卷积神经网络结构的设计
3. 执行自学习算法
4. 对培训过的卷积神经网络进行评估(并根据需要对步骤1、2、3进行修改)
5. 训练有素的卷积神经网络部署

下述文字将对各步骤进行详细介绍。

2.1 采集图像数据
机器学习的基本原理(或者准确地说是“监督式的机器学习”)涉及到如何利用大量示例教电脑识别待解决的问题。对于水果分选线来说,这将涉及到拍摄大量能够显示不同种类、品质和大小的苹果和梨的图像。同时,还必须记录下关于每幅图像最精确详尽的描述,这意味着所有三个属性(见图2)的具体值(“标签”)。这将创建一组输入/输出对,并通过电脑视觉处理,相当于直接将其展示给“电脑的眼睛”,并由电脑指示哪幅图像应该对应哪个回答(“Braeburn, Class I, Size M”)。

图2:具有附加文本输出的图像数据。神经网络能够利用这些输入/输出对学习区分。

图2:具有附加文本输出的图像数据。神经网络能够利用这些输入/输出对学习区分。

在数据记录过程中,非常重要的一点是需要在图像上展示出需要测量的所有可能的属性组合(在这种情况下指类型、品质和大小)。通常来说,必须注意的是应用程序的视觉变化(不仅是水果的类型,同时也包括不同的光源条件,图像中水果的背景和位置等)在图像样本中也必须有所体现。从实际的角度来看,在最终的生产环境下、以完全相同的方式拍摄图像是比较可取的做法。记录每幅图像中的水果类型、品质和大小等属性这一任务应该由经过培训的专家进行:只有实际的水果销售者,而不是系统程序员,才有资格正确评估商品的质量。

数据采集过程中产生的另外一个极其重要的问题是所需图像样本的数量:可以想象,图像差异越大,所需的样本数量就越多。如介绍中所述,类似ImageNet的应用程序可能在短时间内就需要上百万幅图像。这样的数据采集操作既不实际也不划算,但是显然还有其它的解决方式。与传统的图像处理系统一样,可以在生产环境进行更加严格的管控。此外,通过对已拍摄图像的色调,图像偏斜和缩放进行系统改变,所采集的数据量同样能够被人工扩大(数据扩增),并用于新的样本中。当然也可以通过众包方式与服务合作伙伴合作,以实现经济可行的数据采集。

2.2 卷积神经网络结构的设计
由于具备不同层次的各种功能,最顶尖的卷积神经网络技术得以脱颖而出。与老式的基础多层感知器4不同,现有的网络由一系列交替卷积层和汇聚层组成(见图3)。

图3:建立一个最顶尖的卷积神经网络。输入(一幅图像)可以通过输出在一系列不同的层之间进行处理。

图3:建立一个最顶尖的卷积神经网络。输入(一幅图像)可以通过输出在一系列不同的层之间进行处理。

卷积层通过进行一项数学“卷积”操作将输出图像相邻区域的像素值转换为单个值。卷积运算类似于特征检测器,仅需查找图像中的特定属性(如识别水平定向边缘)。汇聚层是在处理链中进一步被建立起来的,它能够总结用于较大图像区域的特征检测器的幅度。这些层形成了一个牢固的金字塔结构,产生了越来越多针对更大范围的图像区域进行操作的专门的特征检测器。回到最初的水果分选线上来,可以设想网络的第一层对应的是具有梨特征的斑点图案;而相对的上一层则证实特定苹果类型的茎、阴影及上半部分的视觉一致性都能够保证网络最终计算出哪种水果类型、品质和大小是可见的)。

图4:经过培训的网络具有所谓的特征检测器,使其能够对图像中的特定结构做出相应反应。当网络的第一层更倾向于对具有梨特征的斑点图案做出反应时,更高层则能够对茎干和阴影的视觉一致性做出反应。

图4:经过培训的网络具有所谓的特征检测器,使其能够对图像中的特定结构做出相应反应。当网络的第一层更倾向于对具有梨特征的斑点图案做出反应时,更高层则能够对茎干和阴影的视觉一致性做出反应。

卷积神经网络的精确结构实际上是由开发人员开发出的网络的变形,如AlexNet5、VGG Net6或GoogLeNet7。在这一过程中通常需要进行必要的调整,因为特定的任务在输入图像的分辨率或可用的计算能力方面会有特定的要求。这些网络是通过上述开源深度学习框架被编程的,这些框架能够提供包括卷积层在内的所有核心元素以作为软件功能之一。根据要求,这需要一定程度的专业知识。一个初步的可行性研究通常可以通过几项定制内容来实现,而一个真正100%的最优化解决方案则需要富有经验的专家高强度的工作才能实现。

2.3 执行自学习算法
一旦建立起卷积神经网络的数据和设计方案,就必须相应地执行一项所谓的自学习算法。以不同的变体形式,它将成为被部署的深度学习框架的一部分。这些算法均是基于反向传播算法这一概念,其核心是一个(随机)优化的过程。这些算法负责卷积神经网络自由参数(“权重”)的配置,以便网络能够适用于所提供的数据。因此,自学习算法通常用于卷积神经网络的“培训”。

执行这种自学习算法是应用程序解决方案整个开发过程中最消耗处理器的一个步骤:如果您需要使用数百万幅示例图像,那么您需要一个或多个更好的GPU服务器(更多详情请参阅下一节),通常需要花费几天到几周时间才能进行数据的处理。只有一种方法能够避免这一多余的复杂操作:即在您的应用程序中使用迁移学习技巧。

与网络的设计一样,不同级别的质量预期可能需要相应不同级别的专业知识:每种可用的自学习算法也都具有能够影响其性能的不同参数(如学习或衰减速率,批量大小等)。还有一些如Dropout,Batch和Layer Normalization procedure这样的小技巧有助于使卷积神经网络最终能够发展得更加强大和坚固。还有一点必须明确的是,没有任何一种自学习算法具有完全的确定性;它们总是包含随机组件。这意味着开发人员通常必须对中期结果进行评估,并对算法的执行进行手动更改。

2.4 网络评估
经过自学习算法进行培训的卷积神经网络必须进行统计评估。为进行这一评估,需要将一组已知内容的样本图像与电脑计算值进行对比。这将产生一个出错率,表示由网络正确识别出的图像内容属性的百分比。如果结果不符合预设质量要求--比如说,将5%的Braeburn苹果识别为Granny Smiths是肯定不能接受的--那么就必须回到最初的三个开发步骤并对其进行改进。

原则上来说,需要满足该评估所需的数据是随时可用的,因为这些数据正是为了培训网络而采集而来。关键是绝对不要使用在培训过程中已经用的图像来对网络进行测试。这样做会自动导致对系统真实性能的低估,同时真正的错误只会在生产过程中才被发现。在特殊情况下,当测试数据与培训数据完全一致时,网络会记住这些图像,并在评估过程中做出完美的表现,但在新的图像被输入生产系统中时则会失败。为避免这一问题的出现,非常重要的一点是如何部署诸如交叉验证这样的过程,从而在培训和评估阶段将数据系统地分开。

2.5 训练有素的卷积神经网络部署
一旦最后一步取得了令人满意的结果,那么接下来的步骤则是将培训后的网络植入生产系统中。最普遍使用的深度学习框架提供了一系列丰富的工具,能够将网络不同的必要元素整合输入软件,以便它们能够与系统其它组件相连接,比如与相机连接或对检测到的图像内容做出的反应进行控制。

如果在卷积神经网络对图像进行评估的过程中对运行性能有特定要求,则会产生额外的工作量。这通常是因培训网络(GPU服务器)时与生产环境下的硬件设置的不同所导致。在某些情况下也有可能会被迫使用特殊的方法(如量化法)来减少已培训过的网络,以适应目标系统的需要。然而,通过完善的网络设计能够避免这种在技术上具有挑战性的行为。

3 迁移学习
正如此前已经提到的,如果单以其原始的模式来看,卷积神经网络对数据有极大的需求,在培训过程中同样对处理器有着极高需求。好在(对于开发人员来说)总有一种能够简化一切的更好的方法,特别是众所周知的迁移学习法。这也让已经使用大量通用图像(如ImageNet数据库中的图像)进行培训的网络能够与仅使用少量特定领域的图像的具体应用进行适配。开发人员向一个网络,如AlexNet,VGG Net或GoogLeNet“展示”应用程序特定的培训图像,然后将结果值储存在网络最后一层以作为特征向量。这些向量代表的是以高度紧凑的方式展示给网络的图像,并且能够通过标准的机器学习程序(如逻辑回归、支持向量机或“简单”多层感知器)进行分类。通过这种方式,卷积神经网络能够取代传统的图像处理工具,如Hough transformation、SIFT Feature,Harris Corner或Canny Edge detectors。近年来,科学研究的对比分析和许多实际应用都清楚地表明,卷积神经网络中学习的特征向量比传统的手工特征检测器更加实用和具有操作性。

4 卷积神经网络处理器
如上所述,在卷积神经网络的发展过程中,培训与应用步骤之间的区别是显而易见的。这两个步骤对于硬件的需求是截然不同的。

培训 - GPU

推理 - FPGA

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

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

在可能的情况下,高性能GPU处理单元应该被用于卷积神经网络的培训过程中。像NVIDIA这样的制造商能够提供专门为此任务而定制的DGX-1这样的AI超级计算机;而使用更加经济实惠的NVIDIA TitanX卡同样也是可行的。NVIDIA公司报告指出,它们能够以比普通CPU快80倍的速度对卷积神经网络进行培训。

一旦网络接受了培训,就将被传输至具有低硬件需求和处理单元的嵌入式视觉系统。对于处理单元来说,则推荐使用现场可编程门阵列(FPGA),因为它们能够并行高速处理图像数据。

因此,这种嵌入式视觉系统的关键部件是一台能够记录要分类的图像数据的相机;一根传输该图像数据的线材;以及用于对图像数据进行分类的卷积神经网络处理单元。

图6:适用于卷积神经网络实际应用的嵌入式视觉系统。嵌入式相机(Baslerdart BCON)通过柔性带状线材与具有FPGA(XilinxZynq)的处理单元相连接。图像数据的分类在FPGA上运行,因此可以进行实时计算。

图6:适用于卷积神经网络实际应用的嵌入式视觉系统。嵌入式相机(Baslerdart BCON)通过柔性带状线材与具有FPGA(XilinxZynq)的处理单元相连接。图像数据的分类在FPGA上运行,因此可以进行实时计算。

配置了FPGA的嵌入式视觉系统具备一系列能够完美适用于卷积神经网络的优点:

FPGA能够执行卷积操作和网络所需的其它数学运算,以便对图像进行并行和高速分类任务。此设置提供实时图像分析和分类功能。

相比GPU,FPGA所需功耗更小,因此更适合低功耗的嵌入式系统。微软研究院最近发布的一份报告8显示,FPGA能够比GPU节省10倍功耗。

FPGA的大型片上存储和带宽使卷积神经网络能够对更高分辨率的图像进行实时分类。

能够与FPGA直接连接的相机(如Basler's dart BCON相机)能够将数据直接传送到FPGA。这是处理器密集型应用程序(如卷积神经网络)的一个主要优势,因为通过USB传输的数据在到达FPGA之前必须通过不同的硬件组件(比如主机控制器)运行。实现相机与FPGA的直接连接能够保证更加高效的工作性能。

5 简要概述
1. 当负责解决传统分类问题的开发人员还在焦头烂额于手动制定的“属性”或标准时,卷积神经网络已经能够自行学习这些差异化标准。
2. 网络通过使用一组已知内容的图像自动学习差异化标准。在所需图像的数量以及处理能力方面,这是一个高度资源密集型的学习过程。
3. 然而,迁移学习的原理使得少量图片和处理能力也可能实现生产就绪的解决方案。
4. 卷积神经网络非常适用于具有相机与FPGA直接连接的嵌入式视觉系统(如Basler BCON相机)。
5. 根据2016年嵌入式视觉联盟进行的嵌入式视觉开发者调查9,77%的受访者表示目前正在或计划将要利用神经网络来处理机器视觉应用程序中的分类工作。

作者简介:
Peter Behringer
Basler公司产品市场经理
Peter Behringer自2016年以来担任产品市场经理,负责Basler嵌入式相机在医疗和生命科学领域的市场。
在加入Basler之前,他获得了吕贝克大学医学工程的理学硕士学位。大学期间,他曾在Charité(柏林大学附属夏里特医院)以及哈佛医学院外科手术辅助实验室等知名机构实习。
Peter Behringer发表了大量主要针对医学图像处理的科学研究成果。

Dr. Florian Hoppe
Florian Hoppe是Twenty Billion Neurons GmbH(TwentyBN)的联合创始人兼董事总经理,其职责范围包括业务发展部门等。Hoppe先生拥有计算机科学博士学位,同时是一名机器学习过程领域的杰出专家。在创立TwentyBN公司之前,他曾担任IT部门顾问和经理,并一直致力于创新软件系统方面的研究。

文章来源:Basler