KR20180125843A - (국문)다양한 cnn 모델에 적용 가능한 하드웨어 분류기 - Google Patents
(국문)다양한 cnn 모델에 적용 가능한 하드웨어 분류기 Download PDFInfo
- Publication number
- KR20180125843A KR20180125843A KR1020170060690A KR20170060690A KR20180125843A KR 20180125843 A KR20180125843 A KR 20180125843A KR 1020170060690 A KR1020170060690 A KR 1020170060690A KR 20170060690 A KR20170060690 A KR 20170060690A KR 20180125843 A KR20180125843 A KR 20180125843A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- module
- cnn
- convolution
- fully
- Prior art date
Links
Images
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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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
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)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
본 발명은 CNN 네트워크 모델에 유연하게 적용 가능한 하드웨어 분류기를 위한 방법이다. 블록 단위의 연산과 소프트웨어의 제어를 통해 다양한 크기의 네트워크에도 적용 가능 하도록 하드웨어를 설계한다.
Description
본 발명은 객체를 학습 및 분류하는데 사용되는 CNN(Convolutional Neural Network)에 사용되는 분류기 구조에 대한 것으로, 단일 네트워크 모델을 분류하는데 특화된 하드웨어 구조가 아닌 다양한 네트워크 모델에 유연하게 적용 가능 한 하드웨어 분류기를 설계하는 것에 관한 것이다.
CNN은 영상처리 분야에서 뛰어난 검출율을 기록하고 있다. CNN을 연산하기 위해선 Convolution Layer -> Pooling Layer -> Fully-connected layer의 순으로 연산을 처리해야 한다.
CNN 분류를 하기 위한 네트워크 모델은 다양하며 제각기 다른 크기의 네트워크, Feature 개수를 가지게 된다. 또 한 동일한 네트워크 모델을 사용하더라도, 학습하는 방법에 따라 서로 다른 Feature 크기 및 개수를 가지게 된다.
서로 다른 크기의 네트워크 구조를 가지더라도, 최소 공통 연산 모듈의 단위가 존재하므로 해당 모듈을 이용해 다양한 네트워크 모델을 처리할 수 있다.
종래기술에 의해 하드웨어에 CNN 분류기를 구현한 경우 네트워크 자체의 변경, 네트워크의 크기 및 개수가 변경될 경우 새로운 하드웨어를 구현해야 하는 번거로움이 있다.
따라서 본 발명이 이루고자 하는 기술적 과제는 하드웨어로 CNN을 구현할 때 다양한 CNN 네트워크 모델과 네트워크의 크기에 유연하게 적용 가능하도록 CNN 하드웨어를 블록단위의 연산기로 설계하고, 이를 소프트웨어로 제어한다. 해당 구조는 하드웨어 및 소프트웨어의 처리를 필요하기 때문에 FPGA(Field Programmable Gate-Array)가 포함된 SoC(System on Chip)환경에서 동작한다.
위에서 설명한 바와 같이, FPGA(Field Programmable Gate-Array)가 포함된 SoC(System on Chip)환경에서 CNN을 이용하여 객체를 분류할 때, 적절한 크기의 블록 연산기와 소프트웨어로 처리함으로써 CNN 처리속도 향상을 위해 사용하는 하드웨어 사용이 용이해 지는 효과가 있다.
도 1은 CNN 네트워크 모델인 AlexNet이다.
도 2은 CNN 네트워크 모델인 VGG-Net이다.
도 3은 CNN 네트워크 모델인 LeNet이다.
도 4은 블록 단위의 Convolution/Pooling Layer 슈도코드이다.
도 5는 블록 단위의 Convolutional/Pooling Layer 예제이다.
도 6은 Fully-connected Layer 슈도코드이다.
도 7는 블록 단위의 Fully-connected 예제이다.
도 2은 CNN 네트워크 모델인 VGG-Net이다.
도 3은 CNN 네트워크 모델인 LeNet이다.
도 4은 블록 단위의 Convolution/Pooling Layer 슈도코드이다.
도 5는 블록 단위의 Convolutional/Pooling Layer 예제이다.
도 6은 Fully-connected Layer 슈도코드이다.
도 7는 블록 단위의 Fully-connected 예제이다.
도 1,2,3과 같이 각각의 대표적인 CNN 네트워크 모델은 서로 필요로 하는 원본 image size, feature size, feature 개수, stride size, padding size 및 kernel size가 다르다. 그리고 CNN을 이용하여 객체를 분류할 경우 필요로 하는 연산량 또한 많아 GPU(Graphic Processing Unit), ASIC(Application Specific Integrated Circuit), FPGA와 같은 다양한 하드웨어를 이용하여 구현된다.
본 발명에서는 네트워크의 최소 feature 크기를 가지는 블록 단위의 반복 연산을 통해 다양한 CNN 네트워크 모델의 연산을 해결한다. 해당 블록단위의 연산은 FPGA 하드웨어에서 동작하며, 동작 횟수와 피 연산자는 소프트웨어를 통해 전달한다.
도 4,5와 같이 블록 단위의 연산을 위해 Convolution Layer의 블록 크기는 n*n으로 설정한다. 연산에 필요한 데이터의 전송 부하로 n의 크기는 최소 feature의 크기로 설정 하여 전송 부하를 감소시킨다. 연산 속도는 블록 단위의 연산에서 kernel size 만큼의 병렬 처리를 통해 연산 속도를 증가시킨다. 블록 단위의 Convolution 연산이 끝난 후 Pooling 연산을 수행한 뒤 다음 Layer의 연산을 수행한다.
도 6,7과 같이 Fully-connected Layer의 블록 크기는 m으로 설정한다. Fully-connected Layer는 내적 연산을 수행하므로 연산에 필요한 곱셈기가 k 만큼 필요로 한다. m개 의 블록 단위로 데이터를 가져오고, k개의 곱셈기를 이용해 m/k 횟수의 연산으로 하나의 블록 연산을 처리할 수 있다. Convolution Layer와 동일하게 Fully-connected layer의 최소 feature 크기로 블록의 크기를 설정하여 연산을 수행한다.
Convolution/Pooling Layer 블록 모듈과 Fully-connecetd 블록 모듈을 이용해 네트워크 크기에 맞게 반복 연산을 통해 CNN 연산을 수행하게 된다. 위와 같은 연산을 통해 동일한 네트워크 모델에서 feature의 개수 또는 크기가 변해도, 소프트웨어의 제어를 통해 하드웨어 변경 없이 수행할 수 있다.
Claims (5)
- Convolutional Neural Network의 연산을 처리하기 위한 블록 단위의 연산 모듈;
Convolution/Pooling Layer 연산 모듈;
Fully-connected Layer 모듈;
을 포함하고, 소프트웨어의 처리로 2개의 모듈을 반복시켜 CNN 연산을 수행하는 CNN 연산모듈. - 청구항1에 있어서,
Convolution Layer 연산 모듈은 블록 단위의 데이터를 소프트웨어에서 FPGA의 블록 메모리에 전달 하여 병렬로 연산을 수행하는 장치, 연산을 위한 블록의 크기는 네트워크 모델의 최소 Feature 크기로 설정하여 다양한 크기의 네트워크 모델에도 적용 가능한 것을 특징으로 하는 연산 장치. - 청구항1에 있어서,
Pooling Layer 연산 모듈은 Convolution Layer의 블록 단위 연산에서 Pooling 연산을 수행하기 위한 최소 데이터가 있을 경우 연산을 수행하는 장치, 블록단위의 빠른 연산을 수행하기 위해 연산 지연시간이 짧은 것을 특징으로 하는 연산 장치. - 청구항1에 있어서,
Fully-connected 연산 모듈은 Convolution/Pooling Layer 연산을 마친 후 수행하는 모듈로 모든 피 연산자의 내적 연산을 수행하는 장치로, 블록 단위의 피 연산자와 다수의 곱셈기를 이용해 빠른 연산을 수행하는 것을 특징으로 하는 연산 장치. - 청구항1에 있어서,
다수의 Feature와 크기를 가지는 네트워크 모델에 대해서 FPGA에 설계 한 Convolution/Pooling, Fully-connected을 소프트웨어의 제어를 통해 수행하는 장치, 소프트웨어를 통해 연산 모듈의 반복 횟수, 전달할 피 연산자, 수행할 연산 모듈을 결정하여 CNN 연산을 수행하는 것을 특징으로 하는 CNN 연산 처리 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170060690A KR20180125843A (ko) | 2017-05-16 | 2017-05-16 | (국문)다양한 cnn 모델에 적용 가능한 하드웨어 분류기 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170060690A KR20180125843A (ko) | 2017-05-16 | 2017-05-16 | (국문)다양한 cnn 모델에 적용 가능한 하드웨어 분류기 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180125843A true KR20180125843A (ko) | 2018-11-26 |
Family
ID=64603104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170060690A KR20180125843A (ko) | 2017-05-16 | 2017-05-16 | (국문)다양한 cnn 모델에 적용 가능한 하드웨어 분류기 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20180125843A (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109447893A (zh) * | 2019-01-28 | 2019-03-08 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种卷积神经网络fpga加速中图像前处理方法及装置 |
CN110503201A (zh) * | 2019-08-29 | 2019-11-26 | 苏州浪潮智能科技有限公司 | 一种神经网络分布式并行训练方法与装置 |
CN111416743A (zh) * | 2020-03-19 | 2020-07-14 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
KR102253414B1 (ko) * | 2020-12-16 | 2021-05-18 | 주식회사 모빌린트 | Cnn-rnn 아키텍처 전환형 연산 가속장치 설계 방법 |
KR102268813B1 (ko) | 2020-12-14 | 2021-06-25 | 주식회사 모빌린트 | 딥러닝 알고리즘을 위한 fpga 설계 방법 및 시스템 |
WO2022032465A1 (zh) * | 2020-08-11 | 2022-02-17 | 武汉深能环保新沟垃圾发电有限公司 | 一种垃圾焚烧发电厂垃圾池的智能控制方法 |
-
2017
- 2017-05-16 KR KR1020170060690A patent/KR20180125843A/ko not_active Application Discontinuation
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109447893A (zh) * | 2019-01-28 | 2019-03-08 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种卷积神经网络fpga加速中图像前处理方法及装置 |
CN110503201A (zh) * | 2019-08-29 | 2019-11-26 | 苏州浪潮智能科技有限公司 | 一种神经网络分布式并行训练方法与装置 |
CN111416743A (zh) * | 2020-03-19 | 2020-07-14 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
CN111416743B (zh) * | 2020-03-19 | 2021-09-03 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
WO2022032465A1 (zh) * | 2020-08-11 | 2022-02-17 | 武汉深能环保新沟垃圾发电有限公司 | 一种垃圾焚烧发电厂垃圾池的智能控制方法 |
KR102268813B1 (ko) | 2020-12-14 | 2021-06-25 | 주식회사 모빌린트 | 딥러닝 알고리즘을 위한 fpga 설계 방법 및 시스템 |
KR102253414B1 (ko) * | 2020-12-16 | 2021-05-18 | 주식회사 모빌린트 | Cnn-rnn 아키텍처 전환형 연산 가속장치 설계 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20180125843A (ko) | (국문)다양한 cnn 모델에 적용 가능한 하드웨어 분류기 | |
US10445638B1 (en) | Restructuring a multi-dimensional array | |
KR102415576B1 (ko) | 컨벌루션 뉴럴 네트워크의 계산 복잡성을 감소시키기 위한 방법 및 시스템 | |
Sankaradas et al. | A massively parallel coprocessor for convolutional neural networks | |
CN106716439B (zh) | 基于事件的下采样方法、设备、装置及介质 | |
FI3539059T3 (fi) | Kernel-askelluksen suorittaminen laitteistossa | |
Chang et al. | An efficient implementation of 2D convolution in CNN | |
CN108845828B (zh) | 一种协处理器、矩阵运算加速方法及系统 | |
Alawad et al. | Stochastic-based deep convolutional networks with reconfigurable logic fabric | |
WO2019136760A1 (zh) | 图像语义分割方法、可编程逻辑电路、系统及电子设备 | |
CN110738317A (zh) | 基于fpga的可变形卷积网络运算方法、装置和系统 | |
Chervyakov et al. | Increasing of convolutional neural network performance using residue number system | |
CN109214506A (zh) | 一种卷积神经网络的建立装置及方法 | |
CN111738276A (zh) | 基于多核卷积神经网络的图像处理方法、装置及设备 | |
Cesur et al. | On an improved FPGA implementation of CNN-based Gabor-type filters | |
CN110728351A (zh) | 数据处理方法、相关设备及计算机存储介质 | |
Garcés-Socarrás et al. | Library for model-based design of image processing algorithms on FPGAs | |
US20240331355A1 (en) | Synchronous Processing Method, System, Storage medium and Terminal for Image Classification and Object Detection | |
CN109272113A (zh) | 一种卷积神经网络的建立装置及方法 | |
Acharya et al. | FPGA Based Non Uniform Illumination Correction in Image Processing Application 2 | |
Adiono et al. | Practical implementation of a real-time human detection with HOG-AdaBoost in FPGA | |
Uetsuhara et al. | Discussion on high level synthesis fpga design of camera calibration | |
Prabhu et al. | Generalized convolution simulation stack for RRAM device based deep learning neural network | |
Kumar et al. | FPGA–Raspberry pi Interface for low cost IoT based image processing | |
Rettkowski et al. | Inspection of partial bitstreams for FPGAs using artificial neural networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |