Nothing Special   »   [go: up one dir, main page]

KR20210014561A - 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체 - Google Patents

다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체 Download PDF

Info

Publication number
KR20210014561A
KR20210014561A KR1020200029546A KR20200029546A KR20210014561A KR 20210014561 A KR20210014561 A KR 20210014561A KR 1020200029546 A KR1020200029546 A KR 1020200029546A KR 20200029546 A KR20200029546 A KR 20200029546A KR 20210014561 A KR20210014561 A KR 20210014561A
Authority
KR
South Korea
Prior art keywords
convolutional
data
image data
window
data processing
Prior art date
Application number
KR1020200029546A
Other languages
English (en)
Other versions
KR102470027B1 (ko
Inventor
지하오 량
지안 오우양
Original Assignee
베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
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 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. filed Critical 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
Publication of KR20210014561A publication Critical patent/KR20210014561A/ko
Application granted granted Critical
Publication of KR102470027B1 publication Critical patent/KR102470027B1/ko

Links

Images

Classifications

    • G06N3/0454
    • 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/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/51Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • G06F18/2148Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Multimedia (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

본 발명은 다수 컨벌루션 윈도우에서 이미지 데이터를 병렬추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체를 제시한다. 상기 방법은 이미지를 다수의 컨벌루션 윈도우 그룹으로 구획하는 단계를 포함한다. 다수의 컨벌루션 윈도우 그룹에는 제1 컨벌루션 윈도우와 제2 컨벌루션 윈도우가 포함되고, 각 컨벌루션 윈도우 그룹은 다수의 컨벌루션 윈도우를 포함한다. 상기 방법은 다수의 데이터 처리장치를 통해 제1 컨벌루션 윈도우 그룹 중 다수의 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하고, 제1 컨벌루션 윈도우 그룹의 이미지 데이터를 추출 완료 후, 다수의 데이터 처리장치를 통해 제2 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 방법을 더 포함한다. 본 발명의 실시예에 따라, 컨벌브된 데이터를 추출하는 과정에서 다수의 데이터 처리장치를 사용하여 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하여, 데이터 추출 속도를 높이고 이로써 이미지 컨벌루션의 처리 효율을 향상시킨다.

Description

다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체{METHOD AND APPARATUS FOR EXTRACTING IMAGE DATA IN PARALLEL FROM MULTIPLE CONVOLUTION WINDOWS, DEVICE, AND COMPUTER-READABLE STORAGE MEDIUM}
본 발명의 실시예는 전체적으로 이미지 데이터 처리기술에 관한 것이고, 구체적으로 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체에 관한 것이다.
머신 러닝이란 머신을 인간처럼 대량의 데이터를 통해 규칙을 학습하게 하여 일부 특정 임무를 수행할 수 있는 머신 러닝 모델을 만드는 것이다. 인공 신경망은 일종의 전형적인 머신 러닝 기술로, 인간의 뇌를 모델로 인공 신경망을 만든 것이며, 다양한 머신 러닝 연산을 사용하여 컴퓨터가 대량의 데이터로 학습할 수 있다. 상용 인공 신경망은 컨벌루션 신경망(CNN), 순환 신경망(RNN) 등이 있다. 딥 러닝 또한 머신 러닝의 한 종류이지만 딥 러닝은 심화된 심화 신경망(DNN)을 이용하여, 모델이 더 복잡하게 처리할 수 있도록 함으로써 데이터에 대한 모델의 이해를 더 심화시킨다.
CNN은 일종의 컨벌루션 연산을 포함하고 심화 구조를 갖고 있는 피드포워드 신경망으로, 컴퓨터의 시각 특히 이미지 처리 분야에서 매우 광범위하게 응용이 될 수 있다. 컴퓨터 차원에서 보면, 이미지는 실제로 2차 또는 3차 행렬로, CNN이 수행하는 작업은 컨벌루션, 풀링 등 조작을 통해 2차 또는 3차 배열에서 특징을 추출하고 이미지를 식별하는 것이다. CNN은 보통 인풋 레이어, 컨벌루션 레이어, 활성함수, 풀링 레이어, 완전 연결 레이어로 구성된다.
신경망 모델이 다양해지고 높은 연산력이 요구됨에 응답하여, 종래의 딥 러닝 하드웨어 플랫폼(예, 통용 프로세서, 그래픽 처리장치(GPU))의 성능, 코스트 등 요소를 기반으로, 업계에서는 딥 러닝 가속기를 연구 개발하기 시작하였다. 딥 러닝 가속기의 하드웨어 핵심 중 하나는 행렬 연산이고, 행렬 연산 모듈의 작동은 상급 데이터의 공급에 의존한다. 행렬 연산 모듈의 연산력을 충분히 이용하기 위한 하드웨어 설계의 핵심은 효율적이고 탄력적인 데이터 공급 방식이다.
본 발명의 실시예에 따라 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체를 제시한다.
본 발명의 첫번째 방면은, 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출하는 방법이다. 상기 방법은 이미지를 다수 컨벌루션 윈도우 그룹으로 구획하는 단계 -상기 다수 컨벌루션 윈도우 그룹은 제1 컨벌루션 윈도우 그룹과 제2 컨벌루션 윈도우 그룹을 포함함 - 다수 데이터 처리장치를 통해 상기 제1 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 단계; 및 상기 제1 컨벌루션 윈도우 그룹의 이미지 데이터를 추출 완료함에 응답하여, 상기 다수 데이터 처리장치를 통해 상기 제2 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 단계를 포함한다.
본 발명의 두번째 방면은, 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 장치이다. 상기 장치는 이미지를 다수 컨벌루션 윈도우 그룹으로 구획하는 컨벌루션 윈도우 그룹 구획 모듈 - 상기 다수 컨벌루션 윈도우 그룹은 제1 컨벌루션 윈도우 그룹과 제2 컨벌루션 윈도우 그룹을 포함함 - 다수 데이터 처리장치를 통해 상기 제1 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 제1 병렬 추출 모듈; 및 상기 제1 컨벌루션 윈도우 그룹의 이미지 데이터를 추출 완료함에 응답하여, 상기 다수 데이터 처리장치를 통해 상기 제2 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 제2 병렬 추출 모듈을 포함한다.
본 발명의 세번째 방면은 전자 기기로, 한 개 또는 다수의 프로세서; 및 한 개 또는 다수의 프로그램을 저장하는 저장유닛을 포함한다. 한 개 또는 다수의 프로그램이 한 개 또는 다수의 프로세서에 의해 실행 될 때, 전자 기기는 본 발명의 실시예의 다양한 방법 및/또는 과정을 구현한다.
본 발명의 네번째 방면은, 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 저장매체로, 상기 프로그램이 프로세서에 의해 실행될 때 본 발명 실시예의 다양한 방법 및/또는 과정이 구현된다.
발명의 내용 부분에서 상술한 내용은 본 발명의 실시예의 핵심 특징 또는 중요한 특징을 한정하는 것이 아니고, 또한 본 발명의 범위를 제한하는 것도 아니라고 이해되어야 한다. 본 발명의 기타 특징은 후문의 설명을 통해 더 용이하게 이해 될 것이다.
도면과 아래의 상세한 설명을 참조하면 본 발명의 실시예의 상술한 특징과 기타 특징, 장점 및 방면이 더 명확해질 것이다. 도면에서 같거나 비슷한 도면 부호는 같거나 비슷한 요소를 나타낸다.
도 1은 컨벌루션 신경망의 컨벌루션 과정을 도시한 설명도이다.
도 2는 본 발명 실시예에 따라 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출하는 방법을 도시한 흐름도이다.
도 3은 본 발명 실시예에 따라 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출하는 과정을 도시한 설명도이다.
도 4는 본 발명 실시예에 따라 데이터를 병렬 처리하는 가속기 설비의 예시 구조를 도시한 설명도이다.
도 5는 본 발명 실시예에 따라 컨벌브된 데이터를 추출하는 예시 과정을 도시한 설명도이다.
도 6은 본 발명 실시예에 따른 병렬 전치행렬의 예시 과정을 도시한 설명도이다.
도 7은 본 발명 실시예에 따른 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출하는 장치를 도시한 블록도이다.
도 8은 본 발명의 다수 실시예를 구현할 수 있는 전자 기기를 도시한 블록도이다.
후문에서는 도면을 참조하여 본 발명의 실시예를 상세하게 설명하고자 한다. 도면에서 본 발명의 일부 실시예를 도시하지만 본 발명은 다양한 형식으로 구현할 수 있다고 이해되어야 하며, 설명한 실시예에 한정된다고 해석되어서는 안된다. 역으로 이러한 실시예를 제시하는 것은 본 발명을 더 철저하고 완벽하게 설명하기 위함이다. 본 발명의 도면과 실시예는 시범적 역할에 불과하고, 본 발명의 보호범위를 제한하지 않는다.
본 발명의 실시예에 대한 설명에서, 용어 '포함' 및 유사한 용어는 개방적으로 포함한다는 의미, 즉 '포함하되 국한되지 않는'이라고 해석되어야 한다. 용어 '기초하여'는 '적어도 부분적으로 기초하여'로 해석되어야 한다. 용어 '일 실시예' 또는 '상기 실시예'는 '적어도 일 실시예'로 해석되어야 한다. 용어 '일부 실시예'는 '적어도 일부 실시예'로 해석되어야 한다. 후문에는 기타 명확하고 함축적인 정의를 포함할 수 있다.
종래에는 이미지 컨벌루션 처리 과정에서, 커널을 이미지 위에서 슬라이딩 시켜 매번 한 개의 컨벌루션 윈도우의 픽셀을 추출 및 출력한다. 하지만 종래의 방법은 다른 컨벌루션 윈도우 중의 이미지 데이터를 직렬로 추출하여, 데이터 전환을 효율적으로 진행할 수 없었고, 이는 처리 성능에 영향을 미쳤다. 뿐만 아니라 종래의 방안은 행렬 전치 시에도 직렬로 전치를 한다. 따라서 종래 기술의 한계는 주로 탄력성을 보장했지만, 동시에 하드웨어의 병렬성을 충분히 발휘하지 못해 매번 한 개의 수 또는 한 개의 그룹 수에 대해서만 조작을 하여, 효율적으로 데이터 전환을 할 수 없으므로 후속 연산 성능도 제한을 하였다.
이를 위해 본 발명의 실시예에서 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출하는 방안을 제시하고자 한다. 본 발명의 실시예에 따라, 컨벌브된 데이터를 추출하는 과정에서, 다수의 데이터 처리장치로 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출하여, 데이터 추출의 속도를 향상시키고, 이를 통해 이미지 컨벌루션의 처리 효율도 높인다. 그 밖에 본 발명의 일부 실시예에서는 병렬로 행렬을 전치하는 방안도 제시하는데, 다수의 데이터 처리장치를 통해 한 개의 행렬 중의 다수 열을 병렬 추출하여 행렬을 전치하는 속도를 높인다. 후문에서는 도1 내지 도8을 참조하여 본 발명의 실시예의 일부 예시의 구현을 상세하게 설명하고자 한다.
도 1은 컨벌루션 신경망 중 컨벌루션 과정(100)을 도시한 설명도이다. 컨벌루션 신경망은 이미지 컨벌루션을 통해 이미지의 일부 특징을 발견하는데, 예를 들어 이미지 가운데 물체의 윤곽 찾기, 이미지에 흐리게 하기, 선명하게 하기, 두드러지게 하기 등과 같은 어떠한 효과를 증가 또는 감소하는 것이 있다.
도 1은 커널(120)이 이미지(110)에 컨벌루션을 진행하는 예시 과정으로, 커널(120)은 한 개의 3×3인 2차 행렬이 될 수 있다. 다수의 커널을 사용하여 이미지에 컨벌루션을 할 수 있다고 이해하여야 한다. 이미지 컨벌루션의 사상은 입력 이미지(예, 이미지(110)) 중 단일 픽셀에 대한 것이고, 그 픽셀 값을 주변 인접 픽셀 값으로 가중시키고, 이러한 가중치를 반영해 산출된 새로운 픽셀 값은 순서에 따라 한 장의 새로운 출력 이미지(예, 이미지(130))를 생성할 수 있다.
커널(120)은 이미지(110)의 각 컨벌루션 윈도우를 슬라이딩하면서 컨벌브된 데이터를 획득한다. 도 1에서 볼 수 있듯이, 우선 커널이 이미지(110)의 제1 컨벌루션 윈도우(111)로 슬라이딩되고, 컨벌루션 윈도우(111) 중의 픽셀과 커널(120)의 누적곱(예, 121)에 의해, 컨벌루션 윈도우(111)에 대한 컨벌루션 출력(131)을 생성하고, 이미지(130)에 기록한다. 예를 들면, 원소를 차례대로 곱하고 다시 더하여, 도출한 값을 출력 이미지 행렬의 첫번째 원소 위치에 둔다.
컨벌루션 윈도우(111)의 컨벌루션이 완성된 후, 커널은 오른쪽으로 1개 간격을 슬라이딩 한다. 물론 오른쪽으로 더 많은 간격을 슬라이딩 하도록 선택이 가능하며, 이러한 거리를 스트라이드(stride)라고 하고 사전에 설정할 수 있다. 도 1의 화살표(140)에서 볼 수 있듯이, 이미지(110) 중 제2 컨벌루션 윈도우(112)에 대해 컨벌루션 윈도우(112)의 픽셀과 커널(120)의 누적곱(예, 122)에 의해 컨벌루션 윈도우(111)의 컨벌루션 출력(132)을 생성하고 이미지(130)에 기록한다. 이후 상술한 컨벌루션 과정을 커널(120)이 이미지(110)의 전체 컨벌루션 윈도우에 슬라이딩 될 때까지 반복하여, 컨벌루션 이후의 이미지(130)를 생성한다. 하지만 도 1에서 설명한 컨벌루션 과정은 직렬로 데이터를 추출하고 후속 연산을 진행하므로, 컨벌루션 과정의 속도가 비교적 늦은 문제점이 있다.
도 2는 본 발명의 실시예에 따라 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출하는 방법(200)을 도시한 흐름도이다. 방법(200)은 전용 가속기 설비(예, 인공지능AI칩)로 실행되거나, 통용되는 컴퓨터 또는 기타 전용 컴퓨터 설비로 실행이 된다고 이해되어야 한다.
블록(202)에서는, 이미지를 다수의 컨벌루션 윈도우 그룹으로 구획하고, 다수의 컨벌루션 윈도우 그룹은 제1 컨벌루션 윈도우 그룹과 제2 컨벌루션 윈도우 그룹을 포함함을 설명한다. 예를 들어 사용 가능한 데이터 처리장치의 개수(예, P개)에 따라, 이미지를 다수의 컨벌루션 윈도우 그룹(각 컨벌루션 윈도우 그룹은 P개의 컨벌루션 윈도우를 포함)으로 구획하여, 각 컨벌루션 윈도우 그룹이 다수의 데이터 처리장치에 의해 병렬 처리되도록 한다.
블록(204)에서는, 다수의 데이터 처리장치를 사용하여 제1 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출함을 설명한다. 예를 들어 제1 컨벌루션 윈도우 그룹은 P개의 컨벌루션 윈도우를 포함하고, 가속 설비(예, AI칩) 가운데 P개의 데이터 처리장치를 사용하여 P개의 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출한다. 즉, 각 처리장치는 상응하는 한 개의 컨벌루션 윈도우의 이미지 데이터를 추출하는 것이다. 이러한 방식을 통해 컨벌루션 윈도우의 이미지 데이터의 추출 속도를 향상시킨다.
블록(206)에서는, 제1 컨벌루션 윈도우 그룹의 이미지 데이터를 추출 완료 후, 다수의 데이터 처리장치를 사용하여 제2 컨벌루션 윈도우 그룹 중 다수의 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 것을 설명하고 있다. 일반적으로 이미지의 컨벌루션 윈도우의 개수는 데이터 처리장치의 개수보다 훨씬 많으므로, 데이터를 단계적으로 병렬 추출할 필요가 있다. 예를 들어 P개의 데이터 처리장치가 P개 컨벌루션 윈도우의 이미지 데이터를 병렬 추출 완료 후, 이어지는 P개 컨벌루션 윈도우를 다시 추출하는 것으로, 상술한 단계를 이미지의 모든 컨벌루션 윈도우의 이미지 데이터를 모두 추출 할 때까지 순서대로 반복한다.
따라서 본 발명의 실시예에 따라 컨벌브된 데이터를 추출하는 과정에서, 다수의 데이터 처리장치를 사용하여 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 것은 데이터 추출 속도를 높이고, 이로써 이미지 컨벌루션의 처리 효율을 향상시킨다.
도 3은 본 발명의 실시예에 따라 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 과정(300)을 도시한 설명도이다. 도 3과 같이, 이미지(310)의 컨벌루션 윈도우(311, 312, 313)는 데이터 처리장치(321, 322, 323)에 의해 나눠서 병렬 처리되고, 컨벌루션 윈도우(311, 312, 313) 중 대응되는 데이터(331, 332, 333)(각 1차원 벡터)를 추출한다. 도면의 목적을 분명하게 하기 위해 도 3의 컨벌루션 윈도우의 스트라이드는 3이고, 세 개의 컨벌루션 윈도우(311, 312, 313)가 겹치지 않게 하였다. 하지만 스트라이드는 1 또는 기타 값으로도 설정을 하여, 다른 컨벌루션 윈도우 간 중복되는 픽셀을 가지도록 하는 것도 가능하다. 그 밖에 간편한 설명을 위해 도 3에서는 한 개 컬러 채널의 이미지(310)를 도시하였으며, 이미지(310)는 다수 컬러 채널을 포함할 수도 있다.
도 4는 본 발명 실시예에 따라 데이터를 병렬 처리하는 가속기 설비의 예시 구조(400)를 도시한 설명도이다. 도 4와 같이, 예시 구조(400)는 프로세서(410), 소스 메모리(420), 타깃 메모리(425), 데이터 변환 모듈(431) 및 스케줄러(470) 등을 포함한다. 데이터 변환 모듈(431)은 보조 프로세서를 담당하고, 명령 메모리 유닛(430), 명령 디코딩 유닛(440), 컨트롤러 유닛(450), 동기화 유닛(460), 데이터 리딩 유닛(480) 및 다수 데이터 처리장치(490)를 포함하고, 다수의 데이터 처리장치(490)는 예를 들어 P개의 데이터 처리장치(491, 492, 493, 494, 499 등)를 포함할 수 있다.
소스 메모리(420)와 타깃 메모리(425)는 각각 입력 메모리와 출력 메모리이고, 오프 칩 메모리(예, DDR)일 수 있으며, 온 칩 메모리(예, SRAM)일 수도 있다. 그 중 소스 메모리(420)와 타깃 메모리(425)는 다른 메모리 또는 같은 메모리 일 수 있다.
명령 메모리 유닛(430)은 프로세서(410)에서 수신된 명령을 저장하여 데이터 변환을 하며, 명령의 유형은 파라미터 설정 명령, 전치 명령, 컨벌브된 데이터를 추출하는 명령, 동기화 명령 등을 포함하되 국한되지 않는다. 파라미터 설정 명령은 파라미터를 설정하는 것으로, 파라미터는 데이터 유형, 전치행렬의 크기, 컨벌루션 이미지의 크기, 커널의 크기, 컨벌루션 스트라이드, 주변을 채운 픽셀 개수(pad) 등을 포함하되 국한되지 않는다. 전치 명령은 소스 메모리(420)의 기점 어드레스, 타깃 메모리(425)의 기점 어드레스, 전치 데이터 길이 등의 설정에 활용한다. 컨벌브된 데이터를 추출하는 명령은 소스 메모리(420)의 기점 어드레스, 타깃 메모리(425)의 기점 어드레스, 추출 데이터 길이 등의 설정에 활용한다. 동기화 명령은 상기 명령 이전의 모든 명령의 실행 완료와 데이터 저장을 보장함으로써 스케줄러(470)가 각 모듈에 동기화를 진행하도록 한다.
명령 디코딩 유닛(440)은 명령 메모리 유닛(430)이 비어 있지 않고 현재 명령 수행이 가능함을 검출하였을 때, 명령 메모리 유닛(430)에서 명령을 리딩 및 해석하고, 해석한 내용을 컨트롤러 유닛(450)으로 발송한다. 컨트롤러 유닛(450)은 설정된 파라미터에 따라 상응하는 컨트롤 신호를 생성하는데, 컨트롤 내용에는 데이터 리딩 유닛(480)의 읽기 요청 행위, 데이터 처리장치(490)의 행위, 동기화 유닛(460)의 행위를 포함하되 국한되지 않는다.
데이터 리딩 유닛(480)은 컨트롤러 유닛(450)의 컨트롤 신호에 따라, 소스 메모리(420)에 읽기 요청을 발송하고 판독한 데이터를 다수의 데이터 처리장치(490)에 발송한다. 다수의 데이터 처리장치(490)는 컨트롤러 유닛(450)의 컨트롤 신호에 따라, 데이터 중 특정부분을 데이터 리딩 유닛(480)에서 읽어오며 타깃 메모리(425)에 기록한다. 본 발명의 실시예에 따라 다수의 데이터 처리장치(490)는 다수의 컨벌루션 윈도우의 이미지 데이터를 병렬 추출할 수 있고, 행렬의 다수 열을 병렬 전치할 수 있으므로 데이터 변환의 속도를 향상시킨다.
동기화 유닛(460)은 동기화 요청을 수신한 후, 현재 명령이 완성되고 데이터를 저장한 것을 검출한 후, 외부의 스케줄러(470)로 동기화 완성 신호를 출력한다. 가속기 설비의 예시 구조(400)는 다수의 데이터 처리장치(490)를 포함한 한 개의 예시 구조에 불과하고, 기타 다수의 데이터 처리장치를 구비한 가속설비도 본 발명의 실시예와 결합하여 사용이 가능하다.
도 5는 본 발명의 실시예에 따라 컨벌브된 데이터 추출의 예시 과정(500)을 도시한 설명도이다. 도 5와 같이, 이미지(510)의 정해진 너비는 W, 높이는 H, 채널 깊이는 C이고, 각 컨벌루션 윈도우의 너비는 S, 높이는 R(도 5 예시의 컨벌루션 윈도우의 크기는 3×3)이다. 이미지 컨벌루션을 실행하는 가속기 설비는 다수의 데이터 처리장치(520)이고, 예를 들어 P개의 데이터 처리장치(521, 522, 523, 529 등)를 포함한다. 본 발명의 실시예에 따라, 다수의 데이터 처리장치는 다수의 컨벌루션 윈도우의 이미지 데이터를 병렬 추출 할 수 있다.
도 5를 참조하면, 데이터 처리장치(521)는 컨벌루션 윈도우(511)의 이미지 데이터를 추출한다. 데이터 처리장치(521)는 우선 제1채널의 제1행 데이터(각 데이터 처리장치는 모두 대응하는 컨벌루션 윈도우의 제1행 데이터를 병렬 추출)를 추출한 후, 데이터 처리장치(521)는 제1채널의 제2행 데이터를 추출하고, 그 이후에 제1채널의 제3행 데이터를 추출함으로써 도 5 예시의 컨벌루션 윈도우(511)의 제1채널의 데이터 추출을 완성한다. 이어서 데이터 처리장치(521)는 유사하게 컨벌루션 윈도우(511)의 제2채널의 모든 이미지 데이터를 추출하고, 컨벌루션 윈도우(511)의 제3채널의 모든 이미지 데이터를 추출하며, 컨벌루션 윈도우(511)의 제4채널의 모든 이미지 데이터를 추출하면 컨벌루션 윈도우(511)의 데이터 추출 과정이 완성된다. 도 5와 같이, 추출한 데이터(530)는 제1채널의 데이터(531)(제1채널 3개 행의 총 9개 값 포함), 제2채널의 데이터, 제3채널의 데이터, 제4채널의 데이터(534)를 포함한다. 본 발명의 실시예의 따라, P개의 데이터 처리장치가 데이터를 병렬 추출하므로, P개의 데이터 처리장치는 이전 P개의 컨벌루션 윈도우의 모든 이미지 데이터 추출을 병렬 완성할 수 있다.
이어서, 다수의 데이터 리딩 유닛(520)은 후속의 P개 윈도우의 데이터를 병렬 리딩하고 방법은 위와 동일하다. 이로써 이미지(510)의 모든 컨벌루션 윈도우의 대응 데이터 추출이 완성된다. 그 중 P개의 데이터 처리장치가 컨벌루션 데이터를 병렬 추출하기 때문에 각 데이터 처리장치는 스트라이드 파라미터에 따라 그에 대응하는 컨벌루션 윈도우의 데이터를 획득하고, 이 부분에 대한 컨트롤 행위는 컨트롤러 유닛이 담당하여 완성한다.
일부 실시예에서 추출한 한 개의 컨벌루션 윈도우 데이터는 연속해서 타깃 메모리에 저장되기 때문에, 한 개 크기가 C×R×S인 3차원 컨벌루션 윈도우의 이미지 데이터는, 데이터 처리장치의 추출 후에 타깃 메모리에서는 길이가 C×R×S인 1차원 벡터가 된다. 이미지(510)에서 총 N개의 컨벌루션 윈도우 데이터를 추출했다고 가정하면, 최종 타깃 메모리에 저장되는 것은 크기가 N행, C×R×S열인 2차 행렬이다. 커널의 경우 마찬가지로 F행, C×R×S열의 2차 행렬이고, 커널은 전치 후 C×R×S행, F열의 2차 행렬이 되므로, 복잡한 이미지 컨벌루션 조작이 이 때는 두 개의 2차 행렬의 곱셈으로 전환된다. 아래 산식(1)에서 보여지는 것과 같이, D는 이미지 데이터 행렬, W는 가중 데이터 행렬이고, 한 개의 컨벌루션 윈도우가 포함하는 이미지 데이터는, 예를 들어 좌측의 점선 블록(길이가 C×R×S인 1차원 벡터)이고, 한 개의 커널이 포함하는 가중 데이터 열은 예를 들어, 우측의 점선 블록이다. 이러한 방식을 통해 컨벌루션 조작 중 행렬 연산의 효율을 향상시킬 수 있다.
(산식 1)
Figure pat00001
도 6은 본 발명의 실시예에 따라, 병렬 전치행렬 예시 과정(600)을 도시한 설명도이다. 도 6과 같이, 전치가 필요한 것이 한 개의 M×N 스케일의 행렬(610)이고, 위의 도 4에서 설명된 바와 같이 데이터 변환 모듈에는 P개의 병렬 작업을 하는 데이터 처리장치를 포함할 수 있다고 가정하면, 행렬(610)은 P열을 입자크기로 블록을 구획한다. 즉 제1블록은 가장 앞에 있는 P열을 포함하고 제2블록은 후속의 P열을 포함한다.
도 6과 같이, 다수의 데이터 처리장치(620)는 P개의 데이터 처리장치를 포함하는데, 예를 들어 데이터 처리장치(621, 622, 623, 629) 등 이다. 데이터 리딩 유닛은 행렬의 한 개 행 데이터를 읽어올 때 마다, 각 데이터 처리장치가 상기 행의 데이터에서 상응하는 열을 병렬 처리할 수 있다. 예를 들어 데이터 처리장치(621)가 제1열(0열)의 데이터를 처리, 데이터 처리장치(622)가 제2열(1열)의 데이터를 처리, 데이터 처리장치(623)가 제3열(2열)의 데이터를 처리, 데이터 처리장치(629)가 제P열(P-1열)의 데이터를 처리할 수 있다.
다수의 데이터 처리장치(620)는 제1블록의 P열을 병렬 처리한 후, 계속해서 다음 블록의 P열 데이터를 처리하는데, 전체 행렬(621)의 전치가 완료될 때까지 처리가 진행이 되어 전치 후의 행렬(630)을 생성한다. 도 6과 같이, 데이터 처리장치(621)는 행렬(610)의 제1열을 전치하여 행렬(630)의 제1행이 되고, 데이터 처리장치(622)는 행렬(610)의 제2열을 전치하여 행렬(630)의 제2행이 되며, 데이터 처리장치(629)는 행렬(610)의 제P열을 전치하여 행렬(630)의 제P행이 된다. 일부 실시예에서, 컨트롤러 유닛은 명령어에 따라 설정된 파라미터와 타깃 메모리의 기점 어드레스가 필요하고, P개의 데이터 처리장치 각자의 타깃 메모리의 어드레스 기록을 유지한다.
따라서 본 발명의 실시예에 따라 컨벌브된 데이터를 추출하는 과정에서 다수의 데이터 처리장치를 사용하여 다수의 컨벌루션 윈도우 중의 이미지 데이터를 추출하므로, 데이터 추출 속도를 높일 수 있고, 이로써 이미지 컨벌루션의 처리 효율도 향상시킨다. 뿐만 아니라 본 발명의 일부 실시예에서는 다수의 데이터 처리장치를 사용하여 행렬의 다수 열을 병렬 추출하여 행렬 전치 속도를 높일 수 있다.
도 7은 본 발명의 실시예에 따라 다수의 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 장치(700)를 도시한 블록도이다. 도 7과 같이 장치(700)는 컨벌루션 이미지 구획 모듈(710), 제1 병렬 추출 모듈(720) 및 제2 병렬 추출 모듈(730)을 포함한다. 컨벌루션 윈도우 그룹 구획 모듈(710)은 이미지를 다수의 컨벌루션 윈도우 그룹으로 구획하고, 그 중 다수의 컨벌루션 윈도우 그룹은 제1 컨벌루션 윈도우 그룹과 제2 컨벌루션 윈도우 그룹을 포함한다. 제1 병렬 추출 모듈(720)은 다수의 데이터 처리장치를 사용하여 제1 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출한다. 제2 병렬 추출 모듈(730)은 제1 컨벌루션 윈도우 그룹의 이미지 데이터 추출이 완료됨에 응답하여, 다수의 데이터 처리장치를 사용하여 제2 컨벌루션 윈도우의 다수 컨벌루션 윈도우 중의 이미지 데이터를 병렬 추출한다.
일부 실시예에서, 제1 컨벌루션 윈도우 그룹은 제1 컨벌루션 윈도우와 제2 컨벌루션 윈도우를 포함하고, 제1 병렬 추출 모듈(720)은 제1 데이터 처리장치로 제1 컨벌루션 윈도우의 이미지 데이터를 추출하는 제1 데이터 추출 모듈; 및 제2 데이터 처리 장치로 제2 컨벌루션 윈도우의 이미지 데이터를 추출하는 제2 데이터 추출 모듈을 포함한다.
일부 실시예에서, 제1 데이터 추출 모듈은 제1 컨벌루션 윈도우 가운데 제1채널의 제1행 이미지 데이터를 추출하는 제1 추출 모듈; 제1 컨벌루션 윈도우 가운데 제1채널의 제2행 이미지 데이터를 추출하는 제2 추출 모듈; 및 제1 컨벌루션 윈도우 가운데 제1채널의 제3행 이미지 데이터를 추출하는 제3 추출 모듈을 포함한다.
일부 실시예에서, 제1 데이터 추출 모듈은 제1 컨벌루션 윈도우 가운데 제1채널의 모든 이미지 데이터를 추출 완료하면 반응하는 제2채널 추출 모듈도 포함하는데, 제1 컨벌루션 윈도우 가운데 제2채널의 제1행 이미지 데이터를 추출; 제1 컨벌루션 윈도우 가운데 제2채널의 제2행 이미지 데이터를 추출; 및 제1 컨벌루션 윈도우 가운데 제2채널의 제3행 이미지 데이터를 추출한다.
일부 실시예에서, 제1 데이터 추출 모듈은 제1 컨벌루션 윈도우의 모든 채널 중의 모든 이미지 데이터를 추출 완료하면, 제1 컨벌루션 윈도우의 모든 이미지 데이터를 1차원 벡터로 표시해주는 데이터 표시 모듈도 포함한다. 1차원 벡터의 길이는 이미지의 채널 수, 각 컨벌루션 윈도우의 행의 개수 및 각 컨벌루션 윈도우의 열의 개수의 곱이다.
일부 실시예에서, 장치(700)는 타깃 메모리에 다수의 컨벌루션 윈도우 그룹 중 모든 이미지 데이터를 2차 행렬로 저장하는 데이터 저장 모듈도 포함한다. 2차 행렬의 행의 개수는 다수의 컨벌루션 윈도우 그룹의 모든 컨벌루션 윈도우의 개수이고 2차 행렬의 열의 개수는 이미지의 채널 수, 각 컨벌루션 이미지의 행의 개수 및 각 컨벌루션 윈도우 열의 개수의 곱이다.
일부 실시예에서, 장치(700)는 열단위로 행렬을 제1블록과 제2블록을 포함하는 다수의 블록으로 구획하는 블록 구획 모듈; 다수의 데이터 처리장치로 제1블록 중 다수 열 데이터를 병렬 전치하는 제1 병렬 전치 모듈; 및 제1블록의 다수 열 데이터를 전치 완료함에 응답하여, 다수의 데이터 처리장치로 제2블록의 다수 열 데이터를 병렬 전치하는 제2 병렬 전치 모듈도 포함한다.
일부 실시예에서, 제1 병렬 전치 모듈은 상기 다수의 데이터 처리장치 중 제1 데이터 처리장치를 통해 제1블록 중 제1열 데이터를 전치하는 제1 행렬 전치 모듈; 및 상기 다수의 데이터 처리장치 중 제2 데이터 처리장치를 통해 제2블록 중 제2열 데이터를 전치하는 제2 행렬 전치 모듈을 포함한다.
일부 실시예에서, 블록 구획 모듈은 다수의 데이터 처리장치의 개수를 기초로 행렬을 다수의 블록으로 구획하는 제2블록 구획 모듈을 포함한다.
도 7에서 도시한 컨벌루션 윈도우 그룹의 구획 모듈(710), 제1 병렬 추출 모듈(720) 및 제2 병렬 추출 모듈(730)은 단일 혹은 다수의 전자 기기에 포함될 수 있다고 이해되어야 한다. 또한 도 7에서 도시한 모듈은 본 발명의 실시예를 참조한 방법 및/또는 과정 중의 단계 및/또는 동작을 실행할 수 있다고 이해되어야 한다.
따라서 본 발명의 실시예에서는 딥 러닝 가속기의 프로그래머블 데이터 변환 방법과 장치를 제시하며, 이는 다양한 스케일의 행렬 전치와 이미지의 컨벌루션 윈도우 추출을 유연하게 지원할 수 있으며, 하드웨어의 병렬성 특징을 충분히 활용하여 효율적으로 데이터를 제공함으로써 행렬 연산 모듈의 성능을 발휘할 수 있다. 본 발명의 실시예는 프로그래머빌리티를 통해 데이터 변환의 탄력성을 보장하고, 다수의 처리장치의 병렬 작업을 재이용하는 방식으로 데이터를 효과적으로 변환한다. 또한 전치와 컨벌루션에 있어서 본 발명의 실시예에서는 동일한 하드웨어 구조를 재사용 할 수 있어서 최종 구현하는 하드웨어의 비용을 줄일 수 있다.
따라서, 본 발명의 일부 실시예의 장점은 다수의 데이터 처리장치의 병렬 작업으로 데이터 변환 작업을 효율적으로 완성하고; 프로세서로 파라미터 설정 명령을 발송하여 탄력적으로 파라미터를 설정하여, 다양한 스케일의 데이터 변환에 활용 가능하며; 컨벌브된 데이터를 추출하는 데이터 변환방식은 복잡한 컨벌루션 작업을 간단한 행렬 곱셈으로 변환시켜줄 수 있고; 전치와 컨벌브된 데이터 추출은 동일한 세트의 하드웨어 구조를 재사용하여 완성하므로 하드웨어 자원을 절약할 수 있는 장점들을 포함하되 국한되지 않는다.
도 8은 본 발명의 실시예를 실행하는 데 사용가능한 예시 설비(800)를 도시한 블록도이다. 설비(800)는 본 발명에서 상술한 다수의 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 장치(700)에 사용할 수 있다. 도면에 도시된 바와 같이, 설비(800)는 중앙처리장치(CPU)(801)를 포함하며, 읽기 전용 메모리(ROM)(802)에 저장된 컴퓨터 프로그램 명령 또는 저장 유닛(808)에서 랜덤 액세스 메모리(RAM)(803)로 로딩된 컴퓨터 프로그램 명령에 따라, 각종 적합한 동작과 처리를 실행할 수 있다. 설비(800) 조작에 필요한 각종 프로그램과 데이터를 RAM(803)에 저장할 수도 있다. CPU(801), ROM(802) 및 RAM(803)은 버스(804)로 서로 연결이 되어있다. 도 8에 도시한 바와 같이, 입력/출력(I/O) 인터페이스(805) 또한 버스(804)에 연결되어 있다.
설비(800) 중 다수의 장치는 I/O 인터페이스(805)에 연결되어 있다. 입력유닛(806)은 예를 들어 키보드, 마우스 등이고; 출력유닛(807)은 예를 들어 각종 유형의 디스플레이, 스피커 등이며; 저장유닛(808)은 예를 들어 자기 디스크, 콤팩트 디스크 등이고; 및 통신유닛(809)은 예를 들어 랜 카드, 모뎀, 무선통신 송수신기 등이다. 통신유닛(809)은 설비(800)가 인터넷과 같은 컴퓨터 네트워크 및/또는 각종 전기통신망과 기타 설비를 통해 정보/데이터를 교환하도록 한다.
처리장치(801)는 전문에서 상술한 방법(200)과 같은 각 방법과 과정을 실행한다. 예를 들어 일부 실시예에서, 방법은 컴퓨터 프로그램으로 구현될 수 있고, 저장유닛(808)처럼 기기 판독가능 매체에 유형적으로 포함될 수 있다. 일부 실시예에서 컴퓨터 프로그램의 부분 또는 전부는 ROM(802) 및/또는 통신유닛(809)을 거쳐 설비(800)에 로드 및/또는 설치될 수 있다. 컴퓨터 프로그램이 RAM(803)에 로딩되고 CPU(801)에 의해 실행될 때, 전문에서 상술한 방법 중 한 개 또는 다수의 동작 또는 단계가 실행될 수 있다. 부가적으로, 기타 실시예에서 CPU(801)는 기타 임의의 합당한 방식(예, 펌웨어 사용)을 통해 방법을 실행하도록 배치될 수 있다.
전문에서 설명한 기능은 적어도 부분적으로 한 개 또는 다수의 하드웨어 로직 유닛으로 실행될 수 있다. 예를 들어, 시범 유형으로 사용 가능한 하드웨어 로직 유닛은 필드 프로그래머블 게이트 어레이(FPGA), 주문형 반도체(ASIC), 특정용도 표준제품(ASSP), 시스템 온 칩(SOC), 복합 프로그래머블 논리 소자(CPLD) 등이 있다.
본 발명의 방법을 실행하는 프로그램 코드는 한 개 혹은 다수의 프로그래밍 언어의 자유로운 조합으로 프로그래밍 될 수 있다. 이러한 프로그램 코드는 범용 컴퓨터, 전용 컴퓨터 혹은 기타 프로그래밍이 가능한 데이터 처리장치 혹은 컨트롤러에 제공되어, 프로그램 코드가 프로세서 또는 컨트롤러에 의해 실행할 때, 흐름도 및/혹은 블록도에서 규정한 기능/조작을 구현한다. 프로그램 코드는 완전히 기기 상에서, 부분적으로 기기상에서 실행될 수 있고, 독립적인 소프트웨어 패키지로써 부분적으로 기기에서 실행 및 부분적으로 원격장치에서 실행되거나 원격장치 또는 서버에서 완전히 실행이 된다.
본 발명의 전후 설명에서, 기계 판독 가능 매체는 유형의 매체이고, 이는 명령 실행 시스템, 장치 또는 설비가 사용하도록 하는 프로그램 또는 명령 실행 시스템, 장치 또는 설비와 결합하여 사용하는 프로그램을 포함하거나 저장할 수 있다. 기계 판독 가능 매체는 기계 판독 신호 매체 혹은 기계 판독 기억 매체이다. 기계 판독 가능 매체는 전기, 자성, 광학, 전자, 적외선 혹은 반도체 계통, 장치 또는 설비, 혹은 상술한 내용의 적절한 조합을 포함하지만 여기에 국한되지 않는다. 기계 판독 가능 매체의 더 구체적인 예는 한 개 혹은 다수 선의 전기 결선, 콤팩트 디스크, 하드 디스크, 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM), 비휘발성 반도체 기억장치(EPROM 혹은 플래시 메모리), 파이버, 읽기용 콤팩트 디스크 기억장치(CD-ROM), 광학 기억장치, 자기 기억장치 또는 상술한 것의 적절한 조합이다.
그 밖에, 비록 특정 순서로 각 동작 혹은 단계를 설명하였는데, 이는 이러한 동작 또는 단계가 도시한 특정 순서 혹은 순서에 따라 순서대로 실행이 되도록 요구하는 것, 또는 도시한 모든 동작 혹은 단계가 기대되는 결과를 얻을 수 있도록 실행이 되어야 한다고 이해되어야 할 것이다. 일정한 환경에서, 멀티 태스킹과 병렬 처리는 유리할 것이다. 마찬가지로 비록 위 설명이 구체적인 구현 사항들을 포함하고 있지만, 이것이 본 발명의 범위를 제한한다고 이해되어서는 안된다. 단독 실시예의 전후문 설명에서 상술한 어떤 특징은 단일 구현 상황에서도 조합적으로 구현될 수 있다. 반대로 단일 구현에 대한 전후문 설명에서 상술한 각종 특징들도 단독적으로 혹은 어떤 적절한 결합을 통해 다수 구현 상황에서도 구현될 수 있다.
비록 구조의 특징 및/혹은 방법의 로직 동작에 특정한 언어로 본 발명의 실시예를 설명하였지만, 첨부된 청구범위에서 한정한 주제가 상기 설명의 특정 특징 또는 동작에 국한되지 않는다고 이해되어야 한다. 반대로 상기 설명의 특정 특징과 동작은 단순히 청구범위를 구현한 예시 형식에 불과하다.

Claims (20)

  1. 다수 컨벌루션 윈도우에서 이미지 데이터를 병렬 추출하는 방법에 있어서,
    이미지를 다수 컨벌루션 윈도우 그룹으로 구획하는 단계 -상기 다수 컨벌루션 윈도우 그룹은 제1 컨벌루션 윈도우 그룹과 제2 컨벌루션 윈도우 그룹을 포함함 -
    다수 데이터 처리장치를 통해 상기 제1 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 단계; 및
    상기 제1 컨벌루션 윈도우 그룹의 이미지 데이터를 추출 완료함에 응답하여, 상기 다수 데이터 처리장치를 통해 상기 제2 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 단계를 포함하는 방법.
  2. 제 1항에 있어서,
    상기 다수 데이터 처리장치는 제1 데이터 처리장치와 제2 데이터 처리장치를 포함하고, 상기 제1 컨벌루션 윈도우 그룹은 제1 컨벌루션 윈도우와 제2 컨벌루션 윈도우를 포함하며,
    다수의 데이터 처리장치를 통해 상기 제1 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 단계는,
    상기 제1 데이터 처리장치를 사용하여 상기 제1 컨벌루션 윈도우의 이미지 데이터를 추출하는 단계; 및
    상기 제2 데이터 처리장치를 사용하여 상기 제2 컨벌루션 윈도우의 이미지 데이터를 추출하는 단계를 포함하는 방법.
  3. 제 2항에 있어서,
    상기 제1 데이터 처리장치를 사용하여 상기 제1 컨벌루션 윈도우의 이미지 데이터를 추출하는 단계는,
    상기 제1 컨벌루션 윈도우의 제1채널 중의 제1행 이미지 데이터를 추출하는 단계;
    상기 제1 컨벌루션 윈도우의 상기 제1채널 중의 제2행 이미지 데이터를 추출하는 단계; 및
    상기 제1 컨벌루션 윈도우의 상기 제1채널 중의 제3행 이미지 데이터를 추출하는 단계를 포함하는 방법.
  4. 제 3항에 있어서,
    상기 제1 데이터 처리장치를 사용하여 상기 제1 컨벌루션 윈도우의 이미지 데이터를 추출하는 단계는,
    상기 제1 컨벌루션 윈도우의 제1채널 중의 모든 이미지 데이터를 추출 완료함에 응답하여,
    상기 제1 컨벌루션 윈도우의 제2채널 중의 제1행 이미지 데이터를 추출하는 단계;
    상기 제1 컨벌루션 윈도우의 상기 제2채널 중의 제2행 이미지 데이터를 추출하는 단계; 및
    상기 제1 컨벌루션 윈도우의 상기 제2채널 중의 제3행 이미지 데이터를 추출하는 단계를 더 포함하는 방법.
  5. 제 4항에 있어서,
    상기 제1 데이터 처리장치를 사용하여 상기 제1 컨벌루션 윈도우의 이미지 데이터를 추출하는 단계는,
    상기 제1 컨벌루션 윈도우의 전체 채널 중 전체 이미지 데이터를 추출 완료함에 응답하여, 상기 제1 컨벌루션 윈도우의 전체 이미지 데이터를 1차원 벡터로 나타내는 단계 - 상기 1차원 벡터의 길이는 상기 이미지의 채널 수, 각 컨벌루션 윈도우의 행의 개수 및 각 컨벌루션 윈도우의 열의 개수의 적임 - 를 더 포함하는 방법.
  6. 제 1항에 있어서,
    타깃 메모리에 상기 다수의 컨벌루션 윈도우 그룹의 전체 이미지 데이터를 2차 행렬로 저장하는 단계 - 상기 2차 행렬의 행의 개수는 상기 다수의 컨벌루션 윈도우 그룹의 전체 컨벌루션 윈도우의 수이며, 상기 2차 행렬의 열의 개수는 상기 이미지의 채널 수, 각 컨벌루션 윈도우의 행의 개수 및 각 컨벌루션 윈도우의 열의 개수의 적임 - 를 더 포함하는 방법.
  7. 제 1항에 있어서,
    행렬을 열단위로 다수의 블록으로 구획하는 단계 - 상기 다수 블록은 제1블록과 제2블록을 포함함 - ;
    상기 다수 데이터 처리장치를 사용하여 상기 제1블록의 다수 열 데이터를 병렬 전치하는 단계; 및
    상기 제1블록의 다수 열 데이터를 전치 완료함에 응답하여, 상기 다수 데이터 처리장치를 사용하여 상기 제2블록의 다수 열 데이터를 병렬 전치하는 단계를 더 포함하는 방법.
  8. 제 7항에 있어서,
    상기 다수 데이터 처리장치를 사용하여 제1블록의 다수 열 데이터를 병렬 전치하는 단계는,
    상기 다수 데이터 처리장치 중 제1 데이터 처리장치를 통해 상기 제1블록의 제1열 데이터를 전치하는 단계; 및
    상기 다수 데이터 처리장치 중 제2 데이터 처리장치를 통해 상기 제2블록의 제2열 데이터를 전치하는 단계를 포함하는 방법.
  9. 제 7항에 있어서,
    행렬을 열단위로 다수의 블록으로 구획하는 단계는,
    상기 다수 데이터 처리장치의 개수에 기반하여 상기 행렬을 상기 다수 블록으로 구획하는 단계를 포함하는 방법.
  10. 다수 컨벌루션 윈도우에서 이미지 데이터를 병렬 추출하는 장치에 있어서,
    이미지를 다수 컨벌루션 윈도우 그룹으로 구획하는 컨벌루션 윈도우 그룹 구획 모듈 - 상기 다수 컨벌루션 윈도우 그룹은 제1 컨벌루션 윈도우 그룹과 제2 컨벌루션 윈도우 그룹을 포함함 -
    다수 데이터 처리장치를 통해 상기 제1 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 제1 병렬 추출 모듈; 및
    상기 제1 컨벌루션 윈도우 그룹의 이미지 데이터를 추출 완료함에 응답하여, 상기 다수 데이터 처리장치를 통해 상기 제2 컨벌루션 윈도우 그룹의 다수 컨벌루션 윈도우의 이미지 데이터를 병렬 추출하는 제2 병렬 추출 모듈을 포함하는 장치.
  11. 제 10항에 있어서,
    상기 다수 데이터 처리장치는 제1 데이터 처리장치와 제2 데이터 처리장치를 포함하고, 상기 제1 컨벌루션 윈도우 그룹은 제1 컨벌루션 윈도우와 제2 컨벌루션 윈도우를 포함하며, 상기 제1 병렬 추출 모듈은,
    상기 제1 데이터 처리장치를 사용하여 상기 제1 컨벌루션 윈도우의 이미지 데이터를 추출하는 제1 데이터 추출 모듈; 및
    상기 제2 데이터 처리장치를 사용하여 상기 제2 컨벌루션 윈도우의 이미지 데이터를 추출하는 제2 데이터 추출 모듈을 포함하는 장치.
  12. 제 11항에 있어서,
    상기 제1 데이터 추출 모듈은,
    상기 제1 컨벌루션 윈도우의 제1채널 중의 제1행 이미지 데이터를 추출하는 제1 추출 모듈;
    상기 제1 컨벌루션 윈도우의 상기 제1채널 중의 제2행 이미지 데이터를 추출하는 제2 추출 모듈; 및
    상기 제1 컨벌루션 윈도우의 상기 제1채널 중의 제3행 이미지 데이터를 추출하는 제3 추출 모듈을 포함하는 장치.
  13. 제 12항에 있어서,
    상기 제1 데이터 추출 모듈은,
    상기 제1 컨벌루션 윈도우의 제1채널 중의 모든 이미지 데이터를 추출 완료함에 응답하여,
    상기 제1 컨벌루션 윈도우의 제2채널 중의 제1행 이미지 데이터를 추출하고;
    상기 제1 컨벌루션 윈도우의 상기 제2채널 중의 제2행 이미지 데이터를 추출하고;
    상기 제1 컨벌루션 윈도우의 상기 제2채널 중의 제3행 이미지 데이터를 추출하는 제2채널 추출 모듈을 더 포함하는 장치.
  14. 제 13항에 있어서,
    상기 제1 데이터 추출 모듈은,
    상기 제1 컨벌루션 윈도우의 전체 채널 중의 전체 이미지 데이터를 추출 완료함에 응답하여, 상기 제1 컨벌루션 윈도우의 전체 이미지 데이터를 1차원 벡터로 나타내는 데이터 표시 모듈을 더 포함하되,
    상기 1차원 벡터의 길이는 상기 이미지의 채널 수, 각 컨벌루션 윈도우의 행의 개수 및 각 컨벌루션 윈도우의 열의 개수의 적인 장치.
  15. 제 10항에 있어서,
    타깃 메모리에 상기 다수의 컨벌루션 윈도우 그룹의 전체 이미지 데이터를 2차 행렬로 저장하는 데이터 저장 모듈을 더 포함하되,
    상기 2차 행렬의 행의 개수는 상기 다수의 컨벌루션 윈도우 그룹의 전체 컨벌루션 윈도우의 수이며, 상기 2차 행렬의 열의 개수는 상기 이미지의 채널 수, 각 컨벌루션 윈도우의 행의 개수 및 각 컨벌루션 윈도우의 열의 개수의 적인 장치.
  16. 제 10항에 있어서,
    행렬을 열단위로 다수의 블록으로 구획하는 블록 구획 모듈 - 상기 다수의 블록은 제1블록과 제2블록을 포함함 -;
    상기 다수 데이터 처리장치를 사용하여 상기 제1블록의 다수 열 데이터를 병렬 전치하는 제1 병렬 전치 모듈;
    상기 제1블록의 다수 열 데이터를 전치 완료함에 응답하여, 상기 다수 데이터 처리장치를 사용하여 상기 제2블록의 다수 열 데이터를 병렬 전치하는 제2 병렬 전치 모듈을 더 포함하는 장치.
  17. 제 16항에 있어서,
    제1 병렬 전치 모듈은,
    상기 다수 데이터 처리장치 중 제1 데이터 처리장치를 통해 상기 제1블록의 제1열 데이터를 전치하는 제1 행렬 전치 모듈; 및
    상기 다수 데이터 처리장치 중 제2 데이터 처리장치를 통해 상기 제2블록의 제2열 데이터를 전치하는 제2 행렬 전치 모듈을 포함하는 장치.
  18. 제 16항에 있어서,
    상기 블록 구획 모듈은,
    상기 다수 데이터 처리장치의 개수에 기반하여 상기 행렬을 상기 다수 블록으로 구획하는 제2블록 구획 모듈을 포함하는 장치.
  19. 한 개 또는 다수의 프로세서; 및
    한 개 또는 다수의 프로그램을 저장하는 저장유닛을 포함하는 전자 기기에 있어서,
    상기 한 개 또는 다수의 프로그램이 상기 한 개 또는 다수의 프로세서에 의해 실행이 되어, 상기 전자 기기가 청구항 제1항 내지 제9항 중 어느 한 항의 방법을 구현하도록 하는 전자 기기.
  20. 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 저장매체에 있어서,
    상기 프로그램이 프로세서에 의해 실행될 때 청구항 제1항 내지 제9항 중 어느 한 항의 상기 방법을 구현하는 컴퓨터 판독 가능한 저장매체.
KR1020200029546A 2019-07-30 2020-03-10 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체 KR102470027B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910694475.8A CN112306555A (zh) 2019-07-30 2019-07-30 并行提取多个卷积窗中的图像数据的方法、装置、设备以及计算机可读存储介质
CN201910694475.8 2019-07-30

Publications (2)

Publication Number Publication Date
KR20210014561A true KR20210014561A (ko) 2021-02-09
KR102470027B1 KR102470027B1 (ko) 2022-11-24

Family

ID=69784274

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200029546A KR102470027B1 (ko) 2019-07-30 2020-03-10 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체

Country Status (5)

Country Link
US (1) US11481994B2 (ko)
EP (1) EP3771999B1 (ko)
JP (1) JP6955598B2 (ko)
KR (1) KR102470027B1 (ko)
CN (1) CN112306555A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113704172B (zh) * 2021-08-20 2023-11-21 北京大学 基于脉动阵列的转置卷积和卷积加速器芯片设计方法
CN114708446B (zh) * 2022-03-14 2024-10-18 中国科学技术大学 目标检测方法、装置、设备及存储介质
CN114936633B (zh) * 2022-06-15 2023-06-30 北京爱芯科技有限公司 用于转置运算的数据处理单元及图像转置运算方法
CN115184771B (zh) * 2022-07-08 2024-06-11 北京地平线信息技术有限公司 图像信号处理器的故障检测方法和装置、电子设备和介质
CN117949964B (zh) * 2024-03-27 2024-06-21 青岛科技大学 一种激光多普勒测速系统信号处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018196863A1 (zh) * 2017-04-28 2018-11-01 北京市商汤科技开发有限公司 卷积加速和计算处理方法、装置、电子设备及存储介质
WO2019109795A1 (zh) * 2017-12-06 2019-06-13 腾讯科技(深圳)有限公司 卷积运算处理方法及相关产品
US20190220731A1 (en) * 2014-12-04 2019-07-18 Nvdia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190051697A (ko) 2017-11-07 2019-05-15 삼성전자주식회사 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법
US10747844B2 (en) * 2017-12-12 2020-08-18 Tesla, Inc. Systems and methods for converting a matrix input to a vectorized input for a matrix processor
CN111712830B (zh) * 2018-02-21 2024-02-09 罗伯特·博世有限公司 使用深度传感器的实时对象检测
US11574694B2 (en) * 2018-10-11 2023-02-07 International Business Machines Corporation Kernel sets normalization with capacitor charge sharing
US11586883B2 (en) * 2018-12-14 2023-02-21 Microsoft Technology Licensing, Llc Residual quantization for neural networks
US20200210840A1 (en) * 2018-12-31 2020-07-02 Microsoft Technology Licensing, Llc Adjusting precision and topology parameters for neural network training based on a performance metric
US12165038B2 (en) * 2019-02-14 2024-12-10 Microsoft Technology Licensing, Llc Adjusting activation compression for neural network training

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190220731A1 (en) * 2014-12-04 2019-07-18 Nvdia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
WO2018196863A1 (zh) * 2017-04-28 2018-11-01 北京市商汤科技开发有限公司 卷积加速和计算处理方法、装置、电子设备及存储介质
WO2019109795A1 (zh) * 2017-12-06 2019-06-13 腾讯科技(深圳)有限公司 卷积运算处理方法及相关产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Throughput-Optimized OpenCL-based FPGA Accelerator for Large-Scale Convolutional Neural Networks", ACM/SIGDA International Symposium on Field-Programmable Gate Arrays(pp. 16-25), 2016. *

Also Published As

Publication number Publication date
JP6955598B2 (ja) 2021-10-27
KR102470027B1 (ko) 2022-11-24
US11481994B2 (en) 2022-10-25
EP3771999B1 (en) 2023-01-18
JP2021022362A (ja) 2021-02-18
US20210034900A1 (en) 2021-02-04
EP3771999A1 (en) 2021-02-03
CN112306555A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
KR102470027B1 (ko) 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체
US11960934B2 (en) Systems and methods for improved neural network execution
CN112214726B (zh) 运算加速器
US10417555B2 (en) Data-optimized neural network traversal
US11675997B2 (en) Device and method for processing convolution operation using kernel
JP7403638B2 (ja) 高速なスパースニューラルネットワーク
US20220083857A1 (en) Convolutional neural network operation method and device
US12182688B2 (en) Hierarchical partitioning of operators
CN114995782B (zh) 数据处理方法、装置、设备和可读存储介质
US12106222B2 (en) Neural network training under memory restraint
US11562554B1 (en) Workload reduction for non-maximum suppression operation
CN109416755B (zh) 人工智能并行处理方法、装置、可读存储介质、及终端
CN109313663A (zh) 人工智能计算辅助处理装置、方法、存储介质、及终端
US11113361B2 (en) Electronic apparatus and control method thereof
US12125124B1 (en) Matrix transpose hardware acceleration
CN114138231B (zh) 执行矩阵乘法运算的方法、电路及soc
US20190114542A1 (en) Electronic apparatus and control method thereof
KR102606207B1 (ko) 매트릭스 수학 명령어 세트에 대한 타일링 알고리즘
CN113077042A (zh) 卷积神经网络的数据重用与高效处理方法
CN117851742A (zh) 数据存储方法、数据处理方法、数据存储器、数据处理器
JP5045652B2 (ja) 相関処理装置及びその相関処理装置で読みとり可能な媒体
US20240281281A1 (en) Neural network accelerator and method of controlling same
US11842273B2 (en) Neural network processing
KR102718583B1 (ko) 뉴럴 네트워크를 위한 데이터 처리 방법 및 장치
KR102764317B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20200310

PA0201 Request for examination
PG1501 Laying open of application
PN2301 Change of applicant

Patent event date: 20211027

Comment text: Notification of Change of Applicant

Patent event code: PN23011R01D

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20220405

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20221024

PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20221118

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20221121

End annual number: 3

Start annual number: 1

PG1601 Publication of registration