CN111656390B - 用于机器学习的图像变换 - Google Patents

用于机器学习的图像变换 Download PDF

Info

Publication number
CN111656390B
CN111656390B CN201980010446.3A CN201980010446A CN111656390B CN 111656390 B CN111656390 B CN 111656390B CN 201980010446 A CN201980010446 A CN 201980010446A CN 111656390 B CN111656390 B CN 111656390B
Authority
CN
China
Prior art keywords
pixel
coordinate
horizontal
image
vertical
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
CN201980010446.3A
Other languages
English (en)
Other versions
CN111656390A (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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Priority to CN202310810057.7A priority Critical patent/CN116933891A/zh
Publication of CN111656390A publication Critical patent/CN111656390A/zh
Application granted granted Critical
Publication of CN111656390B publication Critical patent/CN111656390B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/18Image warping, e.g. rearranging pixels individually
    • 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/4007Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Neurology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Electrically Operated Instructional Devices (AREA)

Abstract

方法、系统和装置,包括用于确定图像变换的像素坐标和用于存储变换后的图像数据的存储器地址的装置。在一些实现方式中,一种系统包括:处理单元,该处理单元被配置成使用机器学习模型和图像的像素值来对图像执行机器学习计算;存储介质,该存储介质被配置成存储像素值;以及存储器地址计算单元,该存储器地址计算单元包括一个或多个硬件处理器。处理器被配置成接收图像的图像数据并且确定图像的尺寸与机器学习模型的尺寸不匹配。作为响应,处理器确定图像的变换版本的像素坐标,并且对于像素坐标中的每一个,确定在存储介质中用于存储将用于生成机器学习模型的输入的像素值的存储器地址。

Description

用于机器学习的图像变换
背景技术
机器学习能够用于对图像进行分类。例如,神经网络能够用于基于图像的视觉特征对图像进行分类。神经网络是采用一个或多个层来对于接收到的输入例如图像的特征生成输出例如图像的分类的机器学习模型。一些神经网络除了包括外层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的下一个层即网络的下一个隐藏层或输出层的输入。网络的每个层依照相应的参数的集合的当前值从接收到的输入生成输出。
一些神经网络包括一个或多个卷积神经网络层。每个卷积神经网络层具有关联的内核的集合。能够将内核表示为权重输入的矩阵结构。每个卷积层都使用内核来处理该层的输入。也能够将该层的输入的集合表示为矩阵结构。
神经网络被配置成接收特定形状的图像。但是,将使用神经网络来分类的一些图像可以具有与所配置的形状不同的形状。
发明内容
本说明书描述了与专用计算单元有关的技术,该专用计算单元确定图像变换用像素坐标和用于存储变换后的图像数据的存储器地址。
通常,能够在包括处理单元的系统中体现本说明书中描述的主题的一个创新方面,该处理单元被配置成使用机器学习模型和图像的像素值来对图像执行机器学习计算。机器学习模型能够被配置成处理具有特定尺寸的图像。该系统能够包括:存储介质,该存储介质被配置成存储图像的像素值;和存储器地址计算单元,该存储器地址计算单元包括一个或多个硬件处理器。该一个或多个硬件处理器能够被配置成接收图像的图像数据。该图像数据能够指定图像的尺寸。图像的尺寸能够指定水平像素尺寸和垂直像素尺寸。水平像素尺寸是沿着图像的水平尺寸的像素的数目并且垂直像素尺寸是沿着图像的垂直尺寸的像素的数目。
一个或多个硬件处理器能够被配置成:确定图像的尺寸与特定尺寸不匹配;并且响应于确定图像的尺寸与特定尺寸不匹配,基于图像的尺寸和特定尺寸,确定图像的水平像素步幅和垂直像素步幅,并且使用水平像素步幅和垂直像素步幅来确定输入图像的变换版本的像素坐标。每个像素坐标包括垂直坐标和水平坐标。像素步幅是用于将原始图像尺寸转换为特定尺寸的因素。
对于像素坐标中的每一个,一个或多个硬件处理器能够被配置成:确定在存储介质中用于存储将用于对于像素坐标生成机器学习模型的输入的一个或多个像素值的一个或多个存储器地址,并且将每个存储器地址输出到处理单元。每个像素坐标的一个或多个存储器地址基于像素坐标的垂直坐标和水平坐标。
这些和其它实现方式能够各自任选地包括以下特征中的一个或多个。在一些方面中,处理单元使用每个存储器地址来访问存储在存储器地址处的像素值并且基于存储在存储器地址处的像素值来执行机器学习计算。
在一些方面中,存储器计算单元包括用于存储水平坐标的当前值的一个或多个第一硬件存储电路和用于存储垂直坐标的当前值的一个或多个第二硬件存储电路。一个或多个处理器能够通过以下步骤确定图像的像素坐标:确定包括初始水平坐标和初始垂直坐标的初始像素坐标;将初始水平坐标存储在一个或多个第一硬件存储电路中;将初始垂直坐标存储在一个或多个第二硬件存储电路中;对于用于遍历图像的水平像素尺寸的第一循环的每次迭代,通过在第一循环的每次迭代之后将水平像素步幅加到水平坐标的当前值来更新水平坐标的当前值;以及对于用于遍历图像的垂直像素尺寸的第二循环的每次迭代,通过在第一第二循环的每次迭代之后将垂直像素步幅加到垂直坐标的当前值来更新垂直坐标的当前值。
在一些方面中,所确定的每个像素坐标的存储器地址与在存储介质中用于存储像素坐标的最近邻像素的像素值的位置相对应。每个最近邻像素处的像素值能够由处理单元用作机器学习模型的输入。
在一些方面中,确定在存储介质中用于存储将用于对于像素坐标生成机器学习模型的输入的一个或多个像素值的一个或多个存储器地址包括:对于第一循环或第二循环的每次迭代,识别存储在一个或多个第一硬件存储电路中的水平坐标的当前值;识别存储在一个或多个第二硬件存储电路中的垂直坐标的当前值;以及基于水平坐标的当前值和垂直坐标的当前值来确定与水平坐标的当前值和垂直坐标的当前值相对应的像素坐标的存储器地址。
在一些方面中,确定与水平坐标的当前值和垂直坐标的当前值相对应的像素坐标的存储器地址包括:基于水平坐标的当前值与第一维度乘数的乘积来确定第一部分地址值;基于垂直坐标的当前值与第二维度乘数的乘积来确定第二部分地址值;以及通过确定第一部分地址值和第二部分地址值之和来确定与水平坐标的当前值和垂直坐标的当前值相对应的像素坐标的存储器地址。
在一些方面中,与水平坐标的当前值和垂直坐标的当前值相对应的像素坐标的存储器地址等于第一部分地址值、第二部分地址值和存储器基地址之和。能够将第一循环嵌套在第二循环内或者能够将第二循环嵌套在第一循环内。
在一些方面中,确定在存储介质中用于存储将用于对于像素坐标生成机器学习模型的输入的一个或多个像素值的一个或多个存储器地址包括为四个像素坐标中的每一个确定相应的存储器地址以用于在像素坐标的像素值的双线性插值中使用。这能够包括,对于第一循环或第二循环的每次迭代:识别存储在一个或多个第一硬件存储电路中的水平坐标的当前值;识别存储在一个或多个第二硬件存储电路中的垂直坐标的当前值;识别垂直偏移值;识别水平偏移值;对于四个像素坐标中的第一像素坐标,基于水平坐标的当前值和垂直坐标的当前值之和来确定用于存储第一像素坐标的第一像素值的第一存储器地址;对于四个像素坐标中的第二像素坐标,基于水平坐标的当前值、垂直坐标的当前值和垂直偏移值之和来确定用于存储第二像素坐标的第二像素值的第二存储器地址;对于四个像素坐标中的第三像素坐标,基于水平坐标的当前值、垂直坐标的当前值和水平偏移值之和来确定用于存储第三像素坐标的第三像素值的第三存储器地址;以及对于四个像素坐标中的第四像素坐标,基于水平坐标的当前值、垂直坐标的当前值、垂直偏移值和水平偏移值之和来确定用于存储第四像素坐标的第四像素值的第四存储器地址。
在一些方面中,垂直偏移值至少基于图像中的水平像素的数目并且水平偏移值等于一。一个或多个处理器能够为四个像素坐标中的每一个确定双线性插值权重并且将每个权重输出到处理单元。处理单元能够使用四个像素坐标中的每一个处的像素值和用于四个像素坐标中的每一个的权重来为机器学习模型确定输入像素值。用于四个像素坐标中的每一个的权重能够基于像素坐标的水平坐标的分数部分和像素坐标的垂直坐标的分数部分。
在一些方面中,处理单元被配置成:通过对于像素坐标中的每一个根据存储在像素坐标的一个或多个存储器地址中的像素值确定一个或多个颜色值来生成机器学习模型的输入;并且使用机器学习模型来处理所生成的输入以生成机器学习输出。
能够在特定实施例中实现本说明书中描述的主题以便实现以下优点中的一个或多个。由机器学习处理器确定变换后的图像的像素坐标和用于存储像素坐标的像素值的存储器地址减少了对不具有机器学习模型被配置成处理的特定形状的图像执行机器学习计算时的等待时间。例如,机器学习处理器能够在芯片上变换图像,而不必将图像发送回到另一计算系统以进行变换。这也增加了机器学习处理器的处理吞吐量,因为处理器能够继续处理图像数据,而无需等待另一计算系统执行变换。
能够使用简单算术以较少的指令在深度嵌套的循环上迭代的专用计算单元允许在图像具有更高的吞吐量和减少的等待时间情况下调整大小。计算单元的寄存器能够用于跟踪图像的像素坐标并且跟踪用于确定像素数据的存储器地址的存储器地址值。能够通过基于存储在寄存器中的值应用简单算术计算来快速地确定存储器地址值。使用简单算术计算并通过执行机器学习计算的分开的处理器而不是处理单元来确定像素值的存储器地址(和任选地相应的权重)允许减少处理单元的计算周期的数目,并且增加处理单元的带宽以进行更多的机器学习计算。
将像素坐标值分成整数部分和分数部分允许相同的分数值用于确定像素值的存储器地址和用于双线性插值的权重。这允许降低机器学习处理器的存储器存储需求,减少被执行的计算的数目(例如,没有对用于确定权重的像素之间的距离的单独计算),并且减少确定权重所需的指令的数目,这进一步降低存储器存储需求。
这个和其它方面的其它实现方式包括被配置成执行在计算机存储设备上编码的方法的动作的对应系统、方法和计算机程序。能够借助于安装在系统上的软件、固件、硬件或它们的组合来如此配置一个或多个计算机的系统,这些软件、固件、硬件或它们的组合在操作中使系统执行动作。能够借助于具有当由数据处理装置执行时使该装置执行动作的指令如此配置一个或多个计算机程序。
在以下附图和描述中阐述了本说明书中描述的主题的一个或多个实现方式的细节。根据说明书、附图和权利要求书,本主题的其它潜在特征、方面和优点将变得显而易见。
附图说明
图1是示例计算系统的框图。
图2是图示图像的双线性插值的图。
图3是图示用于确定图像数据的存储器地址的示例过程的流程图。
图4是图示用于确定图像数据的存储器地址的另一示例过程的流程图。
图5是图示用于确定图像数据的存储器地址和双线性插值的权重的示例过程的流程图。
在各个附图中,相似的附图标记和名称指示相似的元素。
具体实施方式
通常,循环嵌套可以用于处理N维规则数组,在下文中称为“张量”。每个循环能够负责遍历N维张量的相应维度。多维张量可以是矩阵或多维矩阵。例如,二维张量是矩阵,然而三维张量是由多个二维矩阵组成的三维矩阵。N维张量的每个维度可以包括一个或多个元素,其中每个元素可以存储相应的数据值。例如,张量可以是程序中的变量,其中变量可以具有三个维度。第一维度的长度可以为三百个元素,第二维度的长度可以为一千个元素,而第三维度的长度可以为二十个元素。当然,在每个维度上其它数目的元素是可能的。
在嵌套循环中遍历张量能够包括计算元素的存储器地址值以加载或存储所对应的元素的数据值。for循环是循环嵌套的示例,其中能够嵌套由三个循环索引变量(例如,i、j和k)跟踪的三个循环以遍历三维张量。在神经网络中,可以在与张量相关联的一个或多个点积计算中使用元素的值。例如,可以将元素的值乘以对应的参数或权重。可以使用嵌套for循环来按顺序遍历张量的元素,以访问元素并且使用元素的值来执行一个或多个计算。继续三维张量示例,外for循环可以用于遍历由变量i跟踪的循环,中间for循环可以用于遍历由变量j跟踪的循环,而内for循环可以用于遍历由变量k跟踪的循环。在此示例中,所访问的第一元素可以为(i=0,j=0,k=0),第二元素可以为(i=0,j=0,k=1),依此类推。如下所述,张量遍历单元能够用于使用嵌套循环来按顺序确定每个元素的存储器地址,使得处理单元能够访问元素的值并且使用元素的值来执行一个或多个计算。
在一些情况下,处理器可能需要执行循环边界条件,诸如利用外循环索引变量设置内循环的循环边界。例如,在确定是否退出嵌套循环的最内层循环时,程序可以将最内层循环的循环索引变量的当前值与嵌套循环的最外层循环的循环索引变量的当前值进行比较。
这些任务可能需要大量指令,诸如分支指令和整数算术指令。当每个循环边界小并且循环迭代次数大时,计算可以占整体执行时间的很大一部分,从而使整体性能严重地降级。用于处理器的硬件张量遍历单元可以通过执行全循环遍历和地址生成来增加处理器的计算带宽,从而释放处理器的数学单元来做其它工作,诸如执行机器学习计算。
张量能够包括图像的图像值,例如,由神经网络或其它机器学习模型正在处理的图像的像素的颜色值。例如,机器学习模型可以被配置成处理图像以将图像分类为描绘来自一个或多个对象类的对象。作为另一示例,机器学习模型可以被配置成处理图像以识别图像中描绘对象的位置。作为又一示例,机器学习模型可以被配置成处理图像以生成图像的数值表示,例如,传达关于图像的内容的信息的数值的向量。图像值能够包括图像的像素的一个或多个值。像素的值在本文中被称为像素值并且能够包括表示像素的颜色的值(例如,灰度值或红色、绿色或蓝色(RGB)值)。对于RGB颜色,张量能够对于每个像素包括红色值、绿色值和蓝色值。
如以上所讨论的,神经网络可以被配置成接收特定形状的图像,例如,具有特定水平和垂直尺寸的图像。对于形状与预期输入形状不匹配的图像,需要修改图像,使得在图像能够由神经网络处理之前,图像具有预期输入形状。
张量遍历单元能够确定用于在将图像转换为预期输入形状的图像变换过程中使用的像素坐标。张量遍历单元也对于变换后的图像的每个像素计算一个或多个存储器地址值,使得执行机器学习计算的处理单元能够访问或存储像素坐标的对应像素数据。缺乏确定适当的像素坐标的能力,张量遍历单元将必须在计算存储器地址值之前将图像数据发送回到处理单元或另一计算系统以执行图像变换。利用这些特征,与将图像数据发送回到主机相关联的处理等待时间被减少,并且张量遍历单元和处理单元的计算吞吐量被增加。张量遍历单元的灵活性也被增加。
图1是示例计算系统102的框图。通常,计算系统100处理从主机130接收的输入图像132以生成被提供给主机130的输出134。计算系统100可以被配置成执行线性代数计算。例如,计算系统100可以被配置成使用机器学习模型例如,神经网络来执行机器学习计算。
计算系统100包括处理单元114、存储介质116和张量遍历单元120。处理单元102可以包括一个或多个处理器,其对输入图像142的图像数据执行计算以生成输出144。输出144可以是基于图像数据和机器学习模型来表征输入图像142的分类或其它输出,例如,将输入图像分类为包括属于一个或多个类别的对象的图像。响应于接收到的请求,输出144可以到达另一计算系统,例如用户设备。
存储介质104存储计算系统100内的信息。在一些实现方式中,存储介质104是一个或多个易失性存储器单元。在一些其它实现方式中,存储介质104是一个或多个非易失性存储器单元。存储介质104也可以是另一形式的计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪速存储器或其它类似的固态存储器设备或设备阵列,包括存储区域网络或其它配置中的设备。
能够将张量遍历单元120实现为专用集成电路。张量遍历单元120,在本文中也称为存储器地址计算单元,能够包括一个或多个处理器122,其被配置成确定用于存储图像数据的存储器地址。张量遍历单元120也包括数学单元124和存储电路126。数学单元124能够包括一个或多个算术逻辑单元(ALU)和/或一个或多个加法器。例如,数学单元124能够包括一个或多个硬件ALU和/或一个或多个硬件加法器。数学单元124被配置成确定用于存储图像数据的存储器地址。存储电路126包括硬件存储器存储,例如寄存器。
在一些实现方式中,张量遍历单元120将图像的像素坐标翻译成用于在存储介质116中存储像素值的存储器地址。例如,张量遍历单元120能够将像素坐标集翻译成一维地址空间。图像的像素的像素坐标能够包括垂直坐标和水平坐标。张量遍历单元120能够通过使存储器地址成为像素坐标的垂直坐标和水平坐标的组合(例如,线性组合)来执行翻译。如上所述,像素值能够包括表示像素的颜色的值(例如,像素的灰度值或RGB值)。
对于每个像素坐标,张量遍历单元120能够确定用于表示像素的颜色的颜色值的一个或多个存储器地址。例如,如果使用灰度值来表示图像,则对于每个像素,张量遍历单元能够确定用于存储像素的灰度值的单个存储器地址。如果使用RGB值来表示图像,则对于每个像素,张量遍历单元能够确定用于存储所有三个颜色值的单个存储器地址。在此示例中,每个存储器地址可以指代四字节存储器位置,并且一个字节可以被用于每个颜色值,而忽略一个额外字节。在使用RGB颜色值的一些实现方式中,对于每个像素,张量遍历单元120能够确定用于存储像素的红色值的第一存储器地址、用于存储像素的绿色值的第二存储器地址以及用于存储像素的蓝色值的第三存储器地址。
张量遍历单元120也能够确定用于图像变换过程的像素坐标,该图像变换过程将图像变换为由处理单元114使用来处理图像的机器学习模型的特定尺寸。例如,能够将大于特定尺寸的图像缩小到特定尺寸。类似地,能够将小于特定尺寸的图像放大到特定尺寸。
张量遍历单元120能够使用最近邻和/或双线性插值技术来确定用于放大或缩小的像素坐标。对于这两种技术,张量遍历单元120能够为变换后的图像,即,将由机器学习模型处理的图像的每个像素确定像素坐标。变换后的图像的像素在本文中被称为变换后的像素。
张量遍历单元能够在使用最近邻插值的模式与使用双线性插值来变换图像的模式之间切换。例如,用户能够使用计算系统102的用户接口来选择最近邻或双线性插值。处理单元114能够接收指定选择的数据并且将该数据提供给张量遍历单元120。作为响应,张量遍历单元120能够使用所选择的变换技术。
对于每个变换后的像素,张量遍历单元120能够确定存储介质116中用于存储像素值的一个或多个存储器地址。当正在使用最近邻插值时,对于每个变换后的像素,张量遍历单元120能够确定用于存储在输入图像142中最接近变换后的像素的像素坐标的位置的像素的像素值的存储器地址。例如,对于最接近像素坐标的位置的像素,张量遍历单元120能够确定用于存储用于表示最接近像素的颜色的一个或多个颜色值的存储器地址。
当正在使用双线性插值实现方式时,张量遍历单元120能够为在输入图像142中最接近像素坐标的位置的四个像素确定存储器地址。例如,对于四个像素中的每一个,张量遍历单元120能够确定用于存储用于表示像素的颜色的一个或多个颜色值的相应的存储器地址。
张量遍历单元120能够将存储器地址输出到处理单元114。处理单元120能够访问存储在存储器地址处的像素值并且使用这些像素值来执行机器学习计算,例如,以对输入图像142进行分类。如下所述,当正在使用双线性插值时,处理单元120能够对于每个颜色值(例如,红色值、绿色值或蓝色值)访问四个像素值,并且对于每个颜色值,确定表示变换后的像素的颜色的值。处理单元120然后能够使用每个变换后的像素的颜色值来执行机器学习计算以生成机器学习输出,例如输出144。响应于对输入图像142进行分类的请求,处理单元120然后能够在芯片外例如向用户设备提供机器学习输出144。
缺少张量遍历单元确定像素坐标的能力,张量遍历单元120将必须将不具有机器学习模型的特定尺寸的图像发送回到处理单元114或主机130以进行变换。确定像素坐标和存储器地址的能力减少执行机器学习计算的等待时间,并且增加计算系统102的处理吞吐量(例如,张量遍历单元120和/或处理单元114的处理吞吐量)。
张量遍历单元120能够使用循环嵌套来确定像素坐标和用于这些像素坐标的存储器地址。循环嵌套能够包括用于遍历图像的水平像素尺寸的第一循环和用于遍历图像的垂直像素尺寸的第二循环。对于第一循环的每次迭代,张量遍历单元120确定更新的水平坐标。对于第二循环的每次迭代,张量遍历单元120确定更新的垂直坐标。能够将第一循环嵌套在第二循环内或者能够将第二循环嵌套在第一循环内。
为了确定变换后的像素的像素坐标,张量遍历单元120能够对于初始变换后的像素确定输入图像142内的初始像素坐标。例如,此初始变换后的像素可以是变换后的图像中的左上像素。在此示例中,输入图像的左上角的坐标可以为(x=0,y=0),而图像的右下角的坐标可以为(x=图像中水平像素的总数,y=图像中垂直像素的总数),其中x是水平尺寸并且y是垂直尺寸。取决于输入图像和变换后的图像的相对大小,输入图像内的初始变换后的像素的像素坐标可以是在(x=0.375,y=0.375)处。
出于此示例的目的,考虑第二循环是外循环并且第一循环是内循环以按y主要、x次要顺序并按从左上角到右下角的顺序遍历图像。因此,一次遍历图像一个水平像素行从图像的顶部行开始并在图像的右下角结束。
对于第一循环的每次迭代,张量遍历单元120能够例如通过将水平步幅的值加到水平坐标的先前值来更新水平坐标。例如,初始像素坐标可以为(0.375,0.375)并且水平步幅可以为1.375。在此示例中,通过将水平步幅(1.375)的值加到先前水平坐标,第二像素坐标将是(1.75,0.375)。张量遍历单元120能够通过将水平步幅的值加到先前水平坐标来遍历输入图像142的水平尺寸,直到达到第一循环的循环边界条件为止,例如,直到张量遍历120到达图像行尾为止。每次达到第一循环的循环条件时,张量遍历单元120能够将水平坐标重置为其初始值(0.375)并且通过将垂直步幅的值加到先前垂直坐标来更新垂直像素坐标以遍历图像的下一行。在此示例中,第二行中的第一像素坐标将是(0.375,1.75)。张量遍历120能够继续此过程,直到达到第二循环的循环边界为止,例如,直到已经为变换后的图像的每个变换后的像素确定了像素坐标为止。
对于所确定的每个像素坐标,张量遍历单元120能够确定用于存储像素坐标的像素值的一个或多个存储器地址。在最近邻实现方式中,张量遍历单元120能够确定用于存储每个变换后的像素的最近邻像素的像素值的存储器地址。在双线性插值实现方式中,张量遍历单元120能够为每个变换后的像素坐标确定四个存储器地址,用于像素值中的每一个的一个存储器地址用于确定变换后的像素坐标的像素值。
如以上示例中所示,变换后的像素的像素坐标可以具有分数分量。张量遍历单元120能够使用定点数来表示像素坐标值。在一些实现方式中,张量遍历单元120将像素坐标的整数值与像素坐标的分数部分分开存储。例如,如图1中所示,张量遍历单元120包括存储垂直像素坐标的整数部分的垂直像素坐标整数元件132和存储垂直像素坐标的分数部分的垂直像素坐标分数元件134。类似地,张量遍历单元120包括存储水平像素坐标的整数部分的水平像素坐标整数元件136和存储水平像素坐标的分数部分的水平像素坐标分数元件138。每个元件132-138能够包括寄存器或其它存储电路。
垂直步幅和水平步幅的整数部分和分数部分也能够被分别存储,例如在相应的寄存器或其它存储电路中。当张量遍历单元120更新垂直坐标时,张量遍历单元能够将垂直步幅的整数部分加到垂直坐标的整数部分并且将垂直步幅的分数部分加到垂直坐标的分数部分。每当这种更新导致垂直坐标的分数部分等于或大于一时,张量遍历单元120就能够将值一加到垂直坐标的整数部分并且从垂直坐标的分数部分减去值一以使垂直坐标的分数部分保持小于一。
类似地,当张量遍历单元120更新水平坐标时,张量遍历单元能够将水平步幅的整数部分加到水平坐标的整数部分,并且将水平步幅的分数部分加到水平坐标的分数部分。每当这种更新导致水平坐标的分数部分等于或大于一时,张量遍历单元120就能够将值一加到水平坐标的整数部分并且从水平坐标的分数部分减去值一以使水平坐标的分数部分保持小于一。
图2是图示图像的双线性插值的图200。图200包括输入图像的像素布局210和输入图像的变换版本(“变换后的图像”)的像素布局220。每个布局200和210中的每个正方形表示像素。在此示例中,输入图像具有10个像素的水平像素尺寸和10个像素的垂直像素尺寸。类似地,变换后的图像具有7个像素的水平像素尺寸和7个像素的垂直像素尺寸。例如,机器学习模型可以被配置成处理具有7个像素的水平像素尺寸和7个像素的垂直像素尺寸的图像。
为了变换输入图像,对于变换后的图像的每个像素识别输入图像内的像素坐标的集合。例如,对于变换后的图像的左上像素222已经识别了点212处的像素坐标。类似地,对于像素222右边的像素223已经识别了点213处的像素坐标。
为了确定变换后的图像的每个像素的像素值,将最接近像素的像素坐标的四个像素识别为源像素。对于像素222,最接近像素坐标212的四个像素是像素215a、215b、215c和215d。像素221的像素值可以为源像素215a-215d的像素值的加权组合。用于每个源像素的权重能够基于源像素离点212的像素坐标的距离。例如,更接近点212的源像素的像素值与离点212更远的源像素的像素值相比可能被加权更多。在此示例中,将为源像素215a的像素值指派比源像素215c的像素值更高的权重。下面描述用于确定变换后的图像的像素坐标、变换后的图像的每个像素的四个源像素以及针对每个源像素的像素值的权重的示例技术。
图3是图示用于确定图像数据的存储器地址的示例过程300的流程图。过程300可以由一个或多个计算机的系统例如图1的计算系统102执行。该系统包括张量遍历单元,例如图1的张量遍历单元120。
系统接收图像的图像数据(302)。例如,张量遍历单元能够接收图像数据。图像数据能够指定图像的尺寸。图像的尺寸能够指定水平像素尺寸和垂直像素尺寸。水平像素尺寸是沿着图像的水平尺寸的像素的数目。垂直像素尺寸是沿着图像的垂直尺寸的像素的数目。例如,高500个像素乘宽400个像素的图像将具有500的垂直像素尺寸和400的水平像素尺寸。
系统确定图像的尺寸与机器学习模型的特定尺寸不匹配(304)。例如,机器学习模型可以被配置成处理(例如,分类)具有特定尺寸的图像。特定尺寸能够指定特定垂直像素尺寸和特定水平像素尺寸。张量遍历单元能够将图像的尺寸与机器学习模型的特定尺寸进行比较。如果图像的垂直像素尺寸与机器学习模型的特定垂直像素尺寸不匹配或者如果图像的水平像素尺寸与机器学习模型的特定水平像素尺寸不匹配,则张量遍历单元能够确定图像的尺寸与机器学习模型的特定尺寸不匹配。
系统确定图像的水平像素步幅和垂直像素步幅(306)。水平像素步幅和垂直像素步幅用于对于图像的变换版本的每个变换后的像素识别图像内的像素坐标。
张量遍历单元能够基于图像的尺寸和机器学习模型的特定尺寸来确定水平像素步幅和垂直像素步幅。在一些实现方式中,使用以下关系1和2来确定步幅:
Figure BDA0002605006940000151
Figure BDA0002605006940000152
在一些实现方式中,张量遍历单元将水平步幅和垂直步幅存储在张量遍历单元的相应的存储电路例如寄存器中。如上所述,可以将步幅存储为定点数,并且每个步幅的整数部分可以与步幅的分数部分分开存储。在此示例中,可以将步幅的分数部分舍入为最近定点数,该最近定点数能够使用用于存储每个步幅的位数来表示。例如,如果图像的尺寸是10×10并且机器学习模型的特定尺寸是7×7,则水平步幅将是1.375并且垂直步幅将是1.375。如果用于存储分数部分的寄存器是7位或者如果分数部分的定点数包括7位,则能够将分数部分(0.375)舍入为48/128。
系统确定图像的变换版本的像素坐标(308)。张量遍历单元能够使用水平和垂直像素步幅来确定像素坐标。例如,如上所述,张量遍历单元能够使用循环嵌套来通过将步幅值加到像素坐标的当前值以确定像素坐标来确定像素值。在图4中图示并在下面详细地描述用于使用循环和步幅来确定像素坐标的示例过程。
系统确定每个识别的像素坐标的一个或多个存储器地址(310)。每个像素坐标的存储器地址与在存储介质中用于存储一个或多个像素值的位置相对应,该一个或多个像素值将用于针对像素坐标生成机器学习模型的输入。张量遍历单元能够基于垂直坐标和水平坐标的值来确定像素坐标的存储器地址。下面参考图4和图5描述用于确定每个像素坐标集的存储器地址的示例技术。
图4是图示用于确定图像数据的存储器地址的另一示例过程400的流程图。过程400可以由一个或多个计算机的系统例如图1的计算系统102执行。该系统包括张量遍历单元,例如图1的张量遍历单元120。
系统确定输入图像的初始像素坐标(402)。初始像素坐标是图像的变换版本的变换后的像素的图像内的像素坐标。初始像素坐标包括沿着图像的水平尺寸的水平坐标和沿着图像的垂直尺寸的垂直坐标。例如,如果从左到右且自顶向下确定变换后的像素的像素坐标,则初始像素坐标可以在图像的左上部附近。在其它示例中,初始像素坐标可以在图像内的右下部或另一适当位置附近。
在一些实现方式中,张量遍历单元基于水平像素步幅和/或垂直像素步幅来确定初始像素坐标。张量遍历能够分别使用以上关系1和2来确定水平像素步幅和垂直像素步幅。张量遍历单元能够使用以下关系3和4来确定初始水平坐标和初始垂直坐标:
初始水平坐标=水平像素步幅-1
(3)
初始垂直坐标=垂直像素步幅-1
(4)
系统将初始水平坐标存储在一个或多个硬件存储电路中(404)。硬件存储电路可以是张量遍历单元的存储电路,例如寄存器。例如,张量遍历单元能够将初始水平坐标的整数部分存储在水平像素坐标整数元件(例如,图1的水平像素坐标整数元件136)中并且将水平坐标的分数部分存储在水平像素坐标分数元件(例如,图1的水平像素坐标分数元件138)中。
系统将初始垂直坐标存储在一个或多个硬件存储电路中(406)。硬件存储电路可以是张量遍历单元的存储电路,例如寄存器。例如,张量遍历单元能够将初始垂直坐标的整数部分存储在垂直像素坐标整数元件(例如,图1的垂直像素坐标整数元件132)中并且将垂直坐标的分数部分存储在垂直像素坐标分数元件(例如,图1的垂直像素坐标分数元件138)中。
系统确定像素坐标的一个或多个存储器地址(406)。对于第一次迭代,张量遍历单元能够确定初始像素坐标的一个或多个存储器地址。如下所述,对于用于遍历图像的水平尺寸和垂直尺寸的循环的每次迭代更新像素坐标。对于每个更新的像素坐标,张量遍历单元能够确定一个或多个存储器地址。
每个存储器地址与在存储介质中用于存储像素值的位置相对应。存储器地址由处理单元例如图1的处理单元114使用来加载或存储像素值。例如,处理单元可以使用像素值的存储器地址来获得像素值并且基于该像素值生成用于机器学习模型的输入。在最近邻实现方式中,所生成的输入可以为像素值本身。在双线性插值实现方式中,所生成的输入可以为四个像素值的加权组合。
在最近邻实现方式中,像素坐标的存储器地址与在存储介质中用于存储在输入图像内最接近(例如,最近邻)像素坐标的像素的像素值的位置相对应。存储器地址能够基于像素坐标的垂直坐标和水平坐标。例如,张量遍历单元能够基于水平坐标确定第一部分地址值并且基于垂直坐标确定第二部分地址值。
在一些实现方式中,第一部分地址值基于水平坐标和第三维度(例如,z维度)的大小。第三维度能够基于用于表示像素的颜色的颜色值的数目。例如,如果使用灰度值,则第三维度的大小可以为一。如果使用RGB颜色值,则第三维度的大小可以为一(例如,如果所有三个颜色值都被存储在同一存储器地址处)或三(例如,如果每个颜色值被分开存储)。由于水平坐标可以包括分数部分,所以能够对水平坐标的值进行舍入。例如,张量遍历单元能够使用将值0.5舍入为零的向零舍入技术来对水平坐标进行舍入。第一部分地址值能够基于舍入水平坐标和第三维度的大小的乘积。
类似地,第二部分地址值能够基于垂直坐标以及水平尺寸的大小(例如,沿着图像的水平尺寸的像素的数目)与第三维度的大小的乘积。由于垂直坐标也可以包括分数部分,所以也能够例如使用向零舍入技术来对垂直坐标的值进行舍入。第二部分地址值能够基于舍入垂直坐标的乘积和水平尺寸的大小与第三维度的大小的乘积。这确保为每个像素坐标集指派唯一存储器地址。
像素坐标的存储器地址能够基于第一部分地址值和第二部分地址值之和。例如,存储器地址能够等于第一部分地址值、第二部分地址值和基地址之和。
在双线性插值实现方式中,张量遍历单元能够基于像素坐标确定四个存储器地址。每个存储器地址与在存储介质中用于存储输入图像中的四个源像素中的最接近输入图像中的像素坐标的位置的一个源像素的像素值的位置相对应。例如,四个源像素可以包括在像素坐标的位置下方和左边的左下像素、在像素坐标的位置下方和右边的右下像素、在像素坐标的位置上方和左边的左上像素以及在像素坐标的位置上方和右边的右上像素。在图5中图示并在下面描述了用于确定四个存储器地址的示例过程。
系统更新水平坐标的当前值并且更新用于遍历图像的水平尺寸的循环的循环索引(410)。在一些实现方式中,为了更新循环索引,系统能够通过将值一加到循环索引的先前值来迭代循环索引。在一些实现方式中,水平坐标被用作循环索引并且因此在水平坐标被更新时被更新。
为了更新水平坐标,张量遍历单元能够将水平步幅加到水平坐标的当前值并且存储水平坐标的更新值。对于循环的第一次迭代,张量遍历单元将水平步幅加到初始水平坐标。
如果水平坐标的整数部分和分数部分被分开存储,则张量遍历单元能够将水平像素步幅的整数部分加到水平坐标的整数部分。类似地,张量遍历单元能够将水平像素步幅的分数部分加到水平坐标的分数部分。如果这导致水平坐标的分数部分大于或等于一,则张量遍历单元能够将一加到水平坐标的整数部分并且从水平坐标的分数部分减去一,使得分数部分保持小于一。
系统确定用于遍历图像的水平尺寸的循环的循环索引是否大于或等于其边界(412)。该边界能够基于变换后的图像中的水平像素的数目。例如,如果机器学习模型的特定尺寸具有七个像素的水平尺寸,则循环可以包括七次迭代,使得图像的每个水平行中的七个像素的坐标和存储器地址被确定。例如,循环索引可以从零开始并且边界可以为六。当循环索引达到值六时,系统能够确定循环索引等于其边界。
如果用于遍历水平尺寸的循环的循环索引不大于或等于其边界,则系统返回到操作(408)并且为包括先前垂直坐标和更新水平坐标的更新像素坐标确定一个或多个存储器地址。如果用于遍历水平尺寸的循环的循环索引大于或等于其边界,则系统将水平坐标的值重置为初始水平坐标并且将用于遍历水平尺寸的循环的循环索引重置为其初始值(414)。
系统更新垂直坐标的当前值并且更新用于遍历图像的垂直尺寸的循环的循环索引(416)。在一些实现方式中,为了更新循环索引,系统能够通过将值一加到循环索引的先前值来迭代循环索引。在一些实现方式中,垂直坐标被用作循环索引并且因此在垂直坐标被更新时被更新。
为了更新垂直坐标,张量遍历单元能够将垂直步幅加到垂直坐标的当前值并且存储垂直坐标的更新值。对于循环的第一次迭代,张量遍历单元将垂直步幅加到初始垂直坐标。
如果垂直坐标的整数部分和分数部分被分开存储,则张量遍历单元能够将垂直像素步幅的整数部分加到垂直坐标的整数部分。类似地,张量遍历单元能够将垂直像素步幅的分数部分加到垂直坐标的分数部分。如果这导致垂直坐标的分数部分大于或等于一,则张量遍历单元能够将一加到垂直坐标的整数部分并且从垂直坐标的分数部分减去一,使得分数部分保持小于一。
系统确定用于遍历图像的垂直尺寸的循环的循环索引是否大于或等于其边界(418)。该边界能够基于变换后的图像中的垂直像素的数目。例如,如果机器学习模型的特定尺寸的垂直尺寸为七个像素,则循环可以包括七次迭代,使得图像的每个垂直列中的七个像素的坐标和存储器地址被确定。例如,循环索引可以从零开始并且边界可以为六。当循环索引达到值六时,系统能够确定循环索引等于其边界。
如果用于遍历垂直尺寸的循环的循环索引不大于或等于其边界,则系统返回到操作(408)并且为包括更新垂直坐标和重置水平坐标(初始水平坐标)的更新像素坐标确定一个或多个存储器地址。这将使用水平尺寸的循环开始沿着图像的水平尺寸遍历另一行。
如果用于遍历水平尺寸的循环的循环索引大于或等于其边界,则过程400结束,因为已经为变换后的图像的每个变换后的像素确定了一个或多个存储器地址。
当例如按序列确定地址时,张量遍历单元能够将每个存储器地址输出到处理单元。在一些实现方式中,张量遍历单元能够在已经确定了每个变换后的像素的存储器地址之后输出存储器地址。处理单元能够使用这些存储器地址来加载或存储像素值。
在此示例中,用于遍历图像的水平尺寸的循环被嵌套在用于遍历输入图像的垂直尺寸的循环内。以下循环嵌套能够用于确定输入图像的存储器地址:
Figure BDA0002605006940000221
在此示例中,initial_y是初始垂直坐标,coord_y是垂直坐标的当前值,并且size_y是沿着输入图像的垂直尺寸的像素的数目。因此,外循环具有等于比沿着图像的垂直尺寸的像素的数目少一的循环边界并且循环索引是垂直坐标的当前值。在外循环的每次迭代之后,通过将垂直像素步幅加到垂直坐标的当前值来更新垂直坐标的当前值。此外,第二部分地址值(second_partial_address_value)是通过对垂直坐标的当前值进行舍入(例如,对于最近邻使用向零舍入而对于双线性插值使用floor函数)并且将舍入值乘以图像的水平尺寸的大小与第三维度的大小的乘积来确定的。
类似地,initial_x是水平坐标的初始值,coord_x是水平坐标的当前值,并且size_x是沿着图像的水平方向的像素的数目。因此,内循环具有等于比沿着图像的水平尺寸的像素的数目少一的循环边界,并且循环索引是水平坐标的当前值。在内循环的每次迭代之后,通过将水平像素步幅加到水平坐标的当前值来更新水平坐标的当前值。此外,第一部分地址值(first_partial_address_value)是通过对水平坐标的当前值进行舍入(例如,对于最近邻使用向零舍入或对于双线性插值使用输出小于或等于坐标的最大整数的floor函数)并且将舍入值乘以第三维度的大小来确定的。
也对于内循环的每次迭代为像素坐标确定存储器地址(memory_address)。对于最近邻实现方式,存储器地址能够等于第一部分地址值、第二部分地址值和任选地基地址之和。对于双线性插值实现方式,如下所述,能够使用垂直和水平偏移值来确定四个存储器地址。
图5是图示用于确定图像数据的存储器地址和双线性插值的权重的示例过程500的流程图。过程500可以由一个或多个计算机的系统例如图1的计算系统102执行。该系统包括张量遍历单元,例如图1的张量遍历单元120。当正在使用双线性插值来变换输入图像时,过程500的操作(或其一部分)可以为图4的操作408的子操作。
系统识别输入图像内的水平坐标的当前值(502)。例如,如上所述,能够使用循环来遍历输入图像的水平尺寸并且对于图像的变换版本的变换后的像素确定更新像素坐标的水平坐标。在循环的每次迭代时,能够例如通过将水平像素步幅加到水平坐标的先前值来更新水平坐标的当前值。张量遍历单元能够在一个或多个硬件存储电路中维护水平坐标的当前值。
系统识别输入图像内的垂直坐标的当前值(504)。例如,如上所述,能够使用循环来遍历输入图像的垂直尺寸并且对于图像的变换版本的变换后的像素确定更新像素坐标的垂直坐标。在循环的每次迭代时,能够例如通过将垂直像素步幅加到垂直坐标的先前值来更新垂直坐标的当前值。张量遍历单元能够在一个或多个硬件存储电路中维护垂直坐标的当前值。
系统识别水平偏移值(506)。在使用用于遍历输入图像的水平尺寸的循环被嵌套在用于遍历输入图像的垂直尺寸的循环中的y主要、x次要循环嵌套来确定存储器地址的实现方式中,水平偏移值能够基于输入图像的第三维度的大小(例如,用于表示每个像素的颜色值的数目)。例如,水平偏移值可以为一。
系统识别垂直偏移值(508)。在使用y主要、x次要循环嵌套来确定存储器地址的实现方式中,垂直偏移值能够基于水平尺寸的大小和第三维度的大小的组合。例如,垂直偏移值能够基于输入图像中沿着水平尺寸的像素的数目的乘积。
如果使用x主要、y次要循环嵌套,则水平偏移值能够等于垂直尺寸的大小(例如,沿着输入图像的垂直尺寸的像素的数目)与第三维度的大小的乘积。类似地,垂直偏移值可以为第三维度的大小。
系统为四个像素坐标中的每一个确定相应的存储器地址(510)。四个像素坐标与输入图像中的四个源像素相对应,对于这四个源像素,像素的值将用于确定图像的变换版本中变换后的像素的像素值。变换后的像素是变换后的图像中的像素,该像素表示输入图像中的通过水平坐标的当前值和垂直坐标的当前值所定义的像素坐标处的像素。
四个像素可以为最接近输入图像中的像素坐标的位置的四个像素。例如,四个源像素可以包括在像素坐标的位置下方和左边的左下像素、在像素坐标的位置下方和右边的右下像素、在像素坐标的位置上方和左边的左上像素以及在像素坐标的位置上方和右边的右上像素。
四个存储器地址中的每一个均能够基于像素坐标和一个或多个偏移值。例如,张量遍历单元能够确定用于确定四个存储器地址中的每一个的第一部分地址值和第二部分地址值。类似于上述最近邻实现方式,第一部分地址值能够基于水平坐标和第三维度(例如,z维度)的大小。由于水平坐标可以包括分数部分,所以能够对水平坐标的值进行舍入。例如,张量遍历单元能够使用输出小于或等于水平坐标的最大整数的floor函数来对水平坐标进行舍入。第一部分地址值能够基于舍入水平坐标与第三维度的大小的乘积。对于图像,z维度的大小是一,所以第一部分地址值等于水平坐标的舍入值。
类似地,第二部分地址值能够基于垂直坐标以及水平尺寸的大小和第三维度的大小的乘积。由于垂直坐标也可以包括分数部分,所以也能够例如使用floor函数来对垂直坐标的值进行舍入。第二部分地址值能够基于舍入垂直坐标的乘积和水平尺寸的大小与第三维度的大小的乘积。对于图像,z维度的大小是一,所以第二部分地址值等于垂直坐标的舍入值与水平尺寸的大小的乘积。
张量遍历单元能够使用循环嵌套来基于第一部分地址值和第二部分地址值确定四个存储器地址。例如,能够使用以下循环嵌套:
Figure BDA0002605006940000251
在此示例循环嵌套中,offset_y是垂直偏移值并且offset_x是水平偏移值。此外,size_xz是水平尺寸的大小与第三维度的大小(例如,当第三维度的大小为一时是水平尺寸的大小)的乘积,并且size_z是第三维度的大小。循环嵌套将产生四个存储器地址:(1)第一部分地址值(first partial address value)+第二部分地址值(second partial addressvalue)+0+0;(2)第一部分地址值+第二部分地址值+0+size_z;(3)第一部分地址值+第二部分地址值+size_xz+0;以及(4)第一部分地址值+第二部分地址值+size_xz+size_x。此循环嵌套能够被嵌套在以上针对双线性插值实现方式描述的用于确定像素坐标的循环内以确定四个像素值的四个存储器地址。
系统为四个源像素中的每一个确定相应的权重(512)。能够基于水平坐标的当前值的分数部分和/或垂直坐标的当前值的分数部分来确定针对每个源像素的权重。循环嵌套能够用于使用分数部分来确定权重。能够与用于确定存储器地址的循环嵌套并行地执行循环嵌套。以这种方式,张量遍历单元能够一起或相继地输出用于访问像素值和与该像素值相对应的权重的存储器地址,使得一旦处理单元具有所有四个源像素的像素值和权重,处理单元就能够使用这些像素值和权重来生成变换后的像素的像素值以供输入到机器学习模型。以下循环嵌套能够用于确定权重。
Figure BDA0002605006940000271
在此示例中,用于确定水平坐标(coord_x)和垂直坐标(coord_y)的外循环使用相同的循环边界(size_y-1和size_y-1)以及循环索引(coord_y和coord_x)作为用于确定以上存储器地址的循环嵌套。这确保为图像的变换版本的每个变换后的像素坐标确定四个权重。
yy和xx的两个内循环用于基于两个内循环的索引值确定四个权重。yy的循环将迭代两次(yy=0一次且yy=1一次)。类似地,xx的循环将迭代两次(xx=0一次且xx=1一次)。因此,每个变换后的像素坐标的内循环的四个状态将是(xx=0,yy=0)、(xx=1,yy=0)、(xx=0,yy=1)和(xx=1,yy=1)。针对每个状态确定不同的权重,并且针对每个状态的权重与输入图像内的像素相对应,对于该像素将对其像素值应用权重。
在此示例中,第一状态(xx=0,yy=0)用于确定在像素坐标的位置下方和左边的左下源像素的权重。左下源像素的权重包括等于一减去水平坐标的当前值的分数部分的水平权重和等于一减去垂直坐标的当前值的分数部分的垂直权重。
第二状态(xx=1,yy=0)用于确定在像素坐标的位置下方和右边的右下源像素的权重。右下源像素的权重包括等于水平坐标的当前值的分数部分的水平权重和等于一减去垂直坐标的当前值的分数部分的垂直权重。
第三状态(xx=0,yy=1)用于确定在像素坐标的位置的上方和左边的左上源像素的权重。左上源像素的权重包括等于一减去水平坐标的当前值的分数部分的水平权重和等于垂直坐标的当前值的分数部分的垂直权重。
第四状态(xx=1,yy=1)用于确定在像素坐标的位置上方和右边的右上源像素的权重。右上源像素的权重包括等于水平坐标的当前值的分数部分的水平权重和等于垂直坐标的当前值的分数部分的垂直权重。
使用这些计算,每个源像素的水平权重与源像素和像素坐标的当前水平坐标之间的水平距离成反比。类似地,每个源像素的垂直权重与源像素和像素坐标的当前垂直坐标之间的垂直距离成反比。
张量遍历单元将像素坐标的四个权重输出到处理单元。处理单元然后能够使用每个源像素的像素值及其对应的权重来确定与通过水平坐标的当前值和垂直坐标的值的当前值定义的像素坐标相对应的变换后的像素的像素值。
例如,处理单元能够使用以下关系5来确定变换后的坐标的像素值:
pi×el_value=((weightx0y0*pixel_valuex0y0)+(weightx1y0*pixel_valuex1y0)+(weightx0y1*pi×el_valuex0y1)+(weightx1y1*pi×el_valuex1y1))
(5)
在关系5中,pixel_valuex0y0是左下源像素的像素值并且weightx0y0是左下源像素的水平权重与左下源像素的垂直权重的乘积。类似地,pixel-valuex1y0是右下源像素的像素值并且weightx0y0是右下源像素的水平权重与右下源像素的垂直权重的乘积;pixel_valuex0y1是左上源像素的像素值并且weightx0y1是左上源像素的水平权重与右上源像素的垂直权重的乘积;以及pixel-valuex1y1是右上源像素的像素值并且weightx1y1是右上源像素的水平权重与右上源像素的垂直权重的乘积。
处理单元能够使用关系5来确定输入图像的变换版本的每个变换后的像素的像素值。当灰度值用于表示每个像素的颜色时,处理单元能够使用关系5来确定每个像素的单个灰度像素值。当RBG值用于表示每个像素的颜色时,处理单元能够使用关系5来分开确定像素的每个RGB颜色的值。每个颜色值的权重将是相同的。例如,处理单元能够使用关系5来使用权重和四个源像素中的每一个的红色值来确定变换后的像素的红色值。处理单元也能够使用关系5来使用权重和每个源像素的蓝色值来确定变换后的像素的蓝色值并且使用关系5来使用权重和每个源像素的绿色值来确定变换后的像素的绿色值。
处理单元然后能够将像素值作为输入提供给机器学习模型,该机器学习模型被配置成处理具有与图像的变换版本相同的形状的图像。机器学习模型的输出可以是使用输入图像的变换版本的输入图像的分类。
本说明书中描述的主题和功能操作的实施例能够用数字电子电路、用有形地体现的计算机软件或固件、用包括本说明书中公开的结构及其结构等同物的计算机硬件或者用它们中的一种或多种的组合来实现。本说明书中描述的主题的实施例能够作为一个或多个计算机程序即在有形非暂时性程序载体上编码以供由数据处理装置执行或控制数据处理装置的操作的计算机程序指令的一个或多个模块被实现。替换地或此外,能够将程序指令编码在人工生成的传播信号例如机器生成的电信号、光信号或电磁信号上,该信号被生成来对信息进行编码以传输到合适的接收器装置以供由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行访问存储设备或它们中的一种或多种的组合。
本说明书中描述的过程和逻辑流程能够通过一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能而被执行。过程和逻辑流程也能够由专用逻辑电路执行,并且装置也能够作为专用逻辑电路被实现,该专用逻辑电路例如为FPGA(现场可编程门阵列)、ASIC(专用集成电路)或GPGPU(通用图形处理单元)。
作为示例,适合于执行计算机程序的计算机包括能够基于通用微处理器或专用微处理器或两者或任何其它种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行或实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储设备。通常,计算机也将包括用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘,或者在操作上耦合以从该一个或多个大容量存储设备接收数据或者将数据转移到该一个或多个大容量存储设备,或者两者。然而,计算机不必具有此类设备。此外,计算机能够被嵌入在另一设备,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或便携式存储设备,例如通用串行总线(USB)闪存驱动器,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,作为示例包括半导体存储设备,例如EPROM、EEPROM和闪速存储器设备;磁盘,例如内部硬盘或可移除磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器能够由专用逻辑电路补充,或者并入在专用逻辑电路中。
虽然本说明书包含许多具体实现方式细节,但是这些不应该被解释为对任何发明的或可能要求保护的范围构成限制,而是被解释为对可能特定于特定发明的特定实施例的特征的描述。也能够在单个实施例中以组合方式实现在本说明书中在单独的实施例的上下文中描述的某些特征。相反地,也能够单独地在多个实施例中或以任何合适的子组合实现在单个实施例的上下文中描述的各种特征。此外,尽管特征可能在上面被描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下能够从该组合中除去来自要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为要求以所示的特定顺序或以序列顺序执行此类操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中要求这种分离,并且应该理解的是,所描述的程序组件和系统通常能够被集成在单个软件产品中或者包装到多个软件产品中。
已经描述了主题的特定实施例。其它实施例在以下权利要求的范围内。例如,权利要求中记载的动作能够被以不同的顺序执行并且仍然实现所希望的结果。作为一个示例,附图中描绘的过程不一定要求所示的特定顺序或序列顺序来实现所希望的结果。在某些实现方式中,多任务处理和并行处理可以是有利的。

Claims (20)

1.一种系统,包括:
处理单元,所述处理单元被配置成使用机器学习模型和图像的像素值来对所述图像执行机器学习计算,其中,所述机器学习模型被配置成处理具有特定尺寸的图像;
存储介质,所述存储介质被配置成存储所述图像的所述像素值;以及
存储器地址计算单元,所述存储器地址计算单元包括一个或多个硬件处理器,所述一个或多个硬件处理器被配置成:
接收图像的图像数据,所述图像数据指定所述图像的尺寸,所述图像的尺寸指定水平像素尺寸和垂直像素尺寸,其中,所述水平像素尺寸是沿着所述图像的水平尺寸的像素的数目并且所述垂直像素尺寸是沿着所述图像的垂直尺寸的像素的数目;
确定所述图像的尺寸与所述特定尺寸不匹配;
响应于确定所述图像的尺寸与所述特定尺寸不匹配:
基于所述图像的尺寸和所述特定尺寸,确定所述图像的水平像素步幅和垂直像素步幅;并且
使用所述水平像素步幅和所述垂直像素步幅来确定所述图像的变换版本的多个像素坐标,每个像素坐标包括垂直坐标和水平坐标;
对于所述多个像素坐标中的每一个,确定在所述存储介质中用于存储将用于对于所述像素坐标生成所述机器学习模型的输入的一个或多个像素值的一个或多个存储器地址,每个像素坐标的所述一个或多个存储器地址基于所述像素坐标的垂直坐标和水平坐标;以及
将每个存储器地址输出到所述处理单元。
2.根据权利要求1所述的系统,其中,所述处理单元使用每个存储器地址来访问存储在所述存储器地址处的像素值并且基于存储在所述存储器地址处的所述像素值来执行机器学习计算。
3.根据权利要求1或权利要求2所述的系统,其中:
所述存储器地址计算单元包括:
用于存储所述水平坐标的当前值的一个或多个第一硬件存储电路;以及
用于存储所述垂直坐标的当前值的一个或多个第二硬件存储电路;
所述一个或多个硬件处理器通过以下步骤确定所述图像的所述多个像素坐标:
确定包括初始水平坐标和初始垂直坐标的初始像素坐标;
将所述初始水平坐标存储在所述一个或多个第一硬件存储电路中;
将所述初始垂直坐标存储在所述一个或多个第二硬件存储电路中;
对于用于遍历所述图像的水平像素尺寸的第一循环的每次迭代,通过在所述第一循环的每次迭代之后将所述水平像素步幅加到所述水平坐标的当前值来更新所述水平坐标的当前值;以及
对于用于遍历所述图像的垂直像素尺寸的第二循环的每次迭代,通过在所述第二循环的每次迭代之后将所述垂直像素步幅加到所述垂直坐标的当前值来更新所述垂直坐标的当前值。
4.根据权利要求3所述的系统,其中,所确定的每个像素坐标的存储器地址与在所述存储介质中用于存储所述像素坐标的最近邻像素的像素值的位置相对应,并且其中,每个最近邻像素处的所述像素值由所述处理单元用作所述机器学习模型的输入。
5.根据权利要求3所述的系统,其中,确定在所述存储介质中用于存储将用于对于所述像素坐标生成所述机器学习模型的输入的所述一个或多个像素值的所述一个或多个存储器地址包括:
对于所述第一循环或所述第二循环的每次迭代:
识别存储在所述一个或多个第一硬件存储电路中的所述水平坐标的当前值;
识别存储在所述一个或多个第二硬件存储电路中的所述垂直坐标的当前值;以及
基于所述水平坐标的当前值和所述垂直坐标的当前值来确定与所述水平坐标的当前值和所述垂直坐标的当前值相对应的所述像素坐标的所述存储器地址。
6.根据权利要求5所述的系统,其中,确定与所述水平坐标的当前值和所述垂直坐标的当前值相对应的所述像素坐标的所述存储器地址包括:
基于所述水平坐标的当前值与第一维度乘数的乘积来确定第一部分地址值;
基于所述垂直坐标的当前值与第二维度乘数的乘积来确定第二部分地址值;以及
通过确定所述第一部分地址值和所述第二部分地址值之和来确定与所述水平坐标的当前值和所述垂直坐标的当前值相对应的所述像素坐标的所述存储器地址。
7.根据权利要求6所述的系统,其中,与所述水平坐标的当前值和所述垂直坐标的当前值相对应的所述像素坐标的所述存储器地址等于所述第一部分地址值、所述第二部分地址值和存储器基地址之和。
8.根据权利要求3所述的系统,其中,所述第一循环被嵌套在所述第二循环内或者所述第二循环被嵌套在所述第一循环内。
9.根据权利要求3所述的系统,其中,确定在所述存储介质中用于存储将用于对于所述像素坐标生成所述机器学习模型的输入的所述一个或多个像素值的所述一个或多个存储器地址包括:为四个像素坐标中的每一个确定相应的存储器地址以用于在所述像素坐标的像素值的双线性插值中使用,包括:
对于所述第一循环或所述第二循环的每次迭代:
识别存储在所述一个或多个第一硬件存储电路中的所述水平坐标的当前值;
识别存储在所述一个或多个第二硬件存储电路中的所述垂直坐标的当前值;
识别垂直偏移值;
识别水平偏移值;
对于所述四个像素坐标中的第一像素坐标,基于所述水平坐标的当前值和所述垂直坐标的当前值之和来确定用于存储所述第一像素坐标的第一像素值的第一存储器地址;
对于所述四个像素坐标中的第二像素坐标,基于所述水平坐标的当前值、所述垂直坐标的当前值和所述垂直偏移值之和来确定用于存储所述第二像素坐标的第二像素值的第二存储器地址;
对于所述四个像素坐标中的第三像素坐标,基于所述水平坐标的当前值、所述垂直坐标的当前值和所述水平偏移值之和来确定用于存储所述第三像素坐标的第三像素值的第三存储器地址;以及
对于所述四个像素坐标中的第四像素坐标,基于所述水平坐标的当前值、所述垂直坐标的当前值、所述垂直偏移值和所述水平偏移值之和来确定用于存储所述第四像素坐标的第四像素值的第四存储器地址。
10.根据权利要求9所述的系统,其中,所述垂直偏移值至少基于所述图像中的水平像素的数目,并且所述水平偏移值等于一。
11.根据权利要求9所述的系统,其中:
所述一个或多个硬件处理器为所述四个像素坐标中的每一个确定双线性插值权重并且将每个权重输出到所述处理单元;以及
所述处理单元使用所述四个像素坐标中的每一个处的所述像素值和用于所述四个像素坐标中的每一个的所述权重来为所述机器学习模型确定输入像素值。
12.根据权利要求11所述的系统,其中,用于所述四个像素坐标中的每一个的所述权重基于所述像素坐标的水平坐标的分数部分和所述像素坐标的垂直坐标的分数部分。
13.根据权利要求9所述的系统,其中,所述处理单元被配置成:
通过对于所述多个像素坐标中的每一个根据存储在所述像素坐标的所述一个或多个存储器地址中的所述像素值确定一个或多个颜色值来生成所述机器学习模型的所述输入;以及
使用所述机器学习模型来处理所生成的输入以生成机器学习输出。
14.一种由一个或多个硬件处理器执行的方法,所述方法包括:
接收图像的图像数据,所述图像数据指定所述图像的尺寸,所述图像的尺寸指定水平像素尺寸和垂直像素尺寸,其中,所述水平像素尺寸是沿着所述图像的水平尺寸的像素的数目并且所述垂直像素尺寸是沿着所述图像的垂直尺寸的像素的数目;
确定所述图像的尺寸与机器学习模型已经被配置成处理的图像的特定尺寸不匹配;
响应于确定所述图像的尺寸与所述特定尺寸不匹配:
基于所述图像的尺寸和所述特定尺寸,确定所述图像的水平像素步幅和垂直像素步幅;以及
使用所述水平像素步幅和所述垂直像素步幅来确定所述图像的变换版本的多个像素坐标,每个像素坐标包括垂直坐标和水平坐标;
对于所述多个像素坐标中的每一个,确定在存储介质中用于存储将用于对于所述像素坐标生成所述机器学习模型的输入的一个或多个像素值的一个或多个存储器地址,每个像素坐标的所述存储器地址基于所述像素坐标的垂直坐标和水平坐标;以及
将每个存储器地址输出到处理单元,所述处理单元被配置成使用所述机器学习模型来对图像执行机器学习计算。
15.根据权利要求14所述的方法,其中,所述处理单元使用每个存储器地址来访问存储在所述存储器地址处的像素值并且基于存储在所述存储器地址处的所述像素值来执行机器学习计算。
16.根据权利要求14或权利要求15所述的方法,其中,确定所述图像的所述多个像素坐标包括:
确定包括初始水平坐标和初始垂直坐标的初始像素坐标;
将所述初始水平坐标存储在一个或多个第一硬件存储电路中;
将所述初始垂直坐标存储在一个或多个第二硬件存储电路中;
对于用于遍历所述图像的水平像素尺寸的第一循环的每次迭代,通过在所述第一循环的每次迭代之后将所述水平像素步幅加到所述水平坐标的当前值来更新所述水平坐标的当前值,并且对于对所述垂直坐标的当前值的每次更新,将所述水平坐标的当前值存储在所述一个或多个第一硬件存储电路中;以及
对于用于遍历所述图像的垂直像素尺寸的第二循环的每次迭代,通过在所述第二循环的每次迭代之后将所述垂直像素步幅加到所述垂直坐标的当前值来更新所述垂直坐标的当前值,并且对于对所述垂直坐标的当前值的每次更新,将所述垂直坐标的当前值存储在所述一个或多个第二硬件存储电路中。
17.根据权利要求16所述的方法,其中,所确定的每个像素坐标的存储器地址与在所述存储介质中用于存储所述像素坐标的最近邻像素的像素值的位置相对应,并且其中,每个最近邻像素处的所述像素值由所述处理单元用作所述机器学习模型的输入。
18.一种装置,包括:
用于存储图像的水平坐标的当前值的一个或多个第一硬件存储电路;和
用于存储图像的垂直坐标的当前值的一个或多个第二硬件存储电路;
一个或多个硬件处理器,所述一个或多个硬件处理器被配置成:
接收所述图像的图像数据,所述图像数据指定所述图像的尺寸,所述图像的尺寸指定水平像素尺寸和垂直像素尺寸,其中,所述水平像素尺寸是沿着所述图像的水平尺寸的像素的数目并且所述垂直像素尺寸是沿着所述图像的垂直尺寸的像素的数目;
确定所述图像的尺寸与机器学习模型已经被配置成处理的图像的特定尺寸不匹配;
响应于确定所述图像的尺寸与所述特定尺寸不匹配:
基于所述图像的尺寸和所述特定尺寸,确定所述图像的水平像素步幅和垂直像素步幅;
使用所述水平像素步幅和所述垂直像素步幅来确定所述图像的变换版本的多个像素坐标,每个像素坐标包括垂直坐标和水平坐标;
将所述水平坐标存储在所述一个或多个第一硬件存储电路中;并且
将所述垂直坐标存储在一个或多个第二硬件存储电路中;
对于所述多个像素坐标中的每一个,确定在存储介质中用于存储将用于对于所述像素坐标生成所述机器学习模型的输入的一个或多个像素值的一个或多个存储器地址,每个像素坐标的所述存储器地址基于所述像素坐标的垂直坐标和水平坐标;以及
将每个存储器地址输出到处理单元,所述处理单元被配置成使用所述机器学习模型来对图像执行机器学习计算。
19.根据权利要求18所述的装置,其中,所述处理单元使用每个存储器地址来访问存储在所述存储器地址处的像素值并且基于存储在所述存储器地址处的所述像素值来执行机器学习计算。
20.根据权利要求18或权利要求19所述的装置,其中,确定所述图像的所述多个像素坐标包括:
确定包括初始水平坐标和初始垂直坐标的初始像素坐标;
将所述初始水平坐标存储在所述一个或多个第一硬件存储电路中;
将所述初始垂直坐标存储在所述一个或多个第二硬件存储电路中;
对于用于遍历所述图像的水平像素尺寸的第一循环的每次迭代,通过在所述第一循环的每次迭代之后将所述水平像素步幅加到所述水平坐标的当前值来更新所述水平坐标的当前值,并且对于对所述垂直坐标的当前值的每次更新,将所述水平坐标的当前值存储在所述一个或多个第一硬件存储电路中;以及
对于用于遍历所述图像的垂直像素尺寸的第二循环的每次迭代,通过在所述第二循环的每次迭代之后将所述垂直像素步幅加到所述垂直坐标的当前值来更新所述垂直坐标的当前值,并且对于对所述垂直坐标的当前值的每次更新,将所述垂直坐标的当前值存储在所述一个或多个第二硬件存储电路中。
CN201980010446.3A 2018-01-31 2019-01-30 用于机器学习的图像变换 Active CN111656390B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310810057.7A CN116933891A (zh) 2018-01-31 2019-01-30 用于机器学习的图像变换

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/885,178 2018-01-31
US15/885,178 US10373291B1 (en) 2018-01-31 2018-01-31 Image transformation for machine learning
PCT/US2019/015770 WO2019152466A1 (en) 2018-01-31 2019-01-30 Image transformation for machine learning

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310810057.7A Division CN116933891A (zh) 2018-01-31 2019-01-30 用于机器学习的图像变换

Publications (2)

Publication Number Publication Date
CN111656390A CN111656390A (zh) 2020-09-11
CN111656390B true CN111656390B (zh) 2023-07-07

Family

ID=65441078

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201980010446.3A Active CN111656390B (zh) 2018-01-31 2019-01-30 用于机器学习的图像变换
CN202310810057.7A Pending CN116933891A (zh) 2018-01-31 2019-01-30 用于机器学习的图像变换

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202310810057.7A Pending CN116933891A (zh) 2018-01-31 2019-01-30 用于机器学习的图像变换

Country Status (6)

Country Link
US (2) US10373291B1 (zh)
EP (3) EP3734543B1 (zh)
JP (2) JP7488185B2 (zh)
KR (2) KR102445872B1 (zh)
CN (2) CN111656390B (zh)
WO (1) WO2019152466A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10936942B2 (en) * 2017-11-21 2021-03-02 Google Llc Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies
US10373291B1 (en) 2018-01-31 2019-08-06 Google Llc Image transformation for machine learning
US11443176B2 (en) * 2018-05-17 2022-09-13 International Business Machines Corporation Acceleration of convolutional neural networks on analog arrays
CN113538252B (zh) * 2020-04-17 2024-03-26 嘉楠明芯(北京)科技有限公司 图像矫正方法以及装置
CN111951217B (zh) * 2020-07-07 2022-01-14 北京鹰瞳科技发展股份有限公司 模型训练方法、医疗图像处理方法及电子设备
CN111984189B (zh) * 2020-07-22 2022-05-17 深圳云天励飞技术股份有限公司 神经网络计算装置和数据读取、数据存储方法及相关设备
KR102412373B1 (ko) 2021-10-29 2022-06-23 주식회사 딥노이드 다중 시점 X-ray 데이터를 활용한 3D 데이터 생성 장치 및 방법
US20240095872A1 (en) * 2022-09-16 2024-03-21 Qualcomm Incorporated Memory storage format for supporting machine learning acceleration

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5113455A (en) * 1990-02-27 1992-05-12 Eastman Kodak Company Digital image scaling by stepwise pixel movement
US5193126A (en) * 1990-01-25 1993-03-09 Toyo Ink Mfg. Co., Ltd. Image deformation method and apparatus using coordinate transformation
CN103152504A (zh) * 2011-12-06 2013-06-12 佳能株式会社 配备有真实尺寸预览功能的图像形成装置及图像显示方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59100974A (ja) * 1982-12-01 1984-06-11 Nec Corp 画像処理装置
US4942621A (en) 1988-11-15 1990-07-17 Msc Technologies, Inc. Method for mapping scanned pixel data
JP2845946B2 (ja) 1989-06-14 1999-01-13 株式会社日立製作所 画像データ変換装置
US5745739A (en) 1996-02-08 1998-04-28 Industrial Technology Research Institute Virtual coordinate to linear physical memory address converter for computer graphics system
US5949429A (en) 1996-11-14 1999-09-07 Microsoft Corporation Method for performing pixel addressing operations for a tiled image
US5870077A (en) * 1997-02-26 1999-02-09 Hewlett-Packard Company Method for tristimulus color data non-linear storage, retrieval, and interpolation
US6195737B1 (en) 1998-03-23 2001-02-27 Ati Technologies Inc. Method and apparatus for relative addressing of tiled data
JP3596590B2 (ja) * 1998-11-18 2004-12-02 ソニー株式会社 付随情報付加装置および方法、付随情報検出装置および方法
US6667745B1 (en) 1999-12-22 2003-12-23 Microsoft Corporation System and method for linearly mapping a tiled image buffer
US6930688B1 (en) * 2000-11-16 2005-08-16 Lsi Logic Corporation Generator of graphics in computer system
FR2837607B1 (fr) * 2002-03-25 2004-06-11 Thomson Licensing Sa Dispositif d'affichage numerique d'une image video
EP2259215B1 (en) * 2009-06-04 2016-08-10 Honda Research Institute Europe GmbH Method and structure for a neural associative memory based on optimal Bayesian learning
US8442321B1 (en) * 2011-09-14 2013-05-14 Google Inc. Object recognition in images
JP6161266B2 (ja) * 2012-11-27 2017-07-12 キヤノン株式会社 情報処理装置及びその制御方法及び電子デバイス及びプログラム及び記憶媒体
KR102102702B1 (ko) * 2013-06-19 2020-04-21 삼성전자주식회사 이미지 센서의 단위 픽셀 및 이를 포함하는 이미지 센서
US10073721B2 (en) * 2014-08-20 2018-09-11 The Florida International University Board Of Trustees Non-blocking writes to file data
JP2016058018A (ja) * 2014-09-12 2016-04-21 キヤノン株式会社 画像処理方法、画像処理プログラムおよび画像処理装置
US10387804B2 (en) * 2014-09-30 2019-08-20 BoonLogic Implementations of, and methods of use for a pattern memory engine applying associative pattern memory for pattern recognition
KR102246873B1 (ko) * 2014-11-17 2021-04-30 삼성전자 주식회사 이미지 센서가 생성한 픽셀 이미지의 불량 화소 제거 방법, 상기 방법을 이용한 이미지 센서, 및 상기 방법을 이용한 애플리케이션 프로세서
US10013652B2 (en) * 2015-04-29 2018-07-03 Nuance Communications, Inc. Fast deep neural network feature transformation via optimized memory bandwidth utilization
US9934153B2 (en) * 2015-06-30 2018-04-03 Nvidia Corporation Patch memory system
US11055063B2 (en) * 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10248908B2 (en) 2017-06-19 2019-04-02 Google Llc Alternative loop limits for accessing data in multi-dimensional tensors
US10373291B1 (en) 2018-01-31 2019-08-06 Google Llc Image transformation for machine learning

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193126A (en) * 1990-01-25 1993-03-09 Toyo Ink Mfg. Co., Ltd. Image deformation method and apparatus using coordinate transformation
US5113455A (en) * 1990-02-27 1992-05-12 Eastman Kodak Company Digital image scaling by stepwise pixel movement
CN103152504A (zh) * 2011-12-06 2013-06-12 佳能株式会社 配备有真实尺寸预览功能的图像形成装置及图像显示方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
A patch memory system for image processing and computer vision;Jason Clemons, Chih-Chi Cheng∗, Iuri Frosio等;《2016 49th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO)》;20161001;全文 *

Also Published As

Publication number Publication date
CN116933891A (zh) 2023-10-24
EP3583575B1 (en) 2020-07-01
KR20200100190A (ko) 2020-08-25
US20200027195A1 (en) 2020-01-23
CN111656390A (zh) 2020-09-11
KR102445872B1 (ko) 2022-09-21
WO2019152466A1 (en) 2019-08-08
EP4254313A3 (en) 2023-12-20
US20190236755A1 (en) 2019-08-01
EP3734543A1 (en) 2020-11-04
EP4254313A2 (en) 2023-10-04
KR20220132659A (ko) 2022-09-30
JP7488185B2 (ja) 2024-05-21
US10373291B1 (en) 2019-08-06
JP2021516382A (ja) 2021-07-01
JP2023109847A (ja) 2023-08-08
US11170469B2 (en) 2021-11-09
EP3583575A1 (en) 2019-12-25
EP3734543B1 (en) 2023-11-15

Similar Documents

Publication Publication Date Title
CN111656390B (zh) 用于机器学习的图像变换
US11922132B2 (en) Information processing method and terminal device
KR102224510B1 (ko) 데이터 관리를 위한 시스템들 및 방법들
KR102278661B1 (ko) 대안적인 루프 제한
CN107622302B (zh) 用于卷积神经网络的超像素方法
US20180181858A1 (en) Convolutional neural network (cnn) processing method and apparatus
US11099772B2 (en) Hardware double buffering using a special purpose computational unit
KR102562320B1 (ko) 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
CN114207629A (zh) 用于在神经网络加速器中读写稀疏数据的系统和方法
CN111758107A (zh) 用于基于硬件的池化的系统和方法
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
US20210133854A1 (en) Information processing method and terminal device
US11164032B2 (en) Method of performing data processing operation
CN114761925A (zh) 处理元件阵列的高效利用
JP2019128806A (ja) データ圧縮装置、データ圧縮方法およびデータ圧縮プログラム
KR20230155110A (ko) 뉴럴 네트워크를 이용한 초분광 이미지의 시각화 방법 및 장치
CN116740262A (zh) 数据处理方法及装置、电子设备和存储介质
CN114386562A (zh) 减少神经模型的资源需求的方法、系统和存储介质
CN116050474A (zh) 一种卷积计算方法、soc芯片、电子设备及存储介质

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