CN110516803A - 将传统计算机视觉算法实现为神经网络 - Google Patents

将传统计算机视觉算法实现为神经网络 Download PDF

Info

Publication number
CN110516803A
CN110516803A CN201910420407.2A CN201910420407A CN110516803A CN 110516803 A CN110516803 A CN 110516803A CN 201910420407 A CN201910420407 A CN 201910420407A CN 110516803 A CN110516803 A CN 110516803A
Authority
CN
China
Prior art keywords
computer vision
neural network
traditional computer
vision algorithm
primitive
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910420407.2A
Other languages
English (en)
Inventor
保罗·布拉塞特
丹尼尔·瓦尔迪兹·巴尔德拉斯
卡加泰·迪基奇
斯巴布斯·塞法尔韦
大卫·霍夫
狄默思·史密斯
詹姆斯·伊伯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fancy Technology Co Ltd
Imagination Technologies Ltd
Original Assignee
Fancy Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=62812347&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN110516803(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Fancy Technology Co Ltd filed Critical Fancy Technology Co Ltd
Publication of CN110516803A publication Critical patent/CN110516803A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Multimedia (AREA)
  • Image Analysis (AREA)

Abstract

本文涉及将传统计算机视觉算法实现为神经网络。本文描述了用于将传统计算机视觉算法实现为神经网络的方法和系统。该方法包括:接收传统计算机视觉算法的定义,该定义标识一个或多个传统计算机视觉算法运算的序列;将一个或多个传统计算机视觉算法运算中的每一个映射到在数学上等同于该传统计算机视觉算法运算的一个或多个神经网络基元的集合;根据该序列来对映射到每个传统计算机视觉算法运算的一个或多个网络基元进行链接,以形成表示传统计算机视觉算法的神经网络;以及配置能够实现神经网络的硬件逻辑,以实现表示传统计算机视觉算法的神经网络。

Description

将传统计算机视觉算法实现为神经网络
技术领域
本申请涉及神经网络,更具体地,涉及将传统计算机视觉算法实现为神经网络的系统和方法。
背景技术
深度神经网络(DNN)是一种人工神经网络形式,包括多个互连层,使得DNN能够执行信号处理任务,所述信号处理任务包括但不限于计算机视觉任务。图1示出了包括多个层102-1、102-2、102-3的示例DNN 100。每个层102-1、102-2、102-3接收输入数据,根据该层处理输入数据以产生输出数据。输出数据或是作为输入数据提供给另一层,或是作为DNN的最终输出数据输出。例如,在图1的DNN 100中,第一层102-1接收输入到DNN 100的原始输入数据104,并根据第一层102-1处理输入数据以产生输出数据。第一层102-1的输出数据成为第二层102-2的输入数据,第二层102-2根据第二层102-2来处理输入数据以产生输出数据。第二层102-2的输出数据成为第三层102-3的输入数据,第三层102-3根据第三层102-3处理输入数据以产生输出数据。第三层102-3的输出数据作为DNN的输出数据106输出。
对输入到层的输入数据执行的处理取决于层的类型。例如,DNN的每一层可以是多种不同类型中的一种。示例DNN层类型包括但不限于:卷积层、激活层、归一化层、池化层和完全连接层。对于本领域技术人员易于理解的是,这些是示例性DNN层类型,并且这不是穷举列表,并且可能存在其他DNN层类型。
对于卷积层,通过使用与该层相关联的权重对输入数据进行卷积来处理输入数据。具体地,每个卷积层与多个权重w0…wg相关联,其也可以称为过滤器权重或系数。权重被分组以形成或定义一个或多个过滤器,其也可以称为内核(kernel)。一个或多个过滤器可以与偏移偏置b相关联。
参考图2,图2示出了DNN中使用的数据格式的示例概述。如图2所示,DNN中使用的数据200可以由多个矩阵形成。输入数据可以被排列为P个数据矩阵,其中每个矩阵具有维度x x y。DNN可以包括一个或多个卷积层,每个卷积层与多个过滤器相关联,多个过滤器由多个权重形成。每个过滤器具有尺寸m x n x P,并且在方向s和t上跨若干步骤根据卷积运算被应用于输入数据,如图2所示。过滤器的数量和每个过滤器的权重数量可以在卷积层之间变化。卷积神经网络(CNN)是对图像识别和分类有效的特定类型的DNN,其通常包括多个卷积层。
激活层通常但不一定在卷积层之后,其对该层的输入数据执行一个或多个激活函数。激活函数采用单个数字并对其执行非线性数学运算。在一些示例中,激活层可以通过实现整流线性单元(rectified linear unit,ReLU)函数(即,f(x)=max(0,x))作为ReLU,或通过实现参数整流线性单元(parametric rectified linear unit,PReLU)函数作为PReLU。
规一化层被配置为执行归一化函数,例如对输入数据执行本地响应规一化(LRN)函数。池化层通常会但不一定插入连续的卷积层之间,其执行池化函数,例如最大值(max)或平均值(mean)函数,以汇总输入数据的子集。因此,池化层的目的是减小表示的空间尺寸,以减少网络中的参数和计算的数量,并因此还控制过度拟合。
完全连接层通常但不一定在多个卷积和池化层之后,其取一组单维或多维输入数据值并输出N维向量。在DNN用于分类的情况下,N是类的数量,并且向量中的每个值表示某个类的分数(score)。通过对输入数据值与一组权重进行矩阵乘法生成N维向量,可选地随后是偏置偏移。因此,完全连接层接收一组权重和偏置。
DNN目前广泛用于许多人工智能(AI)应用,包括计算机视觉、语音识别、机器人等。虽然DNN针对许多AI任务产生了优异的结果,但DNN在实现时计算复杂。因此,花费了大量的时间和精力来开发DNN加速器,其允许以有效的方式实施DNN(例如,以在操作时需要更少的硅面积或更少的处理功率的方式)。DNN加速器包括硬件逻辑,其可被配置为根据该DNN的层来处理输入到DNN的输入数据。具体地,DNN加速器包括硬件逻辑,其被配置为根据每一层处理输入到该层的输入数据,并生成该层的输出数据,该输出数据或者成为另一层的输入数据或者成为DNN的输出。例如,如果DNN包括卷积层,接着是激活层,则该DNN的DNN加速器可以包括被配置为使用与该卷积层相关联的权重和偏置来对DNN的输入数据执行卷积以产生该卷积层的输出数据的硬件逻辑,以及被配置成将激活函数应用于激活层的输入数据(即卷积层的输出数据)以生成DNN的输出数据的硬件逻辑。
为了能够以有效的方式实现DNN,DNN加速器通常包括在处理或实现每种层类型时有效的硬件逻辑。具体地,DNN加速器通常包括在执行卷积、激活、池化、归一化和完全连接运算时有效的硬件逻辑。
以下描述的实施例仅作为示例提供,并不限制解决已知DNN加速器的任何或所有缺点的实施方式。
发明内容
提供本发明内容是为了介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
本文描述的是用于将传统计算机视觉算法实现为神经网络的方法和系统。该方法包括:接收标识传统计算机视觉算法运算的序列的传统计算机视觉算法的定义;将每一个传统计算机视觉算法运算映射到多个神经网络基元中在数学上等同于该传统计算机视觉算法运算的一个或多个神经网络基元;根据该序列链接映射到每个传统计算机视觉算法运算的一个或多个网络基元,以形成表示传统计算机视觉算法的神经网络;以及配置能够实现神经网络的硬件逻辑,以实现表示传统计算机视觉算法的神经网络。
第一方面提供了一种将传统计算机视觉算法实现为神经网络的方法,该方法包括:接收标识一个或多个传统计算机视觉算法运算的序列的传统计算机视觉算法的定义;将一个或多个传统计算机视觉算法运算中的每一个映射到在数学上等同于该传统计算机视觉算法运算的一个或多个神经网络基元的集合;根据该序列链接映射到每个传统计算机视觉算法运算的一个或多个网络基元,以形成表示传统计算机视觉算法的神经网络;以及配置能够实现神经网络的硬件逻辑,以实现表示传统计算机视觉算法的神经网络。
第二方面提供了一种用于将传统计算机视觉算法实现为神经网络的系统,该系统包括:能够实现神经网络的硬件逻辑;以及转换器,被配置为:接收标识一个或多个传统计算机视觉算法运算的序列的传统计算机视觉算法的定义;将一个或多个传统计算机视觉算法运算中的每一个映射到在数学上等同于该传统计算机视觉算法运算的一个或多个神经网络基元的集合;根据该序列链接映射到每个传统计算机视觉算法运算的一个或多个网络基元,以形成表示传统计算机视觉算法的神经网络;以及配置能够实现神经网络的硬件逻辑,以实现表示传统计算机视觉算法的神经网络。
第三方面提供了一种用于形成神经网络的计算机实现的自动化工具,该自动化工具能够访问从传统计算机视觉算法运算映射到数学上等同的一个或多个神经网络基元的集合的映射库,其中自动化工具被配置为:接收标识一个或多个传统计算机视觉算法运算的序列的传统计算机视觉算法的定义;使用该映射库将一个或多个传统计算机视觉算法运算中的每一个映射到在数学上等同于该传统计算机视觉算法运算的一个或多个神经网络基元的集合;根据该序列链接映射到每个传统计算机视觉算法运算的一个或多个网络基元,以形成表示计算机视觉算法的神经网络;以及输出神经网络的定义,以用于配置硬件逻辑以实现神经网络。
第四方面提供了一种神经网络加速器,被配置为实现表示传统计算机视觉算法的神经网络,该神经网络是通过将形成传统计算机视觉算法的每个传统计算机视觉算法运算映射到数学上等同的一个或多个神经网络基元的序列而生成的。
本文描述的DNN加速器可以以硬件方式在集成电路上实现。可以提供一种在集成电路制造系统中制造DNN加速器的方法。可以提供集成电路定义数据集,当在集成电路制造系统中处理时,配置系统以制造DNN加速器。可以提供一种非暂时性计算机可读存储介质,其上存储有DNN加速器的计算机可读描述,其当在集成电路制造系统中处理时,使得集成电路制造系统制造实现DNN加速器的集成电路。
可以提供一种集成电路制造系统,包括:非暂时性计算机可读存储介质,其上存储有DNN加速器的计算机可读描述;布局处理系统,被配置为处理计算机可读描述,以生成实现DNN加速器的集成电路的电路布局描述;以及集成电路生成系统,被配置为根据电路布局描述制造DNN加速器。
可以提供用于执行如本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂时性计算机可读存储介质,当在计算机系统处执行时,使计算机系统执行如本文所述的方法。
如对技术人员易于理解的,可以适当地组合以上特征,并且可以与本文描述的示例的任何方面组合。
附图说明
现在将参考附图详细描述示例,其中:
图1是示例性完全连接深度神经网络(DNN)的示意图;
图2是DNN的示例输入数据的示意图;
图3是用于生成传统计算机视觉算法的神经网络表示的示例方法的流程图;
图4是用于生成传统计算机视觉算法的神经网络表示的示例系统的框图;
图5是示出扩张运算的示意图;
图6是示出侵蚀运算的示意图;
图7是示出使用神经网络基元的侵蚀运算的示例实现的示意图;
图8是示出直方图运算的示意图;
图9是示出使用神经网络基元的直方图运算的示例实现的示意图;
图10是示出SIFT算法的第一阶段的示意图;
图11是示出SIFT算法的第一阶段的运算与神经网络基元之间的示例映射的示意图;
图12是示出关键点周围的像素的示例性梯度的示意图;
图13是示出示例SIFT关键点描述符的示意图;
图14是示出SIFT算法的第四阶段的运算与神经网络基元之间的示例映射的示意图;
图15是示出示例BRISK采样模式的示意图;
图16是BRISK描述符算法的示例神经网络(NN)表示的示意图;
图17是示出训练BRISK描述符算法的神经网络(NN)表示的示例方法的示意图;
图18是BRISK描述符算法的神经网络(NN)表示与训练迭代次数的性能的曲线图;
图19是示出示例立体视差估计算法的神经网络(NN)表示的示意图;
图20是示例DNN加速器的框图;
图21是示例性基于计算的设备的框图;
图22是其中可实现图20的DNN加速器的示例计算机系统的框图;以及
图23是用于生成实现图20的DNN加速器的集成电路的示例集成电路制造系统的框图。
附图示出了各种示例。技术人员将理解,附图中示出的要素边界(例如,框、框组或其他形状)代表边界的一个示例。在一些示例中,可以将一个元素设计为多个元素,或者可以将多个元素设计为一个元素。在适当的情况下,在所有附图中使用共同的附图标记来指示类似的特征。
具体实施方式
通过示例的方式呈现以下具体实施方式以使得本领域技术人员能够制造和使用本发明。本发明不限于这里描述的实施例,并且对所公开的实施例的各种修改对于本领域技术人员来说是易于理解的。仅通过示例的方式描述了实施例。
虽然DNN加速器被设计为实现或处理DNN,但是它们在执行某些任务(即卷积、池化(pool)、激活、归一化)方面的熟练程度意味着其他算法或处理也可以使用DNN加速器而有效地实现,如果它们可以被表示为神经网络——即,如果该处理或算法可以表示为NN基元或层的组合。发明人已经确定,特别适合在DNN加速器上实现的一组算法是传统计算机视觉算法。这是因为传统计算机视觉算法涉及基于图像值阵列做出决策,因此诸如矩阵乘法/处理和非线性激活函数之类的运算是有用的,并且DNN加速器非常适合于有效地执行这些类型的运算。
计算机视觉算法是允许计算机从图像或多维数据获得信息的算法。计算机视觉算法可用于例如对象分类、对象识别和/或对象检测。传统计算机视觉算法(也可以称为古典或经典计算机视觉算法)是计算机视觉算法的子集,其被预编程为以某种方式响应数据。传统计算机视觉算法用于实现技术,例如但不限于:边缘检测、角点检测、对象检测等。传统计算机视觉算法通常通过在CPU、GPU或DSP上执行具有良好建立的指令集的软件来实现。相比之下,学习计算机视觉算法是从数据中学习或进行预测的计算机视觉算法。这种学习算法通过从输入观察的示例训练集构建模型来操作,以将数据驱动的预测或决策表达为输出,而不是遵循严格的静态程序指令。换句话说,传统算法中的每个步骤或运算都是良好定义的(例如由算法的创建者定义)以在整个算法内执行特定任务,其中每个步骤或运算具有良好定义的结果;而学习算法(例如,被实现为神经网络)不严格定义算法的每个步骤或运算,而是可以调整内部参数(例如,神经网络层的权重),目的是确保整个算法的最终输出针对给定的输入提供合适的结果。在本说明书的上下文中,传统计算机视觉算法可以被认为是不采用可训练的神经网络的形式(例如,基于深度或浅度学习技巧)的任何计算机视觉算法。如本文所述,神经网络是多个计算单元的互连网络,该多个计算单元可以分层的形式来组织,其中对数据的运算涉及系统可以通过训练自动学习的参数。传统计算机视觉算法的示例包括但不限于:尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)和二进制鲁棒不变可伸缩关键点(Binary Robust Invariant Scalable Keypoints,BRISK),它们是特征点提取和描述符算法。具体地,SIFT和BRISK识别图像中的关注点并使用描述符描述关注点附近的区域。
这里描述的是用于将传统计算机视觉算法实现为神经网络(NN)的方法和系统。该方法包括接收传统计算机视觉算法的定义,其标识一个或多个传统计算机视觉算法运算的序列,将每个传统计算机视觉算法运算映射到一个或多个神经网络基元的集合,并根据序列链接映射到每个运算的神经网络基元,以形成表示传统计算机视觉算法的NN。一旦生成了表示传统计算机视觉算法的NN,就可以配置DNN加速器或能够实现NN的其他硬件逻辑来实现该NN。测试表明,相比于在标准处理单元(例如CPU、GPU和DSP)上实现该算法,将传统计算机视觉算法转换为神经网络并在DNN加速器上实现这样的神经网络可以允许该算法被更有效地实现(例如,在面积和/或处理时间方面)。此外,生成神经网络表示意味着神经网络可以是可训练的,例如,使用传统的神经网络训练方法和技术。在这些情况下,可以在DNN加速器或能够实现NN的其他硬件逻辑上实现神经网络之前训练传统计算机视觉算法的神经网络表示。这可以产生传统计算机视觉算法的表示,其比其所基于的原始传统计算机视觉算法表现更好。
尽管参考将传统计算机视觉算法实现为神经网络来描述下面所描述的方法、系统和技术,但是对于本领域技术人员来说易于理解的是,本文描述的方法、系统和技术可以同等地应用以将其他算法实现为神经网络,使得它们可以在DNN加速器上实现。可适合于实现为神经网络的其他类型的算法可以是包括矩阵和向量(或矩阵和向量类的)运算的算法,其包括但不限于:科学计算算法、计算机游戏动画和/或建模算法、音频处理(例如用于语音识别)、信号处理(例如用于从接收到的信号中取回数据)和放射线跟踪算法,例如用于生成3D场景图像或声音效果。
现在参考图3,图3示出了用于将传统计算机视觉算法实现为神经网络的示例方法300。在一些情况下,方法300的全部或一部分可以由基于计算的设备实现,例如但不限于图21的示例性基于计算的设备2100。例如,可存在存储在计算机可读存储介质上的计算机程序代码,当在基于计算的设备上执行时,该计算机程序代码使得基于计算的设备实现图3的方法300的一个或多个步骤。
方法300开始于框302,其中接收传统计算机视觉算法的定义。传统计算机视觉算法的定义标识表示传统计算机视觉算法的一个或多个传统计算机视觉算法运算的序列。术语“传统计算机视觉算法运算”在本文中用于表示作为传统计算机视觉算法的一部分执行的数学运算。常见的传统计算机视觉算法运算包括但不限于:侵蚀运算、扩张运算、直方图运算、过滤运算和卷积运算。例如,传统计算机视觉算法的定义可以标识包括卷积运算然后是侵蚀运算和扩张运算的序列。一旦接收到传统计算机视觉算法的定义,方法300就前进到框304。
在框304处,所标识的序列中的每个传统计算机视觉算法运算被映射到来自多个神经网络基元中的一个或多个神经网络基元的集合,其中一个或多个神经网络基元的集合在数学上等同于相应的传统计算机视觉算法运算。神经网络基元是神经网络的构建块,并且通常类似于神经网络层。如上所述,神经网络层定义了层的输入和对输入执行的(一个或多个)数学运算。因此,神经网络基元指定要对输入数据集合执行的一个或多个数学运算。示例性神经网络层包括但不限于:卷积层、完全连接层、归一化层、池化层、激活层和元素类运算层。因此,传统计算机视觉算法运算可被映射到的神经网络基元集合可包括卷积基元、完全连接基元、归一化基元、池化基元、激活基元和元素类运算基元中的一个或多个。表示传统计算机视觉算法的神经网络将由DNN加速器等执行,其仅支持有限数量的神经网络层或基元,传统计算机视觉算法运算可以映射的神经网络基元集合可以限于该DNN加速器支持的神经网络基元。传统计算机视觉算法运算的数量通常明显大于神经网络基元的数量,因此许多传统计算机视觉算法运算被映射到神经网络基元的序列。
在一些情况下,一个或多个神经网络基元可以具有替代实施方式。例如,激活基元可以能够实现多个不同非线性函数中的一个。具体地,激活基元可以能够实现ReLU函数、PReLU函数和/或一个或多个替代非线性函数中的一个或多个。一些DNN加速器(诸如以下关于图20描述的DNN加速器)可以包括可编程激活模块,其可以用于实现任何函数,甚至是那些传统上不用于神经网络的函数。类似地,池化基元可以能够实现多个不同池化函数中的一个。例如,池化基元可以能够实现最大池化函数、平均池化函数和/或一个或多个其他池化函数中的一个或多个。基元的替代实现在本文中称为神经网络基元子特征。因此,将传统计算机视觉算法运算映射到一个或多个神经网络基元可以包括不仅标识神经网络基元,而且标识那些基元的特定实现(即那些基元的子特征)。
在一些情况下,可能存在将常见的传统计算机视觉算法运算映射到一个或多个神经网络基元的一个或多个数学上等效的集合(或序列)的库。例如,如下面参照图5至9更详细地描述的那样,发明人已经确定(i)直方图运算在数学上等同于包括卷积基元、激活基元和池化基元的序列;(ii)任何侵蚀或扩张运算在数学上等同于包括卷积基元并且后面是激活基元的序列;(iii)具有方形结构元素(square structuring element)的侵蚀运算在数学上等同于实现最大池化函数的池化基元。在这些情况下,传统计算机视觉算法运算可以例如由基于计算的设备,根据库中的映射自动映射到一个或多个神经网络基元的集合(或序列)。在库中对于传统计算机视觉算法运算具有多于一个映射的情况下,可以基于例如用于实现神经网络的硬件(例如,DNN加速器)、算法中的其他运算、和/或已经为其他运算选择的NN基元,来选择这些映射中的一个。一旦将每个传统计算机视觉算法运算映射到一个或多个神经网络基元的集合(或序列),方法300就前进到框306。
在框306处,已经映射了传统计算机视觉算法运算的神经网络基元根据传统计算机视觉算法运算的序列而被链接以形成神经网络。具体地,表示传统计算机视觉算法运算的神经网络基元集合按照传统计算机视觉算法中定义的序列被链接。以这种方式,表示传统计算机视觉算法运算的神经网络基元集合的输出成为表示序列中的下一传统计算机视觉算法运算的神经网络基元集合的输入。
在一些情况下,一旦神经网络基元被链接以形成表示传统计算机视觉算法的神经网络,方法300可以直接从框306进行到框310。在其他情况下,方法300可以在进行到框310之前,从框306进行到框308。在框306之后方法300是进行到框308还是框310可以取决于是否可以通过训练来改善神经网络执行的任务,也就是说,是否可以通过通常在神经网络训练中执行的自动化过程调整神经网络的一个或多个参数(例如,权重)来改善神经网络执行的任务。
在框308处,使用一种或多种神经网络训练技术或方法来训练表示传统计算机视觉算法的神经网络。训练神经网络通常涉及通过神经网络迭代地运行代表性输入并调整神经网络的参数(例如,权重)以最大化或最小化神经网络的性能度量。训练神经网络可以改善神经网络的性能(例如,训练可以提高神经网络输出的准确性)。例如,通过使用特定训练数据集,可以改善神经网络针对该数据集的性能。例如,如果传统计算机视觉算法将用于在黑暗中拍摄的图像,则可以在这些图像上训练表示该算法的神经网络,以在这些特定情况下最大化其性能。通过训练神经网络,经训练的神经网络可能不再在数学上等同于原始的传统计算机视觉算法,但是它可以实现比原始传统计算机视觉算法更好的性能。以下参照图15-17描述如何将BRISK特征描述符算法映射到神经网络基元以形成表示BRISK特征描述符算法的神经网络以及如何使用神经网络训练技术训练该神经网络的示例。一旦训练了神经网络,方法300就前进到框310。
在框310处,能够实现神经网络的硬件逻辑被配置为实现表示传统计算机视觉算法的神经网络。配置能够实现神经网络的硬件逻辑以实现神经网络可以包括生成使得硬件逻辑实现神经网络的命令集合。命令可以指定层/基元等的数量、顺序和类型。在一些情况下,能够实现神经网络的硬件逻辑是DNN加速器。可以被配置为实现表示传统计算机视觉算法的神经网络的示例DNN加速器在下面参考图20进行描述。测试表明,与在CPU、GPU或DSP上的传统格式相比,一些传统计算机视觉算法可以更有效地在DNN加速器上实现为神经网络。
如上所述,在一些示例中,提供具有从传统计算机视觉算法运算到数学上等同的一个或多个神经网络基元的集合的映射库的自动化工具,其中自动化工具被配置为:接收标识一个或多个传统计算机视觉算法运算的序列的传统计算机视觉算法的定义;使用该库将一个或多个传统计算机视觉算法运算中的每一个映射到数学上等同于该传统计算机视觉算法运算的一个或多个神经网络基元的集合;根据序列链接映射到传统计算机视觉算法运算的一个或多个网络基元的集合,以形成表示传统计算机视觉算法的神经网络;以及输出神经网络的定义,以用于配置硬件逻辑以实现神经网络。
用户(或其他应用)可以向自动化工具提供传统计算机视觉算法的定义,并且自动化工具可以输出表示传统计算机视觉算法的神经网络的定义。这样,提供传统计算机视觉算法的定义的用户(或应用的开发者)不需要详细了解神经网络的运算,但是他或她可以使用自动化工具来形成表示传统计算机视觉算法的神经网络。以这种方式形成的神经网络(例如通过工具)具有与传统计算机视觉算法的运算相对应的结构,其允许(未经训练的)神经网络在数学上等同于传统计算机视觉算法,或者允许神经网络被训练,从而改进传统计算机视觉算法。例如,可以训练神经网络以优化它以用于特定图像,例如,如果要在车辆中实现神经网络,则为道路和车辆的图像,例如,用于高级驾驶员辅助系统或自动驾驶系统。
现在参考图4,图4示出了用于将传统计算机视觉算法实现为神经网络的示例系统400。系统400包括传统计算机视觉算法的定义402、转换器404、以及表示传统计算机视觉算法的神经网络的定义406。如上所述,传统计算机视觉算法的定义402标识形成传统计算机视觉算法的传统计算机视觉算法运算的序列。在一些情况下,传统计算机视觉算法的定义可以作为数据存储在计算机可读介质上。
转换器404被配置为将传统计算机视觉算法的定义中标识的每个传统计算机视觉算法运算映射到来自多个可用神经网络基元408的一个或多个神经网络基元的集合(或序列),其中一个或多个神经网络基元的集合在数学上等同于传统计算机视觉算法运算。如上所述,多个可用神经网络基元408可以包括但不限于:卷积基元、完全连接基元、池化基元、激活基元和元素类运算基元中的一个或多个。转换器404可以基于传统计算机视觉算法运算和神经网络基元之间的已知预定关系确定神经网络基元的集合(或序列)在数学上等同于传统计算机视觉算法运算。例如,在一些情况下,可存在库412,其针对多个传统计算机视觉算法运算中的每一个,指示已被标识为在数学上等同于该传统计算机视觉算法运算的一个或多个神经网络基元的一个或多个集合(或序列)。在这些情况下,转换器404可以被配置为使用库412中列出的已知神经网络基元等同自动地将每个传统计算机视觉算法运算映射到一个或多个神经网络基元的集合(或序列)。
一旦传统计算机视觉算法运算已经被映射到在数学上等同于相应的传统计算机视觉算法运算的一个或多个神经网络基元的相应集合(或序列),则转换器404可以与其相应的传统计算机视觉算法运算相同的方式链接神经网络基元的序列,以形成表示传统计算机视觉算法并在数学上等同于传统计算机视觉算法的神经网络406。
在这种形式中,神经网络具有与传统计算机视觉算法中的传统计算机视觉算法运算相匹配的结构。换句话说,神经网络的结构(例如,神经网络中的层数、神经网络中的层的类型、要在神经网络层中操作的矩阵和/或向量的大小等)被确定为与传统计算机视觉算法中的传统计算机视觉算法运算相匹配。因此,神经网络不是已被训练以执行特定任务的通用神经网络,而是神经网络在其特定功能的结构方面(即,用于执行传统计算机视觉算法)被优化。这意味着就神经网络的大小(例如,层的数量和层的大小)而言,神经网络是传统计算机视觉算法的非常有效的表示。
一旦生成了表示传统计算机视觉算法的神经网络406,转换器404可以被配置为配置DNN加速器410(例如但不限于下面参考图20描述的DNN加速器2000),或其他能够实现神经网络的硬件逻辑,以实现表示传统计算机视觉算法的神经网络406。这使得DNN加速器410或其他硬件逻辑能够根据神经网络将输入数据处理到传统计算机视觉算法。在一些情况下,转换器404可以被配置为在配置DNN加速器410或其他硬件逻辑之前使用一种或多种已知的神经网络训练技术来训练神经网络以实现神经网络。
在一些情况下,转换器404可以由基于计算的设备实现,例如下面参考图21描述的基于计算的设备2100。
使用NN基元实现的示例视觉算法运算
现在参考图5-9,图5-9用于说明传统计算机视觉算法运算和NN基元之间的示例映射。具体而言,图5至图7用于说明如何使用NN基元实现二进制形态学运算,图8至图9用于说明如何使用NN基元实现直方图运算。
传统计算机视觉算法中的常见运算是二元形态学运算。如本领域技术人员已知的,形态学图像处理是与图像中的特征的形状或形态有关的非线性运算的集合。形态学技术用被称为结构元素的小型二进制图像探测二进制图像。结构元素位于图像中的所有可能位置,并且与相应的像素邻域进行比较。
结构元素可以被认为是形状掩模。结构元素可以是任何形状和大小,其可由0和非0(例如1)的矩阵表示。矩阵规模指定结构元素的大小,0和非0(例如1)的模式指定结构元素的形状。结构元素的原点(origin)通常是矩阵的一个值的位置,尽管原点可以在结构元素之外。
基本的二元形态学运算是扩张和侵蚀。如图5所示,通过结构元素504对图像502的扩张产生新的二进制图像506,其在该结构元素“命中(hit)”输入图像的结构元素的原点的所有位置(x,y)具有一(1),否则为零(0),并针对所有像素坐标重复。如果结构元素至少对于其设置为一(1)的位置中的一个而言,相应的图像像素也被设置为一(1),则称结构元素“命中”图像。扩张运算扩展二进制图像中相连的一(1)的集合。它可用于生长特征和/或填充洞和间隙。
如图6所示,通过结构元素604对图像602的侵蚀产生新的二进制图像606,其在该结构元素“适配(fit)”输入图像的结构元素的原点的所有位置(x,y)具有一(1),否则为零(0),并针对所有像素坐标(x,y)重复。如果结构元素对于其设置为一(1)的位置中的每一个位置而言,相应的图像像素也被设置为一(1),则称结构元素“适配”图像。侵蚀运算会缩小二进制图像的相连的一(1)的集合。它可用于收缩特征和/或移除桥、分支和小突起(即用于去除噪声)。
可以迭代地对图像进行侵蚀和扩张以产生更好的图像(即,具有更少噪声的图像)。
发明人已经确定,具有方形结构元素的扩张运算可以由池化基元,特别是实现最大池化函数的池化基元来实现。具体地,可以通过以1x1步幅(即,在每个像素的窗口上执行池化)对a x a窗口(其中a定义结构元素的大小)执行最大池化运算来实现具有方形结构元素的扩张运算。由于最大池化运算确定窗口中的最大值,因此当窗口中的至少一个像素设置为1时,对结构元素大小执行最大池化函数将产生1,否则将产生0。
更一般地,具有任何形状的结构元素的扩张或侵蚀运算可以通过卷积基元710然后是激活基元712来实现,如图7所示。具体地,以一个像素的间隔在二进制图像702和结构元素704之间执行的卷积运算将产生输出图像708,其中每个像素的值表示,当结构元素的原点放置在该像素处时,图像中具有值一(1)且结构元素704中的对应像素也具有值一(1)的像素的总数。然后,通过对卷积运算的输出708执行激活运算,将由卷积产生的输出图像708被转换为经侵蚀的二进制图像706或经扩张的二进制图像,其中如果像素的值大于或等于阈值(例如偏置)则该像素的值为1,否则为0。对于扩张,将阈值设置为1,并且对于侵蚀,将阈值设置为结构元素中的一(1)的数量。例如,在图7的示例中,在结构元素/过滤器704中存在五个一(1),因此将偏置设置为5以执行侵蚀运算。
在侵蚀之后执行扩张是常见的(这被称为结尾(closing)运算)。在通过卷积基元和激活基元执行侵蚀的情况下,可以使用实现最大池化函数的池化基元来执行扩张。因此,可以使用NN基元将结尾运算实现为卷积基元、激活基元和实现最大池化函数的池化基元。结尾运算的这种实现可以特别用于DNN加速器中,例如图20的DNN加速器2000,其能够在DNN加速器硬件的单程中执行卷积运算、激活运算和池化运算,因为它将允许在DNN加速器硬件的单程中执行结尾运算。
传统计算机视觉算法中的另一常见运算是直方图运算。如图8所示,直方图运算涉及将输入图像802中的值的范围划分为称为箱(bin)的区间,并计算每个箱内落入多少个值以生成直方图804。在图8所示的示例中,输入图像802被划分为3个1整数宽的箱。直方图运算通常通过迭代图像的每个像素并递增其落入的箱的计数器而在通用计算机上实现。
发明人已经确定直方图运算可以由卷积基元902,然后是激活基元904和池化基元906实现。具体地,如图9所示,在输入图像908和h个1x1x1的过滤器之间执行卷积,其中h是直方图箱的数量。在图9的示例中,有三个箱,所以有三个1x1x1过滤器。这有效地产生输入图像910、912、914的h个拷贝。然后将激活函数应用于由卷积步骤生成的每个图像910、912、914,其中只有具有预定范围内的值的像素被设置为1,否则它们设置为零。对应于其中一个箱的不同预定范围用于由卷积步骤产生的每个图像的激活函数,使得激活阶段的输出是h个图像915、916、918,其中每个图像在原始图像中具有落入特定箱内的值的像素为1。然后对在激活步骤中生成的h个图像915、916、918中的每一个执行平均池化函数。然后,池化函数的输出920是原始图像中具有落入由该箱内的值的像素总数除以像素总数(即F/N,其中F是原始图像中具有落入由该箱内的值的像素数,N是图像中的像素总数)。
从能效角度来看,生成输入图像的h个副本并在每个副本上执行类似的运算似乎非常直观,但DNN加速器被设计为并行执行这些类型的运算。测试表明,比起在CPU或GPU上执行直方图计算,使用DNN加速器的这种方式可以更有效地执行相同的直方图计算,特别是考虑到DNN加速器的硅(例如芯片)面积相对于CPU或GPU的(例如芯片)面积。
对于本领域技术人员易于理解的是,这些仅是示例性传统计算机视觉算法运算,并且存在可以映射到一个或多个NN基元的序列的其他传统计算机视觉算法运算。对于本领域技术人员来说易于理解的是,这些是传统计算机视觉算法运算和DNN基元之间的示例映射,并且这些传统计算机视觉算法运算也可以使用NN基元的另一组合来实现。
使用NN基元的SIFT特征检测和描述的示例实现
现在参考图10至14,其示出了如何使用NN基元实现尺度不变特征变换(SIFT)算法。SIFT是用于关键点检测和描述的流行算法。它很受欢迎,因为它对图像缩放和旋转不变,对3D视点的变化部分不变。SIFT还具有空间和频域关键点的良好定位。SIFT还产生大量特征(例如,对于500×500像素图像大约2000个),这些特征是独特且稳定的。
SIFT可分为以下四个阶段:(1)尺度空间极值的检测;(2)关键点的定位和选择;(3)定向分配;(4)关键点描述符生成。
参考图10和图11描述SIFT算法的第一阶段。具体而言,图10示出了如何生成高斯差(Differences of Gaussians,DOG),图11示出了传统计算机视觉算法运算1102、1104、1106的示例流程以生成候选关键点集合,并且示出了这些运算可以映射到的神经网络基元1108、1110、1112、1114、1116、1118、1120和1122。
在SIFT算法的第一阶段中,识别图像中的候选关键点(即,兴趣点)。为此,原始图像I与不同尺度(或σ)的高斯过滤器G进行卷积(1102),并且确定连续高斯模糊(Gaussian-blurred)图像的差(其被称为高斯差(DOG))(1104),如图10所示。因此,可以根据等式(1)计算DOG图像D:
D(x,y,σ)=(G(x,y,kσ)-G(x,y,σ))*I(x,y) (1)
其中G(x,y,kσ)是以尺度k的高斯模糊(blur)。
然后将关键点标识为原始图像I的那些像素(x,y),其使得跨越尺度和跨空间坐标最大化或最小化DOG图像D(1106)。这是通过将DOG图像中的每个像素与相同尺度的八个邻居和每个相邻尺度中的九个相应的相邻像素进行比较来完成的。如果像素值是所比较的像素中的最大值或最小值,则将其选择为候选关键点。
如图11所示,发明人已经确定可以将不同尺度的经高斯过滤的图像映射到卷积基元1108、池化基元1110和另一个卷积基元1112。具体地,在原始图像I和高斯过滤器G之间执行卷积;然后,将生成的图像去池化(unpool)以通过因子(例如2)使图像尺寸扩大以产生稀疏图像;然后使用预先训练的上采样卷积对图像进行致密化。发明人还已经确定DOG生成可以被映射到卷积基元1114、元素类运算基元1116,其被配置为执行减法,然后将输出存储为多通道张量(tensor)1118。具体地,第一卷积1112的输出与高斯过滤器的序列卷积,并且生成经卷积图像的差,并且将DOG存储为多通道张量。发明人还已经确定极值的计算可以被映射到激活基元1120和池化基元1122。具体地,在1118处生成的DOG金字塔上,应用每像素偏置和激活以产生图像映射,其中极值是非零元素。最大值和最小值的偏置和激活是不同的,并且得到的映射被分别存储。这将导致最小值和最大值在映射中显示为正值。然后将最大池化应用于记录开关变量中极值位置的映射。
SIFT算法的第一阶段通常生成太多候选关键点,并且并非所有候选关键点都是“良好”关键点(例如,对噪声不变),因此在SIFT算法的第二阶段中,候选关键点的数量被过滤或配对。可以通过丢弃具有低对比度或边缘状的点的那些候选关键点来过滤候选关键点。可以通过计算极值的内插位置来识别边缘状的候选关键点和低对比度候选关键点。这可以通过内插附近数据来准确地确定关键点的位置来完成。可以使用DOG函数D的二次泰勒展开以候选关键点作为原点来完成插值。极值被确定为从当前位置的偏移,并且如果它在任何维度中大于0.5,则这表示极值更接近另一个候选关键点。为了识别具有低对比度的候选关键点,在偏移处计算第二阶的值。如果这小于预定值,则丢弃候选关键点。由于DOG函数D将对沿着边缘的点敏感,因此DOG函数通常将沿着边缘的点识别为关键点,即使它们不是良好的关键点。为了消除不良边缘状候选关键点,跨边缘和沿边缘的主曲率由二阶Hessian矩阵确定。如本领域技术人员所知,主曲率测量每个点处规则表面的最大和最小弯曲。边缘状特征是边缘的主曲率明显大于沿边缘的主曲率的特征。
一旦通过第一阶段和第二阶段识别了关键点,为了确保相同的关键点将产生相同的描述符而不管关键点的方向如何,在SIFT算法的第三阶段中,确定关键点的主导方向并将其分配给关键点。为了确定关键点的最主导方向,生成以关键点的尺度的高斯平滑图像。这可以通过以关键点的尺度在原始图像I和高斯过滤器G之间执行卷积来在NN中实现。下一步是确定关键点附近的梯度1202,如图12所示。这可以通过在关键点周围的16×16像素和梯度过滤器(例如但不限于Sobel过滤器)之间执行卷积来使用NN基元实现。例如,等式(2)中所示的Sobel过滤器Sx可用于识别每个像素的x导数(dx),并且等式(3)中所示的Sobel过滤器Sy可用于识别每个像素的y导数(dy)。对于本领域技术人员易于理解的是,这仅是示例,并且可以使用其他梯度过滤器。
然后可以从x和y导数确定梯度的幅度和方向。例如,幅度m可以根据毕达哥拉斯(Pythagoras)定理确定为平方的平方根,如等式(4)所示,并且方向或角度θ可以根据等式(5)确定,其中函数atan考虑x和y导数(dx和dy)的符号,使得角度θ在[-π,π]的范围内。
一旦确定了梯度幅度和方向,就生成16×16像素集合的梯度方向(即角度θ)的直方图,其中例如在直方图中有36个箱(即每个箱覆盖10度)。如上所述,通过将角度梯度与h个1x1x1过滤器(其中h是箱的数量-在这种情况下为36)进行卷积,执行激活函数,然后执行平均池化函数,可以在NN基元中实现直方图。然后为关键点分配与具有最高直方图值的箱相关联的方向。
一旦识别了关键点并且为其分配了尺度和方向,则在SIFT算法的第四阶段中,将描述符分配给每个关键点,如参考图13和图14所述。具体而言,图13示出了从围绕关键点k的贴片的梯度1304生成的示例描述符1302,图14示出了传统计算机视觉算法运算1402、1406、1412、1420的示例流程以生成关键点的描述符1302,并且示出了这些运算可以映射到的神经网络基元1404、1408、1410、1414、1416、1418、1422、1424和1426。
生成关键点的描述符的第一步骤1402是以关键点的尺度生成高斯平滑图像。该运算可以映射到卷积基元1404,该卷积基元1404以关键点的尺度执行原始图像I和高斯过滤器G之间的卷积。
下一步骤1406是确定关键点附近的梯度。该运算可以映射到卷积基元1408和元素类运算基元和激活基元1410的集合。具体地,卷积基元1408被配置为在关键点周围的16×16像素和梯度过滤器之间执行卷积(例如,上述Sobel过滤器Sx和Sy)以生成图像的x和y导数(dx,dy)。然后通过多个元素类运算基元和激活基元1410从x和y导数确定梯度的幅度m和方向(即角度)。例如,可以通过以下方式确定幅度:(i)使用第一元素类运算基元(其被配置为对x导数执行张量乘法(dx,dx))计算x导数(dx)的平方;(ii)使用第二元素类运算基元(其被配置为对y导数执行张量乘法(dy,dy))计算y导数(dy)的平方;(iii)使用元素类运算基元(其被配置执行张量乘法(dx2,dy2))计算x和y导数(dx和dy)的平方和(dx2,dy2);以及(iv)使用激活基元(其被配置为将平方根函数应用于平方和)计算平方和的平方根。
例如,可以通过以下方式计算角度或方向:(i)使用被配置为执行张量除法(dy,dx)或被配置为执行张量乘法(dy,1/dx)的元素类运算基元来确定y导数(dy)和x导数(dx)的比率;(ii)使用被配置为对(i)中计算的比率应用tan-1函数的激活基元确定角度或方向。
下一步骤1412是将16×16贴片分成16个4×4贴片,并确定每个4×4贴片的直方图,其中梯度方向(即角度)被分成多个箱,例如,8个箱(即每个箱覆盖45度)。如上所述,直方图可以被映射到卷积基元1414、激活基元1416和被配置为执行最大池化的池化基元1418。
最后的步骤1420是计算每个箱中(即在每个角度范围内)的角度数量,角度通过与范围限制的接近度进行加权。具体地,箱中的每个角度可以通过到角度范围的中心的距离来加权。该运算可以映射到激活基元1422,激活基元1422被配置为应用ReLU函数。箱中的每个角度也可以通过梯度幅度m和以贴片中心为中心的高斯加权内核来加权。该运算可以被映射到卷积基元1424,该卷积基元1424被配置为执行矩阵乘法。然后,针对每个4×4像素组计算每个箱中出现的次数。该运算可以映射到池化基元1426。
因此,每个SIFT关键点描述符1302具有128个值——每个4×4像素组具有8个值。4x 4像素的每个值有效地指示该方向上的梯度的强度。
使用NN基元的BRISK特征描述符的示例实现
现在参考图15至17,其示出了如何使用NN基元实现二进制鲁棒不变可伸缩关键点(BRISK)特征描述符算法。如本领域技术人员所知,BRISK特征描述符算法根据已知的采样模式在特征点(或关键点)周围取N个(例如60个)样本。该模式定义了在与关键点k同心的圆上等间隔的N个位置。用于N=60并且尺度t=1的示例模式1500在图15中示出。然后使用采样模式来获得成对亮度或强度比较结果,其组装成二进制BRISK描述符。具体地,采样点p的“短距离配对”S的子集定义为等式(6):
其中A是所有采样点的集合,δmax=9.75t,t是关键点k的尺度。通过将采样模式旋转α并且执行点对的所有短距离比较(即,在旋转后的模式中)来组装比特向量描述符D,使得当点对中的第一者的强度I大于点对中的第二者的强度时,每个比特b对应于1,否则为0,如等式(7)所示。
其中是在应用高斯平滑之后采样点处的强度值(在旋转后的模式中),其中标准偏差σj与相应圆上的点之间的距离成比例。高斯过滤器的应用避免了对点p的强度进行采样时的混叠效应。使用60比特采样模式和上面标识的距离阈值(其中t=1)导致512比特贴片描述符。
发明人已经确定等式(7)可以表示为矩阵向量乘法。具体地,采样点对可以表示为稀疏的a x N矩阵,其中a是采样点对的数量(例如512),N是采样点的数量(例如60)。稀疏矩阵的每一行对应于特定的采样点对,并且在对应于该对的第一采样点的列中具有一(1),而在对应于该对的第二采样点的列中具有负一(-1),该行中其余元素设置为零(0)。然后通过将稀疏矩阵的sigmoid乘以N元素向量来生成描述符(D),其中向量的第i个元素包括第i个采样点pi的强度Ii(或经平滑的强度),然后舍入到最接近的整数(rint),如等式(8)所示。这将产生描述符向量(D),其中当该对的第一强度大于该对的第二强度时向量的元素将具有值(1),否则为零(0)。
将等式(7)表示为矩阵乘法允许等式(7)被实现为DNN加速器中的单个完全连接层。换句话说,它允许根据BRISK特征描述符算法使用DNN加速器以等式(7)的数学等同方式生成特征描述符。
此外,一旦处于该NN格式(即表示为完全连接的NN层),就可以训练NN以潜在地获得更好的结果(即更好的特征描述符)。具体地,如果等式(8)更一般地如等式(9)所示,使得第一矩阵是应用于强度I的权重w的集合,则可以使用传统的NN训练方法来训练NN(即确定权重),使得NN将产生更准确的结果。
在该配置中,代替描述符向量的每个元素(bu)是两个采样点的强度之间的差(如在等式(7)和(8)中),如等式(10)中所表示的:
bu=rint(sigmoid(Ij-Ii)) (10)
描述符的每个元素(bu)是所有采样点的强度的加权和,如等式(11)所示:
图16示出了等式(9)的示例NN实现1600。具体地,等式(9)的NN实现1600包括单个全连接层1604,其接收N(例如60)个强度Ii作为输入1602并输出包括a(例如512)个值(bu)的描述符D,其中每个值bu是第u个权重wu,i分别乘以N(例如60)个强度Ii的总和,如等式(11)所示。
如图17所示,可以训练等式(9)的NN(即,包括由等式(9)定义的完全连接的层的NN),例如,使用贴片的三元组(其中每个三元组包括:两个贴片(P1和P2),这两个贴片类似并应该产生相同(或类似)的特征描述符;以及第三个贴片(R),它与其他两个贴片(P1和P2)不同,它应该产生不同的特征描述符),并调整权重w以最大化不同贴片之间的差和最小化相似贴片之间的差。具体地,对于每个贴片三元组,将三个贴片(P1,P2,R)馈送到NN 1702(即,包括由等式(9)定义的完全连接的层的NN),其被配置有权重w的集合以生成相应的特征描述符(D(P1),D(P2)和D(R))。每对描述符之间的距离通过例如等式(12)、(13)和(14)计算:
‖D(P1)-D(P2)‖2 (12)
‖D(P1)-D(R)‖2 (13)
‖D(P2)-D(R)‖2 (14)
在NN训练期间,通过损失最小化的标准NN过程迭代地修改权重w的值,使得相应贴片的描述符之间的距离(例如,等式(12)的输出)较小,并且非相应的贴片的描述符之间的距离(例如,等式(13)和(14)的输出)较大。损失函数根据等式(12)、(13)和(14)中的量来定义。
可以通过精度度量和/或召回(recall)度量来确定这种NN的准确度。精度度量可以是真阳性(positive)的数量(numTP)与阳性总数(numTP+numFP)(即,真阳性的数量和假阳性的数量)的比率,如等式(15)所示。真阳性(TP)是指当NN针对相似贴片(例如P1和P2)产生被认为对应的描述符的情形。如果两个描述符之间的距离低于预定阈值,则可以认为两个描述符是对应的。假阳性(FP)是当NN针对不相似贴片(例如P1和R,或P2和R)产生被认为是对应的描述符(即,两个描述符之间的距离低于预定阈值)的情形。
召回度量可以是真阳性的数量(numTP)与真阳性的数量和假阴性(negative)的数量之和(numTP+numFN)的比率,如等式(16)所示。假阴性(FN)是当NN针对相似贴片(例如P1和P2)产生被认为不对应(即,两个描述符之间的距离等于或高于预定阈值)的描述符的情形。通常,精度度量和召回度量具有反比关系。
现在参考图18,图18示出了NN的精确度(即平均精度(mAP))与训练迭代次数的关系图1800。从图18中可以看出,执行的训练迭代越多,NN的结果越精确。
神经网络的结构(例如矩阵和向量的大小,以及如等式(9)所示的sigmoid函数的使用)被设置为与传统的计算BRISK描述符的算法相对应(即在数学上等效)。从这个起点开始,可以训练神经网络,例如,通过改变等式(9)的矩阵中的权重w,以找到更好的特征描述符(例如,对于特定训练集),其不再在数学上等同于传统的BRISK算法。
使用NN基元的立体视差估计算法的示例实现
现在参考图19,图19示出了使用NN基元的立体视差估计算法的示例实现。如本领域技术人员所知,立体视觉使用观看同一场景的两个相机图像的视差(disparity)来计算深度信息,就像在人类视觉中一样。特别地,通常存在表示场景的左视图的第一图像和表示场景的右视图的第二图像。以这种方式,由于相机在场景上的不同视角,相机视野中的物体将出现在两个图像内的略微不同的位置处。可以通过计算一个图像中的特征的位置与其在另一个图像中的位置之间的像素距离,从一对立体图像(即,表示场景的左视图的图像和表示场景的右视图的图像)计算深度信息。这产生了视差图。通常,具有较大视差的像素更靠近相机,具有较小视差的图像距离相机较远。
用于计算视差图的标准方法是使用块匹配。块匹配涉及在一个图像(例如右图像)中获取小像素区域并搜索另一图像(例如,左图像)中的最接近像素匹配区域。在一些情况下,可以根据绝对差之和(SAD)来确定块之间的相似性。通过从块中的对应像素减去模板中的每个像素并且对差的绝对值求和来计算模板和块之间的SAD。在其他情况下,可以根据平方差之和(SSD)来确定块之间的相似性。
如图19所示,发明人已经确定,这种生成视差图的基于块的方法可以被映射到NN基元集合,其包括:第一卷积基元1902、第二卷积基元1904和激活基元1906。具体地,第一卷积基元1902被配置为将表示场景的左视图1908的图像与多个过滤器1910、1912、1914卷积,以生成表示场景的左视图的图像的多个移位版本1916、1918、1920。表示场景的左视图的图像的多个移位版本1916、1918、1920与表示场景的右视图的图像连接,以形成单个张量。然后,第二卷积基元1904被配置为将单个张量与过滤器1924的集合卷积,过滤器1924在表示场景的右视图1922的图像与表示场景左视图的图像的移位版本1916、1918、1920之间生成基于块的差1926、1928、1930。然后,激活基元1906被配置为确定基于块的差1926、1928、1930的绝对差1932、1934、1936。然后可以将绝对差1932、1934、1936提供给池化基元(未示出),其被配置为对每个绝对差值1932、1934、1936的值求和以生成L1范数(即,绝对差值之和(SAD))。然后可以以相反的方式利用左视图和右视图重复相同的过程(即,表示场景的右视图1922的图像是第一卷积基元1902的输入,并且表示场景的左视图1908的图像变为张量的一部分)。在其他情况下,不是使用被配置为将绝对函数应用于基于块的差1926、1928、1930以生成L-1范数的激活基元,而是可以使用卷积基元来将每个差自身相乘以产生L-2范数(即平方差之和(SSD))。可以使用各种已知的后处理算法来合并结果并生成最终的视差图。
可以使用类似的NN基元集合来实现运动估计。
示例DNN加速器
现在参考图20,图20示出了示例性DNN加速器2000,其可以被配置为实现根据图3的方法生成的NN(即表示传统计算机视觉算法的NN)。
图20的DNN加速器2000被配置为通过一系列硬件通道(其也可以称为处理通道)来计算DNN的输出,其中在每个通道期间,DNN加速器2000接收DNN的层的至少一部分输入数据,并根据该层(并且可选地根据一个或多个后续层)处理所接收的输入数据以产生经处理的数据。经处理的数据或是输出到存储器,用作后续硬件通道的输入数据,或是输出作为DNN的输出。DNN加速器2000在单个硬件通道期间可以处理的层数可以基于数据的大小、DNN加速器2000和层的顺序。例如,在DNN加速器2000包括用于执行每种可能的层类型的硬件的情况下,DNN加速器2000可以能够处理或实现包括第一卷积层、第一激活层、第二卷积层、第二激活层和池化层的DNN,通过接收初始DNN输入数据并根据第一硬件通道中的第一卷积层和第一激活层处理该输入数据,然后将激活层的输出输出到存储器中,然后在第二硬件通道中,从存储器接收该数据作为输入,并根据第二卷积层、第二激活层和池化层处理该数据以产生DNN的输出数据。
图20的示例性DNN加速器2000包括:输入模块2001、卷积引擎2002、累积缓冲器2004、元素类运算模块2006、激活模块2008、归一化模块2010、池化模块2012、输出交织模块2014和输出模块2015。每个模块或引擎可以由硬件逻辑和/或数字逻辑电路实现。每个模块或引擎实现或处理一种或多种类型的层的全部或一部分。具体地,卷积引擎2002和累积缓冲器2004一起实现或处理卷积层或完全连接层。激活模块2008处理或实现激活层。归一化模块2010处理或实现归一化层。池化模块2012实现池化层,输出交织模块2014处理或实现交织层。
输入模块2001被配置为接收当前硬件通道的输入数据并将其提供给下游模块以进行处理。接收输入数据的下游模块取决于当前硬件通道中要处理的层。
卷积引擎2002被配置为使用与特定卷积层相关联的权重对接收的输入数据执行卷积运算。DNN的每个卷积层的权重可以存储在系数缓冲器2016中,如图20所示,当卷积引擎2002正在处理特定卷积层时,可以将该特定卷积层的权重提供给卷积引擎2002。在DNN加速器2000支持可变权重格式的情况下,卷积引擎2002可以被配置为接收表示正在处理的当前卷积层的权重的(一个或多个)格式的信息,以允许卷积引擎2002正确地解释和处理所接收的权重。
卷积引擎2002可以包括多个乘法器(例如128)和多个加法器,其将乘法器的结果相加以产生单个和。尽管图20中示出了单个卷积引擎2002,但在其他示例中,可以存在多个(例如,8个)卷积引擎,使得可以同时处理多个窗口。卷积引擎2002的输出被馈送到累积缓冲器2004。
累积缓冲器2004被配置为接收卷积引擎的输出并将其添加到累积缓冲器2004的当前内容。以这种方式,累积缓冲器2004累积卷积引擎2002的结果。尽管单个累积缓冲器2004在图20中示出,但在其他示例中,可以存在多个(例如,8个,每个卷积引擎1个)累积缓冲器。累积缓冲器2004将累积结果输出到元素类运算模块2006,其可以对累积结果进行操作也可以不进行操作,这取决于在当前硬件通道期间是否要处理元素类层。
元素类运算模块2006被配置为接收或是当前硬件通道的输入数据(例如,当在当前硬件通道中未处理卷积层时)或者来自累积缓冲器2004的累积结果(例如,在当前硬件通道中处理卷积层时)。元素类运算模块2006可以或是处理所接收的输入数据或是将所接收的输入数据传递到另一模块(例如,激活模块2008和/或归一化模块2010),这取决于在当前硬件通道中是否处理元素类层和/或取决于是否要在元素类层之前处理激活层。当元素类运算模块2006被配置为处理所接收的输入数据时,元素类运算模块2006对所接收的数据执行元素类运算(可选地,通过另一数据集(可以从外部存储器获得))。元素类运算模块2006可以被配置为执行任何合适的元素类运算,例如但不限于:加法、乘法、最大值和最小值。然后,根据是否要在元素类层之后处理激活层,将元素类运算的结果提供给激活模块2008或归一化模块2010。
激活模块2008被配置为接收以下之一作为输入数据:硬件通道的原始输入(经由元素类运算模块2006)(例如,当在当前硬件通道中不处理卷积层时);累积数据(经由元素类运算模块2006)(例如,当在当前硬件通道中未处理卷积层并且或是在当前硬件通道中不处理元素类层或是在当前硬件通道中处理元素类层但是在激活层之后)。激活模块2008被配置为将激活函数应用于输入数据并将输出数据提供回元素类运算模块2006,其中将其直接转发到归一化模块2010或者在元素类运算模块2006处理它之后。在一些情况下,应用于由激活模块2008接收的数据的激活函数可以根据激活层而变化。在这些情况下,可以存储(例如,在存储器中)指定要应用于每个激活层的激活函数的一个或多个属性的信息,并且可以在该硬件通道期间将用于在特定硬件通道中处理的激活层的相关信息提供给激活模块2008。
在一些情况下,激活模块2008可以被配置为在查找表的条目中存储表示激活函数的数据。在这些情况下,输入数据可用于查找查找表中的一个或多个条目,并输出表示激活函数的输出的值。例如,激活模块2008可以被配置为通过在从查找表读取的两个或更多个条目之间进行插值来计算输出值。
在一些示例中,激活模块2008可以被配置为通过实现整流线性单元(ReLU)函数而作为ReLU操作。在ReLU函数中,输出元素yi,j,k通过标识如等式(17)中所给出的最大值来计算,其中对于小于0的x值,y=0:
yi,j,k=f(xi,j,k)=max{0,xi,j,k} (17)
在其他示例中,激活模块2008可以被配置为通过实现参数整流线性单元(PReLU)函数而作为PReLU操作。PReLU函数执行与ReLU函数类似的运算。具体地,在是常数的情况下,PReLU被配置为生成如等式(18)中所示的输出元素yi,j,k
yi,j,k=f(xi,j,k;w1,w2,b1,b2)=max{(w1*xi,j,k+b1),(w2*xi,j,k+b2)} (18)
归一化模块2010被配置为接收以下之一作为输入数据:用于硬件通道的原始输入数据(经由元素类运算模块2006)(例如,当在当前硬件通道中不处理卷积层并且在当前硬件通道中既不处理元素类层也不处理激活层时);累积输出(经由元素类运算模块2006)(例如,当在当前硬件通道中处理卷积层并且在当前硬件通道中既不处理元素类层也不处理激活层时);以及元素类运算模块和/或激活模块的输出数据。然后,归一化模块2010对接收的输入数据执行归一化函数以产生归一化数据。在一些情况下,归一化模块2010可以被配置为执行本地响应归一化(LRN)函数和/或本地对比度归一化(LCN)函数。然而,对于本领域技术人员易于理解的是,这些仅是示例,并且归一化模块2010可以被配置为实现任何合适的归一化函数。可以配置不同的归一化层以应用不同的归一化函数。
池化模块2012可以从归一化模块2010接收归一化数据,或者可以经由归一化模块2010将输入数据接收到归一化模块2010。在一些情况下,可以经由XBar 2018在归一化模块2010和池化模块2012之间传输数据。这里使用的术语“XBar”指的是包含以动态方式将多个模块连接在一起的路由逻辑的简单硬件模块。在该示例中,XBar可以根据将在当前硬件通道中处理哪些层来动态地连接归一化模块2010、池化模块2012和/或输出交织模块2014。因此,XBar可以接收指示哪些模块2010、2012、2014将被连接的每个硬件通道的信息。
池化模块2012被配置为对所接收的数据执行池化函数,例如但不限于:最大或平均函数,以产生经池化的数据。池化层的目的是减小表示的空间大小以减少网络中的参数和计算的数量,并因此还控制过度拟合。在一些示例中,池化运算在每个池化层定义的滑动窗口上执行。
输出交织模块2014可以接收来自归一化模块2010的归一化数据、输入归一化函数的输入数据(经由归一化模块2010)或来自池化模块2012的经池化的数据。在一些情况下,数据可以经由XBar 2018在归一化模块2010、池化模块2012和输出交织模块2014之间传送。输出交织模块2014被配置为执行重新排列运算以产生预定顺序的数据。这可以包括对接收的数据进行排序和/或置换。由最后一层产生的数据被提供给输出模块2015,其中它被转换成用于当前硬件通道的所需输出格式。
归一化模块2010、池化模块2012和输出交织模块2014均可以访问共享缓冲区2020,其可以被这些模块2010、2012和2014使用以将数据写入和从中取回数据。例如,共享缓冲器2020可以被这些模块2010、2012、2014使用,以重新排列接收数据或生成数据的顺序。例如,这些模块2010、2012、2014中的一个或多个可以被配置为将数据写入共享缓冲器2020并以不同的顺序读出相同的数据。在一些情况下,尽管归一化模块2010、池化模块2012和输出交织模块2014中的每一个都可以访问共享缓冲器2020,但是可以将共享缓冲区2020的一部分分配给归一化模块2010、池化模块2012和输出交织模块2014中的每一个,只有它们才能访问。在这些情况下,归一化模块2010、池化模块2012和输出交织模块2014中的每一个可能仅能够从共享缓冲区2020中读取它们已经写入共享缓冲区2020的数据。
如上所述,在任何硬件通道期间使用或激活的DNN加速器2000的模块基于在该硬件通道期间处理的层。特别地,仅使用或激活与当前硬件通道期间处理的层相关的模块或组件。如上所述,在特定硬件通道期间处理的层(通常预先通过例如软件工具)基于DNN中的层的顺序以及可选地一个或多个其他因素(例如,数据的大小)来确定。例如,在一些情况下,DNN加速器2000可以被配置为每个硬件通道执行单个层的处理,除非可以处理多个层而不将数据写入层之间的存储器。例如,如果第一卷积层紧接着是第二卷积层,则每个卷积层必须在分开的硬件通道中执行,因为来自第一卷积层的输出数据需要在它能够用作第二卷积层的输入之前写出到存储器。在这些硬件通道中的每一个中,可以仅使用或激活与卷积层相关的模块、组件或引擎,例如卷积引擎2002和累积缓冲器2004。
尽管图20的DNN加速器2000示出了布置模块、引擎等的特定顺序,并且因此示出了数据处理如何流过处理模块,应当理解,这仅是示例,并且在其他示例中,模块、引擎等可以以不同的方式布置。此外,其他DNN硬件加速器可以支持附加或替代的DNN层的类型,因此可以包括不同的模块、引擎等。
图21示出了示例性的通用的基于计算的设备2100的各种组件,其可以实现为任何形式的计算和/或电子设备,并且其中可以实现图3的方法300的全部或一部分。
基于计算的设备2100包括一个或多个处理器2102,其可以是微处理器、控制器或任何其他合适类型的处理器,用于处理计算机可执行指令以将传统计算机视觉算法实现为神经网络。在一些示例中,例如在使用片上系统架构的情况下,处理器2102可以包括一个或多个固定功能块(也称为加速器),其实现将传统计算机视觉算法实现为神经网络的方法的一部分(而不是软件或固件)。可以在基于计算的设备处提供包括操作系统2104的平台软件或任何其他合适的平台软件,以启用应用软件,例如用于在该设备上执行以实现图3的方法300的全部或一部分的计算机可执行代码2105。
可以使用可由基于计算的设备2100访问的任何计算机可读介质来提供计算机可执行指令。计算机可读介质可以包括例如计算机存储介质,诸如存储器2106和通信介质。计算机存储介质(即,非暂时性机器可读介质),例如存储器2106,包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他存储技术、CD-ROM、数字通用盘(DVD)或其他光学存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备,或可用于存储信息以供计算设备访问的任何其他非传输介质。相反,通信介质可以实现计算机可读指令、数据结构、程序模块或调制数据信号中的其他数据,例如载波或其他传输机制。如这里所定义的,计算机存储介质不包括通信介质。尽管在基于计算的设备2100内示出了计算机存储介质(即,非暂时性机器可读介质,例如存储器2106),但是应当理解,存储可以远程分布或定位并且经由网络或其他通信链路访问(例如,使用通信接口2108)。
基于计算的设备2100还包括输入/输出控制器2110,其被布置成将显示信息输出到显示设备2112,显示设备2112可以与基于计算的设备2100分离或集成在一起。显示信息可以提供图形用户接口。输入/输出控制器2110还被布置为接收和处理来自一个或多个设备的输入,诸如用户输入设备2114(例如,鼠标或键盘)。在实施例中,如果显示设备2112是触敏显示设备,则显示设备2112还可以用作用户输入设备2114。输入/输出控制器2110还可以将数据输出到除显示设备之外的设备,例如,本地连接的打印设备(图21中未示出)。
图22示出了计算机系统,其中可以实现DNN硬件加速器,例如图20的DNN加速器2000。计算机系统包括CPU 2202、GPU 2204、存储器2206和其他设备2214,诸如显示器2216、扬声器2218和相机2220。DNN加速器2210(例如,对应于图20的DNN加速器2000)可以在GPU2204上实现,如图22所示。在一些示例中,可能没有GPU并且CPU可以向DNN加速器2210提供控制信息。计算机系统的组件可以经由通信总线2222彼此通信。在其他示例中,DNN加速器2210可以独立于CPU或GPU实现,并且可以具有到通信总线2222的单独连接。
图4和图20的系统和DNN加速器分别示出为包括多个功能块。这仅是示意图,并不旨在定义这些实体的不同逻辑元件之间的严格划分。可以以任何合适的方式提供每个功能块。应当理解,这里描述的由系统或加速器形成的中间值不需要由系统或加速器在任何点上物理地生成,并且可以仅表示方便地描述由系统或加速器在其输入和输出之间执行的处理的逻辑值。
本文描述的DNN加速器可以采用硬件方式在集成电路上实现。这里描述的基于计算的设备可以被配置为执行本文描述的任何方法。通常,上述任何功能、方法、技术或组件可以用软件、固件、硬件(例如,固定逻辑电路)或其任何组合来实现。这里可以使用术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”来一般地表示软件、固件、硬件或其任何组合。在软件实现的情况下,模块、功能、组件、元件、单元、块或逻辑表示在处理器上执行时执行指定任务的程序代码。这里描述的算法和方法可以由执行使(一个或多个)处理器执行算法/方法的代码的一个或多个处理器执行。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并且可由机器访问的技术的其他存储器设备。
这里使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何种类的可执行代码,包括以机器语言、解释语言或脚本语言表示的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用诸如C、Java或OpenCL的编程语言代码表示的代码。可执行代码可以是,例如任何类型的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中适当地执行、处理、解释、编译、执行时,使得在支持可执行代码的计算机系统的处理器处执行代码指定的任务。
处理器、计算机或计算机系统可以是具有处理能力使得它可以执行指令的任何类型的设备、机器或专用电路,或其组合或部分。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场-可编程门阵列(FPGA)等。计算机或计算机系统可包括一个或多个处理器。
还旨在包括定义如本文所述的硬件配置的软件,例如HDL(硬件描述语言)软件,如用于设计集成电路,或用于配置可编程芯片,以执行所需功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中处理(即运行)时,配置系统以制造包括本文所述的任何装置的DNN加速器。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统处制造如本文所述的DNN加速器的方法。此外,可以提供集成电路定义数据集,当在集成电路制造系统中处理时,该集成电路定义数据集使得执行制造DNN加速器的方法。
集成电路定义数据集可以是计算机代码的形式,例如作为用于配置可编程芯片的网表、代码,作为定义适合于在任何级别的集成电路中制造的硬件的硬件描述语言,作为寄存器传输级(RTL)代码,作为如Verilog或VHDL之类的高级电路表示,以及作为如OASIS(RTM)和GDSII之类的低级电路表示。逻辑上定义适合于在集成电路中制造的硬件的更高级别表示(例如RTL)可以在这样的计算机系统上处理,该计算机系统被配置用于在包括电路元件的定义和用于组合这些元件的规则的软件环境,以生成如该表示所定义的集成电路的制造定义的上下文中生成集成电路的制造定义。通常情况下,软件在计算机系统上执行以定义机器,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以配置计算机系统用于生成集成电路的制造定义,以执行定义集成电路的代码,以产生该集成电路的制造定义。
现在将参考图23描述在集成电路制造系统上处理集成电路定义数据集以配置系统以制造DNN加速器的示例。
图23示出了集成电路(IC)制造系统2302的实例,其被配置为制造如本文中任一示例中所描述的DNN加速器。具体地,IC制造系统2302包括布局处理系统2304和集成电路生成系统2306。IC制造系统2302被配置为接收IC定义数据集(例如,定义如本文任何示例中所述的DNN加速器),处理IC定义数据集,并根据IC定义数据集生成IC(例如,其实现了如本文任何示例中所述的DNN加速器)。IC定义数据集的处理配置IC制造系统2302以制造实现如本文任何示例中所述的DNN加速器的集成电路。
布局处理系统2304被配置为接收和处理IC定义数据集以确定电路布局。从IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以包括合成RTL代码以确定要生成的电路的门级表示,例如,就逻辑组件而言(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP组件)。通过确定逻辑组件的位置信息,可以从电路的门级表示确定电路布局。这可以自动完成或者在用户参与下完成,以优化电路布局。当布局处理系统2304确定了电路布局时,它可以将电路布局定义输出到IC生成系统2306。电路布局定义可以是例如电路布局描述。
如本领域中已知的,IC生成系统2306根据电路布局定义生成IC。例如,IC生成系统2306可以实现半导体器件制造工艺以生成IC,其可以包括光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可以是掩模的形式,其可以在光刻工艺中用于根据电路定义生成IC。或者,提供给IC生成系统2306的电路布局定义可以是计算机可读代码的形式,其中IC生成系统2306可以使用该计算机可读代码来形成用于生成IC的合适掩模。
由IC制造系统2302执行的不同过程可以在一个位置(例如,由一方)实现。或者,IC制造系统2302可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同方执行。例如,以下阶段中的一些:(i)合成表示IC定义数据集的RTL代码以形成要生成的电路的门级表示,(ii)基于门级表示生成电路布局,(iii)根据电路布局形成掩模,以及(iv)使用掩模制造集成电路,可以在不同的位置和/或由不同方执行。
在其他示例中,集成电路制造系统处的集成电路定义数据集的处理可以将系统配置为制造DNN加速器,而不对IC定义数据集进行处理以确定电路布局。例如,集成电路定义数据集可以定义可重新配置的处理器(例如FPGA)的配置,并且该数据集的处理可以配置IC制造系统以生成具有所定义配置的可重新配置的处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文所述的设备。例如,由集成电路制造定义数据集以上面参照图23描述的方式的集成电路制造系统的配置可以使得制造如本文所述的设备。
在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图23所示的示例中,IC生成系统还可以由集成电路定义数据集配置为,在制造集成电路时,根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上,或者否则以集成电路提供程序代码,以用于该集成电路。
与已知实现方式相比,本申请中阐述的设备、装置、模块和/或系统(以及本文实现的方法)中阐述的概念的实现可以引起性能改进。性能改进可以包括计算性能提高、等待时间减少、吞吐量增加和/或功耗降低中的一个或多个。在制造这种设备、装置、模块和系统(例如在集成电路中)期间,性能改进可以与物理实现相抵消,从而改进了制造方法。例如,性能改进可以与布局区域相抵消,从而匹配已知实现的性能但使用较少的硅。例如,这可以通过以串行方式重复使用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,可以将本申请中提出的引起设备、装置、模块和系统的物理实现方面的改进(例如硅面积减小)的概念与性能改进相抵消。例如,这可以通过在预定义区域预算内制造模块的多个实例来完成。
申请人在此独立地公开了本文所述的每个单独的特征以及两个或更多个这样的特征的任何组合,只要基于本领域技术人员的公知常识,这些特征或组合能够基于本说明书作为整体执行,不管这些特征或特征组合是否解决了本文公开的任何问题。鉴于前面的描述,对于本领域技术人员易于理解的是,可以在本发明的范围内进行各种修改。

Claims (17)

1.一种将传统计算机视觉算法实现为神经网络的方法,所述方法包括:
接收传统计算机视觉算法的定义,所述定义标识形成所述传统计算机视觉算法的一个或多个传统计算机视觉算法运算的序列;
将所述一个或多个传统计算机视觉算法运算中的每一个映射到在数学上等同于该传统计算机视觉算法运算的一个或多个神经网络基元的集合;
根据所述序列来对映射到每个传统计算机视觉算法运算的一个或多个网络基元进行链接,以形成表示所述传统计算机视觉算法的神经网络;以及
配置能够实现神经网络的硬件逻辑,以实现表示所述传统计算机视觉算法的神经网络。
2.如权利要求1所述的方法,其中,所述传统计算机视觉算法运算中的至少一个是直方图运算,并且所述直方图运算被映射到卷积基元、激活基元和池化基元。
3.如权利要求2所述的方法,其中,所述卷积基元被配置为将所述直方图运算的输入与h个1x1x1过滤器进行卷积,其中h是所述直方图中的箱数。
4.如权利要求1所述的方法,其中,所述传统计算机视觉算法运算中的至少一个是扩张运算,并且所述扩张运算被映射到卷积基元和激活基元。
5.如权利要求1所述的方法,其中,所述传统计算机视觉算法运算中的至少一个是具有方形结构元素的扩张运算,并且所述具有方形结构元素的扩张运算被映射到池化基元。
6.如权利要求1所述的方法,其中,所述传统计算机视觉算法运算中的至少一个是侵蚀运算,并且所述侵蚀运算被映射到卷积基元和激活基元。
7.如权利要求1所述的方法,其中,所述传统计算机视觉算法是BRISK描述符算法,并且所述神经网络包括单个完全连接的基元。
8.如权利要求7所述的方法,其中,所述完全连接的基元被配置为执行权重的矩阵和强度值的向量之间的矩阵向量乘法。
9.如权利要求8所述的方法,还包括使用一种或多种神经网络训练技术来确定所述矩阵的权重。
10.如权利要求1到9中任一项所述的方法,还包括在配置所述硬件逻辑以实现所述神经网络之前,使用一种或多种神经网络训练技术来训练表示所述传统计算机视觉算法的神经网络。
11.如权利要求1到9中任一项所述的方法,其中,所述映射是基于如下库而被自动执行的,所述库包括传统计算机视觉算法运算到数学上等同的一个或多个神经网络基元的集合的映射。
12.如权利要求1到9中任一项所述的方法,其中能够实现神经网络的硬件逻辑包括神经网络加速器。
13.如权利要求12所述的方法,其中,所述神经网络加速器以硬件方式在集成电路上实现。
14.一种用于将传统计算机视觉算法实现为神经网络的系统,该系统包括:
能够实现神经网络的硬件逻辑;以及
转换器,被配置为:
接收传统计算机视觉算法的定义,所述定义标识形成所述传统计算机视觉算法的一个或多个传统计算机视觉算法运算的序列;
将所述一个或多个传统计算机视觉算法运算中的每一个映射到在数学上等同于该传统计算机视觉算法运算的一个或多个神经网络基元的集合;
根据所述序列来对映射到每个传统计算机视觉算法运算的一个或多个网络基元进行链接,以形成表示所述传统计算机视觉算法的神经网络;以及
配置所述能够实现神经网络的硬件逻辑,以实现表示所述传统计算机视觉算法的神经网络。
15.一种神经网络加速器,其被配置为实现表示传统计算机视觉算法的神经网络,所述神经网络是通过将形成所述传统计算机视觉算法的每个传统计算机视觉算法运算映射到数学上等同的一个或多个神经网络基元的序列而生成的。
16.一种用于形成神经网络的计算机实现的自动化工具,所述自动化工具能够访问从传统计算机视觉算法运算映射到数学上等同的一个或多个神经网络基元的集合的映射库,其中所述自动化工具被配置为:
接收传统计算机视觉算法的定义,所述定义标识形成所述传统计算机视觉算法的一个或多个传统计算机视觉算法运算的序列;
使用所述映射库将所述一个或多个传统计算机视觉算法运算中的每一个映射到在数学上等同于该传统计算机视觉算法运算的一个或多个神经网络基元的集合;
根据所述序列来对映射到每个传统计算机视觉算法运算的一个或多个网络基元进行链接,以形成表示所述传统计算机视觉算法的神经网络;以及
输出所述神经网络的定义,以用于配置硬件逻辑以实现所述神经网络。
17.一种计算机可读存储介质,其上存储有计算机可读指令,所述计算机可读指令当在计算机系统上被执行时,使所述计算机系统执行如权利要求1至9中任一项所述的方法。
CN201910420407.2A 2018-05-21 2019-05-20 将传统计算机视觉算法实现为神经网络 Pending CN110516803A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1808323.8 2018-05-21
GB1808323.8A GB2574372B (en) 2018-05-21 2018-05-21 Implementing Traditional Computer Vision Algorithms As Neural Networks

Publications (1)

Publication Number Publication Date
CN110516803A true CN110516803A (zh) 2019-11-29

Family

ID=62812347

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910420407.2A Pending CN110516803A (zh) 2018-05-21 2019-05-20 将传统计算机视觉算法实现为神经网络

Country Status (4)

Country Link
US (2) US11636306B2 (zh)
EP (1) EP3572984A1 (zh)
CN (1) CN110516803A (zh)
GB (1) GB2574372B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210111936A1 (en) * 2019-10-11 2021-04-15 University Of South Carolina Method for non-linear distortion immune end-to-end learning with autoencoder - ofdm
CN112905820A (zh) * 2021-03-30 2021-06-04 山西大学 一种基于逻辑学习的多图检索方法
CN112926168A (zh) * 2019-12-05 2021-06-08 杭州海康威视数字技术股份有限公司 确定最优计算模板的方法和装置
CN115221522A (zh) * 2022-09-20 2022-10-21 北京微步在线科技有限公司 Elf恶意文件快速静态检测方法、装置、电子设备
CN113159312B (zh) * 2020-01-23 2023-08-18 腾讯美国有限责任公司 压缩神经网络模型的方法、计算机系统以及存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11263526B2 (en) * 2017-05-31 2022-03-01 Intel Corporation Gradient-based training engine for quaternion-based machine-learning systems
KR20210143614A (ko) * 2020-05-20 2021-11-29 삼성전자주식회사 뉴럴 네트워크를 구현하는 뉴로모픽 장치 및 그 동작 방법
KR20210156554A (ko) * 2020-06-18 2021-12-27 삼성전자주식회사 텐서 처리 방법, 가속기 및 이를 포함한 전자 장치
GB2604142B (en) * 2021-02-25 2023-02-22 Imagination Tech Ltd Implementation of softmax and exponential in hardware
CN113238715B (zh) * 2021-06-03 2022-08-30 上海新氦类脑智能科技有限公司 智能文件系统、及其配置方法、智能辅助计算设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120330570A1 (en) * 2011-06-27 2012-12-27 Honeywell International Inc. Structural damage index mapping system and method
WO2017206156A1 (en) * 2016-06-03 2017-12-07 Intel Corporation Look-up convolutional layer in convolutional neural network
US20180068463A1 (en) * 2016-09-02 2018-03-08 Artomatix Ltd. Systems and Methods for Providing Convolutional Neural Network Based Image Synthesis Using Stable and Controllable Parametric Models, a Multiscale Synthesis Framework and Novel Network Architectures

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826550B2 (en) * 2000-12-15 2004-11-30 International Business Machines Corporation Method, system, and program for converting application program code to executable code using neural networks based on characteristics of the inputs
US6983065B1 (en) * 2001-12-28 2006-01-03 Cognex Technology And Investment Corporation Method for extracting features from an image using oriented filters
US9576217B2 (en) * 2008-04-11 2017-02-21 Recognition Robotics System and method for visual recognition
US10387774B1 (en) * 2014-01-30 2019-08-20 Hrl Laboratories, Llc Method for neuromorphic implementation of convolutional neural networks
CN104933420B (zh) * 2015-07-03 2018-11-27 北京旷视科技有限公司 一种场景图像识别方法和场景图像识别设备
US11425866B2 (en) * 2015-11-03 2022-08-30 Keith Charles Burden Automated pruning or harvesting system for complex morphology foliage
CN105447493B (zh) * 2015-12-01 2018-08-03 清华大学 基于尺度化缓存插值结构的鲁棒特征点提取系统
DK3454956T3 (da) * 2016-05-09 2021-10-25 Lego As System og fremgangsmåde til legetøjsgenkendelse
CN106446930B (zh) * 2016-06-28 2019-11-22 沈阳工业大学 基于深层卷积神经网络的机器人工作场景识别方法
US10922393B2 (en) * 2016-07-14 2021-02-16 Magic Leap, Inc. Deep neural network for iris identification
CA3034644A1 (en) * 2016-08-22 2018-03-01 Magic Leap, Inc. Augmented reality display device with deep learning sensors
CN106557759B (zh) * 2016-11-25 2020-03-17 北京小米移动软件有限公司 一种标志牌信息获取方法及装置
CA3045664A1 (en) * 2016-12-05 2018-06-14 Magic Leap, Inc. Virtual user input controls in a mixed reality environment
CN106780448B (zh) * 2016-12-05 2018-07-17 清华大学 一种基于迁移学习与特征融合的超声甲状腺结节良恶性分类系统
US10902598B2 (en) * 2017-01-27 2021-01-26 Arterys Inc. Automated segmentation utilizing fully convolutional networks
US10726514B2 (en) * 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
JP6793925B2 (ja) * 2017-07-28 2020-12-02 日本電信電話株式会社 検証装置、方法、及びプログラム
US10482337B2 (en) * 2017-09-29 2019-11-19 Infineon Technologies Ag Accelerating convolutional neural network computation throughput
CN107908646B (zh) * 2017-10-10 2019-12-17 西安电子科技大学 一种基于分层卷积神经网络的图像检索方法
CN108052977B (zh) * 2017-12-15 2021-09-14 福建师范大学 基于轻量级神经网络的乳腺钼靶图像深度学习分类方法
CN108197538B (zh) * 2017-12-21 2020-10-16 浙江银江研究院有限公司 一种基于局部特征和深度学习的卡口车辆检索系统及方法
CN108154183A (zh) * 2017-12-25 2018-06-12 深圳市唯特视科技有限公司 一种基于局部和深度特征集合的目标分类方法
CN110221681B (zh) * 2018-03-02 2021-09-21 华为技术有限公司 图像识别方法、图像呈现时间的调整方法及设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120330570A1 (en) * 2011-06-27 2012-12-27 Honeywell International Inc. Structural damage index mapping system and method
WO2017206156A1 (en) * 2016-06-03 2017-12-07 Intel Corporation Look-up convolutional layer in convolutional neural network
US20180068463A1 (en) * 2016-09-02 2018-03-08 Artomatix Ltd. Systems and Methods for Providing Convolutional Neural Network Based Image Synthesis Using Stable and Controllable Parametric Models, a Multiscale Synthesis Framework and Novel Network Architectures

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ANKUR HANDA 等: "gvnn: Neural Network Library for Geometric Computer Vision", 《ARXIV:1607.07405V3 [CS.CV]》, pages 1 - 15 *
ZHE WANG 等: "Learnable Histogram: Statistical Context Features for Deep Neural Networks", 《SPRINGER INTERNATIONAL PUBLISHING AG 2016》, pages 246 - 262 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210111936A1 (en) * 2019-10-11 2021-04-15 University Of South Carolina Method for non-linear distortion immune end-to-end learning with autoencoder - ofdm
US11570030B2 (en) * 2019-10-11 2023-01-31 University Of South Carolina Method for non-linear distortion immune end-to-end learning with autoencoder—OFDM
CN112926168A (zh) * 2019-12-05 2021-06-08 杭州海康威视数字技术股份有限公司 确定最优计算模板的方法和装置
CN113159312B (zh) * 2020-01-23 2023-08-18 腾讯美国有限责任公司 压缩神经网络模型的方法、计算机系统以及存储介质
CN112905820A (zh) * 2021-03-30 2021-06-04 山西大学 一种基于逻辑学习的多图检索方法
CN112905820B (zh) * 2021-03-30 2022-11-11 山西大学 一种基于逻辑学习的多图检索方法
CN115221522A (zh) * 2022-09-20 2022-10-21 北京微步在线科技有限公司 Elf恶意文件快速静态检测方法、装置、电子设备
CN115221522B (zh) * 2022-09-20 2022-12-16 北京微步在线科技有限公司 Elf恶意文件快速静态检测方法、装置、电子设备

Also Published As

Publication number Publication date
US20240135139A1 (en) 2024-04-25
US20190354844A1 (en) 2019-11-21
GB2574372A (en) 2019-12-11
EP3572984A1 (en) 2019-11-27
GB201808323D0 (en) 2018-07-11
GB2574372B (en) 2021-08-11
US11636306B2 (en) 2023-04-25

Similar Documents

Publication Publication Date Title
CN110516803A (zh) 将传统计算机视觉算法实现为神经网络
CN109522942B (zh) 一种图像分类方法、装置、终端设备和存储介质
US20220335284A1 (en) Apparatus and method with neural network
RU2641447C1 (ru) Способ обучения глубоких нейронных сетей на основе распределений попарных мер схожести
CN104866868B (zh) 基于深度神经网络的金属币识别方法和装置
CN110603544A (zh) 用于四元数操作的基于张量的计算系统
CN109559300A (zh) 图像处理方法、电子设备及计算机可读存储介质
CN111625667A (zh) 一种基于复杂背景图像的三维模型跨域检索方法及系统
CN110084253A (zh) 一种生成物体检测模型的方法
JP7013489B2 (ja) 学習装置、実写画像分類装置の生成システム、実写画像分類装置の生成装置、学習方法及びプログラム
CN110232318A (zh) 穴位识别方法、装置、电子设备及存储介质
CN113065997B (zh) 一种图像处理方法、神经网络的训练方法以及相关设备
CN111199558A (zh) 一种基于深度学习的图像匹配方法
CN112364747A (zh) 一种有限样本下的目标检测方法
WO2022100607A1 (zh) 一种神经网络结构确定方法及其装置
Wang et al. Improved surface reconstruction using high-frequency details
Ortiz et al. Rdcnet: Instance segmentation with a minimalist recurrent residual network
Nanni et al. Building ensemble of deep networks: convolutional networks and transformers
Beaini et al. Deep green function convolution for improving saliency in convolutional neural networks
Lin et al. Matching cost filtering for dense stereo correspondence
CN110084312A (zh) 一种生成物体检测模型的方法
CN115331021A (zh) 基于多层特征自身差异融合的动态特征提取与描述方法
WO2022142084A1 (zh) 匹配筛选方法及装置、电子设备、存储介质和计算机程序
CN116228850A (zh) 物体姿态估计方法、装置、电子设备及可读存储介质
CN115731240A (zh) 一种分割方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination