CN107491809A - 一种fpga实现残差网络中激活函数的方法 - Google Patents
一种fpga实现残差网络中激活函数的方法 Download PDFInfo
- Publication number
- CN107491809A CN107491809A CN201710718554.9A CN201710718554A CN107491809A CN 107491809 A CN107491809 A CN 107491809A CN 201710718554 A CN201710718554 A CN 201710718554A CN 107491809 A CN107491809 A CN 107491809A
- Authority
- CN
- China
- Prior art keywords
- activation primitive
- data
- read
- module
- residual error
- 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
Links
- 230000004913 activation Effects 0.000 title claims abstract description 90
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 44
- 230000006870 function Effects 0.000 claims abstract description 38
- 238000012546 transfer Methods 0.000 abstract description 10
- 238000005516 engineering process Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000006690 co-activation Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000005034 decoration Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Detection And Correction Of Errors (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种FPGA实现残差网络中激活函数的方法,该方法包括:每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。该方法实现减少不同激活函数间的数据传输I/O损耗。
Description
技术领域
本发明涉及深度学习加速技术领域,特别是涉及一种FPGA实现残差网络中激活函数的方法。
背景技术
目前,大数据技术的快速发展极大的推动了深度学习技术发展的进程,而FPGA则是加速深度学习的有效手段之一。在通常的由CPU实现的卷积神经网络结构中,不同种类的激活函数均处于单独的模块中,以实现搭建不同网络结构的复用与重载。涉及到FPGA实现残差网络中激活函数的使用,但在FPGA中各激活函数的模块没有可复用性,各模块之间数据通过内存通道(channel)进行通信,因此反复的读写芯片缓存(DDR)必然会带来输入与输出上的效率损耗,即不同激活函数间的数据传输I/O损耗较多。
因此如何减少不同激活函数间的数据传输I/O损耗是亟待解决的问题。
发明内容
本发明的目的是提供一种FPGA实现残差网络中激活函数的方法,以实现减少不同激活函数间的数据传输I/O损耗。
为解决上述技术问题,本发明提供一种FPGA实现残差网络中激活函数的方法,包括:
每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;
将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;
在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。
优选的,所述将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中,包括:
将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel以一个节拍传入多个浮点数,读入激活函数处理模块中。
优选的,所述批归一化函数、缩放函数和线性激活函数均为由OpenCL语言描述的函数。
优选的,所述残差网络以每一个新的卷积层记数一层。
优选的,所述通过内存通道channel读入激活函数处理模块中之后,还包括:
将数据对应的纬度信息读入激活函数处理模块中。
优选的,所述一个节拍为一个时钟节拍。
优选的,所述浮点数的个数为8个。
本发明所提供的一种FPGA实现残差网络中激活函数的方法,每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。可见,将激活函数置于同一模块中,利用FPGA的异构并行性,使所有激活函数能够在一个时钟节拍中完成数据激活的操作,加速了数据处理效率。与通用的CPU实现方式相比,本发明采用OpenCL语言进行FPGA硬件比特流的生成,能够有效改善算法实现效率,将残差网络所需要的激活函数置于同一模块中,减少不同激活函数间的数据传输I/O损耗,使得可以映射生成高效的FPGA硬件电路结构,进而达到FPGA对激活函数的硬件加速效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明所提供的一种FPGA实现残差网络中激活函数的方法的流程图。
具体实施方式
本发明的核心是提供一种FPGA实现残差网络中激活函数的方法,以实现减少不同激活函数间的数据传输I/O损耗。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
术语描述如下:
ResNet(Deep Residual Learning for Image):残差网络;
Recognition OpenCL(Open Computing Language):开放式计算语言;
FPGA(Field-Programmable Gate Array):现场可编程门阵列。
请参考图1,图1为本发明所提供的一种FPGA实现残差网络中激活函数的方法的流程图,该方法包括:
S11:每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;
S12:将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;
S13:在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。
可见,将激活函数置于同一模块中,利用FPGA的异构并行性,使所有激活函数能够在一个时钟节拍中完成数据激活的操作,加速了数据处理效率。与通用的CPU实现方式相比,本发明采用OpenCL语言进行FPGA硬件比特流的生成,能够有效改善算法实现效率,将残差网络所需要的激活函数置于同一模块中,减少不同激活函数间的数据传输I/O损耗,使得可以映射生成高效的FPGA硬件电路结构,进而达到FPGA对激活函数的硬件加速效果。
基于上述方法,具体的,基于步骤S12,将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中的过程具体包括:将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel以一个节拍传入多个浮点数,读入激活函数处理模块中。
其中,所述一个节拍为一个时钟节拍。所述浮点数的个数为8个。具体的,将经过FPGA芯片的卷积模块处理后的数据,通过内存通道channel以一个节拍传入8个浮点数读入激活函数处理模块中。
其中,所述批归一化函数、缩放函数和线性激活函数均为由OpenCL语言描述的函数。批归一化函数、缩放函数和线性激活函数都是激活函数,可以采用OpenCL语言描述激活函数,也可以采用FPGA语言描述激活函数。
其中,所述残差网络以每一个新的卷积层记数一层。激活函数紧跟卷积层后。
进一步的,步骤S12中,通过内存通道channel读入激活函数处理模块中之后,还包括:将数据对应的纬度信息读入激活函数处理模块中。
本发明采用OpenCL语言完成激活函数在FPGA在残差网络结构中的实现,将激活函数置于同一模块中,利用FPGA的异构并行性,使所有激活函数能够在一个时钟节拍中完成数据激活的操作,加速了数据处理效率。
基于本方法,具体实施过程主要包括以下步骤:
(1)残差网络以每一个新的卷积层记数一层,激活函数紧跟卷积层后;在每进入一个新的层时,从FPGA芯片缓存DDR中读取激活参数需要的参数;
(2)将经过FPGA卷积模块处理后的数据,通过内存通道channel以一个节拍(cycle)传入8个浮点数读入激活函数处理模块中,同时读入的还包括数据对应的维度信息;
(3)数据依次经过由FPGA语言描述的批归一化(batch_norm)函数、缩放(scale)函数、线性激活(relu)函数;
其中,在每进入一个函数之前,在头文件中都有对应的开关来表示是否需要该函数进行处理;
(4)将处理后的数据通过channel写回DDR中。
本发明采用FPGA硬件平台执行激活函数核心模块,能够通过并行流水的优化方式提高算法的并行度,从而改善算法执行时的吞吐率性能。与通用的CPU实现方式相比,本发明采用OpenCL语言进行FPGA硬件比特流的生成,能够有效改善算法实现效率。其中,通过设计合理的OpenCL描述的激活函数,将残差网络所需要的激活函数置于同一模块中,减少不同激活函数间的数据传输I/O损耗,使得可以映射生成高效的FPGA硬件电路结构,进而达到FPGA对激活函数的硬件加速效果。
具体的,本发明通过OpenCL高级描述语言进行激活函数的描述,采用AlteraSDKfor OpenCL高层次综合工具进行面向FPGA的硬件比特流生成,在FPGA实现残差网络中激活函的硬件加速,可以有效的提高FPGA中残差网络的执行性能。其中,将残差网络所需要的激活函数置于同一模块中,减少不同激活函数间的数据传输I/O损耗,符合FPGA的异构加速性能。
综上,本发明所提供的一种FPGA实现残差网络中激活函数的方法,每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。可见,将激活函数置于同一模块中,利用FPGA的异构并行性,使所有激活函数能够在一个时钟节拍中完成数据激活的操作,加速了数据处理效率。与通用的CPU实现方式相比,本发明采用OpenCL语言进行FPGA硬件比特流的生成,能够有效改善算法实现效率,将残差网络所需要的激活函数置于同一模块中,减少不同激活函数间的数据传输I/O损耗,使得可以映射生成高效的FPGA硬件电路结构,进而达到FPGA对激活函数的硬件加速效果。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的一种FPGA实现残差网络中激活函数的方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (7)
1.一种FPGA实现残差网络中激活函数的方法,其特征在于,包括:
每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;
将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;
在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。
2.如权利要求1所述的方法,其特征在于,所述将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中,包括:
将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel以一个节拍传入多个浮点数,读入激活函数处理模块中。
3.如权利要求1所述的方法,其特征在于,所述批归一化函数、缩放函数和线性激活函数均为由OpenCL语言描述的函数。
4.如权利要求1所述的方法,其特征在于,所述残差网络以每一个新的卷积层记数一层。
5.如权利要求1所述的方法,其特征在于,所述通过内存通道channel读入激活函数处理模块中之后,还包括:
将数据对应的纬度信息读入激活函数处理模块中。
6.如权利要求2所述的方法,其特征在于,所述一个节拍为一个时钟节拍。
7.如权利要求2所述的方法,其特征在于,所述浮点数的个数为8个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710718554.9A CN107491809B (zh) | 2017-08-21 | 2017-08-21 | 一种fpga实现残差网络中激活函数的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710718554.9A CN107491809B (zh) | 2017-08-21 | 2017-08-21 | 一种fpga实现残差网络中激活函数的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107491809A true CN107491809A (zh) | 2017-12-19 |
CN107491809B CN107491809B (zh) | 2020-10-16 |
Family
ID=60645641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710718554.9A Active CN107491809B (zh) | 2017-08-21 | 2017-08-21 | 一种fpga实现残差网络中激活函数的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107491809B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117940A (zh) * | 2018-06-19 | 2019-01-01 | 腾讯科技(深圳)有限公司 | 一种卷积神经网络前向加速方法、装置及系统 |
CN109961139A (zh) * | 2019-01-08 | 2019-07-02 | 广东浪潮大数据研究有限公司 | 一种残差网络的加速方法、装置、设备及存储介质 |
CN110866595A (zh) * | 2018-08-28 | 2020-03-06 | 北京嘉楠捷思信息技术有限公司 | 一种集成电路中激活函数运算方法、装置及电路 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7917333B2 (en) * | 2008-08-20 | 2011-03-29 | Caterpillar Inc. | Virtual sensor network (VSN) based control system and method |
CN105678379A (zh) * | 2016-01-12 | 2016-06-15 | 腾讯科技(深圳)有限公司 | 一种cnn的处理方法和装置 |
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN106650925A (zh) * | 2016-11-29 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种基于MIC集群的深度学习框架Caffe系统及算法 |
CN106778918A (zh) * | 2017-01-22 | 2017-05-31 | 北京飞搜科技有限公司 | 一种应用于手机端的深度学习图像识别系统及实现方法 |
CN106778910A (zh) * | 2017-01-12 | 2017-05-31 | 张亮 | 基于本地训练的深度学习系统和方法 |
CN106779050A (zh) * | 2016-11-24 | 2017-05-31 | 厦门中控生物识别信息技术有限公司 | 一种卷积神经网络的优化方法和装置 |
CN106897268A (zh) * | 2017-02-28 | 2017-06-27 | 科大讯飞股份有限公司 | 文本语义理解方法、装置和系统 |
-
2017
- 2017-08-21 CN CN201710718554.9A patent/CN107491809B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7917333B2 (en) * | 2008-08-20 | 2011-03-29 | Caterpillar Inc. | Virtual sensor network (VSN) based control system and method |
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN105678379A (zh) * | 2016-01-12 | 2016-06-15 | 腾讯科技(深圳)有限公司 | 一种cnn的处理方法和装置 |
CN106779050A (zh) * | 2016-11-24 | 2017-05-31 | 厦门中控生物识别信息技术有限公司 | 一种卷积神经网络的优化方法和装置 |
CN106650925A (zh) * | 2016-11-29 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种基于MIC集群的深度学习框架Caffe系统及算法 |
CN106778910A (zh) * | 2017-01-12 | 2017-05-31 | 张亮 | 基于本地训练的深度学习系统和方法 |
CN106778918A (zh) * | 2017-01-22 | 2017-05-31 | 北京飞搜科技有限公司 | 一种应用于手机端的深度学习图像识别系统及实现方法 |
CN106897268A (zh) * | 2017-02-28 | 2017-06-27 | 科大讯飞股份有限公司 | 文本语义理解方法、装置和系统 |
Non-Patent Citations (1)
Title |
---|
CHARLES-WAN: "Caffe 议事(二):从零开始搭建ResNet之网络的搭建", 《HTTPS://WWW.CNBLOGS.COM/CHARLES-WAN/P/6535395.HTML》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117940A (zh) * | 2018-06-19 | 2019-01-01 | 腾讯科技(深圳)有限公司 | 一种卷积神经网络前向加速方法、装置及系统 |
CN109117940B (zh) * | 2018-06-19 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 基于卷积神经网络的目标检测方法、装置、终端及存储介质 |
CN110866595A (zh) * | 2018-08-28 | 2020-03-06 | 北京嘉楠捷思信息技术有限公司 | 一种集成电路中激活函数运算方法、装置及电路 |
CN110866595B (zh) * | 2018-08-28 | 2024-04-26 | 嘉楠明芯(北京)科技有限公司 | 一种集成电路中激活函数运算方法、装置及电路 |
CN109961139A (zh) * | 2019-01-08 | 2019-07-02 | 广东浪潮大数据研究有限公司 | 一种残差网络的加速方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107491809B (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11977977B2 (en) | Methods and systems for data analysis in a state machine | |
US9817678B2 (en) | Methods and systems for detection in a state machine | |
CN107608750B (zh) | 用于型式辨识的装置 | |
JP6126127B2 (ja) | ステートマシンにおけるルーティング用の方法およびシステム | |
TWI489779B (zh) | 狀態機晶格中之布林邏輯 | |
US10203878B2 (en) | Near memory accelerator | |
US11829311B2 (en) | Custom compute cores in integrated circuit devices | |
US20180336394A1 (en) | Unsupervised land use and land cover detection | |
CN106648467A (zh) | 一种日志生成方法及系统 | |
JP2016515266A (ja) | ステートマシンエンジンによって受信されるデータを提供するための方法及び装置 | |
CN111198868B (zh) | 一种智能分库实时数据迁移方法和装置 | |
KR20150052110A (ko) | 상태 기계 엔진들에 대한 결과들 생성 | |
CN107491809A (zh) | 一种fpga实现残差网络中激活函数的方法 | |
US20170193351A1 (en) | Methods and systems for vector length management | |
US20190303740A1 (en) | Block transfer of neuron output values through data memory for neurosynaptic processors | |
US20240078112A1 (en) | Techniques for decoupled access-execute near-memory processing | |
CN106445472B (zh) | 一种字符操作加速方法、装置、芯片、处理器 | |
CN109844774B (zh) | 一种并行反卷积计算方法、单引擎计算方法及相关产品 | |
CN110324204A (zh) | 一种在fpga中实现的高速正则表达式匹配引擎及方法 | |
CN109783032A (zh) | 一种基于异构计算的分布式存储加速方法及装置 | |
CN115130675B (zh) | 一种量子随机电路的多振幅模拟方法和装置 | |
CN115146780B (zh) | 一种量子张量网络转置和收缩协同的方法和装置 | |
CN107749828A (zh) | Ip数据包分发采集方法、装置、终端设备及存储介质 | |
Briffa | Graphics processing unit implementation and optimisation of a flexible maximum a‐posteriori decoder for synchronisation correction | |
CN115577067A (zh) | 报文检测方法、装置、系统、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200916 Address after: 215100 No. 1 Guanpu Road, Guoxiang Street, Wuzhong Economic Development Zone, Suzhou City, Jiangsu Province Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd. Address before: 450018 Henan province Zheng Dong New District of Zhengzhou City Xinyi Road No. 278 16 floor room 1601 Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |