CN110392903A - 矩阵操作的动态剔除 - Google Patents

矩阵操作的动态剔除 Download PDF

Info

Publication number
CN110392903A
CN110392903A CN201780064277.2A CN201780064277A CN110392903A CN 110392903 A CN110392903 A CN 110392903A CN 201780064277 A CN201780064277 A CN 201780064277A CN 110392903 A CN110392903 A CN 110392903A
Authority
CN
China
Prior art keywords
voxel
bitmap
layer
level
detail
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.)
Granted
Application number
CN201780064277.2A
Other languages
English (en)
Other versions
CN110392903B (zh
Inventor
D·M·莫洛尼
X·徐
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.)
Movidius Ltd Netherland
Original Assignee
Movidius Ltd Netherland
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 Movidius Ltd Netherland filed Critical Movidius Ltd Netherland
Publication of CN110392903A publication Critical patent/CN110392903A/zh
Application granted granted Critical
Publication of CN110392903B publication Critical patent/CN110392903B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/20Instruments for performing navigational calculations
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/28Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network with correlation of data from several navigational instruments
    • G01C21/30Map- or contour-matching
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0214Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory in accordance with safety or protection criteria, e.g. avoiding hazardous areas
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0268Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
    • G05D1/0274Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means using mapping information stored in a memory device
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/20Control system inputs
    • G05D1/24Arrangements for determining position or orientation
    • G05D1/246Arrangements for determining position or orientation using environment maps, e.g. simultaneous localisation and mapping [SLAM]
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/60Intended control result
    • G05D1/617Safety or protection, e.g. defining protection zones around obstacles or avoiding hazards
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/579Depth or shape recovery from multiple images from motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/593Depth or shape recovery from multiple images from stereo images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/75Determining position or orientation of objects or cameras using feature-based methods involving models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/10Terrestrial scenes
    • G06V20/13Satellite images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/10Terrestrial scenes
    • G06V20/17Terrestrial scenes taken from planes or by drones
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10032Satellite or aerial image; Remote sensing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20016Hierarchical, coarse-to-fine, multiscale or multiresolution image processing; Pyramid transform
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle
    • G06T2207/30261Obstacle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/004Annotating, labelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Astronomy & Astrophysics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Image Processing (AREA)

Abstract

标识神经网络内的多个层中的第一层的输出。从该输出确定位图,该位图包括二进制矩阵。基于位图来确定对于多个层中的第二层要跳过操作的特定子集。对于第二层执行除操作的该特定子集之外的操作,同时跳过操作的该特定子集。

Description

矩阵操作的动态剔除
相关申请
本申请要求于2016年8月19日提交的美国临时专利申请序列号62/377,471的权益,并且所述美国临时专利申请通过引用以其全文结合于此。
技术领域
本公开总体上涉及计算机系统领域,并且更具体地,涉及计算机视觉和增强或混合现实系统。
背景技术
随着诸如来自MagicLeapTM、MicrosoftTM HoloLensTM、OculusTM RiftTM的那些增强现实(AR)、虚拟现实(VR)和混合现实(MR)产品以及诸如来自ValveTM和HTCTM的系统等其他VR系统的出现,计算机视觉和图形的世界迅速融合。这种系统中的现有方法是使用并行运行的分开的图形处理单元(GPU)和计算机视觉子系统。这些并行系统可以由与在处理器阵列和/或可编程硬件加速器阵列上运行的软件中实施的计算机视觉流水线并行的预先存在的GPU来组装。
附图说明
当结合以下附图考虑时,参考下面对所公开主题的详细描述,可以更充分地理解所公开主题的各种目的、特征和优点,在附图中相似的附图标记表示相似的元件。这些附图是示意性的,并且不旨在按比例绘制。为了清楚起见,在每个附图中并非每个组件都被标记。也并未示出所公开主题的每个实施例的每个组件,其中图示无需允许本领域普通技术人员理解所公开主题。
图1展示了常规的增强或混合现实渲染系统;
图2展示了根据一些实施例的基于体素的增强或混合现实渲染系统;
图3展示了根据一些实施例的密集体积表示与稀疏体积表示之间的差异;
图4展示了根据一些实施例的场景的复合视图;
图5展示了根据一些实施例的示例元素树结构中的细节层次;
图6展示了根据一些实施例的可以利用本申请的数据结构和体素数据的应用;
图7展示了根据一些实施例的用于辨识3D数字的示例网络;
图8展示了根据一些实施例的使用隐含的细节层次来对同一数据结构执行的多种分类;
图9展示了根据一些实施例的2D卷积神经网络的操作消除;
图10展示了根据一些实施例的来自对示例测试图像的分析的实验结果;
图11展示了根据一些实施例的用于剔除操作的硬件;
图12展示了根据一些实施例的对用于剔除操作的硬件的精化;
图13展示了根据一些实施例的硬件;
图14展示了根据一些实施例的用于生成位图的示例电路系统;
图15展示了根据一些实施例的与示例矩阵乘法操作相关联的位图的示例使用;
图16展示了根据一些实施例的示例三维位图的使用;
图17展示了根据一些实施例的示例体积数据结构用作位图;
图18展示了根据一些实施例的流程图,该流程图展示了示例体积数据结构的生成和使用;
图19描绘了根据一些实施例的示例多时隙向量处理器;
图20展示了根据一些实施例的示例体积加速硬件;
图21展示了根据一些实施例的体素立方体的组织;
图22展示了根据一些实施例的两级稀疏体素树;
图23展示了根据一些实施例的两级稀疏体素树;
图24展示了根据一些实施例的示例体素数据的存储;
图25A-图25B是简化流程图,这些简化流程图展示了涉及示例操作的集合中的操作的选择性消除的示例技术;
图26是根据至少一些实施例的具有设备的示例性网络的简化框图;
图27是根据至少一些实施例的示例性雾或云计算网络的简化框图;
图28是根据至少一些实施例的包括示例设备的系统的简化框图;
图29是根据至少一些实施例的示例处理设备的简化框图;
图30是根据至少一些实施例的示例性处理器的框图;并且
图31是根据至少一些实施例的示例性计算系统的框图。
具体实施方式
在下面的描述中,关于所公开主题的系统和方法以及这些系统和方法可以操作的环境等,阐述了许多具体细节,以便提供对所公开主题的透彻理解。然而,本领域技术人员将清楚的是,可以在没有这些具体细节的情况下实践所公开主题,并且本领域公知的某些特征未进行详细描述,以避免使所公开主题复杂化。此外,应当理解的是,下面提供的实施例是示例性的,并且可以预期,在所公开主题的范围内存在其他系统和方法。
基于并结合增强现实、虚拟现实、混合现实、自主设备和机器人的各种技术正在出现,这些技术可以利用表示三维空间和几何结构的体积的数据模型。使用这种3D或体积数据对各种真实环境和虚拟环境的描述传统上涉及大数据集,一些计算系统一直在努力以期望的方式来处理所述大数据集。进一步地,随着诸如无人机、可穿戴设备、虚拟现实系统等设备变得越来越小,此类设备的存储器和处理资源也可能受到约束。作为示例,AR/VR/MR应用可能要求用于使用支持硬件生成的图形呈现的高帧速率。然而,在一些应用中,这种硬件的GPU和计算机视觉子系统可能需要以诸如高达130fps(7毫秒)的高速率来处理数据(例如,3D数据),以便产生期望的结果(例如,以生成具有产生可信结果、防止用户由于过长的等待时间而导致的晕动病、以及其他示例目标的帧速率的可信图形场景)。可以类似地挑战附加应用以令人满意地处理描述大体积的数据,同时满足相应系统的处理、存储器、功率、应用要求中的约束以及其他示例问题。
在一些实施方式中,计算系统可以设置有用于生成和/或使用根据格式定义的稀疏体积数据的逻辑。例如,可以提供定义的体积数据结构以统一各种系统和应用中的计算机视觉和3D渲染。例如,可以使用诸如立体相机或深度相机等光学传感器来捕获对象的体积表示。对象的体积表示可以包括多个体素。可以定义使得能够递归地细分相应的体积表示以获得对象的目标分辨率的改进的体积数据结构。在细分期间,体积表示中的可以包括在一个或多个体素中的空白空间可以从体积表示(和支持操作)中剔除。所述空白空间可以是体积表示中不包括对象的几何属性的区域。
因此,在改进的体积数据结构中,相应体积内的各个体素可以被标记为“被占据”(由于相应的体积空间内存在一些几何结构)或被标记为“空白”(表示相应的体积由空白空间组成)。此类标记可以另外被解释为指示其相应子体积中的一个或多个也被占据(例如,如果父级或更高级别的体素被标记为被占据)或者其所有子体积是空白空间(即,在父级或更高级别的体素被标记为空白的情况下)。在一些实施方式中,将体素标记为空白可以允许从用于生成相应体积表示的操作中有效地移除体素和/或其相应子体积体素。体积数据结构可以根据稀疏树结构,诸如,根据稀疏六四元树(SST)格式。进一步地,这种用于稀疏体积数据结构的方法可以利用比传统上使用的方法相对更少的存储空间来存储对象的体积表示。另外,压缩体积数据可以增加传输这种表示的可行性,并且使得能够更快地处理这种表示,以及其他示例益处。
体积数据结构可以被硬件加速,以快速允许对3D渲染器的更新,从而消除可能在分开的计算机视觉系统和图形系统中发生的延迟。这种延迟可能引发等待时间,所述等待时间可能在AR、VR、MR和其他应用中使用时引起用户的晕动病以及其他附加缺点。在加速数据结构中快速测试体素的几何属性占据的能力允许构造可以实时更新的低等待时间AR、VR、MR或其他系统。
在一些实施例中,体积数据结构的能力还可以提供帧内警告。例如,在AR、VR、MR和其他应用中,当用户可能与成像场景中的真实或合成对象碰撞时,或者在无人机或机器人的计算机视觉应用中,当此类设备可能与成像场景中的真实或合成对象碰撞时,由体积数据结构提供的处理速度允许警告即将发生的碰撞。
本公开的实施例可以涉及针对诸如机器人、用于增强和混合现实头戴式耳机的头戴式显示器以及电话和平板计算机等应用中的体积数据进行存储和处理。本公开的实施例将一组体积元素(例如,体素)内的每个体素以及可选地与所述体素的几何结构有关的物理量表示为单个位。与一组64个体素有关的附加参数可以与诸如相应的红绿蓝(RGB)或其他着色编码、透明度、舍位带符号距离函数(TSDF)等体素相关联,并且被存储在相关联且可选的64位数据结构中(例如,使得使用两个或更多个位来表示每个体素)。这种表示方案可以实现最小的存储器要求。此外,由单个位来表示体素允许执行许多简化的计算以逻辑地或数学地组合来自体积表示的元素。组合来自体积表示的元素可以包括例如:对体积中的平面进行或操作(OR-ing)以创建3D体积数据的2D投影,以及通过对2.5D流形中的被占据体素的数量进行计数来计算表面积等。为了进行比较,可以使用异或逻辑来对64位子体积(例如,4^3个子体积)进行比较,并且可以反转体积,其中,可以通过将对象一起进行或操作来合并所述对象以创建混合对象,以及其他示例。
图1展示了常规的增强或混合现实系统,其由具有后渲染连接装置的并行的图形渲染子系统和计算机视觉子系统组成,以考虑由于快速头部移动引起的变化、以及环境中可能在所渲染的图形中产生遮挡和阴影的变化。在一种示例实施方式中,系统可以包括由主机存储器124支持的主机处理器100,以通过经由总线101、片上片上网络的互连或其他互连来控制图形流水线、计算机视觉流水线和后渲染校正装置的执行。所述互连允许主机处理器100运行适当的软件来控制图形处理单元(GPU)106、相关联图形存储器111、计算机视觉流水线116、及相关联的计算机视觉存储器124的执行。在一个示例中,使用GPU 106经由OpenGL图形着色器107(例如,对三角形列表105进行操作)来渲染图形可以以比计算机视觉流水线更慢的速率进行。因此,可以经由扭曲引擎108和显示/遮挡处理器109来执行后渲染校正,以考虑自通过GPU 106渲染图形以来可能已经发生的头部姿态和遮挡场景几何结构的变化。除其他示例之外,对GPU 106的输出加时间戳,使得其可以分别与来自头部姿态流水线120和遮挡流水线123的正确控制信号121和123结合使用以产生正确的图形输出,从而考虑头部姿态119和遮挡几何结构113的任何变化。
与GPU 106并行地,多个传感器和相机(例如,包括用于深度和视觉处理的有源立体相机和无源立体相机117)可以连接到计算机视觉流水线116。计算机视觉流水线116可以包括至少三个级中的一个或多个,每个级可以包含多个更低级的处理级。在一个示例中,计算机视觉流水线116中的级可以是图像信号处理(ISP)流水线118、头部姿态流水线120、和遮挡流水线122。ISP流水线118可以获取输入相机传感器117的输出并对其进行调节,使得所述输出可以用于随后的头部姿态和遮挡处理。自从通过GPU 106渲染相应的输出图形帧头部姿态流水线120可以获取ISP流水线118的输出并将其与输出姿态一起使用。可以将头部姿态流水线(HPP)120的输出121与用户指定的网格一起施加至扭曲引擎108以使GPU输出102失真,使得其与更新的头部姿态位置119相匹配。遮挡流水线122可以获取头部姿态流水线121的输出并且在视野中寻找新对象,诸如进入视野的手113(或其他示例对象),所述新对象应该在场景几何结构上产生相应的阴影114。遮挡流水线122的输出123可以由显示和遮挡处理器109使用,以将视野正确地覆盖在扭曲引擎108的输出103之上。除其他示例用例和特征之外,显示和遮挡处理器109使用计算的头部姿态119来产生用于合成阴影114的阴影掩码,并且显示和遮挡处理器109可以在阴影掩码之上合成手113的遮挡几何结构,以在扭曲引擎108的输出103之上产生图形阴影114,并产生最终的(多个)输出帧104以用于在增强/混合现实头戴式耳机110上显示。
图2展示了根据本公开的一些实施例的基于体素的增强或混合现实渲染系统。图2中描绘的装置可以包括在主机CPU 200和相关联主机存储器201上组成的主机系统。这种系统可以经由总线204、片上网络或其他通信机制来与统一计算机视觉和图形流水线223以及相关联的统一计算机视觉和图形存储器213进行通信,所述统一计算机视觉和图形存储器包含要在最终场景中渲染以供在头戴式增强或混合现实显示器211上显示的真实体素和合成体素。AR/MR显示器211还可以包含多个有源图像传感器和无源图像传感器214以及用于测量头部姿态222的取向变化的惯性测量单元(IMU)212。
在组合渲染流水线中,可以从三角形列表204开始生成合成几何结构,所述三角形列表由OpenGL JiT(即时)翻译器205进行处理以产生合成体素几何结构202。可以例如通过从三角形列表中选择三角形的主平面来生成合成体素几何结构。然后可以对所选平面中的每个三角形执行2D光栅化(例如,在X和Z方向上)。可以创建第三坐标(例如,Y)作为要跨三角形进行插值的属性。光栅化三角形的每个像素可以导致相应体素的定义。此处理可以由CPU或GPU来执行。除其他示例实施方式之外,当由GPU执行时,可以从GPU读回每个光栅化三角形以创建GPU在其中绘制像素的体素。例如,可以使用列表的2D缓冲器来生成合成体素,其中,列表的每个条目存储有在此像素处渲染的多边形的深度信息。例如,可以使用正投影视点(例如,自上而下)来渲染模型。例如,在示例缓冲器中提供的每个(x,y)可以表示相应体素体积中的(x,y)处的列(例如,从(x,y,0)到(x,y,4095))。然后可以根据所述信息使用每个列表中的信息将每个列渲染为3D扫描线。
继续图2的示例,在一些实施方式中,合成体素几何结构202可以与使用同步定位和建图(SLAM)流水线217构造的所测得几何结构体素227组合。SLAM流水线可以使用有源传感器和/或无源图像传感器214(例如,214.1和214.2),所述传感器首先使用图像信号处理(ISP)流水线215进行处理以产生输出225,所述输出可以由深度流水线216转换为深度图像226。除其他示例之外,有源或无源图像传感器214(214.1和214.2)可以包括有源或无源立体传感器、结构光传感器、飞行时间传感器。例如,深度流水线216可以处理来自结构光或飞行时间传感器214.1、或可替代地无源立体传感器214.2的深度数据。在一种示例实施方式中,除其他示例实施方式之外,立体传感器214.2可以包括无源立体传感器对。
由深度流水线215生成的深度图像可以由密集SLAM流水线217使用SLAM算法(例如,Kinect融合)来处理,以产生所测得几何结构体素227的体素化模型。可以提供光线跟踪加速器206,所述光线跟踪加速器可以将所测得几何结构体素227(例如,真实体素几何结构)与合成体素几何结构202组合以产生场景的2D渲染,以便经由显示处理器210输出到显示设备(例如,在VR或AR应用中的头戴式显示器211)。在这种实施方式中,可以由所测得几何结构体素227的真实体素和合成几何结构202来构造完整的场景模型。因此,不需要对2D渲染几何结构进行扭曲(例如,如图1所示)。这种实施方式可以与头部姿态跟踪传感器及相应逻辑组合,以将真实几何结构与所测得几何结构正确对齐。例如,示例头部姿态流水线221可以处理来自安装在头戴式显示器212中的IMU 212的头部姿态测量结果232,并且在渲染期间可以经由显示处理器210将头部姿态测量流水线的输出231考虑在内。
在一些示例中,统一渲染流水线还可以使用所测得几何结构体素227(例如,真实体素模型)和合成几何结构202(例如,合成体素模型),以便渲染音频混响模型并对真实世界场景、虚拟现实场景或混合现实场景的物理现象进行建模。作为示例,物理流水线218可以采用所测得几何结构体素227和合成几何结构202体素几何结构,并使用光线投射加速器206来计算头戴式显示器(HMD)211中的左耳机和右耳机的输出音频样本,以便使用内置于体素数据结构中的声反射系数来计算输出样本230。类似地,由202和227组成的统一体素模型还可以用于确定复合AR/MR场景中的合成对象的物理更新。物理流水线218将复合场景几何作为输入,并且使用光线投射加速器206来计算碰撞,然后计算对合成几何结构202的更新228以供渲染并作为物理模型的未来迭代的基础。
在一些实施方式中,除其他示例之外,诸如图2所示的系统等系统可以另外设置有一个或多个硬件加速器以实施和/或利用卷积神经网络(CNN),所述卷积神经网络可以处理来自ISP流水线215的输出的RGB视频/图像输入、来自SLAM流水线217的输出的体积场景数据。神经网络分类器可以专门使用硬件(HW)卷积神经网络(CNN)加速器207来运行或在处理器与HW CNN加速器207的组合中运行,以产生输出分类237。除其他示例用途之外,用于对体积表示进行推断的HW CNN加速器207的可用性可以允许将所测得几何结构体素227中的体素组标记为属于特定对象类。
标记体素(例如,使用CNN和支持硬件加速)可以允许那些体素所属的那些对象被系统辨识为与已知对象相对应,并且源体素可以从所测得几何结构体素227中移除并由与对象和/或关于对象的原点、对象的姿态、对象描述符的信息以及其他示例信息相对应的边界框所替换。除其他示例用途之外,这可以导致对场景的语义上更有意义的描述,所述描述可以例如用作机器人、无人机或其他计算系统的输入以与场景中的对象进行交互,或者用作音频系统的输入以查找场景中对象的吸声系数并将其反映在场景的声学模型中。
可以提供一个或多个处理器设备和硬件加速器以实施图2中示出和描述的示例系统的流水线。在一些实施方式中,除其他示例实施方式之外,组合渲染流水线的所有硬件元件和软件元件可以共享对DRAM控制器209的访问,所述控制器进而允许将数据存储在共享DDR存储器设备208中。
图3被呈现用于说明根据一些实施例的在密集体积表示与稀疏体积表示之间的差异。如图3的示例所示,可以以如302所示的密集方式或如304所示的稀疏方式在体素方面描述真实世界或合成对象300(例如,兔子的雕像)。诸如302等密集表示的优点是对体积中所有体素的访问速度均匀,但缺点是可能需要的存储量。例如,对于密集表示,诸如512^3元素体积(例如,对于使用Kinect传感器扫描的体积,1cm分辨率对应于5m),512M字节用于存储相对较小的体积,其中,每个体素4字节舍位带符号距离函数(TSDF)。另一方面,体现稀疏表示的八叉树表示304可以仅存储在真实世界场景中存在实际几何结构的那些体素,从而减少存储同一体积所需的数据量。
转到图4,展示了根据一些实施例的示例场景的复合视图。具体地,图4示出了场景404的复合视图可以如何使用并行数据结构来维持、显示或经受进一步处理,以分别表示在合成体素数据和真实世界体素数据的等效边界框400和402内的合成体素401和真实世界所测得体素403。图5展示了根据一些实施例的均匀4^3元素树结构中的细节层次。在一些实施方式中,可以利用少至1位来描述使用八叉树表示的体积中的每个体素,诸如在图5的示例中所表示的。然而,基于八叉树的技术的缺点可能是用于访问八叉树中的特定体素的间接存储器访问次数。在稀疏体素八叉树的情况下,可以以有利地允许诸如光线投射、游戏物理、CNN和其他技术等操作的多个细节层次隐含地表示同一个几何结构,以便允许从进一步计算中剔除场景的空白部分,从而导致不仅所需存储减少,而且在功耗和计算负荷方面总体上减少,以及其他示例优点。
在一种实施方式中,可以提供改进的体素描述符(在本文中也称为“体积数据结构”)以将体积信息组织为4^3(或64位)无符号整数,诸如501中所示,其中,每体素的存储器要求为1位。在本示例中,每体素1位不足以存储舍位带符号距离函数值(与利用64位的SLAM平台/K融合中的TSDF相比)。在本示例中,体素描述符中可以包括附加(例如,64位)字段500。可以进一步增强这个示例,使得尽管64位字段500中的TSDF是16位的,但可以在体素描述符501中隐含地提供x、y和z中的附加2位的分数分辨率,以使得64位字段500中的体素TSDF与体素位置501的组合等效于诸如在SLAM平台/K融合或其他示例中所使用的更高分辨率的TSDF。例如,除其他示例之外,64位字段500(体素描述符)中的附加数据可以用于存储二次采样的RGB颜色信息(例如,经由无源RGB传感器来自场景),其中,每个信息具有一个字节、并且具有8位透明度值α以及两个1字节保留字段R1和R2,所述保留字段可以是应用特定的并且可以用于存储例如音频应用的声反射率、物理应用的刚性、对象材料类型等。
如图5所示,体素描述符501可以在逻辑上分组成四个2D平面,每个平面包含16个体素502。这些2D平面(或体素平面)可以基于4的升幂的连续分解来描述八叉树样式结构的每个级别,如图5中所表示的。在本示例实施方式中,选择64位体素描述符,因为其与相应的系统实施方式中使用的64位总线基础设施良好匹配(但在其他系统实施方式中可以提供其他体素描述符大小和格式并且根据系统的总线或其他基础设施来调整其大小)。在一些实施方式中,可以将体素描述符的大小调整以减少获得体素所使用的存储器访问次数。例如,除其他示例考虑和实施方式之外,与对2^3个元素操作的传统八叉树相比,可以使用64位体素描述符将访问八叉树中处于任意级别的体素所需的存储器访问次数减少2倍。
在一个示例中,可以从4^3根体积503、以及每个非零条目开始描述八叉树,在所述非零条目中,在示例256^3体积中描绘了针对在底层504、505和506中存在几何结构的代码。在这个特定示例中,可以使用四次存储器访问以便访问八叉树中的最低级别。在这种开销太高的情况下,可以采用替代方法将八叉树的最高级别编码为诸如64^3的更大体积,如507中所示。在这种情况下,507中的每个非零条目可以指示底层256^3体积508中存在底层4^3八叉树。这种替代组织的结果是,与503、504和505中所示的替代公式相比,仅需要两次存储器访问来访问256^3体积508中的任何体素。后一种方法在以下情况下是有利的:托管八叉树结构的设备具有较大量的嵌入式存储器,从而仅允许体素八叉树508的较低且较不频繁访问的部分处于外部存储器中。这种方法在存储方面可能成本更高(例如,其中将完整的、更大的(例如,64^3)体积存储在片上存储器中),但是折衷可以允许更快的存储器访问(例如,2倍)和更低的功耗、以及其他示例优点。
转到图6,示出了框图,其展示了根据一些实施例的可以利用本申请的数据结构和体素数据的示例应用。在一个示例中,诸如图5所示的示例,可以通过示例体素描述符500提供附加信息。虽然体素描述符可以将所利用的总存储器增加到每体素2位,但是体素描述符可以实现可以利用体素数据的广泛应用,诸如图6中所表示的。例如,诸如使用密集SLAM系统601(例如,SLAM平台)生成的共享体积表示602可以用于使用图形光线投射或光线跟踪603来渲染场景、用于音频光线投射604、以及其他实施方式。在仍其他示例中,体积表示602还可以用于卷积神经网络(CNN)推断605,并且可以由云基础设施607来备份。在一些实例中,云基础设施607可以包含诸如可以经由推断进行访问的树、家具或其他对象(例如,606)等对象的详细体积描述符。基于推断或以其他方式识别对象,可以将相应的详细描述符返回到设备,从而允许由具有姿态信息以及包含对象属性和其他示例特征的描述符的边界框表示来替换体积表示602的体素。
在仍其他实施例中,可以在一些系统中另外地或可替代地利用上面讨论的体素模型,以使用来自体积表示602的3D到2D投影来构造示例环境608的2D地图。这些2D地图可以再次经由通信机器、经由云基础设施和/或其他基于网络的资源607共享并且被聚合(例如,使用相同的云基础设施)以使用众包技术来构建更高质量的地图。这些地图可以由云基础设施607共享到所连接的机器和设备。在仍进一步的示例中,针对超低带宽应用,可以使用投影然后分段简化609(例如,假设运载工具或机器人的固定宽度和高度)来精化2D地图。然后,简化路径可以对于路径的每分段线性段仅具有单个X、Y坐标对,从而减少将运载工具609的路径传达到云基础设施607所需的带宽量,并且所述简化路径在这同一个云基础设施607中被聚合以使用众包技术来构建更高质量的地图。这些地图可以由云基础设施607共享到连接的机器和设备。
为了实现这些不同的应用,在一些实施方式中,可以诸如通过共享软件库来提供共同的功能,在一些实施例中,可以使用硬件加速器或处理器指令集架构(ISA)扩展以及其他示例来加速所述共享软件库。例如,这类功能可以包括将体素插入描述符中、删除体素或查找体素610。在一些实施方式中,还可以支持碰撞检测功能620、以及从体积630中删除点/体素、以及其他示例。如上文所介绍的,系统可以设置有根据相应的体积表示602(3D体积)(例如,其可以用作路径或碰撞确定的基础)来快速生成X、Y和Z方向上的2D投影640的功能。在一些情况下,能够使用直方图金字塔650由体积表示602生成三角形列表也可以是有利的。进一步地,系统可以设置有用于快速确定体积空间602的2D和3D表示中的自由路径660的功能。这种功能在各种应用中可能是有用的。可以提供进一步的功能,诸如详细说明体积中体素的数量、使用群体计数器对体积表示602的掩码区域中的1位的数量进行计数来确定对象的表面、以及其他示例。
转到图7的简化框图,展示了示例网络,其包括根据至少一些实施例的配备有辨识3D数字的功能的系统。例如,图6所示的应用之一是体积CNN应用605,其在图7中更详细地描述,其中,示例网络用于辨识根据数据集(诸如,混合国家标准与技术研究院(MNIST)数据集)生成的3D数字700。通过在训练之前在X、Y和Z上对这种数据集内的数字施加适当的旋转和平移,可以使用所述数字来训练基于CNN的卷积网络分类器710。当用于嵌入式设备中的推断时,除其他示例之外,经训练网络710可以用于以高准确度对场景中的3D数字进行分类,即使在数字经受X、Y和Z上的旋转和平移的情况下也是如此720。在一些实施方式中,CNN分类器的操作可以由图2所示的HW CNN加速器207来加速。当神经网络的第一层使用体积表示602中的体素执行乘法时,可以跳过这些算术操作,因为乘以零始终为零并且数据值A与一(体素)的相乘等于A。
图8展示了使用隐含的细节层次对同一数据结构执行的多种分类。使用体积表示602进一步精化CNN分类可以是:因为在如图5所示的八叉树结构中八叉树表示隐含地包含多个细节层次,所以可以使用单个分类器830或多个并行分类器使用隐含细节层次800、810和820来并行的对同一数据结构执行多种分类,诸如图8所示。在传统系统中,由于图像需要在分类通道之间重新调整大小,因此相当的并行分类可能很慢。在应用本文所讨论的体素结构的实施方式中可以放弃这种重新调整大小,因为同一八叉树可以以多个细节层次包含相同的信息。实际上,基于体积模型的单个训练数据集可以覆盖所有细节层次而不是诸如将在常规CNN网络中需要的重新调整训练数据集的大小。
转到图9的示例,根据一些实施例通过2D CNN展示了示例操作消除。可以在3D体积CNN上以及在2D CNN上使用操作消除,如图9所示。例如,在图9中,在第一层中,位图掩码900可以用于描述输入910的预期“形状”,并且可以应用于传入视频流920。在一个示例中,不仅可以在3D体积CNN上而且还可以在2D体积CNN上使用操作消除。例如,在图9的示例的2D CNN中,位图掩码900可以应用于CNN的第一层以描述输入910的预期“形状”,并且可以应用于CNN的输入数据(诸如,传入视频流820)。作为示例,图9中示出了将位图掩码应用于行人的图像以用于CNN网络中的训练或推断的效果,其中,901表示行人901的原始图像,903表示应用了位图掩码的相应版本。类似地,902中示出了不包含行人的图像,并且904中示出了相应的位图掩码版本。相同的方法可以应用于任何类型的2D或3D对象,以便通过了解检测器所期望的预期2D或3D几何结构来减少CNN训练或推断所需的操作数量。911中示出了3D体积位图的示例。920中示出了使用2D位图用于真实场景中的推断。
在图9的示例实施方式中,示出了概念位图(在900处),而真实位图是通过对特定分类的对象910的一系列训练图像求平均来生成的。所示出的示例是二维的,但是也可以为采用所提出的每体素具有一位的体积数据格式的3D对象生成类似的位图掩码。实际上,除其他示例实施方式之外,所述方法还可以潜在地扩展为每体素/像素使用附加位来指定2D或3D对象的预期颜色范围或其他特性。
图10是表格,展示了根据一些实施例的涉及对10,000个CIFAR-10测试图像的分析的示例实验的结果。在一些实施方式中,由于在诸如LeNet 1000等CNN网络中频繁进行的修正线性单元(ReLU)操作,可以使用操作消除来消除1D、2D和3D CNN中的中间计算,如图10所示。如图10所示,在使用10,000个CIFAR-10测试图像的实验中,由ReLU单元生成的数据相关的零的百分比可以达到85%,这意味着在零的情况下,可以提供辨识零并且作为响应不取出相应数据和执行相应乘法操作的系统。在本示例中,85%表示根据修改的国家标准与技术研究院数据库(MNIST)测试数据集生成的ReLU动态零的百分比。与这些零相对应的相应操作消除可以用于降低功耗和存储器带宽要求、以及其他示例益处。
可以基于位图来剔除琐碎操作。例如,这种位图的使用可以根据在名称为“Circuit for compressioning data and a processors using the same(用于压缩数据的电路以及使用所述电路的处理器)”的美国专利号8,713,080中讨论和说明的原理和实施例,所述美国专利通过引用以其全文结合在此。一些实施方式可以提供能够使用这样的位图的硬件,诸如系统、电路系统以及在名称为“Hardware for performing arithmeticoperations(用于执行算术操作的硬件)”的美国专利号9,104,633中讨论和说明的其他实施方式,所述美国专利通过引用以其全文结合在此。
在一个示例实施方式中,计算系统可装备有用于获取与将是一个或多个操作的主体的数据对应的位图的以硬件电路系统实施的逻辑和/或可执行固件和/或软件逻辑。操作可包括将对数据执行的算术操作(例如,乘法、加法等),其中,数据充当操作数(或多个操作数)。替代地(或附加地),操作可包括取出数据。例如,数据可具体化由多个矩阵元素组成的三维(3D)矩阵。可对3D矩阵执行矩阵算术。进一步地,矩阵的各个元素可从存储器取出(例如,以执行相应的算术操作)。在一些实施方式中,位图可基于零乘法的平凡性质(即,乘以操作数“0”总是产生乘积“0”)。位图可用值“0”标识或对应于3D矩阵元素。(例如,由启用的硬件)处理位图可允许涉及零操作数的实际乘法操作(并且甚至是要相乘的操作数的取出)被跳过。具体地,3D矩阵乘法可涉及3D矩阵中的元素的逐元素乘法——非零元素可如惯常做法那样被相乘,而涉及零元素的乘法步骤被跳过。在一些情况下,乘法步骤的预期结果(即,在操作数之一为“0”的情况下,预期结果也为“0”)可简单地由系统的逻辑(例如,使用配置成用于当从相应的位图识别出此类操作时返回零的多路复用器)提供,而不是通过所执行的乘法操作导出该结果。在一些情况下,可预导出位图并将位图提供给系统控制器,以便利用该位图来剔除、跳过或消除要被执行的一些操作。在其他实例中,位图可在系统的操作期间被动态地生成并且基于在先操作结果。例如,可在卷积神经网络(CNN)中应用位图,其中,一个CNN网络的结果充当用于在后续CNN层的操作中被采用的位图的基础,以及其他示例。
图11展示了根据一些实施例的可以结合到系统中以提供用于基于动态生成的位图来剔除琐碎操作的功能的硬件。在本示例中,提供了包括重复的卷积层的多层神经网络。所述硬件可以包括一个或多个处理器、一个或多个微处理器、一个或多个电路、一个或多个计算机等。在这个特定示例中,神经网络包括初始卷积处理层1100、然后是池化处理1110、并且最后是激活函数处理(诸如,修正线性单元(ReLU)函数1120)。提供ReLU输出向量1131的ReLU单元1120的输出可以连接到随后的卷积处理层1180(例如,可能经由延迟1132),所述卷积处理层接收ReLU输出向量1131。在一种示例实施方式中,还可以与ReLU单元1120到随后的卷积单元1180的连接并行地生成ReLU位图1130,ReLU位图1130表示ReLU输出向量1131中的哪些元素为零并且哪些为非零。
在一种实施方式中,可以生成或以其他方式提供位图(例如,1130),以向启用的硬件通知消除在神经网络的计算中涉及的操作的机会。例如,ReLU位图1130中的位可以由位图调度器1160解释,考虑到乘以零将始终产生零作为输出,所述位图调度器指示随后的卷积单元1180中的乘法器跳过ReLU输出向量1131中的在ReLU位图1130中存在相应的二进制零的零条目。并行地,还可以跳过从地址生成器1140对与ReLU位图1130中的零相对应的数据/权重的存储器取出,因为在取出将由随后的卷积单元1180跳过的权重时几乎没有值。如果要经由DDR控制器1150从附接的DDR DRAM存储设备1170取出权重,则等待时间可能很高,以至于只能节省一些片上带宽和有关功耗。另一方面,如果从片上RAM 1180存储装置取出权重,则可以绕过/跳过整个权重取出操作,特别是如果在输入处将与RAM/DDR取出延迟1132相对应的延迟添加到随后的卷积单元1180的话。
转到图12,提供了简化框图以说明根据一些实施例的对配备有用于剔除琐碎操作(或执行操作消除)的电路系统和其他逻辑的示例硬件的精化。如图12的示例所示,可以提供附加硬件逻辑以预测从在前的最大池化单元1210(与CNN中的最大池化层相对应)或卷积单元1200(与CNN中的卷积层相对应)提前输入的ReLU单元1220的符号。将符号预测和ReLU位图生成添加到最大池化单元1210可以允许从定时的角度更早地预测ReLU位图信息以覆盖可能通过地址生成器1240、通过外部DDR控制器1250和DDR存储装置1270或内部RAM存储装置1271发生的延迟。如果延迟足够低,则可以在地址生成器1240中解释ReLU位图,并且可以完全跳过与ReLU位图零相关联的存储器取出,因为可以确定从不使用来自存储器的取出的结果。除其他示例特征和功能之外,对图11的方案的这种修改可以节省附加的功率,并且如果通过DDR访问路径(例如,1240到1250到1270)或RAM访问路径(例如,1240到1271)的延迟足够低以便不能保证延迟级1232,则还可以允许在到随后的卷积单元1280的输入处移除延迟级(例如,1132、1232)。
图13是另一简化框图,展示了根据一些实施例的示例硬件。例如,CNN ReLU层可以产生与负输入相对应的大量输出零。实际上,可以通过查看到先前层(例如,图13的示例中的池化层)的(多个)符号输入来预测性地确定负ReLU输入。浮点和整数操作可以根据最高有效位(MSB)显式地带有符号,因此在卷积层中跨要相乘的输入向量进行简单的逐位异或(XOR)操作可以预测哪些乘法将产生输出零,诸如在图13的示例中。所得的符号预测的ReLU位图向量可以用作用于确定乘法的子集和从存储器进行读取的相关联系数的基础,以便诸如以上文其他示例中描述的方式进行消除。
将ReLU位图的生成提供回到先前的池化级或卷积级(即,在相应的ReLU级之前的级)可能产生附加的功率以及时间节省。例如,可以提供符号预测逻辑以在乘法器将产生负输出时禁用所述乘法器,所述负输出将由ReLU激活逻辑最终设置为零。例如,这示出了乘法器1314的输入1301和1302的这两个符号位1310和1315在逻辑上由异或门进行组合以形成PreReLU位图位1303的情况。除其他示例之外,此同一信号可以用于禁用乘法器1314的操作,所述操作否则将不必要地消耗生成负输出的能量,所述负输出将在被输入用于下一卷积级1390中的乘法之前由ReLU逻辑设置为零。
应注意的是,1300、1301、1302和1303(标注A)的表示示出了图13中标为B的表示中所示的更高级视图。在本示例中,到框1302的输入可以包括两个浮点操作数。输入1301可以包括:显式符号位1310、包括多个位的尾数1311、以及再次包括多个位1312的指数。类似地,输入1302同样可以包括符号1315、尾数1317和指数1316。在一些实施方式中,尾数和指数可以具有不同的精度,因为结果1303的符号分别仅取决于1301和1302、或者1310和1315的符号。事实上,1301和1302都不需要是浮点数,而是只要其是有符号数并且最高有效位(MSB)实际上是显式或隐式的符号位(例如,如果数字是一或二的补码等),就可以是任何整数或定点格式。
继续图13的示例,这两个符号输入1310和1315可以使用异或(XOR,有时在本文中可替代地表示为ExOR或EXOR)门进行组合以生成位图位1303,然后可以使用硬件来处理所述位图位以识别可能在下一卷积框(例如,1390)中省略的下游乘法。在这两个输入数字1313(例如,对应于1301)和1318(例如,对应于1302)具有相反符号并且将产生负输出1304的情况下,还可以使用相同的异或输出1303来禁用乘法器1314,所述负输出将由ReLU框1319设置为零,从而导致RELU输出向量13191中的零值,所述零值将被输入到随后的卷积级1390。因此,在一些实施方式中,PreReLU位图1320可以并行地传输到位图调度器1360,所述位图调度器可以调度乘法以在卷积单元1390上运行(和/或省略)。例如,对于位图1320中的每个零,可以在卷积单元1390中跳过相应的卷积操作。并行地,位图1320可以被示例地址生成器1330消耗,所述示例地址生成器控制对在卷积单元1390中使用的权重的取出。位图1320中对应于1的地址列表可以在地址生成器1330中被编译,并且控制经由DDR控制器1350到DDR存储装置1370的路径,或者控制到片上RAM 1380的路径。除其他示例之外,在任一种情况下,可以取出与PreReLU位图1320中的一相对应的权重并且将其呈现(例如,在关于权重输入1371的时钟周期的一定等待时间之后)给卷积框1390,而可以省略对与零相对应的权重的取出。
如上所述,在一些实施方式中,可以在位图调度器1360与卷积单元1390之间插入延迟(例如,1361),以平衡通过地址生成器1330、DDR控制器1350和DDR 1350的延迟,或者平衡通过地址生成器1330和内部RAM 1380的路径。所述延迟可以使得由位图调度器驱动的卷积能够在时间上与卷积单元1390中的卷积计算的相应权重正确对齐。实际上,从定时的角度来看,比在ReLU框1319的输出处更早生成ReLU位图可以允许得到附加的时间,所述附加时间可以用于在由地址生成器1330生成对存储器的读取之前拦截所述读取(例如,RAM1380或DDR 1370),使得可以放弃一些读取(例如,对应于零)。除其他示例优点之外,由于存储器读取可能比片上逻辑操作高得多,因此排除这种存储器取出可以导致非常显著的节能。
在一些实施方式中,如果在时钟周期方面仍然没有足够的节省来覆盖DRAM访问时间,则可以使用面向块的技术来提前从DDR中读取符号位(例如,1301)组。这些符号位组可以与来自输入图像或中间卷积层1302的符号一起使用,以便使用异或门的块1300来生成PreReLU位图的多个部分。在这种实施方式中,可以提供DDR或片上RAM中的附加1位存储来存储每个权重的符号,但是这可以允许以使得永远避免从DDR或RAM中读取将从ReLU级乘以零的权重的方式来覆盖许多等待时间周期。在一些实施方式中,除其他示例考虑和实施方式之外,可以避免DDR或片上RAM中的每权重的附加1位存储,因为符号以这样的方式被存储:它们可从指数和尾数中独立地寻址。
在一个示例中,可以进一步增强系统以利用DDR访问,所述访问可以进行自然脉冲串访问以实现最大数据传送速率。通过跳过各个DDR权重访问来节省能量在此内容中可能是不可行的,因为所述权重访问可能比脉冲串短。因此,在一些实例中,在与特定脉冲串事务相对应的所有位图位为零的情况下,可以跳过脉冲串。然而,这可能不频繁地发生,并且因此所得的功率节省和带宽节省可能是有限的。在仍其他实施方式中,可以针对脉冲串中的位图位的数量来设置寄存器可编程阈值,使得如果位图脉冲串中多于N个位为零,则将完全跳过脉冲串。这可能具有略微降低整体CNN分类准确度的效果,但是为了节省能量可以是可接受的。
转到图14,提供简化框图1400以展示逻辑的示例实施方式,该逻辑用于基于示例神经网络(诸如,在图11-图13的示例中)中的ReLU层的输出来生成示例位图。在该表示1400中,操作数A 1405被提供作为对ReLU层的输入。比较器1410可在A的符号等于或小于0时进行标识。在ReLU操作中,如果A小于或等于0,则ReLU操作的输出将为0。另一方面,如果A大于0,则A的值被返回作为结果(例如,使用多路复用器1415)。在一个示例中,可提供附加的电路系统以分接比较器1410(该比较器1410用于基于A是否大于“0”来生成真值二进制“1”或假值二进制“0”)的输出,使得(例如,对于2D或3D矩阵的每个元素A)比较器1410的输出提供相应的二进制值1420供被并入位图,以便在排除涉及所得到的ReLU输出矩阵1425中的“0”元素的操作时使用。
附加地或替代地(附加于或替代于从比较器1410提供位图值的电路系统),一些实施方式可支持pre-ReLU位图生成(诸如,如上文中在图13的示例中所讨论)。例如,如在表1430中所罗列,可(例如,在在前的乘法操作中)基于操作数的符号来预测A的符号以生成A。相应地,可提供XOR门1435,该XOR门1435可接纳对乘法操作1450的输入X 1440和Y 1445的至少一部分作为输入。例如,输入1440、1445中的每个输入的符号位(例如,MSB)可被提供给XOR门1435,以便当存在符号不匹配(意味着所得到的乘积A将是负的)时生成“0”并在符号匹配(并且正值的A将从乘法操作1450产生)时生成“1”。XOR门1435的输出1455由此可被提供以生成与将从输出1420生成的内容完全相同的位图位,以及其他示例实施方式。
图15是展示了根据本文中所描述的实施例中的至少一些实施例的示例位图的使用原理的简化框图1500。例如,(例如,矩阵A(1505)与B(1510)之间的)矩阵乘法可涉及这两个矩阵1505、1510的元素的逐元素乘法以生成所得到的矩阵C(1515)。在该示例中,可提供位图矩阵1520,该位图1520与矩阵A相对应,并且对于矩阵A中的每个元素(例如,A-1)指示该元素是否为“0”。位图1520可由调度器或其他控制器逻辑处理以确定仅非零的矩阵A元素(例如,元素A、F、G和H)的乘法操作将被执行,从而允许涉及其余的“0”元素(例如,B、C、D、E、I)的乘法操作被跳过。除了跳过乘法操作自身以外,还可跳过从存储器取出零元素(因为鉴于元素的(多个)相应的乘法操作的跳过,实际上没有理由将取出该元素)。仅非零元素的取出可产生压缩的寄存器(例如,1525),乘法电路系统将从该压缩的寄存器拉取元素用于其余的(未跳过的)乘法操作,如在图15中所表示。
转到图16,示出简化框图1600,该简化框图1600展示了用于3D矩阵1610(或具有大于2的维度的其他矩阵)的位图1605的示例实施方式。例如,在该示例中,3D矩阵1610可与2D图像的红层、绿层、蓝层相对应。为了实施诸如上文所讨论的相应的位图,可生成3D位图1605以与3D矩阵1610相对应并标识3D矩阵1610内为“0”的元素。例如,3D位图1605中的“1”值可指示3D矩阵1610的相应元素中的非零值,而位图1605中的“0”可与矩阵1610中的0元素相对应(但是在其他实施方式中,可应用相反约定)。对于其他位图实施方式,映射可被定义为指示位图1605的哪个位与相应矩阵1610中的哪个元素相对应。在该示例中,基于该映射,仅矩阵1610的非零元素可从存储器被取出。在一个示例中,位图矩阵1605内的每个平面(例如,1635、1640、1645)可映射至相应的3D矩阵中的相应平面(例如,1620、1625、1630)。
可结合涉及3D矩阵1610的非零元素的乘法操作的调度使用3D位图来构建压缩的寄存器1615。在一个示例中,每个平面(例如,1620、1625、1630)的非零元素可被连续地添加到寄存器1615。可对每个平面(例如,1635、1640、1645)中的“1”的数量进行计数以标识要提供给压缩的寄存器的条目的数量,并且可确定偏移地址(例如,1650)以标识3D矩阵的平面中的特定的一个平面的位图的开始。例如,可基于基址1655以及相应位图平面中的(非零值的)尺寸来确定偏移地址1650。例如,offset_base_address(1650)=base_addr(1655)+size of(BmA)+sizeof(BmB)+sizeof(BmC)(偏移_基_址(1650)=基_址(1655)+(BmA)的尺寸+(BmB)的尺寸+(BmC)的尺寸)。以此方式,来自每个位图平面(例如,1635、1640、1645)的“1”的序列可用于使用诸如在以下专利中讨论的原理来标识用于访问将被提供给乘法电路系统的相应矩阵元素的偏移:名称为“Circuit for compressioning data and aprocessors using the same(用于压缩数据的电路以及使用所述电路的处理器)”的美国专利号8,713,080;和/或名称为“Hardware for performing arithmetic operations(用于执行算术操作的硬件)”的美国专利号9,104,633。
转到图17,示出简化框图1700,该简化框图展示了将体积数据结构用作位图,以用于消除涉及体积数据结构的操作集合内的无关紧要的操作。例如,体积数据结构可表示3D空间,并且由此可具体化多维矩阵。可认为体积数据结构是动态地生成的位图,因为可在设备(例如,控制器、自主车辆、机器人等)中提供逻辑以生成并更新体积数据结构来反映由一个或多个传感器或扫描仪(例如,使用LIDAR、立体相机、雷达、超声等)捕获的图像数据。可将该图像数据提供给SLAM流水线逻辑。随着新图像被提供,可类似地连续地更新SLAM逻辑的输出,并且可识别新几何结构,并且随着新几何结果被获取,可动态地将新几何结构添加或插入到(新的或现有的)体积数据结构。实际上,深度图可响应于所获取的成像数据被动态地生成,并且以基于SST的体积数据结构格式来表示。被包括在体积数据结构条目的整数值中的位的二进制性质可被用作位图(例如,以便标识服从于体积数据结构位图中的多个“1”位要从DDR存储器取出哪些下游权重以及要执行哪些卷积或其他算术操作,而与位图结果中的“0”相对应的操作被消除)。
例如,在图17中,体积数据结构可表示在X坐标、Y坐标和Z坐标中被细分为四份的体积。在其他实施方式中,体积数据结构可使用笛卡尔坐标系表示体积。在该示例中,体积数据结构可与特定体积划分为64个立方子体积或体素相对应。二进制值可用于标识子体积中的对应的一个子体积被几何结构占据(例如,“1”)还是未被占据(例如,“0”),从而导致(至少)64个1和0的位来表示特定体积内的3D坐标。在该示例中,由体积数据结构表示的体积的4x4x4划分实际上产生与体积数据结构1705的64个二进制值对应的四维位图(或“VOLA”)。
可结合各种应用对体积数据结构1705进行操作。例如,可对体积数据结构(例如,包括64位的整数值,该64位的整数值与64个二进制值的位对应,用于表示每个体素内的几何结构的存在或空白空间)执行矩阵算术操作。这些值的二进制性质可允许同一体积数据结构1705被用作4D位图,该4D位图可由调度器电路系统处理以标识可被跳过的操作(例如,涉及体积数据结构1705内的“0”元素的乘法操作)。作为示例,在体积数据结构1705要与另一矩阵(例如,权重矩阵1710,其可用于CNN的卷积操作中)相乘的情况下,基于VOLA的位图还可用于标识要从存储器取出来自该另一矩阵的哪些元素,从而省略对要与体积数据结构1705的“0”元素相乘的元素的取出。
简短地转到图18的简要框图1800,在一些实施方式中,随着从特定体积的扫描或分辨捕获的“原始”数据生成体积数据结构1705,可动态地生成基于VOLA的位图。作为说明性示例,诸如立体相机或深度相机之类的光学传感器1715可生成数据,该数据可被提供给SLAM流水线1720以生成体积数据结构1705。在该示例中,体积数据结构1705既可以被提供作为对CNN 1725的输入,又可被提供作为对存储器控制器1730(例如,用于双倍数据速率(DDR)存储器1735的存储器控制器)的输入。矩阵乘法操作可被设置为结合CNN 1725的层来对体积数据结构1705执行。为了增强这些操作的执行,还可由存储器控制器1730将体积数据结构1705用作多维(即,大于2D)位图,以便仅选择并取出相应的权重(或其他)矩阵(例如,1710)中的要与体积数据结构的非零元素相乘的那些元素。
进一步地,如图17中的示例中所示,在一些实施方式中,可为在应用中要被相乘在一起的两个(或更多个)多维矩阵中的每个多维矩阵提供或生成位图。例如,在第一输入矩阵(例如,体积数据结构1705)与权重矩阵(例如,1710)相乘的情况下,这两个矩阵可具有相应的位图,用于被提供给调度器、存储器控制器或其他控制逻辑,以便选择性地省略或跳过操作中的、否则将被执行以完成两个或更多个矩阵的乘法的一些操作。在该示例中,由于体积数据结构1705可充当其自身的位图,因此可提供附加的多维(例如,3D)位图矩阵1750以指示权重矩阵1710中的“0”值。可将基于VOLA的位图和位图1750两者提供给调度器,以便在这两个操作数为非0的情况下仅选择那些乘法操作,并且逃过涉及一个或多个0元素的所有乘法操作(以及从矩阵1705、1710中的任一个的相应的存储器取出)。例如,可用(来自矩阵1710的)权重值填充压缩的寄存器1755,用于调度与体积数据结构1705的乘法操作,以及其他示例实施方式。
图19是简化框图,表示根据一些实施例的示例多时隙向量处理器(例如,超长指令字(VLIW)向量处理器)。在本示例中,向量处理器可以包括多个(例如,9个)功能单元(例如,1903至1911),所述多个功能单元可以由多端口存储器系统1900馈送、由向量寄存器堆(VRF)1901和通用寄存器堆(GRF)1902支持。所述处理器包含指令解码器(IDEC)1912,所述解码器对指令进行解码并生成控制功能单元1903至1911的控制信号。功能单元1903至1911是断言执行单元(PEU)1903、分支重复单元(BRU)1904、加载存储端口单元(例如,LSU0 1905和LSU1 1906)、向量操作单元(VAU)1907、标量操作单元(SAU)1910、比较移动单元(CMU)1908、整数操作单元(IAU)1911以及体积加速单元(VXU)1909。在此特定实施方式中,VXU1909可以加速对体积数据的操作,包括存储/检索操作、逻辑操作和操作操作。虽然在图19的示例中将VXU电路系统1909示出为单一组件,但是应当理解,VXU(以及任何其他功能单元1903至1911)的功能可以分布在多个电路系统中。进一步地,在一些实施方式中,除其他示例实施方式之外,VXU 1909的功能在某些实施方式中可以分布在处理器的其他功能单元(例如,1903至1908、1910、1911)中的一个或多个功能单元内。
图20是简化框图,展示了根据一些实施例的VXU 2000的示例实施方式。例如,VXU2000可以提供至少一个64位输入端口2001以接受来自向量寄存器堆1901或通用寄存器堆1902的输入。此输入可以连接到多个功能单元,所述多个功能单元包括:寄存器堆2003、地址生成器2004、点寻址逻辑2005、点插入逻辑2006、点删除逻辑2007、X维度中的3D到2D投影逻辑2008、Y维度中的3D到2D投影逻辑2009、X维度中的3D到2D投影逻辑2010、2D直方图金字塔发生器2011、3D直方图金字塔发生器2012、群体计数器2013、2D路径查找逻辑2014、3D路径查找逻辑2015以及用于对64位无符号整数体积位图进行操作可能的附加功能单元。来自框2002的输出可以被写回向量寄存器堆VRF 1901或通用寄存器堆GRF 1902寄存器堆。
转到图21的示例,表示了4^3体素立方体2100的组织表示。还表示了第二体素立方体2101。在本示例中,体素立方体可以在数据中被定义为64位整数2102,其中,立方体内的每个单个体素由64位整数中的单个相应位表示。例如,地址{x,y,z}={3,0,3}处的体素2012可以被设置为“1”以指示在由体素立方体2101表示的体积空间内的这个坐标处存在几何结构。进一步地,在本示例中,除其他示例之外,(体素2102旁边的)所有其他体素可以与“空白”空间相对应,并且可以被设置为“0”以指示在那些坐标处不存在物理几何结构。转到图22,展示了根据一些实施例的示例两级稀疏体素树2200。在本示例中,体积内(例如,在位置{15,0,15}中)仅包括单个“被占据”体素。在这种情况下,树的上级0 2201包含单个体素条目{3,0,3}。这个体素进而指向树的下一级2202,所述下一级包含元素{3,0,3}中的单个体素。数据结构中与稀疏体素树的级别0相对应的条目是其中一个体素被设置为被占据的64位整数2203。所设置体素意味着然后在与2203中设置的体素体积相对应的树级别1中分配64位整数的阵列。在级别1子阵列2204中,仅将这些体素之一设置为被占据,而所有其他体素设置为未被占据。在本示例中,由于树是两级树,因此级别1表示树的底部,使得层级结构在此处终止。
图23展示了根据一些实施例的两级稀疏体素树2300,其包含特定体积的位置{15,0,3}和{15,0,15}中的被占据体素。在这种情况下(其将特定体积细分为64个上级0体素),树的上级0 2301包含两个体素条目{3,0,0}和{3,0,3},其中,相应的数据2304示出两个体素被设置(或占据)。稀疏体素树(SVT)的下一级作为64位整数的阵列被提供,所述阵列包含两个子立方体2302和2303,在级别0中设置的每个体素对应一个。在级别1子阵列2305中,两个体素被设置为被占据(v15和v63),并且所有其他体素被设置为未被占据和树。这种格式是灵活的,因为树的下一级中的64个条目总是与树的上层中的每个所设置体素相对应地分配。这种灵活性可以允许以潜在的任何方式(例如,随机地而不是根据固定的或所定义的顺序)将动态变化的场景几何结构被插入,只要已经设置了上层中的相应体素即可。如果不是,则将维护指针表,导致更高的存储器要求,否则将需要至少部分地重建树以便插入无法预料的几何结构。
图24展示了根据一些实施例的用于存储来自图23的体素的替代技术。在本示例中,总体积2400包含存储在如图23中的全局坐标{15,0,3}和{15,0,15}处的两个体素。在这种方法中,并非分配64条目的阵列来表示在级别0下面的级别1中的所有子立方体,而是仅分配级别1中实际包含几何结构(例如,如由相应的级别0体素是否为占据者所指示的)的那些元素作为相应的64位级别1记录,使得在本示例中,级别1仅具有两个64位条目而不是六十四个条目(即,对应这64个级别1体素中的每一个,无论是被占据还是空白)。因此,在本示例中,第一级0 2404等效于图23中的2304,而下一级2405在存储器要求方面比图23中的相应2305小62倍。在一些实施方式中,如果要将新几何结构插入级别0中,而级别1中尚未分配空间,则必须复制并重新排列树。
在图24的示例中,可以通过对在当前层上方的层中的被占据体素进行计数来导出子体积。以这种方式,系统可以确定在体素数据中一个较高层结束并且下一个较低层开始的位置。例如,如果三个层0体素被占据,则系统可以预期在体素数据中三个相应的层1条目将跟随,并且(在这三个之后的)下一条目与层2中的第一条目相对应,以此类推。在场景的某些部分不随时间变化或者在应用中需要比如从扫描冥王星表面的空间探测器远程传输体积数据(其中每个位的传输都昂贵且耗时)的情况下,这种最佳紧缩可以非常有用。
图25A-图25B是简化流程图2500a-b,该简化流程图2500a-b展示了涉及示例操作的集合中的操作的选择性消除的示例技术。例如,在图25A的示例中,可生成2505体积数据结构(或VOLA)并将体积数据元素存储在存储器中供在各种不同的应用中使用。体积数据结构可对特定体积内的几何结构建模,其中,体积被细分为多个体素。体积数据结构能以多个细节层次表示特定体积以及特定体积内的几何结构。例如,处于最低细节层次的每个体素可细分为处于第二次节层次的体素,该第二细节层次紧邻地高于较低的细节层次。由处于第二细节层次的体素表示的子体积可类似地被细分为处于下一细节层次的体素,并且继续进行,直到在体积数据结构内提供所需数量的细节层次并对所需数量的细节层次进行建模。如本文中所讨论,可在体积数据结构内提供表示被建模的细节层次中的每个细节层次的条目。第一条目可表示第一最低的细节层次,其中,处于第一细节层次的每个体素由第一条目中用于指示几何体积是否存在与相应的体素中的对应二进制值表示。对于被发现不对处于最低细节层次的几何结构进行处理的体素,体积数据结构可省略与这些体素的较高的细节层次相对应的条目,以便在体积数据结构内稀疏地表示特定体积的多个细节层。
在一些实施方式中,鉴于体积数据结构的值的二进制性质,体积数据结构可处理大量0值,并且可被视为位图(例如,3D位图),这可用于减少要结合将体积数据结构用作输入的应用而执行的操作的数量。例如,可从存储器获取2510体积数据结构,并且处理2515体积数据结构以基于存在于体积数据结构内的0值来识别操作(例如,逐元素乘法操作、或取出要与体积数据结构的矩阵元素相乘的被乘数元素)的可被跳过的子集。例如,调度器、控制器或其他逻辑和电路系统可使2520操作的集合被执行,同时跳过子集中的那些操作。这可产生功率、时间和计算资源利用(例如,处理器和存储器利用)方面的效率增益,以及其他示例优势。
转到图25B,可标识2525神经网络(例如,CNN)的第一层的输出。应当理解,该“第一”层不需要一定是神经网络内的在顺序上的第一个层,而是该“第一”用于标记用于在当前讨论中进行命名的多个层。可从该第一层的输出值确定2520位图,并且可从该位图识别2535神经网络内的不同的第二层中的操作的子集,并且可基于该位图内的信息(例如,基于要在操作的子集中相乘的任一操作数或这两个操作数中的相应的0值)来跳过该操作的子集。在一些情况下,可预测性地从提供给另一层(例如,第三层)的输入来标识第一层的输出,其中,可基于至在前的层的输入或来自在前的层的输出来预测第一层的输出中的0值,以及其他示例实施方式。如在图25A的示例中,在基于所生成的位图识别2535了可被跳过的操作的子集后,可执行第二层的操作,其中,根据位图的信息跳过这些操作的子集,以及其他示例实施方式。
虽然本文所描述和展示的一些系统和解决方案已经被描述为包含多个元件或与多个元件相关联,但是并非所有明确展示或描述的元件都可以用于本公开的每个替代实施方式中。另外,本文所描述的一个或多个元件可以位于系统外部,而在其他实例中,某些元件可以包括在其他描述的元件以及未在所展示实施方式中描述的其他元件的一个或多个内或作为其一部分。进一步地,某些元件可以与其他组件组合以及用于除本文所描述的那些目的之外的替代或附加目的。
进一步地,应当理解,以上呈现的示例是仅出于说明某些原理和特征的目的而提供的非限制性示例,并且不一定限制或约束本文所描述的概念的潜在实施例。例如,可以利用本文所描述的特征和组件的各种组合、包括通过本文所描述的组件的各种实施方式实现的组合来实现各种不同的实施例。根据本说明书的内容应该理解其他实施方式、特征和细节。
图26至图31是根据本文公开的实施例可以使用的示例性计算机架构的框图。实际上,本文所描述的系统的计算设备、处理器、以及其他逻辑和电路系统可以并入功能以及用于实施这种功能的支持软件和/或硬件电路系统的全部或一部分。进一步地,除了这里示出的示例之外,还可以使用本领域中已知的用于处理器和计算系统的其他计算机架构设计。通常,用于本文公开的实施例的合适的计算机架构可以包括但不限于图26至图31中展示的配置。
图26展示了通过到对应网关的链路耦合的对应物联网(IoT)网络的示例域拓扑。物联网(IoT)是一种概念,在物联网中,大量的计算设备彼此互连并且互连至互联网以便在非常低的水平下提供功能和数据获取。因此,如本文所使用的,IoT设备可以包括半自主设备,其执行诸如感测或控制等功能,与其他IoT设备和更宽的网络(诸如互联网)通信。
通常,IoT设备在内存、大小或功能方面受到限制,从而允许针对与较少数量的较大型设备类似的成本来部署更大的数量。然而,IoT设备可以是智能电话、膝上型计算机、平板计算机、PC、或其他更大型设备。进一步地,IoT设备可以是虚拟设备,诸如智能电话或其他计算设备上的应用。IoT设备可以包括IoT网关,所述网关用于将IoT设备耦合至其他IoT设备和云应用,以用于数据存储、过程控制等。
IoT设备的网络可以包括商业和家庭自动化设备,诸如配水系统、配电系统、流水线控制系统、工厂控制系统、灯开关、恒温器、锁、相机、警报器、运动传感器等。可以通过远程计算机、服务器和其他系统来访问IoT设备,例如,以控制系统或访问数据。
互联网和类似网络的未来发展可能涉及到非常大量的IoT设备。因此,在本文所讨论的技术的上下文中,针对此类未来组网的大量创新将解决对以下方面的需要:所有这些层不受阻碍地增长;发现并制造可访问连接资源;以及支持隐藏和划分连接资源的能力。可以使用任何数量的网络协议和通信标准,其中,每个协议和标准被设计用于解决特定目标。进一步地,协议是支持人类可访问服务的结构的一部分,所述服务无论位置、时间或空间如何都运行。所述创新包括服务交付和相关联的基础设施,诸如如硬件和软件;安全增强;以及基于在服务级别和服务交付协议中规定的服务质量(QoS)条款提供服务。如将理解的,对IoT设备和网络(诸如在图26和图27中介绍的那些)的使用在包括有线技术和无线技术的组合的异构连接网络中提出了大量的新挑战。
图26具体提供了域拓扑的简化附图,所述域拓扑可以用于包括IoT设备2604的多个物联网(IoT)网络,其中,IoT网络2656、2658、2660、2662通过骨干链路2602耦合至对应的网关2654。例如,多个IoT设备2604可以与网关2654进行通信,并且可以通过网关2654彼此通信。为了简化附图,并非每个IoT设备2604或通信链路(例如,链路2616、2622、2628或2632)都被标记。骨干链路2602可以包括任何数量的有线或无线技术(包括光网络),并且可以是局域网(LAN)、广域网(WAN)或互联网的一部分。另外,这种通信链路促进IoT设备2604和网关2654两者之间的光学信号路径,包括使用促进各设备互连的复用/解复用组件。
网络拓扑可以包括任何数量类型的IoT网络,诸如使用蓝牙低功耗(BLE)链路2622与网络2656一起提供的网状网络。可能存在的其他类型的IoT网络包括:用于通过IEEE802.11链路2628与IoT设备2604进行通信的无线局域网(WLAN)网络2658、用于通过LTE/LTE-A(4G)或5G蜂窝网络与IoT设备2604进行通信的蜂窝网络2660、以及低功耗广域(LPWA)网络2662(例如,与由LoRa联盟颁布的LoRaWan规范兼容的LPWA网络、或与由互联网工程任务组(IETF)颁布的规范兼容的基于IPv6的低功耗广域网络(LPWAN)网络)。进一步地,对应的IoT网络可以使用任何数量的通信链路与外部网络提供商(例如,第2级或第3级提供商)进行通信,所述通信链路诸如LTE蜂窝链路、LPWA链路、或基于IEEE 802.15.4标准(比如)的链路。对应的IoT网络还可以使用各种网络和互联网应用协议来操作,诸如受限应用协议(CoAP)。对应的IoT网络还可以与协调器设备集成,所述协调器设备提供形成链接设备和网络的簇树的链路链。
这些IoT网络中的每一种都可以为新技术特征提供机会,诸如本文中所描述的那些。经改进的技术和网络可以实现设备和网络的指数增长,包括将IoT网络用作雾设备或系统。随着这种经改进技术的使用的增长,可以开发IoT网络以用于自我管理、功能演进和协作,而无需直接的人为干预。经改进的技术甚至可以使IoT网络能够在没有集中控制系统的情况下运行。因此,本文中所描述的改进技术可以用于自动化和增强远远超出当前实施方式的网络管理和操作功能。
在示例中,诸如通过骨干链路2602在IoT设备2604之间的通信可以由用于认证、授权和计费(AAA)的分散式系统保护。在分散式AAA系统中,可以跨互连的异构网络基础设施来实施分布式支付、信贷、审计、授权和认证系统。这允许系统和网络走向自主操作。在这些类型的自主操作中,机器甚至可以签订人力资源合同并与其他机器网络协商合作伙伴关系。这可以允许实现共同目标以及与概述的计划服务级别协议平衡的服务交付,并且实现提供计量、测量、可追溯性和可跟踪性的解决方案。创建新的供应链结构和方法可以实现创建大量服务、挖掘其价值并在没有任何人为参与的情况下瓦解。
通过将诸如声、光、电子交通、面部和模式识别、气味、振动等传感技术集成到IoT设备中的自主组织中,可以进一步增强这种IoT网络。感知系统的集成可以允许服务交付的系统性且自主的通信和协调,而不是基于合约性服务目标、编制和服务质量(QoS)的资源的云集和融合。基于网络的资源处理的单独示例中的一些包括以下内容。
例如,网状网络2656可以由执行内联数据到信息变换的系统来增强。例如,包括多链路网络的处理资源的自形成链可以以高效的方式分配原始数据到信息的变换、以及区分资产和资源以及每个的相关联管理的能力。此外,可以插入基础设施和基于资源的信任和服务索引的适当组件,以改善数据完整性、质量、保障并递送数据置信度度量。
例如,WLAN网络2658可以使用执行标准转换的系统来提供多标准连接,从而使得IoT设备2604能够使用不同协议进行通信。进一步的系统可以在包括可见互联网资源和隐藏互联网资源的多标准基础设施之间提供无缝互连。
例如,蜂窝网络2660中的通信可以通过卸载数据、将通信扩展到更远程的设备、或这两者的系统来增强。LPWA网络2662可以包括执行到IP的互连非互联网协议(IP)、寻址和路由的系统。进一步地,IoT设备2604中的每一个都可以包括用于与所述设备进行广域通信的适当收发机。进一步地,每个IoT设备2604可以包括用于使用附加协议和频率进行通信的其他收发机。关于图28和图29中描绘的IoT处理设备的通信环境和硬件来进一步讨论这一点。
最后,可以配备IoT设备集群以与其他IoT设备以及云网络进行通信。这可以允许IoT设备在设备之间形成自组织(ad-hoc)网络,从而允许它们用作单个设备,所述单个设备可被称为雾设备。以下关于图27来进一步讨论这种配置。
图27展示了与作为云计算网络边缘处的雾设备操作的网状网络的IoT设备(设备2702)进行通信的云计算网络。网状网络的IoT设备可以被称为雾2720,其在云2700的边缘处操作。为了简化附图,并非每个IoT设备2702都被标记。
雾2720可以被认为是大规模互连网络,在所述网络中,多个IoT设备2702例如通过无线电链路2722彼此通信。作为示例,可以使用由开放互联基金会TM(OCF)发布的互连规范来促进这种互连网络。这个标准允许设备发现彼此并建立互连通信。还可以使用其他互连协议,包括例如优化链路状态路由(OLSR)协议、移动自组织组网最佳方法(B.A.T.M.A.N.)路由协议、或OMA轻量级M2M(LWM2M)协议等。
在此示例中示出了三种类型的IoT设备2702,即网关2704、数据聚合器2726和传感器2728,但是可以使用IoT设备2702和功能的任何组合。网关2704可以是提供云2700与雾2720之间的通信的边缘设备,并且还可以为从传感器2728获得的数据(诸如运动数据、流数据、温度数据等)提供后端处理功能。数据聚合器2726可以从任何数量的传感器2728收集数据,并且执行后端处理功能以进行分析。可以通过网关2704沿着云2700传递结果、原始数据或两者。传感器2728可以是例如既能收集数据又能处理数据的全IoT设备2702。在一些情况下,传感器2728可能在例如收集数据并允许数据聚合器2726或网关2704处理所述数据的功能上更受限制。
来自任何IoT设备2702的通信可以沿着任何IoT设备2702之间的方便路径(例如,最方便的路径)被传递以到达网关2704。在这些网络中,许多互连提供了大量冗余,即使丢失了许多IoT设备2702,也允许维持通信。进一步地,网状网络的使用可以允许使用功率非常低或者位于距基础设施一定距离处的IoT设备2702,因为连接至另一IoT设备2702的范围可能远小于连接至网关2704的范围。
从这些IoT设备2702提供的雾2720可以被呈现给云2700中的设备,诸如服务器2706,作为位于云2700的边缘处的单个设备(例如雾设备)。在此示例中,来自雾设备的警报可以被发送而不会被识别为是来自雾2720内的特定IoT设备2702。以这种方式,雾2720可以被认为是分布式平台,所述分布式平台提供计算和存储资源以执行处理或数据密集型任务,诸如数据分析、数据聚合和机器学习等。
在一些示例中,可以使用命令式编程风格来配置IoT设备2702,例如,其中每个IoT设备2702具有特定功能和通信伙伴。然而,形成雾设备的IoT设备2702可以以声明性编程风格来配置,从而允许IoT设备2702重新配置其操作和通信,诸如响应于条件、查询和设备故障来确定所需的资源。作为示例,来自位于服务器2706处的用户关于由IoT设备2702监测的设备子集的操作的查询可以使得雾2720设备选择用于回答查询所需的IoT设备2702,诸如特定传感器2728。然后,在由雾2720设备将来自这些传感器2728的数据发送至服务器2706以回答查询之前,可以通过传感器2728、数据聚合器2726或网关2704的任何组合对所述数据进行聚合和分析。在此示例中,雾2720中的IoT设备2702可以基于查询来选择所使用的传感器2728,诸如添加来自流量传感器或温度传感器的数据。进一步地,如果IoT设备2702中的一些不可操作,则雾2720设备中的其他IoT设备2702可以提供类似数据(如果可用的话)。
在其他示例中,根据示例实施例,上述操作和功能可以由采用电子处理系统的示例形式的IoT设备机器来实施,在所述电子处理系统可以执行一组或一系列指令以使所述电子处理系统执行本文所讨论的方法论中的任一种方法。所述机器可以是IoT设备或IoT网关,包括由个人计算机(PC)、平板PC、个人数字助理(PDA)、移动电话或智能电话的各方面实施的机器、或者能够执行指定所述机器采取动作的指令(顺序的或以其他方式)的任何机器。进一步地,虽然在以上示例中可能仅描绘和参考了单个机器,但是这样的机器还应当被视为包括机器的任何集合,所述机器独立地或联合地执行一组(或多组)指令以便执行本文所讨论的方法中的任何一种或多种方法。进一步地,这些以及与基于处理器的系统相似的示例应当被视为包括一个或多个机器的任何集合,所述一个或多个机器被处理器(例如,计算机)控制或操作以独立地或联合地执行指令从而执行本文所讨论的方法论中的任何一种或多种方法。在一些实施方式中,一个或多个多重设备可以协同操作以实施功能并执行本文所描述的任务。在一些情况下,一个或多个主机设备可以供应数据、提供指令、聚合结果、或以其他方式促进由多重设备提供的联合操作和功能。虽然当由单个设备实施时,功能可以被认为是设备本地的功能,但是在多重设备作为单个机器进行操作的实施方式中,功能可以统一被认为是设备本地的,并且这个设备集合可以提供或消耗由其他远程机器(实施为单个设备或设备集合)提供的结果,以及其他示例实施方式。
例如,图28展示了与多个物联网(IoT)设备进行通信的云计算网络或云2800的图。云2800可以表示互联网,或者可以是局域网(LAN)、或广域网(WAN),诸如公司的专有网络。IoT设备可以包括以各种组合分组的任何数量的不同类型的设备。例如,交通控制组2806可以包括沿着城市街道的IoT设备。这些IoT设备可以包括交通信号灯、交通流量监测器、相机、天气传感器等。交通控制组2806或其他子组可以通过有线或无线链路2808(诸如LPWA链路、光学链路等)与云2800通信。进一步地,有线或无线子网络2812可以允许IoT设备彼此通信,诸如通过局域网、无线局域网等。IoT设备可以使用诸如网关2810或2828等另一设备来与诸如云2800等远程位置进行通信;IoT设备还可以使用一个或多个服务器2830来促进与云2800或网关2810的通信。例如,所述一个或多个服务器2830可以作为中间网络节点进行操作,以支持局域网当中的本地边缘云或雾实施。进一步地,所描绘的网关2828可以在云到网关到多边缘设备配置中进行操作,诸如各种IoT设备2814、2820、2824被约束或动态地分配和使用云2800中的资源。
IoT设备的其他示例分组可以包括远程气象站2814、本地信息终端2816、警报系统2818、自动柜员机2820、警报面板2822、或移动车辆,诸如应急车辆2824或其他车辆2826等。这些IoT设备中的每一个都可以与其他IoT设备、与服务器2804、与另一个IoT雾设备或系统(未示出,但在图27中进行描绘)、或其中的组合进行通信。IoT设备组可以部署在各种住宅、商业和工业背景中(包括私人环境或公共环境两者中)。
如从图28中可以看出,大量IoT设备可以通过云2800进行通信。这可以允许不同的IoT设备自主地向其他设备请求或提供信息。例如,IoT设备组(例如,交通控制组2806)可以从远程气象站组2814请求当前天气预报,所述远程气象站组可以在没有人为干预的情况下提供预测。进一步地,可以由自动柜员机2820向应急车辆2824警告正在发生盗窃。当应急车辆2824朝向自动柜员机2820前进时,其可以访问交通控制组2806以请求准许到达所述位置,例如,通过使灯变为红色以在交叉路口阻止交叉车流足够的时间从而使应急车辆2824无阻碍地进入交叉路口。
诸如远程气象站2814或交通控制组2806等IoT设备集群可以被配备成与其他IoT设备以及与云2800进行通信。这可以允许IoT设备在设备之间形成自组织网络,从而允许它们用作单个设备,所述单个设备可被称为雾设备或系统(例如,如上文关于图27所描述的)。
图29是可以存在于IoT设备2950中以用于实施本文描述的技术的组件的示例的框图。IoT设备2950可以包括示例中示出的或在以上公开中引用的组件的任何组合。这些组件可以被实施为IC、其多个部分、分立电子设备、或在IoT设备2950中适配的其他模块、逻辑、硬件、软件、固件、或其组合,或者作为以其他方式并入较大系统的机箱内的组件。另外,图29的框图旨在描绘IoT设备2950的组件的高级视图。然而,可以省略所示组件中的一些组件、可以存在附加的组件、并且在其他实施方式中可以出现所示组件的不同安排。
IoT设备2950可以包括处理器2952,所述处理器可以是微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器或其他已知的处理元件。处理器2952可以是芯片上系统(SoC)的一部分,其中处理器2952和其他组件形成为单个集成电路或单个封装体,诸如来自Intel的EdisonTM或GalileoTM SoC板。作为示例,处理器2952可以包括基于架构核心TM的处理器,诸如QuarkTM、AtomTM、i3、、i5、i7或MCU级处理器,或者可从加利福尼亚州圣克拉拉市的公司获得的另一此类处理器。然而,可以使用任何数量的其他处理器,诸如可从加利福尼亚州森尼维耳市的超威半导体公司(Advanced MicroDevices,Inc.,AMD)获得的、来自加利福尼亚州森尼维耳市的MIPS科技公司的基于MIPS的设计、由ARM控股有限公司或其客户或其许可证持有人或采用者许可的基于ARM的设计。处理器可以包括诸如来自公司的A5-A10处理器,来自科技公司的SnapdragonTM处理器、或来自德州仪器公司的OMAPTM处理器之类的单元。
处理器2952可以通过互连2956(例如,总线)与系统存储器2954通信。可以使用任何数量的存储器设备来提供给定量的系统内存。作为示例,存储器可以是符合电子器件工程联合委员会(JEDEC)设计(诸如DDR或移动DDR标准(例如,LPDDR、LPDDR2、LPDDR3或LPDDR4))的随机存取存储器(RAM)。在各实施方式中,各个存储器设备可以是任何数量的不同封装体类型,诸如单管芯封装体(SDP)、双管芯封装体(DDP)或四管芯封装体(Q17P)。在一些示例中,这些设备可以直接焊接到母板上以提供较低轮廓的解决方案,而在其他示例中,这些设备被配置为一个或多个存储器模块,这些存储器模块进而通过给定的连接器耦合到母板。可以使用任何数量的其他存储器实施方式,诸如其他类型的存储器模块,例如,不同种类的双列直插式存储器模块(DIMM),包括但不限于microDIMM或MiniDIMM。
为了提供对诸如数据、应用、操作系统等信息的持久存储,存储装置2958也可以经由互连2956耦合至处理器2952。在示例中,存储装置2958可以经由固态盘驱动器(SSDD)来实施。可用于存储装置2958的其他设备包括闪存卡(诸如SD卡、微型SD卡、xD图片卡等)、以及USB闪存驱动器。在低功率实施方式中,存储装置2958可以是管芯上存储器或与处理器2952相关联的寄存器。然而,在一些示例中,存储装置2958可以使用微型硬盘驱动器(HDD)来实施。进一步地,除了所描述的技术之外或者代替所述技术,任何数量的新技术可以用于存储装置2958,诸如阻变存储器、相变存储器、全息存储器或化学存储器等。
这些组件可以通过互连2956进行通信。互连2956可以包括任何数量的技术,包括工业标准架构(ISA)、扩展ISA(EISA)、外围组件互连(PCI)、外围组件互连扩展(PCIx)、PCIExpress(PCIe)、或任何数量的其他技术。互连2956可以是例如在基于SoC的系统中使用的专有总线。可以包括其他总线系统,诸如I2C接口、SPI接口、点对点型接口、以及电源总线等。
互连2956可以将处理器2952耦合至网状收发机2962以用于与其他网状设备2964通信。网状收发机2962可以使用任何数量的频率和协议,诸如符合IEEE 802.15.4标准的2.4千兆赫(GHz)传输,使用如由特别兴趣小组定义的低功耗(BLE)标准或标准等。为特定无线通信协议配置的任何数量的无线电可以用于与网状设备2964的连接。例如,WLAN单元可以用于根据电气和电子工程师协会(IEEE)802.11标准来实施Wi-FiTM通信。此外,经由WWAN单元可以发生(例如,根据蜂窝或其他无线广域协议的)无线广域通信。
网状收发机2962可以使用多个标准或无线电进行通信以用于不同范围的通信。例如,IoT设备2950可以使用基于BLE的本地收发机或另一低功率无线电与接近设备(例如,在大约10米内)进行通信以节省功率。可以通过ZigBee或其他中间功率无线电到达更远的网状设备2964,例如,在大约50米内。这两种通信技术可以以不同的功率水平在单个无线电上发生,或者可以在单独的收发机(例如,使用BLE的本地收发机和使用ZigBee的单独网状收发机)上发生。
可以包括无线网络收发机2966以便经由局域网协议或广域网协议与云2900中的设备或服务进行通信。无线网络收发机2966可以是遵循IEEE 802.15.4或IEEE 802.15.4g标准等的LPWA收发机。IoT设备2950可以使用由Semtech和LoRa联盟开发的LoRaWANTM(长距离广域网)在广泛区域上进行通信。本文中所描述的技术不限于这些技术,而是可以与实施长距离低带宽通信的任何数量的其他云收发机一起使用,诸如Sigfox及其他技术。进一步地,可以使用IEEE 802.15.4e规范中描述的其他通信技术,诸如时隙信道跳变。
除了针对网状收发机2962和无线网络收发机2966所提到的系统之外,还可以使用任何数量的其他无线电通信和协议,如本文所述。例如,无线电收发机2962和2966可以包括使用扩频(SPA/SAS)通信以实施高速通信的LTE或其他蜂窝收发机。进一步地,可以使用任何数量的其他协议,诸如用于中速通信和提供网络通信的网络。
无线电收发机2962和2966可以包括与任何数量的3GPP(第三代合作伙伴计划)规范兼容的无线电,特别是长期演进(LTE)、长期演进-高级(LTE-A)和长期演进-高级专业版(LTE-A Pro)。可以注意到,可以选择与任何数量的其他固定、移动或卫星通信技术和标准兼容的无线电。这些可以包括例如任何蜂窝广域无线电通信技术,其可以包括例如第5代(5G)通信系统、全球移动通信系统(GSM)无线电通信技术、通用分组无线电服务(GPRS)无线电通信技术、或GSM演进增强数据速率(EDGE)无线电通信技术、UMTS(通用移动电信系统)通信技术,除了上面列出的标准之外,无线网络收发器2966可以使用任何数量的卫星上行链路技术,包括例如符合由ITU(国际电信联盟)或ETSI(欧洲电信标准协会)发布的标准的无线电等。因此,本文提供的示例被理解为适用于现有的和尚未发布的各种其他通信技术。
可以包括网络接口控制器(NIC)2968以向云2900或其他设备(诸如网状设备2964)提供有线通信。有线通信可以提供以太网连接,或者可以基于其他类型的网络,诸如控制器区域网络(CAN)、本地互连网络(LIN)、设备网(DeviceNet)、控制网(ControlNet)、数据高速通道+、过程现场总线(PROFIBUS)或过程现场网(PROFINET)等。可以包括附加NIC 2968以允许连接至第二网络,例如,通过以太网提供到云的通信的NIC 2968、以及通过另一种类型的网络提供到其他设备的通信的第二NIC 2968。
互连2956可以将处理器2952耦合至外部接口2970,所述外部接口用于连接外部设备或子系统。外部设备可以包括传感器2972,诸如加速度计、水平传感器、流量传感器、光学光传感器、相机传感器、温度传感器、全球定位系统(GPS)传感器、压力传感器、气压传感器等。外部接口2970可以进一步用于将IoT设备2950连接至致动器2974,诸如电源开关、阀致动器、可听声音发生器、可视化警告设备等。
在一些可选示例中,各种输入/输出(I/O)设备可以存在于IoT设备2950内或连接至所述IoT设备。例如,可以包括显示器或其他输出设备2984以显示诸如传感器读数或致动器位置等信息。可以包括诸如触摸屏或小键盘等输入设备2986以接受输入。输出设备2984可以包括任何数量形式的音频或可视化显示器,包括简单的可视化输出(诸如二进制状态指示器(例如,LED)和多字符可视化输出)、或者更复杂的输出(诸如显示屏(例如,LCD屏幕)),其中,字符、图形、多媒体对象等的输出是根据IoT设备2950的操作生成或产生的。
电池2976可以为IoT设备2950供电,但是在IoT设备2950安装在固定位置的示例中,所述电池可具有耦合至电网的电源。电池2976可以是锂离子电池或金属-空气电池,诸如锌-空气电池、铝-空气电池、锂-空气电池等。
电池监测器/充电器2978可以包括在IoT设备2950中以跟踪电池2976的充电状态(SoCh)。电池监测器/充电器2978可以用于监测电池2976的其他参数,以提供故障预测,诸如电池2976的健康状态(SoH)和功能状态(SoF)。电池监测器/充电器2978可以包括电池监测集成电路,诸如来自凌力尔特公司(Linear Technologies)的LTC4020或LTC2990、来自美国亚利桑那州凤凰城的安森美半导体公司(ON Semiconductor)的ADT7488A、或来自德克萨斯州达拉斯的德州仪器的UCD90xxx系列的IC。电池监测器/充电器2978可以通过互连2956将关于电池2976的信息传送至处理器2952。电池监测器/充电器2978还可以包括模数(ADC)转换器,所述模数转换器允许处理器2952直接监测电池2976的电压或来自电池2976的电流。电池参数可以用于确定IoT设备2950可执行的动作,诸如传输频率、网状网络操作、感测频率等。
电源块2980或耦合至电网的其他电源可以与电池监测器/充电器2978耦合以对电池2976进行充电。在一些示例中,电源块2980可以用无线功率接收器来代替,以例如通过IoT设备2950中的环形天线无线地获得功率。无线电池充电电路(诸如来自加利福尼亚州米尔皮塔斯的凌力尔特公司的LTC4020芯片等)可以包括在电池监测器/充电器2978中。所选择的特定充电电路取决于电池2976的尺寸,并且因此取决于所需的电流。可以使用由Airfuel联盟颁布的Airfuel标准、由无线电力联盟(Wireless Power Consortium)颁布的Qi无线充电标准、或由无线电力联盟颁布的Rezence充电标准来执行充电。
存储装置2958可以包括采用软件、固件或硬件命令形式以实施本文所述的技术的指令2982。虽然这种指令2982被示出为存储器2954和存储装置2958中所包括的代码块,但是可以理解的是,所述代码块中的任一个都可以利用例如内置在专用集成电路(ASIC)中的硬连线电路来代替。
在示例中,经由存储器2954、存储装置2958或处理器2952提供的指令2982可以被实施为非暂态机器可读介质2960,包括用于引导处理器2952在IoT设备2950中执行电子操作的代码。处理器2952可以通过互连2956访问非暂态机器可读介质2960。例如,非暂态机器可读介质2960可以由针对图29的存装置2958描述的设备来体现,或者可以包括特定的存储单元,诸如光盘、闪存驱动器或任何数量的其他硬件设备。非暂态机器可读介质2960可以包括用于引导处理器2952执行特定动作序列或动作流的指令,例如,如关于上述操作和功能的(多个)流程图和(多个)框图所描述的。
图30是根据实施例的处理器的示例图示。处理器3000是可以结合上述实施方式使用的一类硬件设备的示例。处理器3000可以是任何类型的处理器,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、多核处理器、单核处理器、或执行代码的其他设备。尽管在图30中仅展示了一个处理器3000,但是处理元件可以可替代地包括图30中展示的多于一个处理器3000。处理器3000可以是单线程核,或者针对至少一个实施例,处理器3000可以是多线程的,因为其可以包括每核多于一个硬件线程上下文(或者“逻辑处理器”)。
图30还展示了根据实施例的耦合至处理器3000的存储器3002。存储器3002可以是本领域技术人员已知或另外可用的广泛存储器(包括存储器层次结构中的各个层)中的任何一种。这种存储器元件可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)的逻辑块、可擦除可编程只读存储器(EPROM)和电可擦除可编程ROM(EEPROM)。
处理器3000可以执行与本文详细描述的算法、过程或操作相关联的任何类型的指令。通常,处理器300可以将元件或物件(例如,数据)从一个状态或事物变换为另一种状态或事物。
代码3004(其可以是待由处理器3000执行的一条或多条指令)可以存储在存储器3002中,或者可以存储在软件、硬件、固件、或其任何合适的组合中,或者(在合适的情况下并基于具体需要)存储在任何其他内部或外部组件、设备、元件或对象中。在一个示例中,处理器3000可以遵循代码3004所指示的程序指令序列。每条指令进入前端逻辑3006并由一个或多个解码器3008处理。所述解码器可以生成微操作作为其输出,如预定格式的固定宽度微输出,或者可以生成其他指令、微指令、或反映原始代码指令的控制信号。前端逻辑3006还包括寄存器重命名逻辑3010和调度逻辑3012,后者一般给资源和队列分配对应于用于执行的指令的操作。
处理器3000还可以包括具有一组执行单元3016a、3016b、3016n等的执行逻辑3014。一些实施例可以包括专用于特定功能或功能集合的大量执行单元。其他实施例可以包括仅一个执行单元、或可以执行特定功能的一个执行单元。执行逻辑3014执行由代码指令所指定的操作。
在完成执行由代码指令指定的操作后,后端逻辑3018可以引退代码3004的指令。在一个实施例中,处理器3000允许乱序执行但要求指令的按顺序引退。引退逻辑3020可以采取各种已知形式(例如,重排序缓存器等)。以这种方式,在代码3004执行的过程中处理器3000被变换,至少依据解码器所生成的输出、寄存器重命名逻辑3010所利用的硬件寄存器和表格、以及经执行逻辑3014修改的任何寄存器(未示出)。
尽管未在图30中示出,但是处理元件可以包括具有处理器3000的其他片上元件。例如,处理元件可以包括存储器控制逻辑以及处理器3000。处理元件可以包括I/O控制逻辑和/或可以包括与存储器控制逻辑集成的I/O控制逻辑。处理元件还可以包括一个或多个高速缓存。在一些实施例中,非易失性存储器(诸如,闪存或熔丝)也可以与处理器3000一起被包括在芯片上。
图31展示了根据实施例的被安排为点对点(PtP)配置的计算系统3100。具体地,图31示出了一种系统,在所述系统中,处理器、存储器以及输入/输出设备通过许多点对点接口互连。通常,可以采用与计算系统3100相同或类似的方式来配置本文所描述的计算系统中的一个或多个。
处理器3170和3180可以各自包括用于与存储器元件3132和3134进行通信的集成存储器控制器逻辑(MC)3172和3182。在替代实施例中,存储器控制器逻辑3172和3182可以是与处理器3170和3180分开的分立逻辑。存储器元件3132和/或3134可以存储要由处理器3170和3180用于实现本文所概述的操作和功能的各种数据。
处理器3170和3180可以是任何类型的处理器,诸如结合其他附图所讨论的那些处理器。处理器3170和3180可以分别使用点对点(PtP)接口电路3178和3188经由点对点接口3150来交换数据。处理器3170和3180中的每一个处理器可以使用点对点接口电路3176、3186、3194和3198经由单独的点对点接口3152和3154来与芯片组3190交换数据。芯片组3190还可以使用接口电路3192(这可以是PtP接口电路)经由高性能图形接口311139与高性能图形电路3138交换数据。在替代实施例中,图31所展示的任何或所有PtP链路可以被实施为多点分支总线而非有PtP链路。
芯片组3190可以经由接口电路3196与总线3120通信。总线3120可以具有一个或多个通过所述总线进行通信的设备,如总线桥接器3118和I/O设备3116。经由总线3110,总线桥接器3118可以与其他设备通信,诸如用户接口3112(诸如键盘、鼠标、触摸屏、或其他输入设备)、通信设备3126(诸如调制解调器、网络接口设备、或其他类型的可以通过计算机网络3160通信的通信设备)、音频I/O设备3114、和/或数据存储设备3128。数据存储设备3128可以存储代码3130,所述代码可以由处理器3170和/或3180执行。在替代实施例中,总线架构的任何部分用一个或多个PtP链路实施。
图31中描绘的计算机系统是可以用于实施在此讨论的各个实施例的计算系统的实施例的示意图。将理解的是,图31中所描绘的系统的各个部件可以结合在片上系统(SoC)架构中或者在能够实现本文所提供的示例和实施方式的功能和特征的任何其他合适的配置中。
在进一步的示例中,机器可读介质还包括任何有形介质,所述有形介质能够存储、编码或携带用于由机器执行并使所述机器执行本公开的方法中的任何一个或多个的指令,或者所述有形介质能够存储、编码或携带由这样的指令利用或与这样的指令相关联的数据结构。“机器可读介质”因此可以包括但不限于固态存储器、以及光学介质和磁性介质。机器可读介质的特定示例包括非易失性存储器,所述非易失性存储器通过示例的方式包括但不限于半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和闪存装置;磁盘,如内置硬盘和可移除磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。可以利用多个传输协议(例如,HTTP)中的任一种协议、经由网络接口设备、使用传输介质、通过通信网络来进一步发射或接收由机器可读介质体现的指令。
应当理解,本说明书中所描述的功能单元或能力可以被称为或标记为部件或模块,以更加特别地强调其实施独立性。这些部件可以由任何数量的软件或硬件的形式实施。例如,部件或模块可以被实施为硬件电路,所述硬件电路包括定制超大规模集成(VLSI)电路或门阵列、现货供应的半导体,如逻辑芯片、晶体管、或其他分立部件。部件或模块还可以在如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等可编程硬件装置中实施。部件或模块还可以在由各种类型的处理器执行的软件中实施。可执行代码的所标识部件或模块可以包括例如计算机指令的一个或多个物理块或逻辑块,所述物理块或逻辑块可以被组织为例如对象、程序或函数。然而,所标识部件或模块的可执行部分不需要物理上定位在一起,而是可以包括存储在不同位置的不同指令,这些指令当被逻辑地连接在一起时包括所述部件或模块并且实现所述部件或模块的所阐述的目的。
实际上,可执行代码的部件或模块可以是单个指令,或许多指令,并且甚至可分布在若干不同代码段中、在不同程序之间、并且跨越若干存储器装置或处理系统。具体地,所描述的过程的一些方面(如代码重写和代码分析)可以在不同的处理系统上(例如,在数据中心中的计算机中)发生,而不是在其中部署代码的处理系统上(例如,在嵌入传感器或机器人中的计算机中)。类似地,本文中操作数据可以在部件或模块内被标识和展示,并且可以以任何合适的形式体现并且组织在任何合适类型的数据结构中。操作数据可以被收集为单个数据集,或者可以分布在不同位置上,包括分布在不同的存储设备上,并且可以至少部分地仅作为电子信号存在于系统或网络上。所述部件或模块可以是被动或主动的,包括可操作以执行期望功能的代理。
目前所描述的方法、系统和设备实施例的附加示例包括以下非限制性配置。以下非限制性示例中的每个示例可以独立存在,或者可以任何枚举或组合与在下文或在整个本公开中提供的其他示例中的任何一个或多个示例进行组合。
尽管已经根据某些实施方式和总体上相关联的方法描述了本公开,但是这些实施方式和方法的替代方案和置换对于本领域技术人员而言将是显而易见的。例如,本文所描述的动作可以以与所描述的不同顺序来执行,并且仍然实现期望的结果。作为一个示例,在附图中描绘的过程不一定需要所示出的特定顺序或相继顺序来实现期望结果。在某些实施方式中,多重任务处理和并行处理可能是有利的。另外,可以支持其他用户接口布局和功能。其他变体处于以下权利要求的范围内。
尽管本说明书包含许多特定实施方式细节,但是这些细节不应被解读为是对任何发明或者可能要求保护的内容的范围的限制,而应被解读为是对具体发明的具体实施例特有的特征的描述。在单一实施例的背景下在本说明书中所描述的某些特征还可以组合地实施在单个实施例中。相反,在单一实施例的上下文中描述的各个特征也可以被单独地或以任何适合的子组合的方式实施在多个实施例中。而且,虽然特征在上文可以被描述为以某些组合起作用并且甚至如此最初被要求,但来自所要求保护的组合的一个或多个特征在某些情况下可以与组合离体,并且所要求保护的组合可以针对子组合或子组合的变化。
类似地,虽然附图中以具体顺序描绘了操作,但这不应被理解成要求这种操作以所示出的具体顺序或以有序顺序执行,或者所有展示的操作可以被执行,以实现令人希望的结果。在某些情况下,多重任务处理和并行处理可能是有利的。而且,上述实施例中的不同系统部件的分离不应被理解成在所有实施例中都要求这种分离,并且应理解的是,所描述的程序部件和系统通常可以一起整合在单个软件产品中或封装进多个软件产品中。
以下示例涉及根据本说明书的实施例。示例1是一种机器可访问存储介质,具有存储于其上的指令,当在机器上执行这些指令时,这些指令使机器用于:从存储器获取体积数据结构,其中,体积数据结构以多个细节层次表示特定体积内的几何结构,该特定体积包括处于多个细节层次中的第一最低细节层次的多个体素,体积数据结构中的第一条目用于表示处于第一细节层次的多个体素中的每个体素中的几何结构,第一条目包括用于处于第一细节层次的多个体素中的每个体素的二进制值,并且二进制值指示几何结构是否存在于特定体积的由相应的体素限定的对应子体积内;处理体积数据结构以至少部分地基于第一条目的二进制值来识别操作集中的要跳过的第一部分,其中,操作集包括与体积数据结构相关联的操作;以及使得操作集的除第一部分之外的第二部分被执行,其中,第一部分中的操作将被跳过。
示例2可包括示例1的主题的至少一部分,其中,操作集包括三维(3D)矩阵乘法操作,并且体积数据结构包括3D矩阵。
示例3可包括示例2的主题的至少一部分,其中,使用体积数据结构在卷积操作中执行3D矩阵乘法操作。
示例4可包括示例1-3中的任一示例的主题的至少一部分,其中,操作集包括存储器取出。
示例5可包括示例4的主题的至少一部分,其中,存储器取出包括要与体积数据结构相乘的3D权重矩阵中的权重值的取出。
示例6可包括示例1-5中的任一示例的主题的至少一部分,其中,体积数据结构进一步包括第二条目的集合,第二条目中的每个第二条目表示处于多个细节层次中的第二细节层次的体素,第二条目中的每个第二条目与处于第一细节层次的体素中的、由二进制值中的相应的一个二进制值标识为包含几何结构的对应的一个体素相对应,并且第二条目中的每个第二条目包括用于处于第二细节层次的多个体素中的每个体素的、用于指示几何结构是否存在于处于第二细节层次的相应体素内的二进制值。
示例7可包括示例6的主题的至少一部分,其中,第一条目中的二进制值指示处于第一细节层次的第一数量的体素由几何结构占据且处于第一细节层次的第二数量的体素是空白的,第二条目的集合由第一数量的第二条目组成,在第二条目的集合中,对于处于第二细节层次的、表示处于第一细节层次的体素的被指示为空白的子体积的体素,条目被省略。
示例8可包括示例6-7中的任一示例的主题的至少一部分,其中,处于第一细节层次的体素包括64个体素,第一条目中的二进制值包括64个二进制值,并且处于第二细节层次的体素表示处于第一细节层次的64个体素中的每个体素的64个子体积。
示例9可包括示例1-8中的任一示例的主题的至少一部分,其中,跳过操作的第一部分包括:禁用电路系统的、用于执行操作的第一部分的至少一部分。
示例10可包括示例1-9中的任一示例的主题的至少一部分,其中,体积数据结构中的每个体素由至少两个位表示,并且至少两个位中的一个位包括用于指示相应体素是否包括几何结构的二进制值。
示例11是一种机器可访问存储介质,具有存储于其上的指令,当在机器上执行这些指令时,这些指令使机器用于:标识神经网络内的多个层中的第一层的输出;从输出确定包括二进制矩阵的位图;基于位图确定对于多个层中的第二层要跳过的操作的特定子集;以及使得对于第二层要执行除操作的特定子集之外的操作,其中,操作的特定子集被跳过。
示例12可包括示例11的主题的至少一部分,其中,神经网络包括卷积神经网络(CNN)。
示例13可包括示例11-12中的任一示例的主题的至少一部分,其中,操作的特定子集包括第二层的算术操作。
示例14可包括示例13的主题的至少一部分,其中,算术操作包括三维(3D)矩阵乘法操作。
示例15可包括示例14的主题的至少一部分,其中,3D乘法操作包括将特定3D矩阵中的元素与另一操作数相乘,并且操作的特定子集包括涉及特定3D矩阵中的元素的子集的乘法,其中,元素的子集具有值0。
示例16可包括示例15的主题的至少一部分,其中,操作的特定子集进一步包括另一操作数中要与元素的子集相乘的元素的存储器取出。
示例17可包括示例15-16中的任一示例的主题的至少一部分,其中,指令在被执行时进一步使机器:确定位图中的值与特定3D矩阵中的相应元素之间的映射。
示例18可包括示例11-17中的任一示例的主题的至少一部分,其中,第一层包括修正线性单元(ReLU)层。
示例19可包括示例18的主题的至少一部分,其中,第二层包括卷积层和池化层中的一个。
示例20可包括示例18-19中的任一示例的主题的至少一部分,其中,标识ReLU层的输出包括:从对ReLU层的输入确定ReLU层的输出将包括多个0,并且位图基于多个0而生成。
示例21可包括示例18-19中的任一示例的主题的至少一部分,其中,标识ReLU层的输出包括:基于神经网络的在前的层中的操作数的符号来预测ReLU层的输出将包括0的集合。
示例22可包括示例21的主题的至少一部分,其中,在前的层包括卷积层和池化层中的一个。
示例23可包括示例11-22中的任一示例的主题的至少一部分,其中,位图包括3D位图。
示例24可包括示例11-23中的任一示例的主题的至少一部分,其中,位图中的“1”指示要执行的操作,并且位图中的“0”指示子集中要跳过的操作。
示例25可包括示例11-24中的任一示例的主题的至少一部分,其中,输出包括位图。
示例26可包括示例11-25中的任一示例的主题的至少一部分,其中,位图包括体积数据结构,该体积数据结构以多个细节层次表示特定体积内的几何结构,该特定体积包括处于多个细节层次中的第一最低细节层次的多个体素,体积数据结构中的第一条目用于表示处于第一细节层次的多个体素中的每个体素中的几何结构,第一条目包括用于处于第一细节层次的多个体素中的每个体素的二进制值,并且二进制值指示几何结构是否存在于特定体积的由相应的体素限定的对应子体积内。
示例27是一种装置,该装置包括:数据处理装置;位图生成电路系统,该位图生成电路系统用于:获取矩阵的值,该矩阵用于被提供作为对人工神经网络内的多个层中的第一层的输入;从该值确定特定层的输出将包括输出值的集合,该输出值的集合包括至少一些0;以及生成包括二进制值的位图矩阵,该二进制值用于指示特定层的输出中的相应值是否包括0值。
示例28可包括示例27的主题的至少一部分,进一步包括调度器,该调度器用于:从存储器获取位图矩阵,该位图矩阵与用于使用神经网络中的多个层中的另一层的输出来执行的乘法相关联;以及基于位图矩阵来跳过乘法操作中的用于在涉及矩阵中的0值的乘法中执行的子集。
示例29可包括示例28的主题的至少一部分,其中,神经网络包括卷积神经网络,并且另一层包括卷积层或池化层中的一个。
示例30可包括示例27-29中的任一示例的主题的至少一部分,其中,特定层包括第一层,并且特定层包括修正线性单元(ReLU)层。
示例31可包括示例30的主题的至少一部分,其中,特定层包括第一层,并且位图生成电路系统包括比较器,该比较器用于判定输入值是否为负,其中,位图矩阵用于用由比较器从输入值生成的二进制值来填充。
示例32可包括示例30的主题的至少一部分,其中,第一层包括在ReLU层之前的层,第一层的输出用于被提供作为对ReLU层的输入,位图生成电路系统包括异或(XOR)门,该XOR门用于对用于在第一层中相乘的两个操作数中的每个操作数的至少一部分进行操作以生成ReLU层的输入,并且位图矩阵用于用由XOR门生成的二进制值来填充。
示例33可包括示例27-32中的任一示例的主题的至少一部分,其中,矩阵包括具有三个或更多个维度的矩阵。
示例34是一种系统,该系统包括:一个或多个光学传感器,用于生成光学数据;体积数据生成器,用于从光学数据生成体积数据结构,其中,体积数据结构以多个细节层次表示特定体积内由光学传感器捕获的几何结构,特定体积包括处于多个细节层次中的第一最低细节层次的多个体素,体积数据结构中的第一条目用于表示处于第一细节层次的多个体素中的每个体素中的几何结构,第一条目包括用于处于第一细节层次的多个体素中的每个体素的二进制值,并且二进制值指示几何结构是否存在于特定体积的由相应的体素限定的对应子体积内。
示例35可包括示例34的主题的至少一部分,进一步包括调度器,该调度器用于:从存储器获取体积数据结构;以及将体积数据结构用作位图,以便基于体积数据结构中的二进制值的包括0值的子集来标识乘法操作的要跳过的子集。
示例36可包括示例34-35中的任一示例的主题的至少一部分,进一步包括矩阵乘法处理器,该矩阵乘法处理器用于使用体积数据结构来执行矩阵乘法
示例37可包括示例36的主题的至少一部分,其中,矩阵乘法被执行以与卷积神经网络中的卷积层或池化层中的一个相对应。
示例38可包括示例34-37中的任一示例的主题的至少一部分,其中体积数据生成器包括同步定位和建图(SLAM)流水线,该SLAM流水线用于生成深度图,并且体积数据结构从深度图生成。
示例39是一种方法,该方法包括:从存储器获取体积数据结构,其中,体积数据结构以多个细节层次表示特定体积内的几何结构,该特定体积包括处于多个细节层次中的第一最低细节层次的多个体素,体积数据结构中的第一条目用于表示处于第一细节层次的多个体素中的每个体素中的几何结构,第一条目包括用于处于第一细节层次的多个体素中的每个体素的二进制值,并且二进制值指示几何结构是否存在于特定体积的由相应的体素限定的对应子体积内;处理体积数据结构以至少部分地基于第一条目的二进制值来识别操作集的要跳过的部分,其中,操作集包括与体积数据结构相关联的操作;以及使得操作集的除该部分之外的操作被执行,其中,该部分中的操作将被跳过。
示例40可包括示例39的主题的至少一部分,其中,操作集包括三维(3D)矩阵乘法操作,并且体积数据结构包括3D矩阵。
示例41可包括示例40的主题的至少一部分,其中,使用体积数据结构在卷积操作中执行3D矩阵乘法操作。
示例42可包括示例39-41中的任一示例的主题的至少一部分,其中,操作集包括存储器取出。
示例43可包括示例42的主题的至少一部分,其中,存储器取出包括要与体积数据结构相乘的3D权重矩阵中的权重值的取出。
示例44可包括示例39-43中的任一示例的主题的至少一部分,其中,体积数据结构进一步包括第二条目的集合,第二条目中的每个第二条目表示处于多个细节层次中的第二细节层次的体素,第二条目中的每个第二条目与处于第一细节层次的体素中的、由二进制值中的相应的一个二进制值标识为包含几何结构的对应的一个体素相对应,并且第二条目中的每个第二条目包括用于处于第二细节层次的多个体素中的每个体素的、用于指示几何结构是否存在于处于第二细节层次的相应体素内的二进制值。
示例45可包括示例44的主题的至少一部分,其中,第一条目中的二进制值指示处于第一细节层次的第一数量的体素由几何结构占据且处于第一细节层次的第二数量的体素是空白的,第二条目的集合由第一数量的第二条目组成,在第二条目的集合中,对于处于第二细节层次的、表示处于第一细节层次的体素的被指示为空白的子体积的体素,条目被省略。
示例46可包括示例44-45中的任一示例的主题的至少一部分,其中,处于第一细节层次的体素包括64个体素,第一条目中的二进制值包括64个二进制值,并且处于第二细节层次的体素表示处于第一细节层次的64个体素中的每个体素的64个子体积。
示例47可包括示例39-46中的任一示例的主题的至少一部分,其中,跳过操作的第一部分包括:禁用电路系统的、用于执行操作的该部分的至少一部分。
示例48可包括示例39-47中的任一示例的主题的至少一部分,其中,体积数据结构中的每个体素由至少两个位表示,并且至少两个位中的一个位包括用于指示相应体素是否包括几何结构的二进制值。
示例49是一种系统,该系统包括用于执行如示例39-48中的任一示例的方法的装置。
示例50是一种方法,该方法包括:标识神经网络内的多个层中的第一层的输出;从输出确定包括二进制矩阵的位图;基于位图确定对于多个层中的第二层要跳过的操作的特定子集;以及使得对于第二层要执行除操作的特定子集之外的操作,其中,操作的特定子集被跳过。
示例51可包括示例50的主题的至少一部分,其中,神经网络包括卷积神经网络(CNN)。
示例52可包括示例50-51中的任一示例的主题的至少一部分,其中,操作的特定子集包括第二层的算术操作。
示例53可包括示例52的主题的至少一部分,其中,算术操作包括三维(3D)矩阵乘法操作。
示例54可包括示例53的主题的至少一部分,其中,3D乘法操作包括将特定3D矩阵中的元素与另一操作数相乘,并且操作的特定子集包括涉及特定3D矩阵中的元素的子集的乘法,其中,元素的子集具有值0。
示例55可包括示例54的主题的至少一部分,其中,操作的特定子集进一步包括另一操作数中要与元素的子集相乘的元素的存储器取出。
示例56可包括示例54-55中的任一示例的主题的至少一部分,其中,指令在被执行时进一步使机器:确定位图中的值与特定3D矩阵中的相应元素之间的映射。
示例57可包括示例50-56中的任一示例的主题的至少一部分,其中,第一层包括修正线性单元(ReLU)层。
示例58可包括示例57的主题的至少一部分,其中,第二层包括卷积层和池化层中的一个。
示例59可包括示例57-58中的任一示例的主题的至少一部分,其中,标识ReLU层的输出包括:从对ReLU层的输入确定ReLU层的输出将包括多个0,并且位图基于多个0而生成。
示例60可包括示例57-58中的任一示例的主题的至少一部分,其中,标识ReLU层的输出包括:基于神经网络的在前的层中的操作数的符号来预测ReLU层的输出将包括0的集合。
示例61可包括示例60的主题的至少一部分,其中,在前的层包括卷积层和池化层中的一个。
示例62可包括示例50-61中的任一示例的主题的至少一部分,其中,位图包括3D位图。
示例63可包括示例50-62中的任一示例的主题的至少一部分,其中,位图中的“1”指示要执行的操作,并且位图中的“0”指示子集中要跳过的操作。
示例64可包括示例50-63中的任一示例的主题的至少一部分,其中,输出包括位图。
示例65可包括示例50-64中的任一示例的主题的至少一部分,其中,位图包括体积数据结构,该体积数据结构以多个细节层次表示特定体积内的几何结构,该特定体积包括处于多个细节层次中的第一最低细节层次的多个体素,体积数据结构中的第一条目用于表示处于第一细节层次的多个体素中的每个体素中的几何结构,第一条目包括用于处于第一细节层次的多个体素中的每个体素的二进制值,并且二进制值指示几何结构是否存在于特定体积的由相应的体素限定的对应子体积内。
示例66是一种系统,该系统包括用于执行如示例50-65中的任一示例的方法的装置。
示例67是一种装置,该装置包括数据处理器、存储器和电路系统。存储器用于存储来自存储器的体积数据结构,其中,体积数据结构以多个细节层次表示特定体积内的几何结构,该特定体积包括处于多个细节层次中的第一最低细节层次的多个体素,体积数据结构中的第一条目用于表示处于第一细节层次的多个体素中的每个体素中的几何结构,第一条目包括用于处于第一细节层次的多个体素中的每个体素的二进制值,并且二进制值指示几何结构是否存在于特定体积的由相应的体素限定的对应子体积内。电路系统用于:至少部分地基于第一条目的二进制值从体积数据结构识别操作集中的要跳过的第一部分,其中,操作集包括与体积数据结构相关联的操作;以及使得操作集的除该部分之外的操作被执行,其中,该部分中的操作将被跳过
示例68可包括示例67的主题的至少一部分,其中,操作集包括三维(3D)矩阵乘法操作,并且体积数据结构包括3D矩阵。
示例69可包括示例68的主题的至少一部分,其中,使用体积数据结构在卷积操作中执行3D矩阵乘法操作。
示例70可包括示例67-69中的任一示例的主题的至少一部分,其中,操作集包括存储器取出。
示例71可包括示例70的主题的至少一部分,其中,存储器取出包括要与体积数据结构相乘的3D权重矩阵中的权重值的取出。
示例72可包括示例67-71中的任一示例的主题的至少一部分,其中,体积数据结构进一步包括第二条目的集合,第二条目中的每个第二条目表示处于多个细节层次中的第二细节层次的体素,第二条目中的每个第二条目与处于第一细节层次的体素中的、由二进制值中的相应的一个二进制值标识为包含几何结构的对应的一个体素相对应,并且第二条目中的每个第二条目包括用于处于第二细节层次的多个体素中的每个体素的、用于指示几何结构是否存在于处于第二细节层次的相应体素内的二进制值。
示例73可包括示例72的主题的至少一部分,其中,第一条目中的二进制值指示处于第一细节层次的第一数量的体素由几何结构占据且处于第一细节层次的第二数量的体素是空白的,第二条目的集合由第一数量的第二条目组成,在第二条目的集合中,对于处于第二细节层次的、表示处于第一细节层次的体素的被指示为空白的子体积的体素,条目被省略。
示例74可包括示例72-73中的任一示例的主题的至少一部分,其中,处于第一细节层次的体素包括64个体素,第一条目中的二进制值包括64个二进制值,并且处于第二细节层次的体素表示处于第一细节层次的64个体素中的每个体素的64个子体积。
示例75可包括示例67-74中的任一示例的主题的至少一部分,其中,跳过操作的第一部分包括:禁用电路系统的、用于执行操作的该部分的至少一部分。
示例76可包括示例67-75中的任一示例的主题的至少一部分,其中,体积数据结构中的每个体素由至少两个位表示,并且至少两个位中的一个位包括用于指示相应体素是否包括几何结构的二进制值。
示例77是一种装置,该装置包括:数据处理器;位图生成电路系统,该位图生成电路系统用于:标识神经网络内的多个层中的第一层的输出;以及从该输出确定包括二进制矩阵的位图;以及控制器,该控制器用于:基于位图确定对于多个层中的第二层要跳过的操作的特定子集;以及使得对于第二层要执行除操作的特定子集之外的操作,其中,操作的特定子集被跳过
示例78可包括示例77的主题的至少一部分,其中,神经网络包括卷积神经网络(CNN)。
示例79可包括示例77-78中的任一示例的主题的至少一部分,其中,操作的特定子集包括第二层的算术操作。
示例80可包括示例79的主题的至少一部分,其中,算术操作包括三维(3D)矩阵乘法操作。
示例81可包括示例80的主题的至少一部分,其中,3D乘法操作包括将特定3D矩阵中的元素与另一操作数相乘,并且操作的特定子集包括涉及特定3D矩阵中的元素的子集的乘法,其中,元素的子集具有值0。
示例82可包括示例81的主题的至少一部分,其中,操作的特定子集进一步包括另一操作数中要与元素的子集相乘的元素的存储器取出。
示例83可包括示例81-82中的任一示例的主题的至少一部分,其中,控制器进一步用于:确定位图中的值与特定3D矩阵中的相应元素之间的映射。
示例84可包括示例77-83中的任一示例的主题的至少一部分,其中,第一层包括修正线性单元(ReLU)层。
示例85可包括示例84的主题的至少一部分,其中,第二层包括卷积层和池化层中的一个。
示例86可包括示例84-85中的任一示例的主题的至少一部分,其中,标识ReLU层的输出包括:从对ReLU层的输入确定ReLU层的输出将包括多个0,并且位图基于多个0而生成。
示例87可包括示例84-85中的任一示例的主题的至少一部分,其中,标识ReLU层的输出包括:基于神经网络的在前的层中的操作数的符号来预测ReLU层的输出将包括0的集合。
示例88可包括示例87的主题的至少一部分,其中,在前的层包括卷积层和池化层中的一个。
示例89可包括示例77-88中的任一示例的主题的至少一部分,其中,位图包括3D位图。
示例90可包括示例77-89中的任一示例的主题的至少一部分,其中,位图中的“1”指示要执行的操作,并且位图中的“0”指示子集中要跳过的操作。
示例91可包括示例77-90中的任一示例的主题的至少一部分,其中,输出包括位图。
示例92可包括示例77-91中的任一示例的主题的至少一部分,其中,位图包括体积数据结构,该体积数据结构以多个细节层次表示特定体积内的几何结构,该特定体积包括处于多个细节层次中的第一最低细节层次的多个体素,体积数据结构中的第一条目用于表示处于第一细节层次的多个体素中的每个体素中的几何结构,第一条目包括用于处于第一细节层次的多个体素中的每个体素的二进制值,并且二进制值指示几何结构是否存在于特定体积的由相应的体素限定的对应子体积内。
因此,己经描述了本主题的特定实施例。其他实施例俱在以下权利要求的范围内。在一些情况下,权利要求书中所列举的动作可以用不同顺序来执行,并且仍然获得期望结果。此外,在附图中描绘的过程不一定需要所示出的特定顺序或相继顺序来实现所希望的结果。

Claims (38)

1.一种装置,包括:
数据处理器;
存储器,用于存储来自存储器的体积数据结构,其中,所述体积数据结构以多个细节层次表示特定体积内的几何结构,所述特定体积包括处于所述多个细节层次中的第一最低细节层次的多个体素,所述体积数据结构中的第一条目用于表示处于所述第一细节层次的所述多个体素中的每个体素中的几何结构,所述第一条目包括用于处于所述第一细节层次的所述多个体素中的每个体素的二进制值,并且所述二进制值指示几何结构是否存在于所述特定体积的由相应的体素限定的对应子体积内;
电路系统,所述电路系统用于:
至少部分地基于所述第一条目的所述二进制值从所述体积数据结构识别操作集的要跳过的第一部分,其中,所述操作集包括与所述体积数据结构相关联的操作;以及
使得所述操作集的除所述第一部分之外的第二部分被执行,其中,所述第一部分中的操作将被跳过。
2.如权利要求1所述的装置,其中,所述操作集包括三维(3D)矩阵乘法操作,并且所述体积数据结构包括3D矩阵。
3.如权利要求2所述的装置,其中,使用所述体积数据结构在卷积操作中执行所述3D矩阵乘法操作。
4.如权利要求1-3中的任一项所述的装置,其中,所述操作集包括存储器取出。
5.如权利要求4所述的装置,其中,所述存储器取出包括要与所述体积数据结构相乘的3D权重矩阵中的权重值的取出。
6.如权利要求1-5中的任一项所述的装置,其中,所述体积数据结构进一步包括第二条目的集合,所述第二条目中的每个第二条目表示处于所述多个细节层次中的第二细节层次的体素,所述第二条目中的每个第二条目与处于所述第一细节层次的体素中的、由所述二进制值中的相应的一个二进制值标识为包含几何结构的对应的一个体素相对应,并且所述第二条目中的每个第二条目包括用于处于所述第二细节层次的多个体素中的每个体素的、用于指示几何结构是否存在于处于所述第二细节层次的相应体素内的二进制值。
7.如权利要求6所述的装置,其中,所述第一条目中的二进制值指示处于所述第一细节层次的第一数量的体素由几何结构占据且处于所述第一细节层次的第二数量的体素是空白的,所述第二条目的集合由所述第一数量的第二条目组成,在所述第二条目的集合中,对于处于所述第二细节层次的、表示处于所述第一细节层次的体素的被指示为空白的子体积的体素,条目被省略。
8.如权利要求6-7中的任一项所述的装置,其中,处于所述第一细节层次的体素包括64个体素,所述第一条目中的二进制值包括64个二进制值,并且处于所述第二细节层次的体素表示处于所述第一细节层次的64个体素中的每个体素的64个子体积。
9.如权利要求1-8中的任一项所述的装置,其中,跳过操作的所述第一部分包括:禁用电路系统的、用于执行操作的所述第一部分的至少一部分。
10.如权利要求1-9中的任一项所述的装置,其中,所述体积数据结构中的每个体素由至少两个位表示,并且所述至少两个位中的一个位包括用于指示相应体素是否包括几何结构的二进制值。
11.一种装置,包括:
数据处理器;以及
位图生成电路系统,所述位图生成电路系统用于:
标识神经网络内的多个层中的第一层的输出;以及
从所述输出确定包括二进制矩阵的位图;
控制器,所述控制器用于:
基于所述位图确定对于所述多个层中的第二层要跳过的操作的特定子集;以及
使得对于所述第二层要执行除操作的所述特定子集之外的操作,其中,操作的所述特定子集被跳过。
12.如权利要求11所述的装置,其中,所述神经网络包括卷积神经网络(CNN)。
13.如权利要求11-12中的任一项所述的装置,其中,操作的所述特定子集包括所述第二层的算术操作。
14.如权利要求13所述的装置,其中,所述算术操作包括三维(3D)矩阵乘法操作。
15.如权利要求14所述的装置,其中,所述3D乘法操作包括将特定3D矩阵中的元素与另一操作数相乘,并且操作的所述特定子集包括涉及所述特定3D矩阵中的元素的子集的乘法,其中,所述元素的子集具有值0。
16.如权利要求15所述的装置,其中,操作的所述特定子集进一步包括所述另一操作数中要与所述元素的子集相乘的元素的存储器取出。
17.如权利要求15-16中的任一项所述的装置,其中,所述控制器进一步用于确定所述位图中的值与所述特定3D矩阵中的相应元素之间的映射。
18.如权利要求11-17中的任一项所述的装置,其中,所述第一层包括修正线性单元(ReLU)层。
19.如权利要求18所述的装置,其中,所述第二层包括卷积层和池化层中的一个。
20.如权利要求18-19中的任一项所述的装置,其中,标识所述ReLU层的所述输出包括:从对所述ReLU层的输入确定所述ReLU层的所述输出将包括多个0,并且所述位图基于所述多个0而生成。
21.如权利要求18-19中的任一项所述的装置,其中,标识所述ReLU层的所述输出包括:基于所述神经网络的在前的层中的操作数的符号来预测所述ReLU层的所述输出将包括0的集合。
22.如权利要求21所述的装置,其中,所述在前的层包括卷积层和池化层中的一个。
23.如权利要求11-22中的任一项所述的装置,其中,所述位图包括3D位图。
24.如权利要求11-23中的任一项所述的装置,其中,所述位图中的“1”指示要执行的操作,并且所述位图中的“0”指示子集中要跳过的操作。
25.如权利要求11-24中的任一项所述的装置,其中,所述输出包括所述位图。
26.如权利要求11-25中的任一项所述的装置,其中,所述位图包括体积数据结构,所述体积数据结构以多个细节层次表示特定体积内的几何结构,所述特定体积包括处于所述多个细节层次中的第一最低细节层次的多个体素,所述体积数据结构中的第一条目用于表示处于所述第一细节层次的多个体素中的每个体素中的几何结构,所述第一条目包括用于处于所述第一细节层次的所述多个体素中的每个体素的二进制值,并且所述二进制值指示几何结构是否存在于所述特定体积的由相应的体素限定的对应子体积内。
27.一种装置,包括:
数据处理装置;
位图生成电路系统,所述位图生成电路系统用于:
获取矩阵的值,所述矩阵用于被提供作为对人工神经网络内的多个层中的第一层的输入;
从所述值确定特定层的输出将包括输出值的集合,所述输出值的集合包括至少一些0;以及
生成包括二进制值的位图矩阵,所述二进制值用于指示所述特定层的所述输出中的相应值是否包括0值。
28.如权利要求27所述的装置,进一步包括调度器,所述调度器用于
从存储器获取位图矩阵,所述位图矩阵与用于使用所述神经网络中的所述多个层中的另一层的输出来执行的乘法相关联;以及
基于所述位图矩阵来跳过乘法操作中的用于在涉及所述矩阵中的0值的乘法中执行的子集。
29.如权利要求28所述的装置,其中,所述神经网络包括卷积神经网络,并且所述另一层包括卷积层或池化层中的一个。
30.如权利要求27-29中的任一项所述的装置,其中,所述特定层包括所述第一层,并且所述特定层包括修正线性单元(ReLU)层。
31.如权利要求30所述的装置,其中,所述特定层包括所述第一层,并且所述位图生成电路系统包括比较器,所述比较器用于判定输入值是否为负,其中,所述位图矩阵用于用由所述比较器从所述输入值生成的二进制值来填充。
32.如权利要求30所述的装置,其中,所述第一层包括在所述ReLU层之前的层,所述第一层的输出用于被提供作为对所述ReLU层的输入,所述位图生成电路系统包括异或(XOR)门,所述XOR门用于对用于在所述第一层中相乘的两个操作数中的每个操作数的至少一部分进行操作以生成所述ReLU层的所述输入,并且所述位图矩阵用于用由所述XOR门生成的二进制值来填充。
33.如权利要求27-32中的任一项所述的装置,其中,所述矩阵包括具有三个或更多个维度的矩阵。
34.一种系统,包括:
一个或多个光学传感器,用于生成光学数据;
体积数据生成器,用于从所述光学数据生成体积数据结构,其中,所述体积数据结构以多个细节层次表示特定体积内由所述光学传感器捕获的几何结构,所述特定体积包括处于所述多个细节层次中的第一最低细节层次的多个体素,所述体积数据结构中的第一条目用于表示处于所述第一细节层次的所述多个体素中的每个体素中的几何结构,所述第一条目包括用于处于所述第一细节层次的所述多个体素中的每个体素的二进制值,并且所述二进制值指示几何结构是否存在于所述特定体积的由相应的体素限定的对应子体积内。
35.如权利要求34所述的系统,进一步包括调度器,所述调度器用于
从存储器获取所述体积数据结构;以及
将所述体积数据结构用作位图,以便基于所述体积数据结构中的二进制值的包括0值的子集来标识乘法操作的要跳过的子集。
36.如权利要求34-35中的任一项所述的系统,进一步包括矩阵乘法处理器,所述矩阵乘法处理器用于使用所述体积数据结构来执行矩阵乘法。
37.如权利要求36所述的系统,其中,所述矩阵乘法被执行以与卷积神经网络中的卷积层或池化层中的一个相对应。
38.如权利要求34-37中的任一项所述的系统,其中所述体积数据生成器包括同步定位和建图(SLAM)流水线,所述SLAM流水线用于生成深度图,并且所述体积数据结构从所述深度图生成。
CN201780064277.2A 2016-08-19 2017-08-19 矩阵操作的动态剔除 Active CN110392903B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662377471P 2016-08-19 2016-08-19
US62/377,471 2016-08-19
PCT/US2017/047695 WO2018035506A1 (en) 2016-08-19 2017-08-19 Dynamic culling of matrix operations

Publications (2)

Publication Number Publication Date
CN110392903A true CN110392903A (zh) 2019-10-29
CN110392903B CN110392903B (zh) 2024-08-30

Family

ID=61197094

Family Applications (6)

Application Number Title Priority Date Filing Date
CN202410028163.4A Pending CN117764811A (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的操作
CN201780063370.1A Active CN110383340B (zh) 2016-08-19 2017-08-19 使用稀疏体积数据进行路径规划
CN201780064229.3A Active CN110494895B (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的渲染操作
CN201780064277.2A Active CN110392903B (zh) 2016-08-19 2017-08-19 矩阵操作的动态剔除
CN201780063371.6A Active CN110392902B (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的操作
CN202311170467.6A Pending CN117197314A (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的渲染操作

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN202410028163.4A Pending CN117764811A (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的操作
CN201780063370.1A Active CN110383340B (zh) 2016-08-19 2017-08-19 使用稀疏体积数据进行路径规划
CN201780064229.3A Active CN110494895B (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的渲染操作

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201780063371.6A Active CN110392902B (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的操作
CN202311170467.6A Pending CN117197314A (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的渲染操作

Country Status (5)

Country Link
US (13) US11037361B2 (zh)
EP (5) EP3501010B1 (zh)
KR (1) KR102546996B1 (zh)
CN (6) CN117764811A (zh)
WO (4) WO2018035507A1 (zh)

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017200527A1 (en) * 2016-05-16 2017-11-23 Hewlett-Packard Development Company, L.P. Generating a shape profile for a 3d object
WO2017217191A1 (ja) * 2016-06-14 2017-12-21 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置及び三次元データ復号装置
DE112016007098T5 (de) * 2016-07-26 2019-04-18 Hewlett-Packard Development Company, L.P. Indexierung von voxeln für das 3d-drucken
EP3501010B1 (en) 2016-08-19 2023-11-01 Movidius Ltd. Rendering operations using sparse volumetric data
KR20180034853A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 합성곱 신경망의 연산 장치 및 방법
AU2017361061B2 (en) * 2016-11-15 2022-02-03 Magic Leap, Inc. Deep learning system for cuboid detection
US10878310B2 (en) * 2016-11-29 2020-12-29 Mellanox Technologies, Ltd. Accelerated convolution in convolutional neural networks
US10579121B2 (en) * 2017-04-01 2020-03-03 Intel Corporation Processor power management
WO2018209710A1 (zh) * 2017-05-19 2018-11-22 华为技术有限公司 一种图像处理方法及装置
CN110741630B (zh) * 2017-06-14 2022-06-21 株式会社半导体能源研究所 摄像装置及电子设备
EP3580691B1 (en) * 2017-08-31 2020-07-01 FotoNation Limited A peripheral processing device
EP3680259B1 (en) * 2017-09-04 2023-08-16 Bridgestone Corporation Polymerization catalyst composition, polymer production method, polymer, rubber composition, and tire
US10265138B2 (en) 2017-09-18 2019-04-23 MediVis, Inc. Methods and systems for generating and using 3D images in surgical settings
GB2567244A (en) * 2017-10-09 2019-04-10 Nokia Technologies Oy Spatial audio signal processing
US10762620B2 (en) * 2017-11-27 2020-09-01 Nvidia Corporation Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene
US11270161B2 (en) * 2017-11-27 2022-03-08 Nvidia Corporation Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene
US11403816B2 (en) * 2017-11-30 2022-08-02 Mitsubishi Electric Corporation Three-dimensional map generation system, three-dimensional map generation method, and computer readable medium
US12086705B2 (en) * 2017-12-29 2024-09-10 Intel Corporation Compute optimization mechanism for deep neural networks
FR3078601B1 (fr) * 2018-03-05 2020-10-30 Ioterop Dispositif, systeme et procede de reamenagement d'un objet connecte existant
AU2019231701A1 (en) * 2018-03-06 2020-10-15 Southern Oregon University Systems and methods for location representation using a discrete global grid system
US11734477B2 (en) * 2018-03-08 2023-08-22 Concurrent Technologies Corporation Location-based VR topological extrusion apparatus
US11062469B2 (en) * 2018-03-09 2021-07-13 Microsoft Technology Licensing, Llc 4D tracking utilizing depth data from multiple 3D cameras
US10748306B2 (en) * 2018-03-19 2020-08-18 Fuji Xerox Co., Ltd. Encoding device, decoding device, and non-transitory computer readable medium
JP7121523B2 (ja) * 2018-04-10 2022-08-18 キヤノン株式会社 画像表示装置、画像表示方法
US10558430B2 (en) * 2018-04-17 2020-02-11 Fotonation Limited Neural network engine
US10950031B2 (en) 2018-05-14 2021-03-16 Apple Inc. Techniques for locating virtual objects relative to real physical objects
US10521964B1 (en) * 2018-06-14 2019-12-31 Dell Products, L.P. Switching among disparate simultaneous localization and mapping (SLAM) methods in virtual, augmented, and mixed reality (xR) applications
CN110832275B (zh) 2018-06-14 2021-05-18 北京嘀嘀无限科技发展有限公司 基于双目图像更新高分辨率地图的系统和方法
GB2570743B (en) * 2018-06-29 2021-06-23 Imagination Tech Ltd Tile assignment to processing cores within a graphics processing unit
EP3735658A1 (en) * 2018-07-12 2020-11-11 Huawei Technologies Co. Ltd. Generating a compressed representation of a neural network with proficient inference speed and power consumption
GB2575891A (en) * 2018-07-18 2020-01-29 Peerless Ltd Accelerator subsystem with GPU, transportation route price system, cache and method of acceleration of a permutation analysis therefor
KR101953516B1 (ko) * 2018-08-06 2019-02-28 부산대학교 산학협력단 적응적인 데이터율 조절 방법 및 적응적인 데이터율 조절 시스템
US10672178B2 (en) * 2018-08-08 2020-06-02 Alvin D. Zimmerman Ray traversal with virtual grids
JP7485482B2 (ja) * 2018-08-29 2024-05-16 モビディウス リミテッド コンピュータビジョンシステム
US11467973B1 (en) * 2018-09-28 2022-10-11 Amazon Technologies, Inc. Fine-grained access memory controller
US11663938B2 (en) * 2018-10-08 2023-05-30 Telefonaktiebolaget Lm Ericsson (Publ) Viewing device and method for providing virtual content overlapping visual objects
US10834543B2 (en) * 2018-11-26 2020-11-10 International Business Machines Corporation Creating a social group with mobile phone vibration
US11995854B2 (en) * 2018-12-19 2024-05-28 Nvidia Corporation Mesh reconstruction using data-driven priors
EP3671660A1 (en) * 2018-12-20 2020-06-24 Dassault Systèmes Designing a 3d modeled object via user-interaction
KR102350181B1 (ko) * 2019-01-30 2022-01-11 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 자율 주행 차량에서 rnn 및 lstm을 사용하여 시간적 평활화를 수행하는 lidar 위치 추정
US12014505B2 (en) * 2019-01-31 2024-06-18 Samsung Electronics Co., Ltd. Method and apparatus with convolution neural network processing using shared operand
US11866167B2 (en) * 2019-04-10 2024-01-09 Rhoman Aerospace Corporation Method and algorithm for flight, movement, autonomy, in GPS, communication, degraded, denied, obstructed non optimal environment
US11188671B2 (en) 2019-04-11 2021-11-30 Bank Of America Corporation Distributed data chamber system
US10698562B1 (en) * 2019-04-30 2020-06-30 Daqri, Llc Systems and methods for providing a user interface for an environment that includes virtual objects
KR20200133863A (ko) * 2019-05-20 2020-12-01 삼성전자주식회사 첨단 운전자 지원 장치, 이의 캘리브레이션 방법 및 이의 객체를 검출하는 방법
JP7268481B2 (ja) * 2019-05-22 2023-05-08 トヨタ自動車株式会社 情報処理装置、自律走行車両、情報処理方法及びプログラム
US20220221558A1 (en) * 2019-05-31 2022-07-14 Volkswagen Aktiengesellschaft System, method, and components utilizing live point cloud compression
US11277277B2 (en) * 2019-06-03 2022-03-15 International Business Machines Corporation Indoor environment personalization preferences
US10964043B2 (en) * 2019-06-05 2021-03-30 Icatch Technology, Inc. Method and measurement system for measuring dimension and/or volume of an object by eliminating redundant voxels
CN110210456A (zh) * 2019-06-19 2019-09-06 贵州理工学院 一种基于3d卷积神经网络的头部姿态估计方法
DE102019116715A1 (de) * 2019-06-20 2020-12-24 Gritworld GmbH Computerimplementiertes Verfahren und programmierbares System zum Rendern eines 2D/3D-Modells
US20220327742A1 (en) * 2019-06-26 2022-10-13 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method
WO2021002633A2 (ko) * 2019-07-04 2021-01-07 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
CN112215880B (zh) * 2019-07-10 2022-05-06 浙江商汤科技开发有限公司 一种图像深度估计方法及装置、电子设备、存储介质
US11754715B2 (en) * 2019-07-11 2023-09-12 Baidu Usa Llc Point cloud format optimized for LiDAR data storage based on device property
CN110347163B (zh) * 2019-08-07 2022-11-18 京东方科技集团股份有限公司 一种无人驾驶设备的控制方法、设备及无人驾驶控制系统
US11120611B2 (en) * 2019-08-22 2021-09-14 Microsoft Technology Licensing, Llc Using bounding volume representations for raytracing dynamic units within a virtual space
US11958183B2 (en) 2019-09-19 2024-04-16 The Research Foundation For The State University Of New York Negotiation-based human-robot collaboration via augmented reality
US11120101B2 (en) * 2019-09-27 2021-09-14 Arm Limited Matrix multiplication system and method
GB2588229A (en) * 2019-10-18 2021-04-21 Sony Interactive Entertainment Inc Navigation system and method
CN110807287B (zh) * 2019-11-05 2020-12-29 广东电网有限责任公司 基于有限元网格在应急抢修布点场景中划分业务网格构建方法
US11145117B2 (en) * 2019-12-02 2021-10-12 At&T Intellectual Property I, L.P. System and method for preserving a configurable augmented reality experience
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
JP7434577B2 (ja) * 2020-01-09 2024-02-20 エルジー エレクトロニクス インコーポレイティド ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置及びポイントクラウドデータ受信方法
WO2021155308A1 (en) * 2020-01-29 2021-08-05 Boston Polarimetrics, Inc. Systems and methods for pose detection and measurement
JP2023513746A (ja) * 2020-02-14 2023-04-03 マジック リープ, インコーポレイテッド マルチアプリケーションオーディオレンダリング
US11568021B2 (en) 2020-02-21 2023-01-31 Alibaba Group Holding Limited Vector-vector multiplication techniques for processing systems
CN111353992B (zh) * 2020-03-10 2023-04-07 塔里木大学 一种基于纹理特征的农产品缺陷检测方法及系统
KR102355634B1 (ko) * 2020-04-14 2022-02-08 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
CN111680626A (zh) * 2020-06-09 2020-09-18 重庆大学 一种基于多层卷积神经网络的水环境遥感数据建模方法
US11709225B2 (en) * 2020-06-19 2023-07-25 Nxp B.V. Compression of data employing variable mantissa size
US20210407039A1 (en) * 2020-06-30 2021-12-30 Intel Corporation Apparatus and method for approximate trilinear interpolation for scene reconstruction
US20210407168A1 (en) * 2020-06-30 2021-12-30 Intel Corporation Apparatus and method for approximate trilinear interpolation for scene reconstruction
US11257281B2 (en) * 2020-07-10 2022-02-22 Cesium GS, Inc. Systems and methods for adaptive visual and temporal quality of time-dynamic (4D) volume rendering
JP7341387B2 (ja) * 2020-07-30 2023-09-11 オムロン株式会社 モデル生成方法、探索プログラム及びモデル生成装置
CN112090078B (zh) * 2020-08-13 2021-10-15 深圳中清龙图网络技术有限公司 游戏角色移动控制方法、装置、设备和介质
CN112068791B (zh) * 2020-09-04 2024-01-23 京东方科技集团股份有限公司 旋转显示设备的显示数据的存储方法、寻址方法及设备
CN112364693B (zh) * 2020-10-12 2024-04-16 星火科技技术(深圳)有限责任公司 基于双目视觉的障碍识别方法、装置、设备及存储介质
CN112002021B (zh) * 2020-10-30 2021-01-22 成都四方伟业软件股份有限公司 一种基于unity3d的聚合打点可视化方法及装置
CN112295225B (zh) * 2020-11-02 2021-08-10 不鸣科技(杭州)有限公司 一种寻路网格的多线程更新方法
US11657522B2 (en) * 2020-11-11 2023-05-23 Toyota Research Institute, Inc. Sparse auxiliary network for depth completion
US11861328B2 (en) 2020-11-11 2024-01-02 Samsung Electronics Co., Ltd. Processor for fine-grain sparse integer and floating-point operations
US11861327B2 (en) 2020-11-11 2024-01-02 Samsung Electronics Co., Ltd. Processor for fine-grain sparse integer and floating-point operations
US12028507B2 (en) 2021-03-11 2024-07-02 Quintar, Inc. Augmented reality system with remote presentation including 3D graphics extending beyond frame
US11645819B2 (en) 2021-03-11 2023-05-09 Quintar, Inc. Augmented reality system for viewing an event with mode based on crowd sourced images
US11657578B2 (en) 2021-03-11 2023-05-23 Quintar, Inc. Registration for augmented reality system for viewing an event
US12003806B2 (en) * 2021-03-11 2024-06-04 Quintar, Inc. Augmented reality system for viewing an event with multiple coordinate systems and automatically generated model
US11527047B2 (en) 2021-03-11 2022-12-13 Quintar, Inc. Augmented reality system for viewing an event with distributed computing
CN113365370B (zh) * 2021-05-24 2022-09-02 内蒙古工业大学 一种基于LoRa技术的智能移动系统
CN113419539B (zh) * 2021-07-14 2022-07-01 燕山大学 具有复杂地形可通过性判断的移动机器人路径规划方法
DE102021208822A1 (de) * 2021-08-12 2023-02-16 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zur Verlustreduzierung bei einer Kommunikationsschnittstelle
CN113506339A (zh) * 2021-09-10 2021-10-15 北京科技大学 设备的工作功率的控制方法、装置及存储介质
US11417069B1 (en) * 2021-10-05 2022-08-16 Awe Company Limited Object and camera localization system and localization method for mapping of the real world
US20230215108A1 (en) * 2021-12-31 2023-07-06 Samsung Electronics Co., Ltd. System and method for adaptive volume-based scene reconstruction for xr platform applications
CN114371998B (zh) * 2021-12-31 2024-06-11 华南理工大学 一种基于考虑约束的并行广度优先搜索的架构测试方法
US12118667B2 (en) * 2022-06-13 2024-10-15 Verizon Patent And Licensing Inc. Methods and systems for unified rendering of light and sound content for a simulated 3D environment
US11776206B1 (en) 2022-12-23 2023-10-03 Awe Company Limited Extended reality system and extended reality method with two-way digital interactive digital twins
US12117979B1 (en) * 2023-08-01 2024-10-15 Sap Se Timestamp-based deletions for interdependent data objects
CN117312608B (zh) * 2023-08-14 2024-06-04 河海大学 一种基于深度优先搜索的河网节点简并方法
CN116805347B (zh) * 2023-08-22 2023-11-10 中国电子科技集团公司第十五研究所 基于体数据六边界面几何构型的体纹理镀膜插值方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050285858A1 (en) * 2004-06-25 2005-12-29 Siemens Medical Solutions Usa, Inc. System and method for fast volume rendering
US20110228055A1 (en) * 2010-03-22 2011-09-22 Microsoft Corporation Space skipping for multi-dimensional image rendering
CN102918495A (zh) * 2010-01-07 2013-02-06 线性代数技术有限公司 用于执行算术运算的硬件

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5652851A (en) * 1993-07-21 1997-07-29 Xerox Corporation User interface technique for producing a second image in the spatial context of a first image using a model-based operation
US5983251A (en) * 1993-09-08 1999-11-09 Idt, Inc. Method and apparatus for data analysis
US6694163B1 (en) * 1994-10-27 2004-02-17 Wake Forest University Health Sciences Method and system for producing interactive, three-dimensional renderings of selected body organs having hollow lumens to enable simulated movement through the lumen
US5548694A (en) * 1995-01-31 1996-08-20 Mitsubishi Electric Information Technology Center America, Inc. Collision avoidance system for voxel-based object representation
US6160907A (en) * 1997-04-07 2000-12-12 Synapix, Inc. Iterative three-dimensional process for creating finished media content
FI116990B (fi) * 1997-10-20 2006-04-28 Nokia Oyj Menetelmä ja järjestelmä akustisen virtuaaliympäristön käsittelemiseksi
AU2001239926A1 (en) * 2000-02-25 2001-09-03 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
US7301538B2 (en) * 2003-08-18 2007-11-27 Fovia, Inc. Method and system for adaptive direct volume rendering
US7692648B2 (en) 2006-01-18 2010-04-06 Siemens Medical Solutions Usa, Inc. System and method for empty space skipping in sliding texture based volume rendering by trimming slab polygons
US20080024494A1 (en) * 2006-07-25 2008-01-31 Perumal Poopathy Method and system for image based rendering large volumetric datasets
US8049752B2 (en) * 2006-07-25 2011-11-01 Siemens Medical Solutions Usa, Inc. Systems and methods of determining sampling rates for volume rendering
GB2447494A (en) 2007-03-15 2008-09-17 Linear Algebra Technologies Lt A method and circuit for compressing data using a bitmap to identify the location of data values
US8605947B2 (en) 2008-04-24 2013-12-10 GM Global Technology Operations LLC Method for detecting a clear path of travel for a vehicle enhanced by object detection
US20100010786A1 (en) 2008-07-08 2010-01-14 Cynthia Maxwell Sound synthesis method and software system for shape-changing geometric models
US8190585B2 (en) * 2010-02-17 2012-05-29 Lockheed Martin Corporation Supporting multiple different applications having different data needs using a voxel database
EP2643820B1 (en) * 2010-11-24 2018-01-24 Google LLC Rendering and navigating photographic panoramas with depth information in a geographic information system
US8847965B2 (en) * 2010-12-03 2014-09-30 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for fast geometric sound propagation using visibility computations
USRE48083E1 (en) * 2011-01-17 2020-07-07 Stc.Unm System and methods for random parameter filtering
US9116011B2 (en) * 2011-10-21 2015-08-25 Here Global B.V. Three dimensional routing
US20140100839A1 (en) * 2012-09-13 2014-04-10 David Joseph Arendash Method for controlling properties of simulated environments
US9488492B2 (en) 2014-03-18 2016-11-08 Sri International Real-time system for multi-modal 3D geospatial mapping, object recognition, scene annotation and analytics
US9398393B2 (en) * 2012-12-11 2016-07-19 The University Of North Carolina At Chapel Hill Aural proxies and directionally-varying reverberation for interactive sound propagation in virtual environments
US20140270182A1 (en) * 2013-03-14 2014-09-18 Nokia Corporation Sound For Map Display
GB2549217B (en) * 2013-03-14 2017-11-22 Imagination Tech Ltd 3-D Graphics rendering with implicit geometry
US20140368504A1 (en) 2013-06-12 2014-12-18 Microsoft Corporation Scalable volumetric 3d reconstruction
US20150294041A1 (en) * 2013-07-11 2015-10-15 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for simulating sound propagation using wave-ray coupling
US9984498B2 (en) 2013-07-17 2018-05-29 Microsoft Technology Licensing, Llc Sparse GPU voxelization for 3D surface reconstruction
US9400930B2 (en) * 2013-09-27 2016-07-26 Qualcomm Incorporated Hybrid photo navigation and mapping
US9761037B2 (en) * 2013-10-17 2017-09-12 Nvidia Corporation Graphics processing subsystem and method for updating voxel representation of a scene
US20170109462A1 (en) * 2013-11-27 2017-04-20 Akademia Gorniczo-Hutnicza Im. Stanislawa Staszica W Krakowie System and a method for determining approximate set of visible objects in beam tracing
EP3125765A4 (en) 2014-03-04 2018-04-18 The Trustees of Columbia University in the City of New York Regularization of images
US9971335B2 (en) * 2014-04-11 2018-05-15 Thomas Marshall Tucker Hybrid dynamic tree data structure and accessibility mapping for computer numerical controlled machining path planning
US10679407B2 (en) * 2014-06-27 2020-06-09 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for modeling interactive diffuse reflections and higher-order diffraction in virtual environment scenes
US9418458B2 (en) 2015-01-05 2016-08-16 Superfish Ltd. Graph image representation from convolutional neural networks
US11370422B2 (en) * 2015-02-12 2022-06-28 Honda Research Institute Europe Gmbh Method and system in a vehicle for improving prediction results of an advantageous driver assistant system
US20160239706A1 (en) 2015-02-13 2016-08-18 Qualcomm Incorporated Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks
US10176642B2 (en) * 2015-07-17 2019-01-08 Bao Tran Systems and methods for computer assisted operation
US9754405B1 (en) * 2015-08-10 2017-09-05 Ngrain (Canada) Corporation System, method and computer-readable medium for organizing and rendering 3D voxel models in a tree structure
US10643381B2 (en) * 2016-01-12 2020-05-05 Qualcomm Incorporated Systems and methods for rendering multiple levels of detail
AU2017227708A1 (en) 2016-03-01 2018-10-18 ARIS MD, Inc. Systems and methods for rendering immersive environments
US9760690B1 (en) 2016-03-10 2017-09-12 Siemens Healthcare Gmbh Content-based medical image rendering based on machine learning
US10078333B1 (en) * 2016-04-17 2018-09-18 X Development Llc Efficient mapping of robot environment
NZ748891A (en) * 2016-05-28 2019-12-20 Acoustic Knowledge Llc Digital camera system for acoustic modeling
US10134182B1 (en) * 2016-06-23 2018-11-20 Zoox, Inc. Large scale dense mapping
EP3501010B1 (en) * 2016-08-19 2023-11-01 Movidius Ltd. Rendering operations using sparse volumetric data
CN114806540A (zh) 2021-01-20 2022-07-29 三星显示有限公司 量子点及包含量子点的油墨组合物、光学构件和电子器件
US11915436B1 (en) * 2021-08-30 2024-02-27 Zoox, Inc. System for aligning sensor data with maps comprising covariances

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050285858A1 (en) * 2004-06-25 2005-12-29 Siemens Medical Solutions Usa, Inc. System and method for fast volume rendering
CN102918495A (zh) * 2010-01-07 2013-02-06 线性代数技术有限公司 用于执行算术运算的硬件
US20110228055A1 (en) * 2010-03-22 2011-09-22 Microsoft Corporation Space skipping for multi-dimensional image rendering

Also Published As

Publication number Publication date
US20200158514A1 (en) 2020-05-21
US20240011777A1 (en) 2024-01-11
US20220148251A1 (en) 2022-05-12
CN110392903B (zh) 2024-08-30
CN110383340A (zh) 2019-10-25
CN117764811A (zh) 2024-03-26
US20220237855A1 (en) 2022-07-28
CN110383340B (zh) 2023-07-04
US11222459B2 (en) 2022-01-11
EP3501008A4 (en) 2020-04-22
US20190188899A1 (en) 2019-06-20
EP3501011A4 (en) 2020-09-09
CN110392902A (zh) 2019-10-29
US20240219181A1 (en) 2024-07-04
EP3501009A4 (en) 2020-02-12
US20210118217A1 (en) 2021-04-22
EP3501010B1 (en) 2023-11-01
US20190180499A1 (en) 2019-06-13
WO2018035507A1 (en) 2018-02-22
EP3501008A1 (en) 2019-06-26
CN110494895B (zh) 2023-09-19
KR20190111007A (ko) 2019-10-01
US11920934B2 (en) 2024-03-05
EP3501010A1 (en) 2019-06-26
KR102546996B1 (ko) 2023-06-26
CN110392902B (zh) 2024-01-12
EP3501011A1 (en) 2019-06-26
US11680803B2 (en) 2023-06-20
EP3501009A1 (en) 2019-06-26
WO2018035505A1 (en) 2018-02-22
US11037361B2 (en) 2021-06-15
US20240094003A1 (en) 2024-03-21
US20240118086A1 (en) 2024-04-11
US20190180409A1 (en) 2019-06-13
US20230044729A1 (en) 2023-02-09
US11367246B2 (en) 2022-06-21
US12085392B2 (en) 2024-09-10
EP3501010A4 (en) 2020-02-19
WO2018035506A1 (en) 2018-02-22
WO2018035508A1 (en) 2018-02-22
US10861217B2 (en) 2020-12-08
US11965743B2 (en) 2024-04-23
US20210065429A1 (en) 2021-03-04
EP4446984A2 (en) 2024-10-16
CN117197314A (zh) 2023-12-08
US11593987B2 (en) 2023-02-28
CN110494895A (zh) 2019-11-22
US10748326B2 (en) 2020-08-18

Similar Documents

Publication Publication Date Title
CN110392903A (zh) 矩阵操作的动态剔除
JP7560021B2 (ja) 深層学習システム
US11532117B2 (en) Density coordinate hashing for volumetric data

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