[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN116830578B - 用于减少的量化等待时间的方法和装置 - Google Patents

用于减少的量化等待时间的方法和装置 Download PDF

Info

Publication number
CN116830578B
CN116830578B CN202180090990.0A CN202180090990A CN116830578B CN 116830578 B CN116830578 B CN 116830578B CN 202180090990 A CN202180090990 A CN 202180090990A CN 116830578 B CN116830578 B CN 116830578B
Authority
CN
China
Prior art keywords
neural network
data type
layer
integer
data
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.)
Active
Application number
CN202180090990.0A
Other languages
English (en)
Other versions
CN116830578A (zh
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN116830578A publication Critical patent/CN116830578A/zh
Application granted granted Critical
Publication of CN116830578B publication Critical patent/CN116830578B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4046Scaling of whole images or parts thereof, e.g. expanding or contracting using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

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

Abstract

本文描述了用于减少量化等待时间的系统和技术。在一些方面,一过程包括:确定神经网络的至少一层被配置成处理的数据的第一整数数据类型;以及确定接收到的以供由该神经网络处理的数据的第二整数数据类型。该第二整数数据类型可以不同于该第一整数数据类型。该过程进一步包括:确定该第一整数数据类型的第一大小与该第二整数数据类型的第二大小之间的比率;以及使用对应于该比率的缩放因子来缩放该神经网络的该至少一层的参数。该过程进一步包括:对该神经网络的经缩放参数进行量化;以及将该接收到的数据输入到具有经量化且经缩放参数的神经网络。

Description

用于减少的量化等待时间的方法和装置
技术领域
本公开涉及减少针对由神经网络处理的数据的量化等待时间。本公开的一些方面涉及将量化处理纳入由硬件加速器实现的神经网络中。
背景
许多设备和系统通过生成场景的图像(或帧)和/或视频数据(包括多个帧)来允许捕获该场景。例如,相机或包括相机的计算设备(例如,包括一个或多个相机的移动设备(诸如移动电话或智能电话))可以捕获场景的帧序列。图像和/或视频数据可以被这样的设备和系统(例如,移动设备、IP相机等)捕获和处理并且可被输出以供消费(例如,被显示在该设备和/或其他设备上)。在一些情形中,图像和/或视频数据可以被这样的设备和系统捕获,并被输出以供由其他设备处理和/或消费。
机器学习模型(诸如神经网络)可被用于执行高质量的图像处理操作(以及其他操作)。在一些情形中,硬件加速器(例如,数字信号处理器(DSP)、神经处理单元(NPU)等)可被用于减少实现机器学习模型所涉及的时间和/或计算能力。硬件加速器可以被配置成使用具有特定数据格式(例如,特定整数数据类型)的数字数据来执行计算。要被由硬件加速器实现的机器学习模型处理的数据必须被转换(例如,被归一化和/或被量化)以具有对应的数据格式。
发明概述
本文描述了用于减少针对由神经网络处理的数据的量化等待时间的系统和技术。根据一个解说性示例,提供了一种用于减少量化等待时间的方法,该方法包括:确定神经网络的至少一层被配置成处理的数据的第一整数数据类型;确定接收到的以供由该神经网络处理的数据的第二整数数据类型,该第二整数数据类型不同于该第一整数数据类型;确定该第一整数数据类型的第一大小与该第二整数数据类型的第二大小之间的比率;使用对应于该比率的缩放因子来缩放该神经网络的该至少一层的参数;对该神经网络的经缩放参数进行量化;以及将该接收到的数据输入到具有经量化且经缩放参数的神经网络。
在另一示例中,提供了一种用于减少量化等待时间的装置,该装置包括存储器和耦合到该存储器的一个或多个处理器(例如,在电路系统中实现)。该一个或多个处理器被配置成并且能够进行以下操作:确定神经网络的至少一层被配置成处理的数据的第一整数数据类型;确定接收到的以供由该神经网络处理的数据的第二整数数据类型,该第二整数数据类型不同于该第一整数数据类型;确定该第一整数数据类型的第一大小与该第二整数数据类型的第二大小之间的比率;使用对应于该比率的缩放因子来缩放该神经网络的该至少一层的参数;对该神经网络的经缩放参数进行量化;以及将接收到的数据输入到具有经量化且经缩放参数的神经网络。
在另一示例中,提供了一种其上存储有指令的非瞬态计算机可读介质,这些指令在由一个或多个处理器执行时使该一个或多个处理器:确定神经网络的至少一层被配置成处理的数据的第一整数数据类型;确定接收到的以供由该神经网络处理的数据的第二整数数据类型,该第二整数数据类型不同于该第一整数数据类型;确定该第一整数数据类型的第一大小与该第二整数数据类型的第二大小之间的比率;使用对应于该比率的缩放因子来缩放该神经网络的该至少一层的参数;对该神经网络的经缩放参数进行量化;以及将接收到的数据输入到具有经量化且经缩放参数的神经网络。
在另一示例中,提供了一种用于确定一个或多个帧的曝光的设备。该设备包括:用于确定神经网络的至少一层被配置成处理的数据的第一整数数据类型的装置;用于确定接收到的以供由该神经网络处理的数据的第二整数数据类型的装置,该第二整数数据类型不同于该第一整数数据类型;用于确定该第一整数数据类型的第一大小与该第二整数数据类型的第二大小之间的比率的装置;用于使用对应于该比率的缩放因子来缩放该神经网络的该至少一层的参数的装置;用于对该神经网络的经缩放参数进行量化的装置;以及用于将该接收到的数据输入到具有经量化且经缩放参数的神经网络的装置。
在一些方面,上述方法、装置(设备)和计算机可读介质进一步包括:使用硬件加速器和该第一整数数据类型的数据来实现该神经网络。
在一些方面,该接收到的数据包括由相机设备捕获的图像数据。在一些方面,该神经网络被训练成对该图像数据执行一个或多个图像处理操作。
在一些方面,上述方法、装置(设备)和计算机可读介质进一步包括:使用浮点数据类型的训练数据来训练该神经网络。在一些情形中,训练该神经网络生成该浮点数据类型的神经网络参数。
在一些方面,上述方法、装置(设备)和计算机可读介质进一步包括:将该神经网络参数从该浮点数据类型转换为该第一整数数据类型。
在一些方面,该神经网络的该至少一层对应于该神经网络的单个层。在一些方面,该缩放因子是该第一整数数据类型的第一大小与该第二整数数据类型的第二大小之间的比率。
在一些方面,该第一整数数据类型的第一大小对应于该第一整数数据类型被配置成表示的不同整数的第一数目。在一些方面,该第二整数数据类型的第二大小对应于该第二整数数据类型被配置成表示的不同整数的第二数目。
在一些方面,该神经网络的该至少一层包括卷积层或去卷积层。在一些方面,该神经网络的该至少一层包括缩放层。在一些方面,该神经网络的该至少一层包括执行元素级操作的层。
在一些方面,上述方法、装置(设备)和计算机可读介质进一步包括:在不对该接收到的数据进行量化的情况下将该接收到的数据输入到该神经网络。
在一些方面,上述方法、装置(设备)和计算机可读介质进一步包括:对该神经网络的一个或多个附加层的参数进行量化。
在一些方面,以上描述的装置中的一个或多个是以下设备、是以下设备的部分和/或包括以下设备:移动设备(例如,移动电话或所谓的“智能电话”或其他移动设备)、相机、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备或混合现实(MR)设备)、可穿戴设备(例如,网络连接的手表或其他可穿戴设备)、个人计算机、膝上型计算机、服务器计算机、交通工具或交通工具的计算设备或组件、或其他设备。在一些方面,该装置包括用于捕获一个或多个图像的一个或多个相机。在一些方面,该装置进一步包括用于显示一个或多个图像、通知和/或其他可显示数据的显示器。在一些方面,以上描述的装置可以包括一个或多个传感器(例如,一个或多个惯性测量单元(IMU),诸如一个或多个陀螺仪、一个或多个加速度计、其任何组合和/或其他传感器)。
本概述既非旨在标识出要求保护的主题内容的关键特征或必要特征,亦非旨在单独用于确定要求保护的主题内容的范围。本主题内容应当参考本专利的整个说明书的合适部分、任何或所有附图、以及每项权利要求来理解。
前述内容以及其他特征和实施例将在参考以下说明书、权利要求书和所附附图时变得更明显。
附图简述
本申请的解说性实施例在下文参照以下附图进行了详细的描述:
图1是解说根据一些示例的图像捕获和处理系统的示例架构的框图;
图2A是解说根据一些示例的用于使用浮点数据来训练神经网络的示例系统的框图;
图2B是解说根据一些示例的用于量化神经网络的示例系统的框图;
图3是解说根据一些示例的用于量化神经网络的另一示例系统的框图;
图4是解说根据一些示例的用于减少量化等待时间的过程的示例的流程图;
图5是解说根据一些示例的针对神经网络的视觉模型的示例的示图;
图6A是解说根据一些示例的针对包括前馈权重和递归权重的神经网络的模型的示例的示图;
图6B是解说根据一些示例的针对包括不同连接类型的神经网络的模型的示例的示图;
图7是解说根据一些示例的针对卷积神经网络的模型的示例的示图;
图8是解说用于实现本文所描述的某些方面的系统的示例的示图。
实施例的详细描述
下文提供了本公开的某些方面和实施例。这些方面和实施例中的一些可以独立应用并且它们中的一些可以组合应用,这对本领域技术人员来说是显而易见的。在下面的描述中,出于解释的目的,阐述了具体细节以便提供对本申请的实施例的透彻理解。然而,显然的是,可以在没有这些具体细节的情况下实施各实施例。各附图和描述不旨在是限制性的。
以下描述仅提供了示例性实施例,并且并不旨在限定本公开的范围、适用性或配置。相反,对示例实施例的以下描述将向本领域技术人员提供用于实现示例实施例的赋能描述。应当理解,在不脱离所附权利要求书中阐述的本申请的精神和范围的情况下,可以对元件的功能和布置作出各种改变。
机器学习模型(诸如神经网络)可以执行各种图像处理操作、自然语言处理操作和其他操作。在一些情形中,硬件加速器(例如,数字信号处理器(DSP)、神经处理单元(NPU)等)可被用于减少实现机器学习模型所涉及的时间和/或计算能力。硬件加速器可以被配置成使用特定整数数据类型(例如,INT12、INT16等)的数字数据来执行计算。在一些情形中,要被硬件加速器处理的原始数据可能不具有对应的数据类型。例如,相机系统可以生成具有INT10图像数据的图像帧,而硬件加速器可以被配置成处理INT16数据。原始输入数据在被硬件加速器处理之前必须被转换成适当的数据格式,这在传统上可能涉及高等待时间的归一化和/或量化预处理。
本公开描述了用于减少量化预处理中的等待时间的系统、装置(设备)、方法和计算机可读介质(统称为“系统和技术”)。这些系统和技术可以为神经网络提供有效地量化神经网络的一个或多个层内的输入数据的能力。例如,一个整数数据类型的数据可以通过基于各整数数据类型的大小(例如,整数值范围)之间的比率缩放该数据来转换为另一个整数数据类型。所公开的系统和技术可以通过适当缩放一个神经网络层的参数(例如,将参数值乘以比率)将任何必要的量化预处理纳入到神经网络中。以此方式,输入数据可以在推断期间被直接传递到神经网络,并且量化预处理可被消除或被显著减少。
本文相对于各种附图提供了关于减少量化等待时间的进一步细节。图1是解说图像捕获和处理系统100的架构的框图。图像捕获和处理系统100包括被用于捕获和处理场景的图像(例如,场景110的图像)的各种组件。图像捕获和处理系统100可以捕获独立的图像(或照片)和/或可以捕获包括特定序列中的多个图像(或视频帧)的视频。系统100的透镜115面对场景110并接收来自场景110的光。透镜115使光朝向图像传感器130弯曲。被透镜115接收的光穿过由一个或多个控制机构120控制的光圈,并被图像传感器130接收。
一个或多个控制机构120可以基于来自图像传感器130的信息和/或基于来自图像处理器150的信息来控制曝光、焦点和/或变焦。一个或多个控制机构120可以包括多个机构和组件;例如,控制机构120可以包括一个或多个曝光控制机构125A、一个或多个焦点控制机构125B和/或一个或多个变焦控制机构125C。一个或多个控制机构120还可以包括除所解说的那些控制机构之外的附加控制机构,诸如控制模拟增益、闪光、HDR、景深和/或其他图像捕获属性的控制机构。
控制机构120的曝光控制机构125B可以获得曝光设置。在一些示例中,焦点控制机构125B将焦点设置存储在存储器寄存器中。基于焦点设置,焦点控制机构125B可以相对于图像传感器130的位置来调整透镜115的位置。例如,基于焦点设置,焦点控制机构125B可以通过致动电机或伺服来使透镜115移动地更靠近图像传感器130或更远离图像传感器130,从而调整焦点。在一些情形中,设备105A中可以包括额外的透镜,诸如图像传感器130的每个光电二极管上的一个或多个微透镜,每个微透镜在从透镜115接收到的光到达光电二极管之前将该光朝向对应的光电二极管弯曲。可以通过对比度检测自动聚焦(CDAF)、相位检测自动聚焦(PDAF)或其某种组合来确定焦点设置。可以使用控制机构120、图像传感器130和/或图像处理器150来确定焦点设置。焦点设置可以被称为图像捕获设置和/或图像处理设置。
控制机构120的曝光控制机构125A可以获得曝光设置。在一些情形中,曝光控制机构125A将曝光设置存储在存储器寄存器中。基于该曝光设置,曝光控制机构125A可以控制光圈的大小(例如,光圈大小或f/stop(f/停止))、光圈打开的历时时间(例如,曝光时间或快门速度)、图像传感器130的灵敏度(例如,ISO速度或胶片速度)、由图像传感器130施加的模拟增益或其任意组合。曝光设置可以被称为图像捕获设置和/或图像处理设置。
控制机构120的变焦控制机构125C可以获得变焦设置。在一些示例中,变焦控制机构125C将变焦设置存储在存储器寄存器中。基于变焦设置,变焦控制机构125C可以控制包括透镜115和一个或多个附加透镜的透镜元件组件(透镜组件)的焦距。例如,变焦控制机构125C可以通过致动一个或多个电机或伺服器以相对于彼此移动一个或多个透镜来控制透镜组件的焦距。变焦设置可以被称为图像捕获设置和/或图像处理设置。在一些示例中,透镜组件可以包括齐焦变焦透镜或可变焦距变焦透镜。在一些示例中,透镜组件可以包括聚焦透镜(在一些情形中其可以是透镜115),该聚焦透镜首先接收来自场景110的光,其中该光随后在该光到达图像传感器130之前穿过聚焦透镜(例如,透镜115)与图像传感器130之间的无焦变焦系统。无焦变焦系统在一些情形中可以包括具有相等或相似焦距(例如,在阈值差内)的两个正(例如,会聚、凸)透镜,在它们之间具有负(例如,发散、凹)透镜。在一些情形中,变焦控制机构125C移动无焦变焦系统中的各透镜中的一者或多者,诸如负透镜与正透镜中的一者或两者。
图像传感器130包括光电二极管或其他光敏元件的一个或多个阵列。每个光电二极管对最终与由图像传感器130产生的图像中的特定像素相对应的光量进行测量。在一些情形中,不同的光电二极管可以被不同的色彩过滤器覆盖,并且因此可以测量与覆盖该光电二极管的过滤器的颜色相匹配的光。例如,Bayer(拜耳)色彩过滤器包括红色过滤器、蓝色过滤器和绿色过滤器,其中图像的每个像素基于来自覆盖在红色过滤器中的至少一个光电二极管的红光数据、来自覆盖在蓝色过滤器中的至少一个光电二极管的蓝光数据以及来自覆盖在绿色过滤器中的至少一个光电二极管的绿光数据而生成。其他类型的色彩过滤器可以使用黄色、品红色和/或青色(也称为“祖母绿”)色彩过滤器来代替或附加于红色、蓝色和/或绿色色彩过滤器。一些图像传感器可能完全缺少色彩过滤器,并且可能在整个像素阵列中使用不同的光电二极管(在一些情形中是垂直堆叠的)。此处不分段整个像素阵列中的不同光电二极管可以具有不同的光谱灵敏度曲线,由此对不同波长的光进行响应。单色图像传感器也可能缺乏色彩过滤器,并且因此缺乏色彩深度。
在一些情形中,图像传感器130可替代地或附加地包括不透明和/或反射掩模,其阻挡光在某些时间和/或从某些角度到达某些光电二极管或某些光电二极管的部分,这可被用于进行相位检测自动聚焦(PDAF)。图像传感器130还可以包括用以放大由光电二极管输出的模拟信号的模拟增益放大器和/或用以将光电二极管的模拟信号输出(和/或由模拟增益放大器放大的模拟信号)转换成数字信号的模数转换器(ADC)。在一些情形中,关于一个或多个控制机构120所讨论的某些组件或功能可以替代地或附加地包括在图像传感器130中。图像传感器130可以是电荷耦合器件(CCD)传感器、电子倍增CCD(EMCCD)传感器、有源像素传感器(APS)、互补金属氧化物半导体(CMOS)、N型金属氧化物半导体(NMOS)、混合CCD/CMOS传感器(例如,sCMOS)或其某种其他组合。
图像处理器150可以包括一个或多个处理器,诸如一个或多个图像信号处理器(ISP)(包括ISP 154)、一个或多个主机处理器(包括主机处理器152)和/或一个或多个任何其他类型的处理器810。在解说性示例中,图像处理器150可以表示和/或包括配置成实现神经网络的硬件加速器(例如,NPU)。主机处理器152可以是数字信号处理器(DSP)和/或其他类型的处理器。在一些实现中,图像处理器150是包括主机处理器152和ISP 154的单个集成电路或芯片(例如,称为片上系统或SoC)。在一些情形中,芯片还可以包括一个或多个输入/输出端口(例如,输入/输出(I/O)端口156)、中央处理单元(CPU)、图形处理单元(GPU)、宽带调制解调器(例如,3G、4G或LTE、5G等)、存储器、连通性组件(例如,BluetoothTM、全球定位系统(GPS)等)、其任意组合和/或其他组件。I/O端口156可以包括根据一个或多个协议或规范的任何合适的输入/输出端口或接口,诸如集成电路间2(I2C)接口、集成电路间3(I3C)接口、串行外围设备接口(SPI)接口、串行通用输入/输出(GPIO)接口、移动工业处理器接口(MIPI)(诸如MIPI CSI-2物理(PHY)层端口或接口、高级高性能总线(AHB)总线、其任意组合和/或其他输入/输出端口。在一个解说性示例中,主机处理器152可以使用I2C端口与图像传感器130通信,并且ISP 154可以使用MIPI端口与图像传感器130通信。
图像处理器150可以执行数种任务,诸如量化输入数据(例如,由图像传感器130捕获的原始图像数据)、去马赛克、色彩空间转换、图像帧下采样、像素内插、自动曝光(AE)控制、自动增益控制(AGC)、CDAF、PDAF、自动白平衡、合并图像帧以形成HDR图像、图像识别、对象识别、特征识别、输入接收、管理输出、管理存储器或其某种组合。图像处理器150可以将图像帧和/或经处理图像存储在随机存取存储器(RAM)140/1220、只读存储器(ROM)145/1225、高速缓存1212、存储器单元1215、另一存储设备1230或其某种组合中。
各种输入/输出(I/O)设备160可被连接到图像处理器150。I/O设备160可以包括显示屏、键盘、按键板、触摸屏、触控板、触敏表面、打印机、任何其他输出设备1235、任何其他输入设备1245或其某种组合。在一些情形中,字幕可以通过I/O设备160的物理键盘或按键板,或者通过I/O设备160的触摸屏的虚拟键盘或按键板输入到图像处理设备105B中。I/O160可以包括一个或多个端口、插孔或其他连接器,其使得能够在设备105B与一个或多个外围设备之间进行有线连接,通过该有线连接,设备105B可以从该一个或多个外围设备接收数据和/或向该一个或多个外围设备传送数据。I/O 160可以包括一个或多个无线收发机,其使得能够在设备105B与一个或多个外围设备之间进行无线连接,通过该无线连接,设备105B可以从该一个或多个外围设备接收数据和/或向该一个或多个外围设备传送数据。外围设备可以包括先前讨论的任何类型的I/O设备160,并且一旦它们被耦合到端口、插孔、无线收发机或其他有线和/或无线连接器,它们本身就可以被认为是I/O设备160。
在一些情形中,图像捕获和处理系统100可以是单个设备。在一些情形中,图像捕获和处理系统100可以是两个或更多个独立的设备,包括图像捕获设备105A(例如,相机)和图像处理设备105B(例如,耦合到相机的计算设备)。在一些实现中,图像捕获设备105A和图像处理设备105B可以例如经由一个或多个电线、电缆或其他电连接器耦合在一起,和/或经由一个或多个无线收发机无线地耦合在一起。在一些实现中,图像捕获设备105A和图像处理设备105B可以彼此断开连接。
如图1中所示出的,垂直虚线将图1的图像捕获和处理系统100划分为分别表示图像捕获设备105A和图像处理设备105B的两个部分。图像捕获设备105A包括透镜115、控制机构120和图像传感器130。图像处理设备105B包括图像处理器150(包括ISP 154和主机处理器152)、RAM 140、ROM 145和I/O 160。在一些情形中,图像捕获设备105A中所解说的某些组件(诸如ISP 154和/或主机处理器152)可被包括在图像捕获设备105A中。
图像捕获和处理系统100可以包括电子设备,诸如移动或固定电话手持机(例如,智能电话、蜂窝电话等)、台式计算机、膝上型或笔记本计算机、平板计算机、机顶盒、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流送设备、网际协议(IP)相机或任何其他合适的电子设备。在一些示例中,图像捕获和处理系统100可以包括用于无线通信的一个或多个无线收发机,诸如蜂窝网络通信、802.11wi-fi通信、无线局域网(WLAN)通信或其某种组合。在一些实现中,图像捕获设备105A和图像处理设备105B可以是不同的设备。例如,图像捕获设备105A可以包括相机设备,并且图像处理设备105B可以包括计算设备,诸如移动手持机、台式计算机或其他计算设备。
尽管图像捕获和处理系统100被示为包括某些组件,但本领域普通技术人员将领会,图像捕获和处理系统100可包括比图1中所示的那些组件更多的组件。图像捕获和处理系统100的组件可以包括软件、硬件或软件和硬件的一个或多个组合。例如,在一些实现中,图像捕获和处理系统100的各组件可包括和/或可使用电子电路或其他电子硬件(其可包括一个或多个可编程电子电路(例如,微处理器、GPU、DSP、CPU和/或其他合适的电子电路))来实现,和/或可包括和/或可使用计算机软件、固件、或其任何组合来实现,以执行本文描述的各种操作。软件和/或固件可以包括存储在计算机可读存储介质上并且可由实现图像捕获和处理系统100的电子设备的一个或多个处理器执行的一条或多条指令。
主机处理器152可以(例如,经由诸如I2C、I3C、SPI、GPIO和/或其他接口的外部控制接口)用新的参数设置来配置图像传感器130。在一个解说性示例中,主机处理器152可以基于来自过往图像帧的曝光控制算法的内部处理结果来更新由图像传感器130所使用的曝光设置。主机处理器152还可以动态地配置ISP 154的内部流水线或模块的参数设置以匹配来自图像传感器130的一个或多个输入图像帧的设置,使得图像数据被ISP 154正确地处理。ISP 154的处理(或流水线)块或模块可以包括用于透镜/传感器噪声校正、去马赛克、颜色转换、图像属性的校正或增强/抑制、去噪滤波器、锐化滤波器等的模块。ISP 154的不同模块的设置可以由主机处理器152配置。每个模块可以包括大量可调谐参数设置。另外,由于不同的模块可能影响图像的类似方面,因此这些模块可以是相互依赖的。例如,去噪和纹理校正或增强都可能影响图像的高频方面。作为结果,大量参数被ISP使用以根据捕获的原始图像来生成最终图像。
图2A是解说模型训练系统200(A)的示例的框图。在一些示例中,模型训练系统200(A)可以由图1中所解说的图像捕获和处理系统100来实现。例如,模型训练系统200(A)可以由图像处理器150、图像传感器130和/或图像捕获和处理系统100的任何附加组件来实现。在其他示例中,模型训练系统200(A)可以由配置成训练神经网络模型的服务器或数据库来实现。模型训练系统200(A)可以由任何附加的或替换的计算设备或系统来实现。
在一些情形中,模型训练系统200(A)可以生成经训练模型210。经训练模型210可以对应于和/或包括被训练成执行一个或多个操作的各种类型的机器学习模型。在解说性示例中,经训练模型210可以被训练成对由相机系统(例如,图像捕获和处理系统100的图像传感器130)捕获的图像数据执行一个或多个图像处理操作。经训练模型210可被训练成执行任何其他类型的操作(例如,自然语言处理操作、推荐操作等)。此外,在一个示例中,经训练模型210可以是深度神经网络,诸如卷积神经网络(CNN)。深度神经网络的解说性示例在下文参照图5、图6A、图6B和图7进行描述。经训练模型210的附加示例包括但不限于:时间延迟神经网络(TDNN)、深度前馈神经网络(DFFNN)、递归神经网络(RNN)、自动编码器(AE)、变化AE(VAE)、去噪AE(DAE)、稀疏AE(SAE)、马尔可夫链(MC)、感知器或其某种组合。
经训练模型210可以使用训练数据202来训练,训练数据202表示与经训练模型210在推断期间要处理的输入数据的类型和/或格式相对应的任意数据集或集合。例如,如果经训练模型210正在被训练成对图像帧执行图像处理操作,则训练数据202可以包括具有与该图像处理操作相关的特征、格式和/或其他特性的大量(例如,数百、数千或数百万)图像帧。在解说性示例中,训练数据202可以包括由移动设备捕获的图像帧。这些图像帧的图像数据可以具有特定的数据格式。例如,移动设备的相机系统可以被配置成输出具有INT8数据类型、INT10数据类型、INT12数据类型、INT16数据类型或任何其他整数数据类型的原始图像数据。在一些情形中,将整数类型的训练数据转换为具有浮点数据类型的数据可能是有益的。例如,使用浮点数据训练经训练模型210可以改进经训练模型210的性能和/或准确性。因此,模型训练系统200(A)可以包括归一化引擎204,其将训练数据202的整数类型数据归一化为浮点数据。在解说性示例中,归一化引擎204可以将大小范围(也称为整数值范围)为[0.0-1.0]的整数类型数据转换为float32数据。归一化引擎204可以使用任何合适类型的归一化函数将整数类型数据转换为任何合适类型的浮点数据。如图2A中所示,归一化引擎204可输出经归一化训练数据206。
在一些情形中,模型训练系统200(A)的训练引擎208可以使用经归一化训练数据206来生成经训练模型210。例如,训练引擎208可以使用经归一化训练数据206来迭代地调整深度神经网络的一个或多个层和/或通道的参数(例如,权重、偏置等)。一旦深度神经网络被充分训练,训练引擎208就可以输出经训练模型210。例如,训练引擎208可以输出指示经训练模型210的参数(及其对应的层和/或通道)的值的模型文件。经训练模型210可以包括任意数目的卷积层、去卷积层、缩放层、偏置层、全连接层和/或其他类型的层或其组合。因为训练引擎208使用浮点数据来生成经训练模型210,所以模型文件内的参数也是浮点数据。
在一些示例中,经训练模型210可以使用硬件加速器来(在推断期间)实现。如本文所使用的,“硬件加速器”可以包括被设计成执行一个或多个特定任务或操作的计算机硬件的一部分。例如,硬件加速器可以包括和/或对应于专用硬件。在解说性示例中,经训练模型210可以由神经处理单元(NPU)或设计成加速机器学习算法的实现的其他微处理器来实现。可以实现经训练模型210的NPU的一个示例是六边形张量加速器(HTA)。可实现经训练模型210的硬件加速器的附加示例包括但不限于:数字信号处理器(DSP)、现场可编程阵列(FPGA)、专用集成电路(ASIC)、视觉处理单元(VPU)、物理神经网络(PNN)、张量处理单元(TPU)、片上系统(SoC)以及其他硬件加速器。然而,经训练模型210不需要由硬件加速器或其他专用硬件来实现。例如,经训练模型210可以由中央处理单元(CPU)和/或任何合适的通用计算架构来实现。
在一个示例中,实现经训练模型210的硬件加速器可以是定点加速器。如本文中所使用的,“定点加速器”可以包括被设计成使用特定整数数据类型的数字数据来执行计算的硬件加速器。例如,定点加速器可以被配置和/或被优化以支持INT8数据、INT10数据、INT12数据、INT16数据或另一整数数据类型。在一些情形中,定点加速器可以以低等待时间和/或低功率提供足够高的性能。例如,定点加速器(或其他硬件加速器)可以能够在处理功率相对较低的计算设备(例如,移动设备)上实现神经网络。然而,定点加速器可能与浮点数据(或不属于定点加速器针对其被配置的特定整数数据类型的整数类型数据)不兼容。因此,为了使用定点加速器的机器学习模型的适当和/或最优实现,可能需要量化机器学习模型和/或输入数据。如本文中所使用的,“量化”可以指将浮点数据转换为整数类型数据的过程。
图2B是用于量化经训练机器学习模型和/或输入数据的示例模型实现系统200(B)的框图。在一些示例中,模型实现系统200(B)可以由图1中所解说的图像捕获和处理系统100来实现。例如,模型实现系统200(B)可以由图像捕获和处理系统100的图像处理器150和/或图像传感器130来实现。模型实现系统200(B)可以由任何附加的或替换的计算设备或系统来实现。
模型实现系统200(B)表示用于执行常规量化预处理的架构的示例。例如,模型实现系统200(B)可以包括量化经训练模型210的浮点参数(产生固定整数模型224)的模型量化引擎222。模型量化引擎222可以实现任何合适类型的量化过程。在解说性示例中,可以使用以下公式来执行量化过程:
以及
在以上公式中,f是浮点数据,q是经量化数据,fmax和fmin分别是能够由浮点数据的浮点数据类型所表示的最大值和最小值,qmax和qmin分别是能够由经量化数据的整数数据类型所表示的最大值和最小值,round是舍入函数。舍入函数可以是下限函数、上限函数、固定函数或任何合适的舍入函数。在一些情形中,固定整数模型224可以与经训练模型210的被配置成处理具有特定整数数据类型(例如,与特定硬件加速器相关联的整数数据类型)的输入数据的版本相对应。
在一些情形中,模型实现系统200(B)可以接收其数据类型与固定整数模型224的数据类型相对应的输入数据。例如,模型实现系统200(B)可以接收INT10输入数据,并且固定整数模型224可以被配置成处理INT10数据。在这些情形中,模型实现系统200(B)可以直接将输入数据提供给固定整数模型224(产生模型输出226)。然而,在许多场景中,接收到的输入数据可以具有不同的数据类型。在解说性示例中,模型实现系统200可以在包括相机系统和定点加速器的移动设备上实现。在该示例中,相机系统可以生成具有INT10数据类型的图像帧,并且定点加速器可以被配置成处理具有INT16数据类型的图像帧。将INT10数据输入定点加速器可能会导致不正确和/或不可用的输出。因此,模型实现系统200(B)可以包括将输入数据转换为适当的整数数据类型的量化系统212。该转换过程可以表示准备输入数据以用于推断的量化预处理。如所示出的,量化系统212可以包括归一化引擎228(例如,类似于模型训练系统200(A)的归一化引擎204)。归一化引擎228可以接收输入数据214(对应于第一类型的整数类型数据)。归一化引擎204可以对输入数据214执行一个或多个归一化处理,从而产生经归一化输入数据216(对应于浮点数据)。数据量化引擎218随后可以对经归一化输入数据216进行量化以生成经量化输入数据220(对应于第二类型的整数类型数据)。数据量化引擎218可以实现任何合适类型的量化过程(诸如由模型量化引擎222实现的量化过程)。量化系统212可以将经量化输入数据220输入到固定整数模型224,从而生成模型输出226。
在一些情形中,对应于量化系统212的量化预处理可以在生成输入数据214和/或实现固定整数模型224的同一计算设备上实现。例如,计算设备可以是移动设备,其包括用于捕获图像帧(例如,输入数据214)的相机系统和用于实现固定整数模型224的硬件加速器。在该示例中,计算设备可以离线接收固定整数模型224(例如,被配置成生成固定整数模型的后端服务器或系统可以将固定整数模型224导出到计算设备)。在一些示例中,计算设备可以被配置成响应于生成要由固定整数模型224处理的输入数据(例如,图像帧)来实现量化预处理,该固定整数模型224被离线生成并且仅消耗所配置类型的固定输入数据。该量化预处理可显著增加使用固定整数模型224处理图像帧所涉及的总时间量。例如,针对高分辨率图像数据的量化预处理可以对应于大约20%的神经网络处理时间。在解说性示例中,使用CPU对3000x4000x4像素的输入数据的预处理可能需要大约400毫秒,并且使用定点加速器对该输入数据的推断可能需要大约2秒。因此,量化预处理会在许多图像处理操作中引入不期望的等待时间。
所公开的系统和技术可以显著减少(或甚至消除)量化预处理。例如,将第一整数数据类型的数据转换为第二整数数据类型可以通过将该数据乘以标量值(这里称为“缩放因子”)来完成。缩放因子可以对应于第一整数数据类型的大小与第二整数数据类型的大小之间的比率。整数数据类型的大小可以对应于该整数数据类型能够表示和/或被配置成表示的不同整数的数目。例如,INT10数据类型的大小范围是210(例如,1024),INT16数据类型的大小范围是216(例如,65536)。由INT10数据结构表示的值可以通过将该值乘以为64(例如,或26)的缩放因子来转换为INT16数据结构。
图3是被配置成基于以上描述的缩放因子技术来减少量化等待时间的示例模型实现系统300的框图。例如,模型实现系统300可以包括量化系统312,该量化系统312将缩放因子(例如,缩放因子304)纳入神经网络(例如,图2A和图2B中示出的经训练模型210)的一个或多个层。在该示例中,量化系统312可以包括确定缩放因子304的缩放因子引擎302。缩放因子304可以对应于适合于将第一整数数据类型的数据转换为第二整数数据类型的缩放因子。例如,缩放因子引擎302可以确定适合于将特定相机系统捕获的原始图像数据转换为可由特定硬件加速器处理的整数数据类型的缩放因子。在一些情形中,缩放因子引擎302可以基于与相机系统和/或硬件加速器相关联的整数数据类型的知识来确定缩放因子304。
在一些示例中,量化系统312的模型缩放引擎306可以基于缩放因子304来缩放(例如,乘以)经训练模型210的一个层的参数。例如,模型缩放引擎306可以将该层的每个权重、偏置或其他参数乘以缩放因子304(例如,称为将缩放因子304“广播”到该层)。此外,如果该层包括多个通道,则模型缩放引擎306可以将每个通道的参数乘以缩放因子304。在一些情形中,通过缩放因子304来缩放该层的参数可以导致按照缩放因子304来缩放该层的输出。以这种方式,对参数进行缩放可以有效地将输入数据从第一整数数据类型转换为第二整数类型。在解说性示例中,模型缩放引擎306可以在经训练模型210的一个层内实现缩放因子64,以便将INT10输入数据转换为INT16输入数据。
在该示例中,该层的原始输出由式给出,其中W是参数k的值,并且Xint16是INT16输入数据点的值。在实现了为64的缩放因子之后,该层的输出可以由式给出,其中Xint10是INT10输入数据点的值。
模型缩放引擎306可以缩放经训练模型210的各种类型的层的参数。在解说性示例中,模型缩放引擎306可以缩放卷积层的参数。在其他示例中,模型缩放引擎306可以缩放去卷积层、缩放层、执行元素级操作(例如,元素级比特移位操作和/或元素级乘法操作)的层和/或任何合适类型的层的参数。此外,模型缩放引擎306可以缩放经训练模型210内任何位置中的层的参数。例如,模型缩放引擎306可以缩放第一层、第二层、第三层或任何合适层的参数。此外,在一些示例中,模型缩放引擎306可以缩放多个层的参数。例如,模型缩放引擎306可以按照与缩放因子304的除数相对应的缩放因子来缩放多个层的参数。在解说性示例中,如果缩放因子304是32,则模型缩放引擎306可以将一层的参数乘以2,并且将另一层的参数乘以16(导致为32的总缩放因子)。
如图3中所示出的,模型缩放引擎306可输出经缩放模型316,该经缩放模型316包括其参数已根据缩放因子304被缩放的一个或多个层。如以上提到的,经训练模型210的参数是浮点值。因此,经缩放模型316的参数也是浮点值。为了使硬件加速器能够实现经缩放模型316,量化系统312可以包括对经缩放模型316进行量化(从而产生固定整数模型324)的模型量化引擎322。例如,模型量化引擎322可以量化经缩放模型316的每个参数。模型量化引擎322可以使用任何合适的量化过程(诸如模型实现系统200(B)的模型量化引擎222所使用的量化过程)。一旦生成了固定整数模型324,模型实现系统300就可以向固定整数模型324提供输入数据314,从而产生模型输出326。
在一些情形中,量化系统312的全部或一部分可被离线实现。例如,量化系统312可以由远离在推断期间实现固定整数模型324的计算设备的服务器或计算设备来实现。在解说性示例中,量化系统312可以在后端服务器上生成固定整数模型324,并且随后将固定整数模型324导出到一个或多个计算设备(例如,移动设备)。接收固定整数模型324的计算设备可以直接向固定整数模型324提供输入数据。例如,如图3中所示出的,输入数据314可以被直接传递到固定整数模型324(例如,不进行图2B中所解说的量化预处理)。因为固定整数模型324已经基于缩放因子304被调整,所以输入数据314的整数数据类型在被硬件加速器处理之前不需要被归一化、量化或以其他方式调整。因此,模型实现系统300可以消除(或几乎消除)量化预处理中涉及的等待时间。
图4是解说用于使用本文描述的系统和技术来减少量化等待时间的示例过程400的流程图。在框402,过程400包括确定神经网络的至少一层被配置成处理的数据的第一整数数据类型。在一些情形中,过程400可以使用硬件加速器和第一整数数据类型的数据来实现神经网络。在一些示例中,神经网络的该至少一层对应于神经网络的单个层。在一些示例中,神经网络的该至少一层包括卷积层或去卷积层。在一些示例中,神经网络的该至少一层包括缩放层。在一些示例中,神经网络的该至少一层包括执行元素级操作的层。
在框404,过程400包括确定接收到的以供由神经网络处理的数据的第二整数数据类型。第二整数数据类型不同于第一整数数据类型。在一些情形中,接收到的数据(具有第二整数数据类型)包括由相机设备捕获的图像数据。在一些方面,神经网络被训练成对图像数据执行一个或多个图像处理操作。在一个解说性示例中,如以上参照图3所描述的,第二整数数据类型可以包括由特定相机系统捕获的原始图像数据,并且第一整数数据类型可以是可由特定硬件加速器处理的数据类型。
在框406,过程400包括确定第一整数数据类型的第一大小与第二整数数据类型的第二大小之间的比率。在一些情形中,第一大小对应于第一整数数据类型的大小范围(或整数值范围),并且第二大小对应于第二整数数据类型的大小范围(或整数值范围)。例如,第一整数数据类型的第一大小可以对应于第一整数数据类型被配置成表示的不同整数的第一数目,并且第二整数数据类型的第二大小可以对应于第二整数数据类型被配置成表示的不同整数的第二数目。
在框408,过程400包括使用对应于该比率的缩放因子来缩放神经网络的该至少一层的参数。例如,如以上提到的,缩放因子(例如,标量值)可以对应于第一整数数据类型的第一大小与第二整数数据类型的第二大小之间的比率。在一个解说性示例中,INT10数据类型的大小范围是210(例如,1024),并且INT16数据类型的大小范围是216(例如,65536)。由INT10数据结构表示的值可以通过将该值乘以为64(例如,或26)的缩放因子来转换为INT16数据结构。在一些示例中,该比率和缩放因子可以由图3的缩放因子引擎302来确定。
在框410,过程400包括对神经网络的经缩放参数进行量化。在一些示例中,可通过图3的模型量化引擎322来量化经缩放参数。例如,模型量化引擎322可以量化经缩放模型316,从而产生固定整数模型324。可以使用任何合适的量化过程。
在框412,过程400包括将接收到的数据输入到具有经量化且经缩放参数的神经网络。例如,一旦生成了固定整数模型324,模型实现系统300就可以向固定整数模型324提供输入数据314,从而得到模型输出326。在一些情形中,过程400包括在不对接收到的数据进行量化的情况下将接收到的数据输入到神经网络。在一些情形中,过程400包括对神经网络的一个或多个附加层的参数进行量化。
在一些情形中,过程400包括使用浮点数据类型的训练数据来训练神经网络。在一些示例中,对神经网络的训练生成浮点数据类型的神经网络参数。在一些方面,过程400包括将神经网络参数从浮点数据类型转换为第一整数数据类型。
图5是解说针对神经网络的视觉模型500的示例的示图。在一些情形中,模型500可以对应于图2A、图2B和图3中的经训练模型210的示例架构。在该示例中,模型500包括输入层504、通常被称为隐藏层506的中间层和输出层508。每一层包括某一数目的节点502。在该示例中,输入层504的每个节点502连接到隐藏层506的每个节点502。这些连接(其在大脑模型中会被称为突触)被称为权重550。输入层504可以接收输入,并且可以将输入传播到隐藏层506。同样在该示例中,隐藏层506的每个节点502具有与输出层508的每个节点502的连接或权重550。在一些情形中,神经网络实现可以包括多个隐藏层。由隐藏层506(或多个隐藏层)计算的加权和被传播到输出层508,输出层508可以呈现最终输出以用于不同用途(例如,提供分类结果、检测对象、跟踪对象和/或其他合适用途)。不同节点502的输出(加权和)可以被称为激活(也称为激活数据),与大脑模型保持一致。
可在示例视觉模型500中的每一层处发生的计算的示例如下:
在上式中,Wij是权重,xi是输入激活,yj是输出激活,f()是非线性函数,并且b是偏置项。使用输入图像作为示例,节点与该节点的感受野之间的每个连接可学习权重Wij,并且在一些情形中,学习总体偏置b,以使得每个节点学习分析其在输入图像中的特定局部感受野。隐藏层的每个节点可具有相同的权重和偏置(被称为共享权重和共享偏置)。各种非线性函数可被用来实现不同的目的。
模型500可以被称为有向加权图。在有向图中,去往或来自节点的每个连接指示一方向(例如,进入节点或远离节点)。在加权图中,每个连接可以有一权重。用于开发神经网络的工具可以将神经网络可视化为有向加权图,以便于理解和调试。在一些情形中,这些工具也可被用于训练神经网络并输出经训练权重值。执行神经网络就是使用权重对输入数据进行计算。
具有三个以上层(例如,一个以上隐藏层)的神经网络有时被称为深度神经网络。深度神经网络可以具有例如五层到一千层以上。具有许多层的神经网络相较于较浅的网络而言能够学习具有更多复杂性和抽象性的高级任务。作为示例,深度神经网络可被教导识别图像中的对象或场景。在该示例中,图像的像素可以被馈送到深度神经网络的输入层,并且第一层的输出可以指示图像中低级特征的存在,诸如线条和边缘。在随后的层中,这些特征可以被组合以测量更高级特征的可能存在:线条可以被组合成形状,这些形状可以被进一步组合成形状集。给定这样的信息,深度神经网络可以输出高级特征表示特定对象或场景的概率。例如,深度神经网络可以输出图像是包含猫还是不包含猫。
神经网络的学习阶段被称为对神经网络进行训练。在训练期间,神经网络被教导来执行任务。在学习该任务时,确定权重(并且可能还有偏置)的值。针对神经网络的底层程序(例如,节点到各层的组织、每层的各节点之间的连接以及由每个节点执行的计算)不需要在训练期间改变。一旦被训练,神经网络就可以通过使用在训练期间确定的权重值(在一些情形中以及偏置值)计算结果来执行该任务。例如,神经网络可以输出图像包含特定对象的概率、音频序列包含特定单词的概率、图像中围绕对象的边界框或应该采取的建议动作。运行针对神经网络的程序被称为推断。
存在多种可以训练权重的方式。一种方法称为监督式学习。在监督式学习中,所有的训练样本都被标记,使得将每个训练样本输入到神经网络中会产生已知的结果。另一种方法称为无监督学习,其中训练样本不被标记。在无监督学习中,训练旨在找到数据中的结构或数据中的聚类。半监督学习介于监督式学习和无监督学习之间。在半监督学习中,训练数据的子集被标记。未经标记数据可被用于定义聚类边界,并且经标记数据可被用于标记聚类。
已经开发了不同种类的神经网络。神经网络的各种示例可被划分为两种形式:前馈和递归。图6A是解说针对包括输入层604与隐藏层606之间的前馈权重612以及输出层608处的递归权重614的神经网络的模型610的示例的示图。在前馈神经网络中,计算是对前一层的输出的一系列操作,其中最后一层生成神经网络的输出。在图6A所解说的示例中,由隐藏层606来解说前馈,隐藏层606的节点602仅对输入层604中的节点602的输出进行操作。前馈神经网络没有存储器,并且针对给定输入的输出可以总是相同的,而与被给到神经网络的任何先前输入无关。多层感知器(MLP)是一种类型的只有前馈权重的神经网络。
相比之下,递归神经网络具有可以允许依赖性来影响输出的内部存储器。在递归神经网络中,一些中间操作可以生成值,这些值被内部地存储并且可以与对后续输入数据的处理相结合来用作对其他操作的输入。在图6A的示例中,由输出层608来解说递归性,其中输出层608的节点602的输出连接回到输出层608的节点602的输入。这些环回连接可被称为递归权重614。长短期记忆(LSTM)是常用递归神经网络变体。
图6B是解说针对包括不同连接类型的神经网络的模型620的示例的示图。在该示例模型620中,输入层604和隐藏层606是全连接622层。在全连接层中,所有输出激活由经加权输入激活组成(例如,输入层604中的所有节点602的输出连接到隐藏层606的所有节点602的输入)。全连接层可能需要大量的存储和计算。多层感知器神经网络是一种类型的全连接神经网络。
在一些应用中,激活之间的一些连接可以例如通过将针对这些连接的权重设置为零而被移除,而不影响输出的准确性。结果是稀疏连接624层,如图6B中通过隐藏层606与输出层608之间的权重所解说的。池化是可以实现稀疏连接624层的方法的另一示例。在池化中,节点群集的输出可以例如通过找到最大值、最小值、均值或中值而被组合。
被称为卷积神经网络(CNN)的一类神经网络对于图像识别和分类(例如,面部表情识别和/或分类)特别有效。卷积神经网络可以学习例如图像的类别,并且可以输出关于输入图像落入类别之一的统计可能性。
图7是解说针对卷积神经网络的模型700的示例的示图。模型700解说了可包括在卷积神经网络中的操作:卷积、激活、池化(也称为子采样)、批量归一化和输出生成(例如,全连接层)。作为示例,由模型700解说的卷积神经网络是提供不同类对象(例如,狗、猫、船、鸟)的输出预测714的分类网络。任何给定卷积网络包括至少一个卷积层,并且可以具有许多卷积层。另外,每个卷积层之后不需要都有池化层。在一些示例中,池化层可以在多个卷积层之后出现,或者可以根本不出现。图7所解说的示例卷积网络将输入图像720分类为四个类别之一:狗、猫、船或鸟。在所解说的示例中,在接收到船的图像作为输入时,示例神经网络在输出预测714之中输出针对“船”的最高概率(0.94)。
为了产生所解说的输出预测714,示例卷积神经网络执行带有整流线性单元(ReLU)的第一卷积702、池化704、带有ReLU的第二卷积706、附加池化708,并随后使用两个全连接层710、712进行类别化。在带有ReLU的第一卷积702操作中,输入图像720被卷积以产生一个或多个输出特征图722(包括激活数据)。第一池化704操作产生附加特征图724,其用作针对第二卷积和ReLU 706操作的输入特征图。带有ReLU的第二卷积706操作产生具有激活数据的第二输出特征图726集。附加池化708步骤还产生特征图728,其被输入到第一全连接层710中。第一全连接层710的输出被输入到第二全连接层712中。第二全连接层712的输出是输出预测714。在卷积神经网络中,术语“较高层”和“较高级的层”指的是远离输入图像的层(例如,在示例模型700中,第二全连接712层是最高层)。
图7的示例是卷积神经网络的一个示例。其他示例可以包括附加或更少的卷积操作、ReLU操作、池化操作和/或全连接层。卷积、非线性(ReLU)、池化或子采样以及类别化操作将在以下更详细地解释。
当执行图像处理功能(例如,图像识别、对象检测、对象分类、对象跟踪或其他合适的功能)时,卷积神经网络可以对图像的数值或数字表示进行操作。图像可以在计算机中被表示为像素值的矩阵。例如,以1080p捕获的视频帧包括宽1920像素、高1080像素的像素阵列。图像的某些分量可以称为通道。例如,彩色图像有三个颜色通道:红色(R)、绿色(G)和蓝色(B)或亮度(Y)、红色色度(Cr)和蓝色色度(Cb)。在该示例中,彩色图像可被表示为三个二维矩阵,每种颜色一个二维矩阵,其中水平轴和垂直轴指示图像中像素的位置,并且0与255之间的值指示该像素的颜色强度。作为另一示例,灰度图像仅具有一个通道,因此可被表示为像素值的单个二维矩阵。在该示例中,像素值也可以在0与255之间,其中例如0指示黑色,而255指示白色。在这些示例中,为255的上限值假设像素由8比特值表示。在其他示例中,可以使用更多比特(例如,16、32或更多比特)来表示像素,并且像素因此可以具有更高的上限值。
如图7中所示出的,卷积网络是层的序列。卷积神经网络的每一层通过可微函数将一个体积的激活数据(也称为激活)转换为另一体积的激活。例如,每个层可以接受输入3D体积,并且可以通过可微函数将该输入3D体积转换为输出3D体积。可被用于构建卷积神经网络架构的三种类型的层可以包括卷积层、池化层和一个或多个全连接层。网络还包括输入层,其可以保存图像的原始像素值。例如,示例图像可以具有32像素的宽度、32像素的高度和三个颜色通道(例如,R、G和B颜色通道)。卷积层的每个节点连接到输入图像的节点(像素)区域。该区域被称作感受野。在一些情形中,卷积层可以计算连接到输入中的局部区域的节点(也称为神经元)的输出,每个节点计算其权重与它们在输入体积中连接到的小区域之间的点积。如果使用12个滤波器,则这样的计算可以导致体积[32x32x12]。ReLu层可以应用元素级激活函数,诸如将max(0,x)阈值设为零,这将使体积的大小保持在[32x32x12]不变。池化层可以沿着空间维度(宽度、高度)执行下采样操作,从而导致减少的数据体积,诸如大小为[16x16x12]的数据体积。全连接层可以计算类分数,从而导致大小为[1x1x4]的体积,其中四(4)个数字中的每一个对应于类分数,诸如在狗、猫、船和鸟的四个类别之中。CIFAR-10网络是这种网络的一个示例,并且具有十个对象类别。通过使用这样的神经网络,原始图像可以从原始像素值逐层转换到最终的类分数。一些层包含参数,而一些层可能不包含参数。例如,卷积层和全连接层执行是输入体积中的激活的函数并且也是节点的参数(权重和偏置)的函数的变换,而ReLu层和池化层可以实现固定的函数。
卷积是可被用于从输入图像中提取特征的数学运算。可被提取的特征包括例如边缘、曲线、角、斑点和脊等。卷积通过使用输入数据的小正方形来学习图像特征,从而保持像素之间的空间关系。
图8是解说用于实现本文技术的某些方面的系统的示例的示图。具体而言,图8解说了计算系统800的示例,该计算系统800可以是例如构成内部计算系统的任何计算设备、远程计算系统、相机、或其任何组件,其中该系统的各组件使用连接805彼此处于通信。连接805可以是使用总线的物理连接,或至处理器810的直接连接(诸如在芯片组架构中)。连接805还可以是虚拟连接、联网连接、或逻辑连接。
在一些实施例中,计算系统800是分布式系统,其中本公开中所描述的功能可以分布在数据中心、多个数据中心、对等网络等等内。在一些实施例中,本文所描述的系统组件中的一个或多个系统组件表示许多此类组件,每个组件执行为该组件描述的一些或全部功能。在一些实施例中,各组件可以是物理或虚拟设备。
示例系统800包括至少一个处理单元(CPU或处理器)810和连接805,其将包括系统存储器815(诸如只读存储器(ROM)820和随机存取存储器(RAM)825)的各种系统组件耦合至处理器810。计算系统800可以包括与处理器810直接连接、紧邻处理器810、或集成为处理器810的一部分的高速存储器的高速缓存812。
处理器810可包括任何通用处理器和硬件服务或软件服务,诸如存储在存储设备830中、被配置成控制处理器810的服务832、834和836,以及专用处理器,其中软件指令被纳入实际处理器设计中。处理器810可以基本上是完全自包含计算系统,包含多个核或处理器、总线、存储器控制器、高速缓存等。多核处理器可以是对称的或非对称的。
为了实现用户交互,计算系统800包括可以表示任何数目的输入机构的输入设备845,诸如用于语音的话筒、用于姿势或图形输入的触敏屏、键盘、鼠标、运动输入、语音等等。计算系统800还可以包括输出设备835,该输出设备835可以是数个输出机构中的一者或多者。在一些实例中,多模态系统可使得用户能够提供多种类型的输入/输出以与计算系统800通信。计算系统800可以包括通信接口840,其一般可以管控和管理用户输入和系统输出。通信接口可执行或促成使用有线和/或无线收发机接收和/或传输有线或无线通信,包括利用音频插孔/插头、话筒插孔/插头、通用串行总线(USB)端口/插头、 端口/插头、以太网端口/插头、光纤端口/插头、专用有线端口/插头、无线信号传输、低能量(BLE)无线信号传输、无线信号传输、射频标识(RFID)无线信号传输、近场通信(NFC)无线信号传输、专用短程通信(DSRC)无线信号传输、802.11Wi-Fi无线信号传输、无线局域网(WLAN)信号传输、可见光通信(VLC)、微波接入全球互通(WiMAX)、红外(IR)通信无线信号传输、公共交换电话网(PSTN)信号传输、综合服务数字网(ISDN)信号传输、3G/4G/5G/LTE蜂窝数据网络无线信号传输、自组织网络信号传输、无线电波信号传输、微波信号传输、红外信号传输、可见光信号传输、紫外光信号传输、沿电磁频谱的无线信号传输、或其某种组合的那些通信。通信接口840还可包括一个或多个全球导航卫星系统(GNSS)接收机或收发机,其被用于基于从与一个或多个GNSS系统相关联的一个或多个卫星接收到一个或多个信号来确定计算系统800的位置。GNSS系统包括但不限于基于美国的全球定位系统(GPS)、基于俄罗斯的全球导航卫星系统(GLONASS)、基于中国的北斗导航卫星系统(BDS)、以及基于欧洲的伽利略GNSS。对在任何特定硬件布置上进行操作不存在任何限制,并且因此可以容易地替换此处的基础特征以随着它们被开发而获得改进的硬件或固件布置。
存储设备830可以是非易失性和/或非瞬态和/或计算机可读存储器设备,并且可以是能够存储可由计算机访问的数据的硬盘或其他类型的计算机可读介质,诸如盒式磁带、闪存卡、固态存储器设备、数字多功能碟、卡带、软磁盘、软盘、硬盘、磁带、磁条/磁性条、任何其他磁存储介质、闪存、忆阻器存储器、任何其他固态存储器、压缩碟只读存储器(CD-ROM)光碟、可重写压缩碟(CD)光碟、数字视频盘(DVD)光碟、蓝光碟(BDD)光碟、全息光盘、另一光学介质、安全数字(SD)卡、微型安全数字(microSD)卡、Memory Stick卡、智能卡芯片、EMV芯片、订户身份模块(SIM)卡、迷你/微型/纳米/微微SIM卡、另一集成电路(IC)芯片/卡、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存EPROM(FLASHEPROM)、高速缓存存储器(L1/L2/L3/L4/L5/L#)、电阻式随机存取存储器(RRAM/ReRAM)、相变存储器(PCM)、自旋转移扭矩RAM(STT-RAM)、另一存储器芯片或盒、和/或其组合。
存储设备830可以包括软件服务、服务器、服务等等,当定义此类软件的代码由处理器810执行时其使得系统执行功能。在一些实施例中,执行特定功能的硬件服务可包括存储在与必要的硬件组件(诸如处理器810、连接805、输出设备835等)连接的计算机可读介质中的软件组件以执行功能。
如本文所使用的,术语“计算机可读介质”包括但不限于便携式或非便携式存储设备、光存储设备、以及能够存储、包含或携带(诸)指令和/或数据的各种其他介质。计算机可读介质可包括其中可存储数据并且不包括载波和/或无线地或通过有线连接传播的瞬态电子信号的非瞬态介质。非瞬态介质的示例可包括但不限于磁盘或磁带、光学存储介质(诸如压缩碟(CD)或数字多功能碟(DVD))、闪存、存储器或存储器设备。计算机可读介质可具有存储于其上的代码和/或机器可执行指令,它们可表示规程、功能、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任何组合。可通过传递和/或接收信息、数据、自变量、参数或存储器内容来将代码段耦合至另一代码段或硬件电路。信息、自变量、参数、数据等可以使用任何合适的手段来传递、转发或传送,这些手段包括存储器共享、消息传递、令牌传递、网络传输等。
在一些实施例中,计算机可读存储设备、介质和存储器可包括包含比特流等的线缆或无线信号。然而,在被提及时,非瞬态计算机可读存储介质明确排除诸如能量、载波信号、电磁波以及信号本身等介质。
在以上描述中提供了具体细节以提供对本文提供的实施例和示例的详尽理解。然而,本领域普通技术人员将理解,没有这些具体细节也可以实践这些实施例。为了清楚说明,在一些实例中,本发明的技术可以被呈现为包括各个功能框,它们包括包含设备、设备组件、以软件或者硬件和软件的组合实施的方法中的步骤或例程的功能框。可使用除了附图中示出和/或本文所描述的那些组件之外的附加组件。例如,电路、系统、网络、过程和其他组件可以用框图形式示为组件以避免使这些实施例湮没在不必要的细节中。在其他实例中,可以在没有必要的细节的情况下示出公知的电路、过程、算法、结构和技术以避免混淆各实施例。
各个实施例在上文可被描述为过程或方法,该过程或方法被描绘为流程图、流程示图、数据流图、结构图或框图。尽管流程图可以将操作描述为顺序过程,但很多操作可以并行地或并发地执行。另外,可以重新排列操作的次序。当过程的操作完成时过程被终结,但是过程可具有附图中未包括的附加步骤。过程可对应于方法、函数、规程、子例程、子程序等。当过程对应于函数时,它的终止对应于该函数返回调用方函数或主函数。
根据上述示例的过程和方法可使用被存储的计算机可执行指令或以其他方式从计算机可读介质可用的计算机可执行指令来实现。这些指令可包括例如致使或以其他方式将通用计算机、专用计算机或处理设备配置成执行某一功能或功能群的指令和数据。所使用的计算机资源的各部分可通过网络访问。计算机可执行指令可以是例如二进制文件、中间格式指令(诸如汇编语言)、固件、源代码等。可用于存储指令、在根据所描述的示例的方法期间所使用的信息和/或所创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、提供有非易失性存储器的USB设备、联网存储设备等。
实现根据这些公开的各种过程和方法的设备可包括硬件、软件、固件、中间件、微代码、硬件描述语言、或其任何组合,并且可采用各种形状因子中的任一者。当以软件、固件、中间件或微代码实现时,用于执行必要任务的程序代码或代码段(例如,计算机程序产品)可被存储在计算机可读或机器可读介质中。处理器可执行必要任务。各形状因子的典型示例包括:膝上型设备、智能电话、移动电话、平板设备、或其他小形状因子的个人计算机、个人数字助理、机架式设备、自立设备等。本文描述的功能性还可用外围设备或插卡来实施。作为进一步的示例,此类功能性还可被实现在在单个设备上执行的不同芯片或不同过程之中的电路板上。
指令、用于传达这些指令的介质、用于执行它们的计算资源、以及用于支持此类计算资源的其他结构是用于提供本公开中所描述的功能的示例装置。
在上述描述中,本申请的各方面参考其特定实施例来描述,但是本领域技术人员将认识到本申请不限于此。因而,尽管本申请的解说性实施例已经在本文中详细描述,但是要理解,各个发明概念可以以其他各种方式被实施和采用,并且所附权利要求书不旨在被解释为包括这些变型,除非受到现有技术的限制。此外,各实施例可以在超出本文所描述的那些环境和应用的任何数目的环境和应用中来利用而不背离本说明书的更宽泛的精神和范围。相应地,本说明书和附图应被认为是解说性的而非限定性的。出于解说的目的,按照特定顺序来描述各方法。应当领会,在替换实施例中,各方法可以按与所描述的不同顺序来执行。
普通技术人员将领会,本文所使用的小于(“<”)和大于(“>”)符号或术语可以分别由小于等于(“≤”)和大于等于(“≥”)符号来代替而不背离本说明书的范围。
在各组件被描述为“被配置成”执行某些操作的情况下,可例如通过设计电子电路或其他硬件来执行操作、通过对可编程电子电路(例如,微处理器、或其他合适的电子电路)进行编程、或其任何组合来实现此类配置。
短语“耦合到”指的是任何组件直接或间接地物理连接到另一组件,和/或任何组件直接或间接地与另一组件处于通信(例如,通过有线或无线连接和/或其他合适的通信接口连接到该另一组件)。
权利要求语言或叙述集合中的“至少一者”和/或集合中的“一者或多者”的其他语言指示该集合中的一个成员或该集合中的多个成员(以任何组合)满足该权利要求。例如,叙述“A和B中的至少一者”的权利要求语言意指A、B或者A和B。在另一示例中,叙述“A、B和C中的至少一者”的权利要求语言意指A、B、C、或A和B、或A和C、或B和C、或A和B和C。集合中的“至少一者”和/或集合中的“一者或多者”的语言并不将该集合限于该集合中所列举的项目。例如,叙述“A和B中的至少一者”的权利要求语言可以意指A、B或A和B,并且可附加地包括未在A和B的集合中列举的项目。
结合本文公开的示例所描述的各种解说性逻辑框、模块、电路、和算法步骤可被实现为电子硬件、计算机软件、固件、或其组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、块、模块、电路、以及步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能性,但此类实现决策不应被解读为致使脱离本申请的范围。
本文所描述的技术还可用电子硬件、计算机软件、固件、或其任何组合来实现。这些技术可以用各种设备中的任一种来实现,诸如通用计算机、无线通信设备手持机、或具有多种用途的集成电路设备,这些用途包括无线通信设备手持机和其他设备中的应用。被描述为模块或组件的任何特征可以一起被实现在集成逻辑器件中或被单独实现为分立但可相互操作的逻辑器件。如果以软件来实现,则这些技术可以至少部分地由包括程序代码的计算机可读数据存储介质来实现,这些程序代码包括指令,这些指令在被执行时执行上述方法中的一者或多者。计算机可读数据存储介质可形成计算机程序产品的一部分,其可包括封装材料。计算机可读介质可包括存储器或数据存储介质,诸如随机存取存储器(RAM)(诸如同步动态随机存取存储器(SDRAM))、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁性或光学数据存储介质等等。这些技术附加地或替换地可至少部分地由携带或传达指令或数据结构形式的程序代码的计算机可读通信介质来实现,这些指令或数据结构可由计算机访问、读取、和/或执行,诸如传播的信号或波。
程序代码可由处理器执行,该处理器可包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)、或其他等效的集成或分立逻辑电路系统。此类处理器可被配置成执行本公开中所描述的任何技术。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如,DSP与微处理器的组合、多个微处理器、与DSP核心协同的一个或多个微处理器、或任何其他此类配置。相应地,如本文所使用的术语“处理器”可以指任何上述结构、上述结构的任何组合、或适于实现本文所描述的技术的任何其他结构或装置。另外,在一些方面中,本文所描述的功能性可在配置成用于编码和解码的专用软件模块或硬件模块内提供,或被纳入组合的视频编解码器(CODEC)中。
本公开的解说性方面包括:
方面1.一种用于减少量化等待时间的装置,该装置包括:存储器;以及耦合到该存储器的一个或多个处理器,该一个或多个处理器被配置成:确定神经网络的至少一层被配置成处理的数据的第一整数数据类型;确定接收到的以供由该神经网络处理的数据的第二整数数据类型,该第二整数数据类型不同于该第一整数数据类型;确定该第一整数数据类型的第一大小与该第二整数数据类型的第二大小之间的比率;使用对应于该比率的缩放因子来缩放该神经网络的该至少一层的参数;对该神经网络的经缩放参数进行量化;以及将该接收到的数据输入到具有经量化且经缩放参数的神经网络。
方面2.如方面1的装置,进一步包括被配置成使用该第一整数数据类型的数据来实现该神经网络的硬件加速器。
方面3.如方面1或2中任一者的装置,其中:该接收到的数据包括由该装置的相机设备捕获的图像数据;并且该神经网络被训练成对该图像数据执行一个或多个图像处理操作。
方面4.如方面1至3中任一者的装置,其中,该一个或多个处理器被配置成使用浮点数据类型的训练数据来训练该神经网络,其中训练该神经网络生成该浮点数据类型的神经网络参数。
方面5.如方面4的装置,其中,该一个或多个处理器被配置成将该神经网络参数从该浮点数据类型转换为该第一整数数据类型。
方面6.如方面1至5中任一者的装置,其中:该神经网络的该至少一层对应于该神经网络的单个层;并且该缩放因子是该第一整数数据类型的第一大小与该第二整数数据类型的第二大小之间的比率。
方面7.如方面1至6中任一者的装置,其中:该第一整数数据类型的第一大小对应于该第一整数数据类型被配置成表示的不同整数的第一数目;并且该第二整数数据类型的第二大小对应于该第二整数数据类型被配置成表示的不同整数的第二数目。
方面8.如方面1至7中任一者的装置,其中,该神经网络的该至少一层包括卷积层或去卷积层。
方面9.如方面1至7中任一者的装置,其中,该神经网络的该至少一层包括缩放层。
方面10.如方面1至7中任一者的装置,其中,该神经网络的该至少一层包括执行元素级操作的层。
方面11.如方面1至10中任一者的装置,其中,该一个或多个处理器被配置成在不对该接收到的数据进行量化的情况下将该接收到的数据输入到该神经网络。
方面12.如方面1至11中任一者的装置,其中,该一个或多个处理器被配置成对该神经网络的一个或多个附加层的参数进行量化。
方面13.如方面1至12中任一者的装置,其中,该装置包括移动设备。
方面14.如方面1至13中任一者的装置,进一步包括显示器。
方面15.一种减少量化等待时间的方法,该方法包括:确定神经网络的至少一层被配置成处理的数据的第一整数数据类型;确定接收到的以供由该神经网络处理的数据的第二整数数据类型,该第二整数数据类型不同于该第一整数数据类型;确定该第一整数数据类型的第一大小与该第二整数数据类型的第二大小之间的比率;使用对应于该比率的缩放因子来缩放该神经网络的该至少一层的参数;对该神经网络的经缩放参数进行量化;以及将该接收到的数据输入到具有经量化且经缩放参数的神经网络。
方面16.如方面15的装置,进一步包括使用硬件加速器和该第一整数数据类型的数据来实现该神经网络。
方面17.如方面15或16中任一者的方法,其中:该接收到的数据包括由相机设备捕获的图像数据;并且该神经网络被训练成对该图像数据执行一个或多个图像处理操作。
方面18.如方面15至17中任一者的方法,进一步包括:使用浮点数据类型的训练数据来训练该神经网络,其中训练该神经网络生成该浮点数据类型的神经网络参数。
方面19.如方面19的方法,进一步包括:将该神经网络参数从该浮点数据类型转换为该第一整数数据类型。
方面20.如方面15至19中任一者的方法,其中:该神经网络的该至少一层对应于该神经网络的单个层;并且该缩放因子是该第一整数数据类型的第一大小与该第二整数数据类型的第二大小之间的比率。
方面21.如方面15至20中任一者的方法,其中:该第一整数数据类型的第一大小对应于该第一整数数据类型被配置成表示的不同整数的第一数目;并且该第二整数数据类型的第二大小对应于该第二整数数据类型被配置成表示的不同整数的第二数目。
方面22.如方面15至21中任一者的方法,其中,该神经网络的该至少一层包括卷积层或去卷积层。
方面23.如方面15至21中任一者的方法,其中,该神经网络的该至少一层包括缩放层。
方面24.如方面15至21中任一者的方法,其中,该神经网络的该至少一层包括执行元素级操作的层。
方面25.如方面15至24中任一者的方法,进一步包括:在不对该接收到的数据进行量化的情况下将该接收到的数据输入到该神经网络。
方面26.如方面15至25中任一者的方法,进一步包括:对该神经网络的一个或多个附加层的参数进行量化。
方面27.一种存储指令的计算机可读存储介质,这些指令在被一个或多个处理器执行时使得该一个或多个处理器执行方面1至26的任何操作。
方面28.一种设备,包括用于执行方面1至26的任何操作的装置。

Claims (30)

1.一种用于减少量化等待时间的装置,所述装置包括:
存储器;
一个或多个处理器,所述一个或多个处理器被耦合至所述存储器并被配置成:
确定神经网络的至少一层被配置成处理的数据的第一整数数据类型;
确定接收到的以供由所述神经网络处理的数据的第二整数数据类型,所述第二整数数据类型不同于所述第一整数数据类型;
确定所述第一整数数据类型的第一大小与所述第二整数数据类型的第二大小之间的比率;
使用对应于所述比率的缩放因子来缩放所述神经网络的所述至少一层的参数;
对所述神经网络的经缩放参数进行量化;以及
将所述接收到的数据输入到具有经量化且经缩放参数的所述神经网络。
2.如权利要求1所述的装置,进一步包括被配置成使用所述第一整数数据类型的数据来实现所述神经网络的硬件加速器。
3.如权利要求1所述的装置,其中:
所述接收到的数据包括由所述装置的相机设备捕获的图像数据;并且
所述神经网络被训练成对所述图像数据执行一个或多个图像处理操作。
4.如权利要求1所述的装置,其中,所述一个或多个处理器被配置成使用浮点数据类型的训练数据来训练所述神经网络,其中训练所述神经网络生成所述浮点数据类型的神经网络参数。
5.如权利要求4所述的装置,其中,所述一个或多个处理器被配置成将所述神经网络参数从所述浮点数据类型转换为所述第一整数数据类型。
6.如权利要求1所述的装置,其中:
所述神经网络的所述至少一层对应于所述神经网络的单个层;并且
所述缩放因子是所述第一整数数据类型的所述第一大小与所述第二整数数据类型的所述第二大小之间的所述比率。
7.如权利要求1所述的装置,其中:
所述第一整数数据类型的所述第一大小对应于所述第一整数数据类型被配置成表示的不同整数的第一数目;并且
所述第二整数数据类型的所述第二大小对应于所述第二整数数据类型被配置成表示的不同整数的第二数目。
8.如权利要求1所述的装置,其中,所述神经网络的所述至少一层包括卷积层或去卷积层。
9.如权利要求1所述的装置,其中,所述神经网络的所述至少一层包括缩放层。
10.如权利要求1的装置,其中,所述神经网络的所述至少一层包括执行元素级操作的层。
11.如权利要求1所述的装置,其中,所述一个或多个处理器被配置成在不对所述接收到的数据进行量化的情况下将所述接收到的数据输入到所述神经网络。
12.如权利要求1所述的装置,其中,所述一个或多个处理器被配置成对所述神经网络的一个或多个附加层的参数进行量化。
13.如权利要求1所述的装置,其中,所述装置包括移动设备。
14.如权利要求1所述的装置,进一步包括显示器。
15.一种减少量化等待时间的方法,该方法包括:
确定神经网络的至少一层被配置成处理的数据的第一整数数据类型;
确定接收到的以供由所述神经网络处理的数据的第二整数数据类型,所述第二整数数据类型不同于所述第一整数数据类型;
确定所述第一整数数据类型的第一大小与所述第二整数数据类型的第二大小之间的比率;
使用对应于所述比率的缩放因子来缩放所述神经网络的所述至少一层的参数;
对所述神经网络的经缩放参数进行量化;以及
将所述接收到的数据输入到具有经量化且经缩放参数的所述神经网络。
16.如权利要求15所述的方法,进一步包括:使用硬件加速器和所述第一整数数据类型的数据来实现所述神经网络。
17.如权利要求15所述的方法,其中:
所述接收到的数据包括由相机设备捕获的图像数据;并且
所述神经网络被训练成对所述图像数据执行一个或多个图像处理操作。
18.如权利要求15所述的方法,进一步包括:使用浮点数据类型的训练数据来训练所述神经网络,其中训练所述神经网络生成所述浮点数据类型的神经网络参数。
19.如权利要求18所述的方法,进一步包括:将所述神经网络参数从所述浮点数据类型转换为所述第一整数数据类型。
20.如权利要求15所述的方法,其中:
所述神经网络的所述至少一层对应于所述神经网络的单个层;并且
所述缩放因子是所述第一整数数据类型的所述第一大小与所述第二整数数据类型的所述第二大小之间的所述比率。
21.如权利要求15所述的方法,其中:
所述第一整数数据类型的所述第一大小对应于所述第一整数数据类型被配置成表示的不同整数的第一数目;并且
所述第二整数数据类型的所述第二大小对应于所述第二整数数据类型被配置成表示的不同整数的第二数目。
22.如权利要求15所述的方法,其中,所述神经网络的所述至少一层包括卷积层或去卷积层。
23.如权利要求15所述的方法,其中,所述神经网络的所述至少一层包括缩放层。
24.如权利要求15所述的方法,其中,所述神经网络的所述至少一层包括执行元素级操作的层。
25.如权利要求15所述的方法,进一步包括:在不对所述接收到的数据进行量化的情况下将所述接收到的数据输入到所述神经网络。
26.如权利要求15所述的方法,进一步包括:对所述神经网络的一个或多个附加层的参数进行量化。
27.一种其上存储有指令的非瞬态计算机可读介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:
确定神经网络的至少一层被配置成处理的数据的第一整数数据类型;
确定接收到的以供由所述神经网络处理的数据的第二整数数据类型,所述第二整数数据类型不同于所述第一整数数据类型;
确定所述第一整数数据类型的第一大小与所述第二整数数据类型的第二大小之间的比率;
使用对应于所述比率的缩放因子来缩放所述神经网络的所述至少一层的参数;
对所述神经网络的经缩放参数进行量化;以及
将所述接收到的数据输入到具有经量化且经缩放参数的所述神经网络。
28.如权利要求27所述的非瞬态计算机可读介质,进一步包括在由所述一个或多个处理器执行时使得所述一个或多个处理器执行以下操作的指令:使用硬件加速器和所述第一整数数据类型的数据来实现所述神经网络。
29.如权利要求27所述的非瞬态计算机可读介质,其中:
所述接收到的数据包括由相机设备捕获的图像数据;并且
所述神经网络被训练成对所述图像数据执行一个或多个图像处理操作。
30.如权利要求27所述的非瞬态计算机可读介质,进一步包括在由所述一个或多个处理器执行时使得所述一个或多个处理器执行以下操作的指令:使用浮点数据类型的训练数据来训练所述神经网络,其中训练所述神经网络生成所述浮点数据类型的神经网络参数。
CN202180090990.0A 2021-01-22 2021-01-22 用于减少的量化等待时间的方法和装置 Active CN116830578B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/073299 WO2022155890A1 (en) 2021-01-22 2021-01-22 Decreased quantization latency

Publications (2)

Publication Number Publication Date
CN116830578A CN116830578A (zh) 2023-09-29
CN116830578B true CN116830578B (zh) 2024-09-13

Family

ID=82549169

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180090990.0A Active CN116830578B (zh) 2021-01-22 2021-01-22 用于减少的量化等待时间的方法和装置

Country Status (4)

Country Link
US (1) US20230410255A1 (zh)
EP (1) EP4282157A1 (zh)
CN (1) CN116830578B (zh)
WO (1) WO2022155890A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220160283A (ko) * 2021-05-27 2022-12-06 삼성전자주식회사 생체정보 추정 장치 및 방법
CN115018076B (zh) * 2022-08-09 2022-11-08 聚时科技(深圳)有限公司 一种用于智能伺服驱动器的ai芯片推理量化方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111126557A (zh) * 2018-10-31 2020-05-08 阿里巴巴集团控股有限公司 神经网络量化、应用方法、装置和计算设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10262259B2 (en) * 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
US20200302299A1 (en) * 2019-03-22 2020-09-24 Qualcomm Incorporated Systems and Methods of Cross Layer Rescaling for Improved Quantization Performance

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111126557A (zh) * 2018-10-31 2020-05-08 阿里巴巴集团控股有限公司 神经网络量化、应用方法、装置和计算设备

Also Published As

Publication number Publication date
EP4282157A1 (en) 2023-11-29
WO2022155890A1 (en) 2022-07-28
US20230410255A1 (en) 2023-12-21
CN116830578A (zh) 2023-09-29

Similar Documents

Publication Publication Date Title
US11776129B2 (en) Semantic refinement of image regions
US11810256B2 (en) Image modification techniques
US20220101539A1 (en) Sparse optical flow estimation
US12015835B2 (en) Multi-sensor imaging color correction
CN116830578B (zh) 用于减少的量化等待时间的方法和装置
US11756334B2 (en) Facial expression recognition
US12112458B2 (en) Removal of objects from images
WO2023029559A1 (zh) 一种数据处理方法以及装置
US20240378727A1 (en) Convolution and transformer-based image segmentation
US20240303841A1 (en) Monocular image depth estimation with attention
US11871107B2 (en) Automatic camera selection
US20240312251A1 (en) Image-modification techniques
US20240371016A1 (en) Time synchronization of multiple camera inputs for visual perception tasks
US20230386056A1 (en) Systems and techniques for depth estimation
US20240054659A1 (en) Object detection in dynamic lighting conditions
US20240212308A1 (en) Multitask object detection system for detecting objects occluded in an image
US20230370727A1 (en) High dynamic range (hdr) image generation using a combined short exposure image
WO2024186686A1 (en) Monocular image depth estimation with attention
US20240257557A1 (en) Facial expression recognition using enrollment images
US20230386052A1 (en) Scene segmentation and object tracking
WO2024191497A1 (en) Systems and methods for runtime network adjustment

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
GR01 Patent grant
GR01 Patent grant