CN112561943B - 一种基于脉动阵列卷积运算数据复用的图像处理方法 - Google Patents

一种基于脉动阵列卷积运算数据复用的图像处理方法 Download PDF

Info

Publication number
CN112561943B
CN112561943B CN202011532801.4A CN202011532801A CN112561943B CN 112561943 B CN112561943 B CN 112561943B CN 202011532801 A CN202011532801 A CN 202011532801A CN 112561943 B CN112561943 B CN 112561943B
Authority
CN
China
Prior art keywords
image
lambda
convolution kernel
line
row
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
CN202011532801.4A
Other languages
English (en)
Other versions
CN112561943A (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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN202011532801.4A priority Critical patent/CN112561943B/zh
Publication of CN112561943A publication Critical patent/CN112561943A/zh
Application granted granted Critical
Publication of CN112561943B publication Critical patent/CN112561943B/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
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • 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
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)

Abstract

本发明涉及图像处理领域,具体涉及一种基于脉动阵列卷积运算数据复用的图像处理方法。本发明方法在脉动阵列结构的基础上进行拓展,通过对卷积核旋转处理实现了卷积核在图像上滑动的效果;通过图像的重排列实现了图像和旋转后的卷积核的对应。这一改变极大的改善了嵌入式设备的性能。对比于传统的卷积运算转化为矩阵乘法运算的内存开销,本方法的内存开销减少了近70%。在图像边缘检测的实现效果中,基于CycloneVSoC‑FPGA平台,设计了本方法对应的图像边缘识别加速系统,对卷积运算进行了加速验证。在测试中,卷积核旋转脉动阵列结构的处理速度为0.011秒,对比于ARMCoretexA9处理器,速度提升了16.27倍,对比于i5‑7700 2.8GHz CPU,速度提升了9倍。

Description

一种基于脉动阵列卷积运算数据复用的图像处理方法
技术领域
本发明涉及图像处理领域,具体涉及一种基于脉动阵列卷积运算数据复用的图像处理方法。
背景技术
图像边缘检测是图像处理学研究的热点之一,是图像分析和图像识别领域的基础性课题。图像边缘检测的核心是卷积运算,卷积运算贯穿于图像识别的处理整个过程,因此卷积运算的加速对于图像处理领域意义重大。
脉动阵列结构发明于上世界80年代,而受制于当时的半导体制造工艺,脉动阵列结构并没有太多的实际应用。随着半导体技术的持续演进,芯片的存储和处理能力得到大幅度提升,为脉冲阵列的发展提供了硬件的基础和实现的可能,以及大数据和深度学习高速发展的实际需求推动了其研究的动力,脉动阵列最终在大数据处理、图像处理等方面得到了实际应用。
卷积运算在硬件设计过程中,通常以矩阵乘法的方式实现。矩阵乘法运算简单且规则的特性适合于脉动阵列,而且脉动阵列可以实现充分的流水,因此脉动阵列可实现较好的卷积运算加速效果。
卷积运算变换为矩阵运算后,运算过程中存在大量重复的输入数据,使得内存开销变大。而传统的脉动阵列使用方法无法实现数据复用的效果。
发明内容
本发明的目的是提出一种基于脉动阵列卷积运算数据复用的图像处理方法,以充分实现数据复用,减少内存开销,实现卷积运算的加速。
本发明提出的基于脉动阵列卷积运算数据复用的图像处理方法,如下步骤:
(1)将待处理图像的R、G、B三通道数据加权求和,得到待处理图像的灰度图
(2)以(2Nλ-1)×(2Nλ-1)的窗口大小在待处理图像的灰度图上进行滑动取值,滑动的步长为N-1;
其中,N为卷积核的尺寸,λ为卷积核的移动步长,这里的卷积核指Sobel算子,包括x方向和y方向两个矩阵;
(3)根据卷积核移动规律,将步骤(2)得到的待处理图像D11、D12、D13…D1(2Nλ-1)、D21…D(2Nλ-1)(2Nλ-1)进行重排列,得到N2行图像数据;
其中,D11表示图像中第一行第一列的元素,D(2Nλ-1)(2Nλ-1)表示图像中第2Nλ-1行第2Nλ-1列的元素;
N2行图像数据中的第一行与待处理图像的四个元素{D11 D1(Nλ+1) D(Nλ+1)1D(Nλ+1)(Nλ+1)}相对应,N2行图像数据中的第二行与待处理图像的四个元素{D21 D2(Nλ+1) D(Nλ+2)1D(Nλ+2)(Nλ+1)}相对应,直到N2行图像数据中的第N行,与{D(Nλ)1 DNλ(Nλ+1) null null}相对应,其中null表示第N行的第三个和第四个元素超过了图像范围,用后续的图像数据补充,以此类推,N2行图像数据中的第N+1行与待处理图像的四个元素{D13 D1(Nλ+2) D(Nλ+1)2 D(Nλ+1)(Nλ+2)}相对应,第N+1行到第2N行的变化规律与第1行到第N行的变化规律相同;因此第2N行对应于{D(Nλ)2 DNλ(Nλ+2) null null},以此类推,第N2行对应于{D(Nλ+1)(Nλ+2) null null null};
(4)对用于卷积运算的卷积核进行旋转处理如下:
设定卷积核为矩阵C11、C12、C13…C1N、C21…CNN共N×N个元素,将卷积核在图像上的滑动转换为卷积核的旋转,即卷积核在图像上从左至右按照步长λ滑动转换为卷积核以列为单位进行右移λ操作,所述的右移λ操作,即第0列到第N-λ列移动至第λ列到第N列,第N-λ+1列到第N列移动至第0列到第λ-1列;
将卷积核在图像上从上至下按照步长λ滑动转换为卷积核以行为单位进行右移λ操作,所述右移λ操作,即第0行到第N-λ行移动至第λ行到第N行,第N-λ+1行到第N行移动至第0行到第λ-1行;
(5)采用脉动阵列结构,利用步骤(2)的卷积核对步骤(1)的N2行图像进行加权求和计算,得到待处理图像的x方向和y方向的偏导数,实现步骤如下:
将步骤(1)的N2行图像在脉动阵列结构的x方向进行广播,同时使步骤(2)的卷积核与脉动阵列结构的基本运算单元相连,图像和卷积核在基本单元中进行乘积运算,实现加权操作,将所有N2行图像的运算结果在脉动阵列结构的y方向进行广播,实现求和运算;
(6)将待处理图像的x方向和y方向的导数的绝对值相加得到最终的待处理图像的边缘检测灰度图结果,基于脉动阵列卷积运算数据复用的图像处理。
本发明提出的基于脉动阵列卷积运算数据复用的图像处理方法,其优点是:
本发明的基于脉动阵列卷积运算数据复用的图像处理方法,图像处理过程中计算量集中在卷积运算,因此基于脉动阵列卷积运算数据复用方法与传统的卷积运算转化为矩阵乘法运算的内存开销相比,充分利用图像,内存开销减少了近70%。这一改进对于内存资源受限的嵌入式系统有着重大意义,充分利用内存可以减少嵌入式系统与片外存储器的通讯次数,进而加快图像处理速度。
本发明方法在图像边缘检测的实现效果中,基于CycloneVSoC-FPGA平台,设计了本方法对应的图像边缘识别加速系统,对卷积运算进行了加速验证。在测试中,卷积核旋转脉动阵列结构的处理速度为0.011秒,对比于ARMCoretexA9处理器,速度提升了16.27倍,对比于i5-7700 2.8GHz CPU,速度提升了9倍。
附图说明
此处附图的说明是帮助进一步的理解本申请,构成本申请的一部分,本申请的示意性实施例用于解释本申请,并不构成对本申请的不当限定。
图1为本发明方法在嵌入式系统上实现时的片上系统架构。
图2为本发明方法中脉动阵列基本单元的RTL结构图。
图3为本发明方法中卷积核和待处理图像在脉动阵列中的广播示意图。
具体实施方式
本发明提出的基于脉动阵列卷积运算数据复用的图像处理方法,其流程框图如图1所示,包括如下步骤:
(1)将待处理图像的R、G、B三通道数据加权求和,得到待处理图像的灰度图
(2)以(2Nλ-1)×(2Nλ-1)的窗口大小在待处理图像的灰度图上进行滑动取值,滑动的步长为N-1;
其中,N为卷积核的尺寸,λ为卷积核的移动步长,这里的卷积核指Sobel算子,包括x方向和y方向两个矩阵;
(3)根据卷积核移动规律,将步骤(2)得到的待处理图像D11、D12、D13…D1(2Nλ-1)、D21…D(2Nλ-1)(2Nλ-1)进行重排列,得到N2行图像数据;
其中,D11表示图像中第一行第一列的元素,D(2Nλ-1)(2Nλ-1)表示图像中第2Nλ-1行第2Nλ-1列的元素;
N2行图像数据中的第一行与待处理图像的四个元素{D11 D1(Nλ+1) D(Nλ+1)1D(Nλ+1)(Nλ+1)}相对应,N2行图像数据中的第二行与待处理图像的四个元素{D21 D2(Nλ+1) D(Nλ+2)1D(Nλ+2)(Nλ+1)}相对应,直到N2行图像数据中的第N行,与{D(Nλ)1 DNλ(Nλ+1) null null}相对应,其中null表示第N行的第三个和第四个元素超过了图像范围,用后续的图像数据补充,以此类推,N2行图像数据中的第N+1行与待处理图像的四个元素{D12 D1(Nλ+2) D(Nλ+1)2 D(Nλ+1)(Nλ+2)}相对应,第N+1行到第2N行的变化规律与第1行到第N行的变化规律相同;因此第2N行对应于{D(Nλ)2 DNλ(Nλ+2) null null},以此类推,第N2行对应于{D(Nλ+1)(Nλ+2) null null null};
(4)对用于卷积运算的卷积核进行旋转处理如下:
设定卷积核为矩阵C11、C12、C13…C1N、C21…CNN共N×N个元素,将卷积核在图像上的滑动转换为卷积核的旋转,即卷积核在图像上从左至右按照步长λ滑动转换为卷积核以列为单位进行右移λ操作,所述的右移λ操作,即第0列到第N-λ列移动至第λ列到第N列,第N-λ+1列到第N列移动至第0列到第λ-1列;
将卷积核在图像上从上至下按照步长λ滑动转换为卷积核以行为单位进行右移λ操作,所述右移λ操作,即第0行到第N-λ行移动至第λ行到第N行,第N-λ+1行到第N行移动至第0行到第λ-1行;
(5)采用脉动阵列结构,利用步骤(2)的卷积核对步骤(1)的N2行图像进行加权求和计算,得到待处理图像的x方向和y方向的偏导数,实现步骤如下:
将步骤(1)的N2行图像在脉动阵列结构的x方向进行广播,同时使步骤(2)的卷积核与脉动阵列结构的基本运算单元相连,图像和卷积核在基本单元中进行乘积运算,实现加权操作,将所有N2行图像的运算结果在脉动阵列结构的y方向进行广播,实现求和运算;
(6)将待处理图像的x方向和y方向的导数的绝对值相加得到最终的待处理图像的边缘检测灰度图结果,实现基于脉动阵列卷积运算数据复用的图像处理。
下面结合附图详细介绍本发明内容,显然这只是本发明的一部分实施例,仅仅用以解释本发明,并不用于限定本发明。
图1是基于脉动阵列卷积运算数据复用的图像处理方法的嵌入式系统实现的片上系统架构。
本发明方法中,卷积核的大小为N×N,步长为λ。图像大小为M×M。在实施例的说明当中卷积核为Sobel算子,得到N=3,步长为λ=1,使用的是Intel公司的CycloneVSoC-FPGA平台作为嵌入式实现平台。下面的说明也将在这个数据基础上进行说明。
核心模块包括数据控制器、权重控制器、计算器和数据控制器;
数据控制器通过输入数据缓存器读取输入数据,数据控制器的个数为N2=9。输入数据会按照预处理的方式传递到9个数据控制器模块,数据控制器模块再按照脉动阵列中每一行的数据输入顺序传递给计算器每一行的第一个基本运算单元;
权重控制器用于存储所有的卷积核权重参数,存储空间的设定当以卷积核数量做多的一层为基准,权重控制器的个数为N2=9,分别对应一个旋转得到的新的卷积核。
计算器模块负责执行卷积运算,并将每一次卷积运算结果传递给数据处理器;数据处理器负责将脉动阵列输出的结果与上一个卷积核的运算结果相加并且存入内部,如此循环执行直至图像所有的卷积运算结果全部输出。
图2为脉动阵列基本单元的RTL结构图。
脉动阵列实现了卷积核和待处理图像的加权求和的过程,下面通过本实施例中基本单元的RTL结构图说明脉动阵列实现功能的过程:
脉动阵列由基本单元组成,基本单元内部通过使能信号en确定工作状态,自动执行乘法运算和累加运算,并将累加结果和图像选择传递给相邻的基本单元PE中。
基本单元,包含一个乘法器,一个加法器、一个二选一选择器、2个D触发器;
乘法器用于接收待处理图像和新卷积核并进行乘法运算,输出连接到加法器的输入端;
加法器输入端还连接到上一级基本单元的数据输出端,加法器的输出接至所述二选一数据控制器;
二选一数据控制器使能端由输入端口得到,输出连接到输出结果数据的D触发器;
D触发器,分别用于输出结果数据和传递待处理图像的数据。输入端包括时钟信号,使能信号,数据信号;
图3为卷积核和待处理图像在脉动阵列中的广播示意图。
图像数据选择器和脉动阵列中第一列的每一个PE相连,根据时钟周期将预处理后的N2行图像数据依次传递给与其对应的基本运算单元。为了提高内存的利用率,当某些行的基本运算单元需要的数据不足4个时,用下一次滑动窗口里对应的数据进行填补。
权重参数选择器的核心在于卷积核的旋转。卷积核的旋转设计的特殊之处在于不仅要求同一列脉动阵列基本单元内部的权重参与参数的传递,并且权重的传递在脉动阵列基本单元之间存在跳跃,而脉动阵列的并行处理和流水处理要求参数只能传递到相邻的PE,脉动阵列中的数据、结果、权重3个参数既要同时传递,并且还存在跨越脉动阵列基本单元的转递。既要不破坏脉动阵列的结构一致性,又要实现跨越脉动阵列基本单元参数传递。因此在每个脉动阵列基本单元当中增加一个权重控制模块来实现功能,为了保证脉动阵列中所有的脉动阵列基本单元结构一致,将脉动阵列基本单元内部的控制单元以及权重寄存器转移出来进行封装组成权重寄存器和权重参数选择器。
经过卷积核旋转后可以得到N2个新的卷积核,并且这N2次卷积所需要的数据规模N2+2λ(N-1)·N+[λ(N-1)]2=(N+Nλ-λ)2,相比较于普通卷积运算所需的N2·N2的数据规模,卷积核旋转脉动阵列的内存开销减少了:1-[(N+Nλ-λ)/N2]2。几种常用的卷积核尺寸和步长的卷积运算过程中,内存开销减少的比例如下所示
Figure BDA0002852492110000061

Claims (1)

1.一种基于脉动阵列卷积运算数据复用的图像处理方法,其特征在于该方法包括如下步骤:
(1)将待处理图像的R、G、B三通道数据加权求和,得到待处理图像的灰度图
(2)以(2Nλ-1)×(2Nλ-1)的窗口大小在待处理图像的灰度图上进行滑动取值,滑动的步长为N-1;
其中,N为卷积核的尺寸,λ为卷积核的移动步长,这里的卷积核指Sobel算子,包括x方向和y方向两个矩阵;
(3)根据卷积核移动规律,将步骤(2)得到的待处理图像D11、D12、D13…D1(2Nλ-1)、D21…D(2Nλ-1)(2Nλ-1)进行重排列,得到N2行图像数据;
其中,D11表示图像中第一行第一列的元素,D(2Nλ-1)(2Nλ-1)表示图像中第2Nλ-1行第2Nλ-1列的元素;
N2行图像数据中的第一行与待处理图像的四个元素{D11 D1(Nλ+1) D(Nλ+1)1 D(Nλ+1)(Nλ+1)}相对应,N2行图像数据中的第二行与待处理图像的四个元素{D21 D2(Nλ+1) D(Nλ+2)1 D(Nλ+2)(Nλ+1)}相对应,直到N2行图像数据中的第N行,与{D(Nλ)1 DNλ(Nλ+1) null null}相对应,其中null表示第N行的第三个和第四个元素超过了图像范围,用后续的图像数据补充,以此类推,N2行图像数据中的第N+1行与待处理图像的四个元素{D12 D1(Nλ+2) D(Nλ+1)2 D(Nλ+1)(Nλ+2)}相对应,第N+1行到第2N行的变化规律与第1行到第N行的变化规律相同;因此第2N行对应于{D(Nλ)2DNλ(Nλ+2) null null},以此类推,第N2行对应于{D(Nλ+1)(Nλ+2) null null null};
(4)对用于卷积运算的卷积核进行旋转处理如下:
设定卷积核为矩阵C11、C12、C13…C1N、C21…CNN共N×N个元素,将卷积核在图像上的滑动转换为卷积核的旋转,即卷积核在图像上从左至右按照步长λ滑动转换为卷积核以列为单位进行右移λ操作,所述的右移λ操作,即第0列到第N-λ列移动至第λ列到第N列,第N-λ+1列到第N列移动至第0列到第λ-1列;
将卷积核在图像上从上至下按照步长λ滑动转换为卷积核以行为单位进行右移λ操作,所述右移λ操作,即第0行到第N-λ行移动至第λ行到第N行,第N-λ+1行到第N行移动至第0行到第λ-1行;
(5)采用脉动阵列结构,利用步骤(2)的卷积核对步骤(1)的N2行图像进行加权求和计算,得到待处理图像的x方向和y方向的偏导数,实现步骤如下:
将步骤(1)的N2行图像在脉动阵列结构的x方向进行广播,同时使步骤(2)的卷积核与脉动阵列结构的基本运算单元相连,图像和卷积核在基本单元中进行乘积运算,实现加权操作,将所有N2行图像的运算结果在脉动阵列结构的y方向进行广播,实现求和运算;
(6)将待处理图像的x方向和y方向的导数的绝对值相加得到最终的待处理图像的边缘检测灰度图结果,实现基于脉动阵列卷积运算数据复用的图像处理。
CN202011532801.4A 2020-12-23 2020-12-23 一种基于脉动阵列卷积运算数据复用的图像处理方法 Active CN112561943B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011532801.4A CN112561943B (zh) 2020-12-23 2020-12-23 一种基于脉动阵列卷积运算数据复用的图像处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011532801.4A CN112561943B (zh) 2020-12-23 2020-12-23 一种基于脉动阵列卷积运算数据复用的图像处理方法

Publications (2)

Publication Number Publication Date
CN112561943A CN112561943A (zh) 2021-03-26
CN112561943B true CN112561943B (zh) 2022-11-22

Family

ID=75032169

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011532801.4A Active CN112561943B (zh) 2020-12-23 2020-12-23 一种基于脉动阵列卷积运算数据复用的图像处理方法

Country Status (1)

Country Link
CN (1) CN112561943B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115861043B (zh) * 2023-02-16 2023-05-16 深圳市旗云智能科技有限公司 基于人工智能的图像数据处理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109313663A (zh) * 2018-01-15 2019-02-05 深圳鲲云信息科技有限公司 人工智能计算辅助处理装置、方法、存储介质、及终端
CN110246078A (zh) * 2019-05-31 2019-09-17 北京航空航天大学 一种基于嵌入式gpu和卷积计算的图像处理方法和装置
CN111381968A (zh) * 2020-03-11 2020-07-07 中山大学 一种高效运行深度学习任务的卷积运算优化方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109313663A (zh) * 2018-01-15 2019-02-05 深圳鲲云信息科技有限公司 人工智能计算辅助处理装置、方法、存储介质、及终端
CN110246078A (zh) * 2019-05-31 2019-09-17 北京航空航天大学 一种基于嵌入式gpu和卷积计算的图像处理方法和装置
CN111381968A (zh) * 2020-03-11 2020-07-07 中山大学 一种高效运行深度学习任务的卷积运算优化方法及系统

Also Published As

Publication number Publication date
CN112561943A (zh) 2021-03-26

Similar Documents

Publication Publication Date Title
CN109886400B (zh) 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法
CN108805266B (zh) 一种可重构cnn高并发卷积加速器
US10394929B2 (en) Adaptive execution engine for convolution computing systems
CN108108809B (zh) 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法
CN111897579B (zh) 图像数据处理方法、装置、计算机设备和存储介质
US20210357735A1 (en) Split accumulator for convolutional neural network accelerator
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
US20040215677A1 (en) Method for finding global extrema of a set of bytes distributed across an array of parallel processing elements
CN111666255A (zh) 脉动阵列和处理系统
CN111210019B (zh) 一种基于软硬件协同加速的神经网络推断方法
CN110674927A (zh) 一种用于脉动阵列结构的数据重组方法
CN110851779B (zh) 用于稀疏矩阵运算的脉动阵列架构
CN110705703A (zh) 基于脉动阵列的稀疏神经网络处理器
CN112905530B (zh) 片上架构、池化计算加速器阵列、单元以及控制方法
CN112950656A (zh) 一种基于fpga平台的按通道进行预读取数据的分块卷积方法
CN111340198A (zh) 基于fpga的数据高度复用的神经网络加速器
CN114781632A (zh) 基于动态可重构脉动张量运算引擎的深度神经网络加速器
CN114356836A (zh) 基于risc-v的三维互联众核处理器架构及其工作方法
CN112561943B (zh) 一种基于脉动阵列卷积运算数据复用的图像处理方法
CN110414672B (zh) 卷积运算方法、装置及系统
CN109472734B (zh) 一种基于fpga的目标检测网络及其实现方法
CN111506344A (zh) 一种基于脉动阵列架构的深度学习硬件系统
CN110766136B (zh) 一种稀疏矩阵与向量的压缩方法
US20230376733A1 (en) Convolutional neural network accelerator hardware
CN113516236A (zh) 基于zynq平台的vgg16网络并行加速处理方法

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