KR20200049695A - 콘볼루션 뉴럴 네트워크의 고속 계산 - Google Patents

콘볼루션 뉴럴 네트워크의 고속 계산 Download PDF

Info

Publication number
KR20200049695A
KR20200049695A KR1020197011555A KR20197011555A KR20200049695A KR 20200049695 A KR20200049695 A KR 20200049695A KR 1020197011555 A KR1020197011555 A KR 1020197011555A KR 20197011555 A KR20197011555 A KR 20197011555A KR 20200049695 A KR20200049695 A KR 20200049695A
Authority
KR
South Korea
Prior art keywords
neural network
output
convolutional neural
input data
trained
Prior art date
Application number
KR1020197011555A
Other languages
English (en)
Other versions
KR102141324B1 (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 KR20200049695A publication Critical patent/KR20200049695A/ko
Application granted granted Critical
Publication of KR102141324B1 publication Critical patent/KR102141324B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/172Classification, e.g. identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • 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/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/191Design or setup of recognition systems or techniques; Extraction of features in feature space; Clustering techniques; Blind source separation
    • G06V30/19173Classification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Neurology (AREA)
  • Medical Informatics (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Image Analysis (AREA)

Abstract

컴퓨터 구현 방법은, 기지의 필터 파라미터를 갖는 복수의 필터를 각각이 포함하는 하나 이상의 콘볼루션 레이어를 포함하는 트레이닝된 콘볼루션 뉴럴 네트워크를 획득하는 단계; 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 기지의 필터 파라미터에 근거하여 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 단계; 상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터를 수신하는 단계; 상기 사전 계산된 재사용 가능한 인자 및 상기 입력 데이터에 근거하여, 위노그래드 콘볼루션 연산자를 사용하여 상기 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 단계; 및 상기 하나 이상의 콘볼루션 레이어의 각각의 출력에 근거하여 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터를 결정하는 단계를 포함한다.

Description

콘볼루션 뉴럴 네트워크의 고속 계산
콘볼루션 뉴럴 네트워크(CNN; Convolutional Neural Network 또는 ConvNet)은 머신 러닝에 있어서의 인공적인 뉴럴 네트워크의 일종이다. 이것은 일반적으로 이미지 인식 및 분류와 같은 비주얼 이미지를 분석하는데 사용된다. 예를 들어, 머신 러닝 프로세스의 트레이닝 단계에서, CNN은 트레이닝 데이터에 근거하여 트레이닝되거나 학습될 수 있다. 그 다음, 머신 러닝 프로세스의 예측 단계에서, 트레이닝된 CNN은, 입력 데이터를 수신하고 그 입력 데이터의 처리 및 분석에 근거하여 예측 또는 결정을 출력하는 모델로서 기능한다.
본 발명은 콘볼루션 뉴럴 네트워크(CNN)의 고속 계산을 개시한다.
일 실시예에서, 컴퓨터 구현 방법은, 기지의 필터 파라미터를 갖는 복수의 필터를 각각이 포함하는 하나 이상의 콘볼루션 레이어를 포함하는 트레이닝된 콘볼루션 뉴럴 네트워크를 획득하는 단계; 트레이닝된 콘볼루션 뉴럴 네트워크의 기지의 필터 파라미터에 근거하여 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 단계; 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터를 수신하는 단계; 상기 사전 계산된 재사용 가능한 인자 및 상기 입력 데이터에 근거하여 위노그래드(Winograd) 콘볼루션 연산자를 사용하여 상기 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 단계; 및 하나 이상의 콘볼루션 레이어의 각각의 출력에 근거하여 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터를 결정하는 단계를 포함한다.
상술한 실시예는 컴퓨터 구현 방법; 상기 컴퓨터 구현 방법을 수행하기 위한 컴퓨터 판독 가능 명령어를 저장하는 비 일시적 컴퓨터 판독 가능 매체; 및 상기 컴퓨터 구현 방법/상기 비 일시적 컴퓨터 판독 가능 매체 상에 저장된 명령어를 수행하도록 구성된 하드웨어 프로세서와 상호 동작 가능하게 결합된 컴퓨터 메모리를 포함하는 컴퓨터 구현 시스템을 사용하여 구현 가능하다.
본 명세서에 개시된 본 발명은 이하의 이점 중 하나 이상을 실현하기 위해 특정 실시예로 구현될 수 있다. 첫째, 개시된 본 발명은, 계산 그래프의 등가 변환 또는 전환을 수행하여 CNN의 네트워크 구조를 간소화함으로써 CNN 모델을 상승시킨 후, 디바이스 독립 방식과 디바이스 의존 방식 둘다의 방식으로 CNN의 최적화 구현을 가능하게 한다. 예시의 디바이스 독립 방식의 최적화는 중복 연산 제거(예컨대, 데이터 내용을 변경하지 않고 입력 텐서(input tensor)로부터 출력 텐서(output tensor)로의 데이터 전송만을 수행하는 딥 러닝 프레임 워크에서의 식별 연산자의 제거) 및 계산 복합도를 감소시키기 위한 레이어/연산 병합(예컨대, 콘볼루션 레이어와 배치 정규화 레이어(batch normalization layer)의 병합)을 포함할 수 있다. 예시의 디바이스 의존 방식의 최적화는 상이한 기본 아키텍처에서의 하드웨어 계산 능력 및 유연한 전개 연산(deploying operation)을 보다 잘 활용하여 CNN 처리량을 최대화하기 위해 연산을 병합(예컨대, 콘볼루션 레이어에 바로 후속되는 바이어스 가산 연산(bias addition operation)과 병합)함으로써 하드웨어 효율을 향상시키는 것을 포함할 수 있다. 둘째, 개시된 본 발명은 트레이닝된 CNN에 근거한 데이터 예측의 계산 부하를 감소시키고 예측 속도를 향상시키고, 이로 인해 네트워크 레이턴시를 감소시키고 CNN의 처리량을 향상시킨다. 셋째, 개시된 본 발명은 보다 적은 계산 능력을 필요로 한다. 넷째, 개시된 본 발명은 복수의 연산자를 새로운 연산자에 결합하여 기본 하드웨어 가속기(예컨대, GPU, FPGA 또는 ASIC 칩)를 이용할 수 있다. 예를 들어, CNN에서, 콘볼루션 레이어는 일반적으로 바이어스 가산 연산 또는 배치 정규화 레이어가 후속된다. 바이어스 가산 연산의 경우, 콘볼루션과 바이어스 가산을 2개의 개별 연산으로서 간주하면, 콘볼루션은 GPU에서 계산되고, 바이어스 값은 GPU의 선행하는 콘볼루션의 결과에 가산될 수 있다. 이러한 방식으로, GPU의 계산 능력은 바이어스 가산 연산에서 계산량이 적기 때문에 충분히 활용되지 못한다. 대신에, 개시된 본 발명에서, 콘볼루션 및 바이어스 가산 연산은 일부 실시예에서 단일 연산에 결합될 수 있다. 이 단일 연산에서, 대응하는 바이어스 값은 동일한 GPU 커널 실행에서 직접 콘볼루션의 결과에 가산될 수 있으므로, 속도가 향상된다. 유사하게, 배치 정규화의 경우에, 콘볼루션 레이어와 배치 정규화의 결합은 등가적으로 콘볼루션 레이어와 바이어스 가산의 결합으로 오프라인 변환될 수 있으므로, 상술한 디바이스 의존 방식의 최적화가 콘볼루션 레이어와 바이어스 가산 연산에 적용되어, GPU 파워를 더 활용하여 계산 속도를 향상시킬 수 있다. 이들 예는 GPU보다 다른 프로세서 또는 가속기에도 적용할 수 있다. 다른 이점은 당업자에게 자명할 것이다.
본 발명의 하나 이상의 실시예의 세부 사항은 상세한 설명, 청구범위, 및 첨부 도면에 기재되어 있다. 본 발명의 다른 특징, 형태 및 이점은 상세한 설명, 청구 범위 및 첨부 도면으로부터 자명해질 것이다.
도 1은 본 발명의 실시예에 따른, 콘볼루션 뉴럴 네트워크(CNN)의 2개의 계산 그래프의 예시적인 등가 변환을 도시하는 블록도이다.
도 2는 본 발명의 실시예에 따른, CNN의 고속 계산의 예시적인 의사 랜덤 코드를 설명하는 스크린 샷이다.
도 3은 본 발명의 실시예에 따른, CNN의 고속 계산을 위한 예시적인 방법을 나타내는 흐름도이다.
도 4는 본 발명의 실시예에 따른, 본 발명에 기재된 알고리즘, 방법, 기능, 프로세스, 흐름 및 절차와 연관된 계산 기능을 제공하는데 사용된 예시적인 컴퓨터 시스템을 나타내는 블록도이다.
도면 내에서의 동일한 참조 부호 및 명칭은 동일한 구성 요소를 나타낸다.
이하의 상세한 설명은 콘볼루션 뉴럴 네트워크(CNN)의 고속 계산을 기술하고, 당업자가 하나 이상의 특정 실시예와 연관시켜 개시된 본 발명을 제조하고 이용할 수 있도록 제시된다. 개시된 실시예에 대한 다양한 변형, 변경 및 치환이 이루어질 수 있고, 이는 당업자에게 자명할 것이며, 정의된 일반적인 원리는 본 발명의 범위를 벗어나지 않고 다른 실시예 및 애플리케이션에 적용될 수 있다. 몇몇 예에서, 개시된 본 발명을 이해하는데 불필요한 세부 사항은, 불필요한 세부 사항을 갖는 하나 이상의 기술된 실시예가 모호해지지 않도록 그리고 그러한 세부 사항이 당업자의 기술 범위 내에 있는 한 생략될 수 있다. 본 발명은 기술되거나 예시되는 실시예에 한정되는 것이 아니라, 기술된 원리 및 특징에 부합하는 가장 넓은 범위를 부여하려고 한다.
콘볼루션 뉴럴 네트워크(CNN 또는 ConvNet)는 딥 러닝을 위한 가장 대표적인 네트워크 구조 및 기술 혁신 중 하나이다. 이미지 분야에서 큰 성공을 거두었으며 다른 분야의 문제를 해결하는 데에도 널리 사용된다. CNN은 입력 레이어, 콘볼루션 레이어, 활성화 함수, 배치 정규화, 풀링 레이어, 완전 연결된 레이어 및 출력 레이어 중 하나 이상을 포함할 수 있다. 그들 중에서, 콘볼루션 레이어는 일반적으로 최대 계산 부하를 수반하여, 전체 CNN에서 가장 긴 계산 시간을 소모할 수 있다. 콘볼루션 레이어는 하나 이상의 필터(커널이라고도 함)를 포함할 수 있다. 콘볼루션 레이어는 입력 데이터를 수신하고, 콘볼루션 레이어의 하나 이상의 필터의 각각을 이용하여 입력 데이터의 콘볼루션 연산을 수행하고, 콘볼루션 레이어의 출력 데이터를 생성할 수 있다. 몇몇 예에서, CNN에는 수십 개의 콘볼루션 레이어가 포함될 수 있다.
개시되는 기술은 콘볼루션 레이어의 핵심 연산인 콘볼루션 연산을 가속화하는데 도움을 줄 수 있다. 결과적으로, 개시되는 기술은 계산 효율성을 향상시키고 CNN의 계산 부하를 감소시킬 수 있다.
개시되는 기술은 다양한 애플리케이션을 가질 수 있다. 예를 들어, 개시되는 기술은 무인 슈퍼마켓, 무인 은행, 보안 보호 및 스마트 도시와 같은 영역에서의 얼굴 인식에 적용될 수 있다. 예를 들어, 딥 콘볼루션 뉴럴 네트워크가 얼굴 인식에 사용되어 왔다. 개시되는 기술은 특히 대규모 인구 집단에서 얼굴 인식의 작업을 처리하는 데 도움이 될 수 있다. 개시되는 기술은 트레이닝된 CNN 모델에 근거한 얼굴 인식의 응답 시간을 향상시킬 수 있다. 개시되는 기술은 얼굴 인식의 각 요청의 처리 시간을 감소시킬 수 있다. 결과적으로, 계산 리소스를 늘리지 않고도 시스템 처리량이 증가되고 연산 비용이 감소될 수 있다.
다른 예로서, 개시되는 기술은 자동차 보험에 사용될 수 있다. 개시되는 기술은 딥 콘볼루션 뉴럴 네트워크 이미지 기술에 근거하여 차량의 표면 파손을 자동으로 식별할 수 있다. 예를 들어, 교통 사고가 발생하면, 자동차 표면 파손을 사진으로 찍은 후, 자동 손상 식별 및 보상 할당량 평가를 수행할 수 있는 보험 회사의 클레임 서버에 업로드할 수 있다. 개시되는 기술은 보험 클레임 서버가 딥 콘볼루션 뉴럴 네트워크 기술에 근거한 자동 손상 식별을 수행하는데 사용될 수 있다. 개시되는 기술에 의해, 보험 회사는 장비 예산을 늘리지 않고 더 빠르고 더 높은 처리량을 제공할 수 있다.
상술한 예 이외에, 개시되는 기술은 CNN 기술을 이용하는 여러 다른 애플리케이션에 유용할 수 있다.
일부 실시예에서, 개시되는 기술은 계산 그래프를 사용하여 구현될 수 있다. 계산 그래프는 특히 딥 러닝의 분야에서 머신 러닝 알고리즘을 나타내는 데 사용될 수 있다. 계산 그래프는 연산 또는 변수에 대응하는 노드를 여러 개 포함하는 방향성 그래프일 수 있다. 변수는 그들의 값을 연산에 제공할 수 있고, 연산은 그들의 출력을 다른 연산에 제공할 수 있다. 이러한 방법으로, 계산 그래프 내의 노드는 변수의 함수를 정의할 수 있다. 노드들에 공급되고(즉, 입력), 노드들로부터 나오는(즉, 출력) 값들은 텐서들에 의해 표현될 수 있다. 하나의 텐서는 다차원 어레이로 간주될 수 있다. 하나의 텐서는 상위 랭크 또는 차원의 스칼라, 벡터, 행렬 및 텐서를 포함할 수 있다. 변수 및 연산자의 입력 및 출력 데이터를 나타내기 위해 텐서를 이용하면, 자동 차별화, 동적 메모리 관리 및 기타 기능을 얻을 수 있다.
연산자에 있어서, 계산 그래프는 연산자의 함수를 정의하기만 하면 된다. 각 연산자의 특정 구현을 지정할 필요는 없다. 따라서, 계산 그래프는 GPU, FPGA 또는 AI 칩과 같은 하드웨어 가속기 또는 CPU 중 하나 이상에서 연산자가 실행되거나 구현될 수 있는 유연성을 제공한다. 데이터 변수에 대한 저장 및 액세스는 로컬 또는 원격일 수 있다. 계산 그래프는 모델 트레이닝, 모델 예측 또는 추론, 또는 머신 러닝 프로세스의 다른 단계에 사용될 수 있다.
도 1은 본 발명의 실시예에 따른, CNN의 2개의 계산 그래프(100 및 105)의 예시적인 등가 변환(101)을 나타내는 블록도이다. 2개의 계산 그래프(100 및 105)는 동일한 CNN을 나타낼 수 있다. 단순화를 위해, 2개의 연산 그래프(100 및 105)는 CNN의 단일 콘볼루션 레이어의 연산 또는 함수를 도시한다. CNN은 복수의 레이어를 포함할 수 있으므로, 계산 그래프로 나타낼 수 있다.
도시된 바와 같이, 텐서 X(110)와 텐서 Z(170)는 각각 계산 그래프(100)에 의해 표현되는 CNN의 콘볼루션 레이어의 입력 및 출력이다. 계산 그래프(100)는 2개의 노드(130 및 150)를 포함한다. 각 노드는 뉴럴 네트워크의 세분화된 기본 연산으로 간주될 수 있는 변수 또는 연산자에 대응한다. 노드(130)는 콘볼루션 연산자, Conv2D를 나타낸다. Conv2D(130)는 입력 데이터 텐서 X(110)와 텐서 W(120)의 콘볼루션 연산을 나타낼 수 있으며, 여기서 텐서 W(120)은 CNN의 콘볼루션 레이어의 필터의 가중치 또는 파라미터를 나타낸다. 콘볼루션 연산 후에, Conv2D(130)는 텐서 Y(140)를 출력할 수 있다. 출력 텐서 Y(140)와 바이어스(160)는 노드(150)로의 입력으로서 기능할 수 있으며, 노드(150)는 출력 데이터 Y(140)에 바이어스(160)를 가산하고 그 결과로 CNN의 콘볼루션 레이어의 출력 Z(170)가 되는 연산을 나타낸다.
유사하게, 텐서 X'(115)와 텐서 Z'(175)는 각각 계산 그래프(105)에 의해 표현되는 CNN의 콘볼루션 레이어의 입력 및 출력이다. 계산 그래프(105)는 2개의 노드(135, 155)를 포함한다. 노드(135)는 콘볼루션 연산자, Wino-Conv2D를 나타낸다. Wino-Conv2D(135)는 입력 데이터 텐서 X'(115)와 텐서 U(125)의 수정된 콘볼루션 연산을 나타낼 수 있으며, 여기서 텐서 U(125)는 CNN의 콘볼루션 레이어의 필터의 수정된 가중치 또는 파라미터를 나타낸다. 콘볼루션 연산 후에, Wino-Conv2D(135)는 텐서 Y'(145)를 출력할 수 있다. 출력 텐서 Y'(145)와 바이어스(165)는 노드(155)로의 입력으로서 기능할 수 있으며, 노드(155)는 출력 데이터 Y'(145)에 바이어스(165)를 가산하고 그 결과로 CNN의 콘볼루션 레이어의 출력 Z'(175)가 되는 연산을 나타낸다.
일부 실시예에서, 계산 그래프(105)는 계산 그래프(100)의 등가 변환이다. 동일한 입력(즉, X(110) = X'(115))이 주어지면, 2개의 계산 그래프(100 및 105)는 동일한 출력(즉, Z(170) = Z'(175))을 생성할 수 있다.
일부 실시예에서, 계산 그래프(100)와 비교하여, 계산 그래프(105)는 CNN의 고속 계산을 위한 개선되거나 최적화된 콘볼루션 연산을 나타낼 수 있다. 예를 들어, 머신 러닝 프로세스의 트레이닝 단계 후에, 계산 그래프의 노드의 파라미터들(예컨대, 텐서 W(120) 또는 텐서 U(125)의 필터 또는 커널 파라미터의 값들)이 트레이닝되고 알게 된다. 머신 러닝 프로세스의 예측 단계에서, 이들 파라미터의 값은 변하지 않는다. 즉, 입력 텐서 X'(115)가 어떻게 변하든, 텐서 U(125)의 값은 변하지 않는다. 이와 같이, 임의의 입력 데이터 X'(115)에 근거한 예측을 수행하기 전에, 텐서 U(125)는 트레이닝 후에 계산될 수 있다. 텐서 U(125)를 미리 계산하고 임의의 입력 데이터 X'(115)에 대한 사전 계산된 텐서 U(125)를 CNN의 콘볼루션 레이어에 재사용함으로써, 특히 CNN으로의 복수 입력을 예측함에 있어서, CNN의 계산 부하가 감소될 수 있다.
이와 같이, 계산 그래프(105)에서, 새로운 콘볼루션 연산자 Wino-Conv2D(135)는 원래의 계산 그래프(100)의 원래의 콘볼루션 연산자 Conv2D(130)를 대체할 수 있다. 새로운 콘볼루션 연산자 Wino-Conv2D(135)는 원래의 텐서 W(120) 대신에 텐서 U(125)를 필터 또는 커널 파라미터로서 이용한다. 계산 그래프(105)는 원래의 전산 그래프(100)와 동등한 것을 유지하면서 향상된 계산 효율성을 얻을 수 있다.
도 2는 본 발명의 실시예에 따른, CNN의 고속 계산을 위한 예시적인 알고리즘(200)의 예시적인 의사 코드를 나타내는 스크린 샷이다. 예시적인 알고리즘(200)은 CNN에 대한 고속 알고리즘인 위노그래드 최소 필터링 알고리즘을 기반으로 한다.
CNN의 콘볼루션 레이어의 콘볼루션 연산은 입력(예컨대, 입력 텐서 X로 표시됨)과 콘볼루션 레이어의 필터 또는 커널(필터 또는 커널 텐서 W로 표시됨) 사이의 특정 상관 관계로서 정의될 수 있으며, 그 결과로 출력(예컨대, 출력 텐서 Y로 표시됨)이 된다. 단순화를 위해, 콘볼루션 연산은 1의 스트라이드(stride)를 사용한다고 가정한다. 주어진 콘볼루션 레이어에 있어서, 입력 텐서 X는 [N; Cin; H; Wi]의 사이즈를 가질 수 있으며, 여기서, N은 처리될 입력 데이터의 배치 사이즈(batch size)(예컨대, 콘볼루션될 N개의 이미지의 배치 연산)를 나타내고; Cin은 채널 수(예컨대, 표준 디지털 카메라로부터의 이미지는 적색, 녹색 및 청색의 3개의 채널을 갖는다. 각 채널은 픽셀 값(예컨대, 0 내지 255의 범위)을 갖는 2d 행렬을 포함할 수 있다.)를 나타내고; H 및 Wi는 각 채널의 높이 및 폭(예컨대, 255*255)을 각각 나타낸다. 필터 또는 커널 텐서 W는 [Cout; Cin; R; S]의 사이즈를 가질 수 있으며, 여기서, Cout은 콘볼루션 연산의 출력 채널 수를 나타내며; Cin은 콘볼루션 연산의 입력 채널 수를 나타내고; R 및 S는 콘볼루션 레이어의 각 필터 또는 커널의 높이 및 폭을 각각 나타낸다. 일반적으로, R과 S는 동일 값을 갖도록 설정될 수 있다.
출력 텐서 Y는 [N; Cout; H; Wi]의 사이즈를 가질 수 있으며, 요소를 갖는 출력 텐서 Y는 아래의 수학식 (1)로 표현된다.
Figure pct00001
(1)
여기서, i는 [0, N] 범위의 정수이고, o는 [0, Cout] 범위의 정수이다.
정의에 의한 계산(예컨대, 식 (1)에 의해 주어진 바와 같이), 행렬 곱셈으로의 변환, 또는 위노그래드 고속 알고리즘의 이용과 같이, 콘볼루션 레이어의 콘볼루션 연산을 구현하는 여러 방법이 있다. 예를 들어, 각 콘볼루션 커널 또는 필터의 사이즈가 1x1(즉, R과 S가 동시에 1이다)인 경우, 상기 콘볼루션 연산은 행렬 곱셈으로 변환될 수 있다. 일부 실시예에서, 예를 들어, R>1 또는 S>1인 경우, 콘볼루션 연산은 위노그래드 고속 알고리즘에 근거하여 실행될 있다.
위노그래드 고속 알고리즘에 따르면, r×s의 입력 사이즈와 m×n의 출력 사이즈의 콘볼루션 필터 또는 커널을 이용한 입력 채널의 콘볼루션에 있어서, 최소 필터링 알고리즘 F(m×n; r×s)는 (m+r-1)(n+s-1) 곱셈만으로 콘볼루션 연산을 완성할 수 있음을 알 수 있다. 예를 들어, H×Wi 사이즈의 주어진 입력 채널은 겹치는 서브 블록들로 분할될 수 있으며, 각각의 서브 블록은 m×n의 사이즈를 갖는다. 각 서브 블록에 대해 콘볼루션 계산이 개별적으로 수행되어, 대응하는 출력 채널을 생성할 수 있다(스트라이드가 1인 상기 가정을 상기한다). 상술한 바와 같이, 콘볼루션 레이어에서의 콘볼루션 필터 또는 커널의 폭(R) 및 높이(S)는 일반적으로 동일한 값으로 설정된다. 일반적으로, 서브 블록의 분할을 위해, m과 n도 마찬가지로 동일한 값으로 설정된다.
단순화를 위해, 예시적인 알고리즘(200)은 m = n 및 r = s 인 경우를 고려한다. 즉, 최소 필터링 알고리즘 F(m m, r r)가 고려된다. 예시적인 알고리즘(200)의 단계(1-23)는 CNN의 단일 콘볼루션 레이어의 콘볼루션 연산을 위한 위노그래드 알고리즘의 예시적인 실시예를 도시한다. CNN은
Figure pct00002
, c번째 입력 채널과 o번째 출력 채널 사이의 필터 또는 커널, 및 CNN의 필터 또는 커널의 파라미터 또는 가중치를 포함하는 텐서 W을 특징으로 한다. 텐서 X는 CNN으로의 입력 데이터를 나타낸다.
Figure pct00003
는 입력 채널의 수를 나타낸다.
Figure pct00004
는 입력 하위 블록의 사이즈를 나타낸다(인접하는 하위 블록은
Figure pct00005
의 중첩하는 요소를 갖는다).
Figure pct00006
는 c번째 입력 채널의 p번째 하위 블록을 나타낸다.
Figure pct00007
는 o번째 출력 채널의 p번째 하위 블록을 나타낸다. AT 및 BT는 입력 X에 대응하는 변환 행렬이며, 아래의 식 (2) 및 (3)으로 주어진다.
Figure pct00008
Figure pct00009
위노그래드 알고리즘에 근거한 CNN의 계산을 위한 기존의 기술에서, CNN의 각 콘볼루션 레이어에 대한 각 입력 채널(예컨대, 이미지의 채널)에 대해 예시적인 알고리즘(200)(단계 1 ~ 23를 포함함)이 실행된다. 예를 들어, CNN이 5개의 콘볼루션 레이어를 포함하는 경우, 각 입력 채널에 대해, 예시적인 알고리즘(200)이 5회 실행된다. 예측을 위해 10개의 채널이 입력되면, 예시적인 알고리즘(200)은 50회 실행될 수 있다.
기존 기술과는 달리, CNN의 고속 계산을 위한 상술한 기술은 특히 복수의 입력 채널에 대한 계산 부하를 감소시킬 수 있다. CNN의 고속 계산을 위한 상술한 기술은 머신 러닝 프로세스의 예측 단계 동안에는 공통이며 변하지 않은 인자를 재사용할 수 있다. CNN의 고속 계산을 위한 상술한 기술은 이들 인자를 식별하고 이들 인자를 사전 계산한다.
이와 같이, 재사용 가능한 이들 인자의 계산은 입력 데이터의 값에 관계없이 1회만 계산하면 된다. 보다 구체적으로, 예시적인 알고리즘(200)에서, 상술의 고속 계산 알고리즘은, 이러한 계산(예컨대, W 및 ωo,c)에 있어서 필요한 모든 파라미터는 트레이닝된 CNN이 주어지면 알게 되며 트레이닝된 CNN에 근거한 예측 단계 동안에는 변경되지 않기 때문에, 단계 1 ~ 6에 따라서 텐서 U를 사전 계산할 수 있다. 예를 들어, 텐서 U는 오프라인 처리에 의해 텐서 W로부터 추출될 수 있다. 따라서, 예시적인 알고리즘(200)의 단계 1 ~ 6(총칭해서 210으로 표시됨)은 트레이닝된 CNN의 각 콘볼루션 레이어에 대해 1회만 수행하면 된다. 예를 들어, 예측을 위해 10개의 채널이 입력되는 경우, 예시적인 알고리즘(200)의 단계 1 ~ 6은 실시간 모델 예측의 계산량을 감소시키기 위해 1회만 실행되어도 되므로, 런타임을 감소시킬 수 있는 반면에, 나머지 단계 7 ~ 23(총칭해서 220으로 표시됨)은 트레이닝된 CNN의 각 콘볼루션 레이어에 대해 10회 실행된다.
예시적인 위노그래드 알고리즘(200)에 근거한 사전 계산된 텐서 U를 이용하면, 트레이닝된 CNN의 계산 그래프는 예를 들어 등가 변환(101)에 따라서, 도 1에 도시된 바와 같이 계산 그래프(105)로 수정될 수 있다. 예를 들어, 예시적인 위노그래드 알고리즘(200)에 근거한 사전 계산된 텐서 U는 트레이닝된 CNN의 원래의 가중치 텐서 W(120)를 대체하는 텐서 U(125)의 일례일 수 있다. 콘볼루션 연산자 Wino-Conv2D(135)는 원래의 계산 그래프(100) 내의 원래의 콘볼루션 연산자 Conv2D(130)를 대체하는 예시적인 위노그래드 알고리즘(200)의 단계 7 ~ 23에 근거하여 실행될 수 있다. 수정된 계산 그래프(105)는 예측에 사용될 수 있다. 새로운 계산 그래프(105)는 원래의 계산 그래프(100)를 텐서 U(125)의 계산으로부터 경감시키기 때문에, 수정된 계산 그래프(105)의 계산 부하가 감소되고, 따라서 CNN의 콘볼루션 연산을 수행하기 위한 계산 효율성이 향상된다. 시뮬레이션 결과는, 사전 계산된 U(125) 및 콘볼루션 연산자 Wino-Conv2D(135)를 갖는 수정된 계산 그래프(105)에 근거한 계산은 원래의 가중치 텐서 W(120) 및 콘볼루션 연산자 Conv2D(130)를 갖는 계산 그래프(100)에 비해 30%의 계산 속도를 향상시킬 수 있음을 나타내고 있다.
단, 도 2는 m = n 및 r = s의 경우에 대한 예시적인 위노그래드 알고리즘을 도시한다. CNN의 고속 계산을 위한 상술한 기술은 m = n 및 r = s의 특정한 조건이 없는 일반적인 CNN을 포함하는 다른 경우에 채택되어 적용될 수 있다.
도 3은 일 실시예에 따른, CNN의 고속 계산을 위한 예시적인 방법 300의 흐름도이다. 일부 실시예에서, 방법 300의 여러 단계들은 병렬로, 조합해서, 루프로, 또는 임의의 순서로 실행될 수 있다. 설명의 명확화를 위해, 이하의 설명은 본 설명의 다른 도면의 관점에서 방법 300을 일반적으로 설명한다. 그러나, 방법 300은 예를 들어 임의의 적절한 시스템, 환경, 소프트웨어 및 하드웨어, 또는 시스템, 환경, 소프트웨어 및 하드웨어의 조합에 의해 적절하게 수행될 수 있다는 것을 이해할 것이다. 예를 들어, 방법 300은 CNN을 이용하여 머신 러닝 알고리즘을 실행하도록 구성된 데이터 처리 장치에 의해 수행될 수 있다. 데이터 처리 장치는 예를 들어, 범용 CPU 또는 GPU, FPGA 및 심지어 주문형 ASIC 프로세서와 같은 하드웨어 가속기 중 하나 이상을 포함하거나 이들에 의해 구현될 수 있다.
단계 310에서, 트레이닝된 CNN이 획득된다. 트레이닝된 CNN을 획득하는 단계는, 예를 들어 머신 러닝 프로세스의 트레이닝 단계 또는 프로세스(예컨대, 트레이닝 데이터또는 샘플 입력에 근거한)를 통해 그 트레이닝된 CNN을 계산하는 단계, 트레이닝된 CNN을 메모리 또는 다른 데이터 저장 장치에서 검색하는 단계, 또는 트레이닝된 CNN을 다른 소스(예컨대, 트레이닝 프로세스를 수행하는 또 다른 데이터 처리 장치)로부터 수신하는 단계를 포함할 수 있다. 트레이닝된 CNN은 입력 데이터(예컨대, 입력 이미지)를 수신 및 분석하고, 출력 데이터(예컨대, 입력 이미지의 카테고리 또는 분류의 각각의 확률)를 예측할 수 있다.
트레이닝된 CNN은 트레이닝된 CNN 내의 각 레이어의 기지의 파라미터에 의해 정의된 기지의 네트워크 아키텍처(예를 들어, 상이한 레이어들의 순서화된 시퀀스)를 갖는다. 트레이닝된 CNN의 각 레이어는 트레이닝된 CNN으로의 입력 데이터(트레이닝된 CNN의 이전 레이어의 출력에 대해 연산한 것에 의해 직접적으로 또는 간접적으로)에 대해 연산할 수 있다. 다른 레이어에 앞서 그 트레이닝된 CNN의 데이터에 대해 연산하는 레이어를 다른 레이어에 대한 상위, 이전 또는 업스트림 레이어라고 부른다. 데이터에 대한 다른 레이어의 연산에 후속하거나 이후에 그 트레이닝된 CNN 내의 데이터에 대해 연산하는 레이어를 다른 레이어에 대한 하위 또는 다운스트림 레이어라고 부른다. 통상적으로, 상위 레이어의 출력은 인접하는 하위 레이어로의 입력으로서 제공된다. 이와 같이, 트레이닝된 CNN으로의 입력 데이터는 CNN의 개시부(예컨대, 입력 데이터를 수신하는 입력 레이어 또는 입력 데이터에 대해 직접 연산하는 초기 레이어)로부터 CNN의 종료부(예컨대, CNN의 결과를 출력하는 출력 레이어)로 차례로 그 트레이닝된 CNN의 각 레이어를 통과한다.
특히, 트레이닝된 CNN은 하나 이상의 콘볼루션 레이어를 포함한다. 하나 이상의 콘볼루션 레이어 각각은 기지의 필터 파라미터(예를 들어, 필터의 개수, 필터 사이즈, 필터의 파라미터 값 및 연결 가중치)를 갖는 각각의 하나 이상의 필터(또는 커널)를 포함한다. 상이한 콘볼루션 레이어는 동일하거나 상이한 수의 필터를 포함할 수 있다. 각 필터는 기지의 필터 파라미터 또는 가중치에 의해 정의된다. 일부 실시예에서, 필터는 도 2와 관련하여 설명된 필터 ωo,c ∈ Rr×r과 같은 행렬에 의해 표시될 수 있다. 필터 행렬 및 연결 가중치의 값은 트레이닝 프로세스 동안에 학습되어 알게 되며, 이들 값은 예를 들어, 입력 데이터에 근거한 예측을 위해 그 트레이닝된 CNN을 사용할 때에는 변경되지 않는다. 일부 실시예에서, 콘볼루션 레이어의 필터 및/또는 연결 가중치는 총칭해서 텐서로 나타낼 수 있다. 예를 들어, 트레이닝된 CNN의 각 콘볼루션 레이어는 CNN의 필터 또는 커널의 파라미터 또는 가중치를 포함하는 필터 행렬 및 가중치 텐서(예컨대, 도 2와 관련하여 설명된 텐서 W)로 나타낼 수 있다. 단계 310으로부터, 방법 300은 단계 320으로 진행한다.
단계 320에서, 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자는 그 트레이닝된 CNN의 기지의 필터 파라미터에 근거하여 사전 계산될 수 있다. 예를 들어, 하나 이상의 콘볼루션 레이어의 각각에 있어서, 알고 있지만 변경되지 않는 파라미터에만 의존하는 재사용 가능한 인자는 CNN으로의 입력 데이터와 독립적으로 식별되고 계산될 수 있다. 예를 들어, 도 2의 예시적인 알고리즘(200)과 관련하여 설명된 텐서 U는 그 트레이닝된 CNN의 하나 이상의 콘볼루션 레이어 각각에 대한 재사용 가능한 인자의 일례이다. 이러한 계산(예컨대, W 및 ωo,c)에 있어서 필요한 모든 파라미터는 그 트레이닝된 CNN이 주어지면 알게 되며 그 트레이닝된 CNN에 근거한 예측 단계 동안에는 변경되지 않기 때문에, 텐서 U는 예시적인 알고리즘(200)의 단계 1 ~ 6에 따라서 계산될 수 있다.
일부 실시예에서, 트레이닝된 CNN의 기지의 필터 파라미터에 근거하여 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 단계는 그 트레이닝된 CNN으로의 입력 데이터에 관계없이 그 트레이닝된 CNN의 기지의 필터 파라미터에 근거하여 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 오프라인 계산하는 단계를 포함한다. 결과적으로, 트레이닝된 CNN의 각 콘볼루션 레이어에 있어서, 재사용 가능한 인자는 예를 들어 오프라인 처리에 의해 1회만 계산되어도 되며, 런타임 계산 중에 검색되고 재사용될 수 있다. 단계 320으로부터, 방법 300은 단계 330으로 진행한다.
단계 330에서, 하나 이상의 콘볼루션 레이어의 각각에 있어서의 사전 계산된 재사용 가능한 인자는, 예를 들어 예측을 위해 그 트레이닝된 CNN을 사용할 때, 나중의 검색을 용이하게 하기 위해 데이터 저장 장치에 저장될 수 있다. 일부 실시예에서, 저장된 사전 계산된 재사용 가능한 인자는 공유되거나, 공개되거나, 다른 데이터 처리 디바이스에 전송될 수 있다. 단계 330으로부터, 방법 300은 단계 340으로 진행한다.
단계 340에서, 트레이닝된 CNN으로의 입력 데이터가 수신되는지에 대한 결정이 이루어진다. 단계 340에서, 트레이닝된 CNN으로의 입력 데이터가 수신되는지에 대한 결정이 이루어진다. 트레이닝된 CNN으로의 입력 데이터가 수신되었다는 결정에 응답하여, 방법 300은 단계 350으로 진행한다. 그렇지 않고, 트레이닝된 CNN으로의 입력 데이터가 수신되지 않았다고 결정되면, 방법 300은 단계 380로 진행하고, 방법 300은 종료된다.
입력 데이터는 예를 들어, 하나 이상의 이미지(예를 들어, 사람의 얼굴을 포함하는 사진)의 이미지 데이터 또는 다른 유형의 입력 데이터를 포함할 수 있다. 각 이미지는 하나 이상의 채널을 포함할 수 있다. 예를 들어, 표준 디지털 카메라로부터의 이미지는 적색, 녹색 및 청색의 2개의 채널로 간주될 수 있다. 한편, 그레이 스케일 이미지는 단일 채널을 갖는 것으로 간주될 수 있다.
일부 실시예에서, 입력 데이터는 스칼라, 벡터, 행렬 및 고차원의 텐서를 포함할 수 있는 텐서로 나타낼 수 있다. 예를 들어, 그레이 스케일 이미지는 픽셀 값의 2d 행렬로 나타낼 수 있다. 행렬의 각 픽셀의 값은 예를 들어, 0은 흑색을 나타내고 255는 흰색을 나타내는 0 ~ 255 범위를 가질 수 있다. 일부 실시예에서, 각 픽셀의 값은 255로 제산함으로써 정규화된다. 컬러 이미지의 각 채널은 예를 들어 0 ~ 255 범위 또는 정규화 후의 0 ~ 1.0 범위의 픽셀 값을 갖는 2d 행렬을 포함할 수 있다. 서로 적층된 2d 행렬(각 색에 하나씩)은 컬러 이미지를 나타내는 텐서를 형성할 수 있다. 일부 실시예에서, 이미지 데이터는 복수의 이미지를 포함하는 텐서를 포함할 수 있다.
예를 들어, 도 2의 예시적인 알고리즘(200)과 관련하여 설명된 입력 텐서 X는 입력 데이터의 일례이다. 입력 데이터는 예를 들어 예시적인 알고리즘(200)과 관련하여 설명된 기술에 따라서 서브 블록 또는 채널로 분할될 수 있다. 콘볼루션 연산은 예를 들어, 위노그래드 알고리즘 또는 다른 방법에 따라서 데이터의 서브 블록 또는 채널 각각에 대해 수행될 수 있다.
일부 실시예에서, CNN로의 입력 데이터는 트레이닝된 CNN의 기지의 네트워크 아키텍처에 따라서 그 트레이닝된 CNN의 각 레이어를 통과할 수 있다. 단계 340으로부터, 방법 300은 단계 350으로 진행한다.
단계 350에서, 하나 이상의 콘볼루션 레이어(예를 들어, 레이어 k)의 각각의 출력은 사전 계산된 재사용 가능한 인자 및 입력 데이터에 근거하여 계산된다. 레이어 k의 출력은 레이어 k로의 입력과 레이어 k의 필터 사이에서 수행된 콘볼루션 연산의 결과를 포함한다. 레이어 k로의 입력은 트레이닝된 CNN로의 입력 데이터, 트레이닝된 CNN의 이전 레이어(예를 들어, 레이어 k―1)의 출력, 또는 이들의 조합을 포함할 수 있다. 일부 실시예에서, 레이어 k의 출력은, 미리 계산된 재사용 가능한 인자(예를 들어, 텐서 U(125)) 및 입력 데이터(이전 레이어의 출력에 대해 연산한 것으로 인해 직접적으로 또는 간접적으로)에 근거하여 위노그래드 콘볼루션 연산자(예를 들어, 도 1과 관련하여 설명된 Wino-Conv2D(135))를 이용하여 계산될 수 있다. 일부 실시예에서, 레이어 k의 출력은 위노그래드 최소 필터링 알고리즘(예를 들어, 도 2와 관련하여 설명된 예시적인 알고리즘(200))에 따라서 계산될 수 있다. 단계 350으로부터, 방법 300은 단계 360으로 진행한다.
단계 360에서, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터는 하나 이상의 콘볼루션 레이어의 각각의 출력에 근거하여 결정된다. 일부 실시예에서, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터를 결정하는 단계는 트레이닝된 CNN의 출력 데이터를 생성, 예측 또는 계산하는 단계를 포함한다. 출력 데이터는 트레이닝된 CNN의 연산에 의한 입력 데이터로부터 도출된 예측, 분류, 또는 다른 특징 또는 속성을 포함할 수 있다. 예를 들어, 출력 데이터는 입력 이미지의 가능한 카테고리(예를 들어, 사람, 개, 자동차 또는 나무)의 확률 벡터를 포함할 수 있다. 다른 예로서, 출력 데이터는 (예를 들어, 얼굴 인식을 위해) 입력 이미지 내의 객체의 식별을 포함할 수 있다. 또 다른 예로서, 출력 데이터는 차량의 입력 사진에 근거한 차량 손상의 식별 또는 분류를 포함할 수 있다. 일부 실시예에서, 출력 데이터는 입력 데이터의 강화된 버전 또는 필터링된 버전(예를 들어, 입력 사진의 선명한 버전 또는 흐린 버전)을 포함할 수 있다.
일부 실시예에서, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터는, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터가 하나 이상의 콘볼루션 레이어의 각각의 하나 이상의 출력에 근거하여 결정된다는 점에서, 하나 이상의 콘볼루션 레이어의 각각의 출력(예컨대, k∈[1, L]에 대해, 레이어 k의 출력, 여기서 L은 트레이닝된 CNN에서의 레이어의 총 수이다.)에 근거하여 결정된다. 통상적으로, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터는 트레이닝된 CNN의 최종 레이어인 레이어 L의 출력에 근거하여 결정되며, 여기서, 트레이닝된 CNN의 출력은 트레이닝된 CNN로의 입력 데이터를 역으로 추적할 때까지, 이전 레이어인 레이어 L-1 등의 출력에 근거하여 결정된다. 일부 실시예에서, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터는 다른 방식으로 하나 이상의 콘볼루션 레이어의 각각의 출력에 근거하여 결정될 수 있다. 단계 360으로부터, 방법 300은 단계 370으로 진행한다.
단계 370에서, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터는 예를 들어 사용자 인터페이스(예를 들어, 그래픽 사용자 인터페이스)를 통해 출력될 수 있다. 예를 들어, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터는 테이블, 그래프, 텍스트 또는 다른 포맷으로 표현될 수 있고, 스크린 또는 다른 사용자 인터페이스를 통해 사용자에게 디스플레이될 수 있다. 일부 실시예에서, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터는 다른 장치(예를 들어, 저장 장치 또는 추가 처리를 위한 다른 데이터 처리 장치)에 저장되거나, 전송되거나 또는 출력될 수 있다.
단계 370로부터, 방법 300은 트레이닝된 CNN로의 임의의 입력 데이터(예를 들어, 제 2 입력 데이터로 지칭)가 수신되는지를 결정하는 단계 340로 되돌아간다. 일부 실시예에서, 트레이닝된 CNN로의 제 2 입력 데이터는 분석 및 예측을 위해 트레이닝된 CNN에 추가 또는 업데이트된 입력 데이터(예를 들어, 다른 이미지 세트)를 포함할 수 있다. 따라서, 방법 300은 미리 계산된 재사용 가능한 인자 및 제 2 입력 데이터에 근거하여 하나 이상의 콘볼루션 레이어의 각각의 제 2 출력을 계산하는 단계 350으로 진행한 후, 하나 이상의 콘볼루션 레이어의 각각의 제 2 출력에 근거하여 그 트레이닝된 콘볼루션 뉴럴 네트워크의 제 2 출력 데이터를 결정하는 단계 360으로 진행한다.
도 4는 일 실시예에 따라, 본 발명에 설명된 바와 같이, 상술의 알고리즘, 방법, 기능, 프로세스, 흐름 및 절차와 관련된 계산 기능을 제공하는데 사용되는 예시적인 컴퓨터 시스템(400)의 블록도이다. 예시된 컴퓨터(402)는 서버, 데스크탑 컴퓨터, 랩탑/노트북 컴퓨터, 무선 데이터 포트, 스마트 폰, PDA(personal data assistant), 태블릿 컴퓨팅 장치, 이들 장치 내의 하나 이상의 프로세서 등과 같은 임의의 컴퓨팅 장치, 또는 컴퓨팅 장치의 물리적 또는 가상 인스턴스(또는 둘다)를 포함하는 임의의 다른 적절한 프로세싱 장치를 포함하고자 한다. 또한, 컴퓨터(402)는 키패드, 키보드, 터치 스크린 또는 사용자 정보를 접수할 수 있는 다른 장치 등의 입력 장치와, 디지털 데이터, 비주얼 또는 오디오 정보(또는 정보의 조합)를 포함한 컴퓨터(402)의 동작과 관련된 정보를 전달하는 출력 장치, 또는 그래픽 형식 사용자 인터페이스(UI)(또는 GUI)를 포함할 수 있다.
컴퓨터(402)는 클라이언트, 네트워크 구성 요소, 서버, 데이터베이스 또는 다른 보유 장치, 또는 본 명세서에 개시된 본 발명을 수행하기 위한 컴퓨터 시스템의 임의의 다른 구성 요소(또는 기능의 조합)로서 기능할 수 있다. 도시된 컴퓨터(402)는 네트워크(430)와 통신 가능하게 결합된다. 일부 실시예에서, 컴퓨터(402)의 하나 이상의 구성 요소는 클라우드 컴퓨팅 기반, 로컬, 글로벌 또는 다른 환경(또는 환경의 조합)을 포함하는 환경 내에서 동작하도록 구성될 수 있다.
상위 레벨에서, 컴퓨터(402)는 개시된 본 발명과 관련된 데이터 및 정보를 수신, 송신, 처리, 저장 또는 관리하도록 동작하는 전자 컴퓨팅 장치이다. 일부 실시예에 따르면, 컴퓨터(402)는 또한 애플리케이션 서버, 이메일 서버, 웹 서버, 캐싱 서버, 스트리밍 데이터 서버, 또는 다른 서버(또는 서버들의 조합)를 포함하거나 이들과 통신 가능하게 결합될 수 있다.
컴퓨터(402)는 클라이언트 애플리케이션(예를 들어, 다른 컴퓨터(402)에서 실행)으로부터 네트워크(430)를 통해 요청을 수신하고, 적절한 소프트웨어 애플리케이션(들)을 사용하여 그 수신된 요청을 처리함으로써 그 수신된 요청에 응답할 수 있다. 또한, 요청은 내부 사용자(예를 들어, 커맨드 콘솔로부터 또는 다른 적절한 액세스 방법에 의해), 외부 사용자 또는 제 3 자, 다른 자동화된 애플리케이션뿐만 아니라, 임의의 다른 적절한 엔티티, 개인, 시스템, 또는 컴퓨터로부터 컴퓨터(402)에 전송될 수 있다.
컴퓨터(402)의 구성 요소 각각은 시스템 버스(403)를 사용하여 통신할 수 있다. 일부 실시예에서, 컴퓨터(402)의 구성 요소, 하드웨어 또는 소프트웨어(또는 하드웨어 및 소프트웨어 양자의 조합) 중 어느 것 또는 모두는 애플리케이션 프로그래밍 인터페이스(API)(412) 또는 서비스 레이어(413)(또는 API(412)와 서비스 계층(413)의 조합)를 사용하여 시스템 버스(403)를 통해 서로 또는 인터페이스(404)와 인터페이스할 수 있다. API(412)는 루틴, 데이터 구조 및 객체 클래스에 대한 사양을 포함할 수 있다. API(412)는 컴퓨터 언어 독립형 또는 의존형일 수 있으며, 완전한 인터페이스, 단일 기능 또는 심지어 API 세트를 지칭할 수 있다. 서비스 레이어(413)는 컴퓨터(402) 또는 컴퓨터(402)에 통신 가능하게 결합된 다른 구성 요소(도시되지 않음)에 소프트웨어 서비스를 제공한다. 컴퓨터(402)의 기능은이러한 서비스 레이어를 사용하는 모든 서비스 소비자에 대해 액세스 가능할 수 있다. 서비스 레이어(413)에 의해 제공되는 것과 같은 소프트웨어 서비스는 정의된 인터페이스를 통해, 재사용 가능한 정의된 기능을 제공한다. 예를 들어, 인터페이스는 JAVA, C++ 또는 XML(extensible markup language) 포맷 또는 다른 적절한 포맷으로 데이터를 제공하는 다른 적절한 언어로 작성된 소프트웨어일 수 있다. 컴퓨터(402)의 통합된 구성 요소로서 도시되어 있지만, 대안의 실시예는 컴퓨터(402)의 다른 구성 요소 또는 컴퓨터(402)에 통신 가능하게 결합된 다른 구성 요소(도시되지 않음)와 관련하여 독립형 구성 요소로서 API(412) 또는 서비스 레이어(413)를 도시할 수 있다. 또한, API(412) 또는 서비스 레이어(413)의 일부 또는 전부는 본 발명의 범위를 벗어나지 않고 다른 소프트웨어 모듈, 엔터프라이즈 애플리케이션 또는 하드웨어 모듈의 하위 구성 요소 또는 하위 모듈로서 구현될 수 있다.
컴퓨터(402)는 인터페이스(404)를 포함한다. 도 4에서는 단일 인터페이스(404)로서 도시했지만, 컴퓨터(402)의 특정한 필요, 요구 또는 특정 구현에 따라서 2 이상의 인터페이스(404)가 사용될 수 있다. 인터페이스(404)는 분산된 환경에서 네트워크(430)에 접속되는 다른 시스템(도시되지 않음)과 통신하기 위해 컴퓨터(402)에 의해 사용된다. 일반적으로, 인터페이스(404)는 소프트웨어 또는 하드웨어(또는 소프트웨어 및 하드웨어의 조합)로 인코딩된 로직을 포함하고, 네트워크(430)와 통신하도록 동작 가능하다. 보다 구체적으로, 인터페이스(404)는, 네트워크(430) 또는 인터페이스의 하드웨어는 도시된 컴퓨터(402)의 내부 및 외부에서 물리적 신호를 통신하도록 동작 가능하도록, 통신과 관련된 하나 이상의 통신 프로토콜을 지원하는 소프트웨어를 포함할 수 있다.
컴퓨터(402)는 프로세서(405)를 포함한다. 도 1에서는 단일 프로세서(405)로서 도시되어 있지만, 컴퓨터(402)의 특정한 필요, 요구 또는 특정 구현에 따라 2 이상의 프로세서가 사용될 수 있다. 일반적으로, 프로세서(405)는 컴퓨터(402)의 동작 및 본 발명에 개시된 임의의 알고리즘, 방법, 기능, 프로세스, 흐름 및 절차를 수행하기 위해 명령어를 실행하고 데이터를 조작한다.
또한, 컴퓨터(402)는 컴퓨터(402)에 대한 데이터를 보유할 수 있는 데이터베이스(406) 또는 네트워크(430)에 접속될 수 있는 다른 구성 요소(도시되지 않음)(또는 둘다의 조합)를 포함한다. 예를 들어, 데이터베이스(406)는 본 발명과 일치하는 데이터를 저장하는 인 메모리(in-memory), 종래 유형 또는 다른 유형의 데이터베이스일 수 있다. 일부 실시예에서, 데이터베이스(406)는 컴퓨터(402)의 특정한 필요, 요구 또는 특정 구현 및 상술의 기능에 따라서 2 이상의 상이한 데이터베이스 유형(예를 들어, 하이브리드 인 메모리 및 종래 데이터베이스)의 조합일 수 있다. 도 4에서는 단일 데이터베이스(406)로서 도시되어 있지만, 컴퓨터(402)의 특정한 필요, 요구 또는 특정 구현 및 상술의 기능에 따라 (동일한 유형 또는 조합의) 2 이상의 데이터베이스가 사용될 수 있다. 데이터베이스(406)는 컴퓨터(402)의 통합 구성 요소로서 도시되어 있지만, 다른 실시예에서, 데이터베이스(406)는 컴퓨터(402)의 외부에 있을 수 있다. 도시된 바와 같이, 데이터베이스(406)는 CNN의 고속 계산을 위해 하나 이상의 트레이닝된 CNN(416), 하나 이상의 트레이닝된 CNN(416)의 각 콘볼루션 레이어의 사전 계산된 재사용 가능한 인자(418) 및 위노그래드 알고리즘(426)을 보유한다.
또한, 컴퓨터(402)는 네트워크(430)에 접속될 수 있는 컴퓨터(402) 또는 다른 구성 요소(도시되지 않음)(또는 둘다의 조합)에 대한 데이터를 보유할 수 있는 메모리(407)를 포함한다. 메모리(407)는 본 발명과 일치하는 임의의 데이터를 저장할 수 있다. 일부 실시예에서, 메모리(407)는 컴퓨터(402)의 특정한 필요, 요구 또는 특정 구현 및 상술의 기능에 따라 2 이상의 다른 유형의 메모리(예를 들어, 반도체 및 자기 저장 장치의 조합)의 조합일 수 있다. 도 4에서는 단일 메모리(407)로서 도시되어 있지만, 컴퓨터(402)의 특정한 필요, 요구 또는 특정 구현 및 상술의 기능에 따라 2 이상의 메모리(407)(동일 또는 조합의 유형)가 사용될 수 있다. 메모리(407)는 컴퓨터(402)의 통합 구성 요소로서 도시되어 있지만, 다른 실시예에서, 메모리(407)는 컴퓨터(402)의 외부에 있을 수 있다.
애플리케이션(408)은 특히 본 발명에 개시된 기능과 관련하여 컴퓨터(402)의 특정한 필요, 요구 또는 특정 구현에 따른 기능을 제공하는 알고리즘 소프트웨어 엔진이다. 예를 들어, 애플리케이션(408)은 하나 이상의 구성 요소, 모듈 또는 애플리케이션으로서 기능할 수 있다. 또한, 단일 애플리케이션(408)으로 도시되어 있지만, 애플리케이션(408)은 컴퓨터(402) 상의 복수의 애플리케이션(408)으로서 구현될 수 있다. 또한, 컴퓨터(402)에 통합되어 도시되어 있지만, 대안의 실시예에서, 애플리케이션(408)은 컴퓨터(402)의 외부에 있을 수 있다.
또한, 컴퓨터(402)는 전원(414)을 포함할 수 있다. 전원(414)은 사용자 교체 가능 또는 비 사용자 교체 가능하도록 구성될 수 있는 충전식 또는 비 충전식 배터리를 포함할 수 있다. 일부 실시예에서, 전원(414)은 전력 변환 또는 관리 회로(재충전, 대기 또는 다른 전력 관리 기능을 포함)를 포함할 수 있다. 일부 실시예에서, 전원(414)은 예를 들어 컴퓨터(402)가 벽면 소켓에 플러그될 수 있게 하는 전원 플러그 또는 컴퓨터(402)에 전원을 공급하거나 재충전 가능한 배터리를 재충전하는 다른 전원을 포함할 수 있다.
각각의 컴퓨터(402)가 네트워크(430)를 통해 통신하는, 컴퓨터(402)를 포함하는 컴퓨터 시스템과 연관되거나 외부에 있는 임의의 수의 컴퓨터(402)가 있을 수 있다. 또한, "클라이언트", "사용자" 및 다른 적절한 용어는 본 발명의 범위를 벗어나지 않고 적절하게 교환 가능하게 사용될 수 있다. 또한, 본 발명은 복수의 사용자가 하나의 컴퓨터(402)를 사용할 수 있거나 한명의 사용자가 복수의 컴퓨터(402)를 사용할 수 있다는 것을 고려한다.
본 발명의 개시된 실시예는 단독으로 또는 조합으로 하나 이상의 특징을 포함할 수 있다.
예를 들어, 제 1 실시예에서, 데이터 처리 장치에 의해, 기지의 필터 파라미터를 갖는 복수의 필터를 각각이 포함하는 하나 이상의 콘볼루션 레이어를 포함하는 트레이닝된 콘볼루션 뉴럴 네트워크를 획득하는 단계; 데이터 처리 장치에 의해, 트레이닝된 콘볼루션 뉴럴 네트워크의 기지의 필터 파라미터에 근거하여 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 단계; 데이터 처리 장치에 의해, 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터를 수신하는 단계; 데이터 처리 장치에 의해, 사전 계산된 재사용 가능한 인자 및 입력 데이터에 근거하여 위노그래드 콘볼루션 연산자를 이용하여 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 단계; 및 데이터 처리 장치에 의해, 하나 이상의 콘볼루션 레이어의 각각의 출력에 근거하여, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터를 결정하는 단계를 포함하는 컴퓨터 구현 방법.
제 2 실시예에서, 기지의 필터 파라미터를 갖는 복수의 필터를 각각이 포함하는 하나 이상의 콘볼루션 레이어를 포함하는 트레이닝된 콘볼루션 뉴럴 네트워크를 획득하는 동작; 트레이닝된 콘볼루션 뉴럴 네트워크의 기지의 필터 파라미터에 근거하여 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 동작; 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터를 수신하는 동작; 사전 계산된 재사용 가능한 인자 및 입력 데이터에 근거하여 위노그래드 콘볼루션 연산자를 이용하여 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 동작; 및 하나 이상의 콘볼루션 레이어의 각각의 출력에 근거하여, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터를 결정하는 동작;을 포함하는 동작을 수행하는 컴퓨터 시스템에 의해 실행가능한 하나 이상의 명령어를 저장하는 비 일시적 컴퓨터 판독 가능 매체.
제 3 실시예에서, 하나 이상의 컴퓨터와 하나 이상의 컴퓨터 메모리 디바이스를 포함하는 컴퓨터 구현 시스템으로서, 하나 이상의 컴퓨터 메모리 디바이스는 하나 이상의 컴퓨터와 상호 동작 가능하게 결합되며, 하나 이상의 컴퓨터에 의해 실행될 때, 기지의 필터 파라미터를 갖는 복수의 필터를 각각이 포함하는 하나 이상의 콘볼루션 레이어를 포함하는 트레이닝된 콘볼루션 뉴럴 네트워크를 획득하는 동작; 트레이닝된 콘볼루션 뉴럴 네트워크의 기지의 필터 파라미터에 근거하여 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 동작; 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터를 수신하는 동작; 사전 계산된 재사용 가능한 인자 및 입력 데이터에 근거하여 위노그래드 콘볼루션 연산자를 이용하여 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 동작; 및 하나 이상의 콘볼루션 레이어의 각각의 출력에 근거하여, 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터를 결정하는 동작;을 포함하는 동작을 수행하는 명령어를 저장하는, 유형의 비 일시적 기계 판독 가능 매체를 갖는, 컴퓨터 구현 시스템.
상술한 실시예 및 다른 개시된 실시예는 각각 옵션으로 이하의 특징의 하나 이상을 포함할 수 있다.
제 2 내지 제 6 특징 중 어느 하나와 결합 가능한 제 1 특징으로서, 트레이닝된 콘볼루션 뉴럴 네트워크의 기지의 필터 파라미터에 근거하여 하나 이상의 콘벌루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 단계는, 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터에 관계없이 오프라인에서, 트레이닝된 콘볼루션 뉴럴 네트워크의 기지의 필터 파라미터에 근거하여 하나 이상의 콘벌루션 레이어의 각각에 대한 재사용 가능한 인자를 계산하는 단계를 포함하는, 제 1 특징.
제 1, 제 3, 제 4, 제 5 및 제 6 특징 중 어느 하나와 결합 가능한 제 2 특징으로서, 하나 이상의 콘볼루션 레이어의 각각에 있어서의 사전 계산된 재사용 가능한 인자를 저장하는 단계를 더 포함하는, 제 2 특징.
제 1, 제 2, 제 4, 제 5 및 제 6 특징 중 어느 하나와 결합 가능한 제 3 특징으로서, 사전 계산된 재사용 가능한 인자 및 입력 데이터에 근거하여 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 단계는, 사전 계산된 재사용 가능한 인자 및 입력 데이터를 이용하여 위노그래드 최소 필터링 알고리즘에 따라 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 단계를 포함하는, 제 3 특징.
제 1, 제 2, 제 3, 제 5 및 제 6 특징 중 어느 하나와 결합 가능한 제 4 특징으로서, 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터는 하나 이상의 이미지를 포함하는, 제 4 특징.
제 1, 제 2, 제 3, 제 4 및 제 6 특징 중 어느 하나와 결합 가능한 제 5 특징으로서, 방법 또는 동작은, 데이터 처리 장치에 의해, 트레이닝된 콘볼루션 뉴럴 네트워크로의 제 2 입력 데이터를 수신하는 단계; 데이터 처리 장치에 의해, 사전 계산된 재사용 가능 인자 및 제 2 입력 데이터에 근거하여 하나 이상의 콘벌루션 레이어의 각각의 제 2 출력을 계산하는 단계; 및 데이터 처리 장치에 의해, 하나 이상의 콘벌루션 레이어의 각각의 제 2 출력에 근거하여, 트레이닝된 콘볼루션 뉴럴 네트워크의 제 2 출력 데이터를 예측하는 단계를 포함하는, 제 5 특징.
제 1 내지 제 5 특징 중 어느 하나와 결합 가능한 제 6 특징으로서, 사용자 인터페이스를 통해 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터를 출력하는 단계를 더 포함하는 제 6 특징.
본 발명 및 기능적 동작의 실시예는 디지털 전자 회로, 유형적으로 구현된 컴퓨터 소프트웨어 또는 펌웨어, 컴퓨터 하드웨어로 구현될 수 있으며,본 명세서에 개시된 구조 및 그들의 구조적 등가물, 또는 이들의 하나 이상의 조합을 포함한다. 상술한 본 발명의 소프트웨어 실시예는 하나 이상의 컴퓨터 프로그램, 즉 데이터 처리 장치에 의한 실행을 위한 또는 데이터 처리 장치의 동작을 제어하는, 유형의 비 일시적인 컴퓨터 판독 가능 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램 명령어의 하나 이상의 모듈로서 구현될 수 있다. 대안으로 또는 추가로, 프로그램 명령어는 인공적으로 생성된 전파 신호, 예를 들어, 데이터 처리 장치에 의한 실행을 위해, 적절한 수신기 장치로의 송신를 위한 정보를 인코딩하도록 생성되는 기계 생성의 전기적, 광학적 또는 전자기 신호로 인코딩될 수 있다. 컴퓨터 저장 매체는 기계 판독 가능 저장 장치, 기계 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 컴퓨터 저장 매체들의 조합일 수 있다. 하나 이상의 컴퓨터를 구성한다는 것은, 하나 이상의 컴퓨터가 소프트웨어를 실행할 때, 특정의 계산 동작이 수행되도록 하나 이상의 컴퓨터에 하드웨어, 펌웨어 또는 소프트웨어(또는 하드웨어, 펌웨어 및 소프트웨어의 조합)가 설치되었음을 의미한다.
용어 "실-시간" "실 시간", "실시간," "실 (고속) 시간(RFT)," "근접(하게) 실-시간(NRT)", "준 실-시간" 또는 유사한 용어(당업자가 이해되는 바와 같이)는, 개인이 실질적으로 동시에 발생하는 행동 및 반응을 인지하는 바와 같이, 행동 및 반응이 시간적으로 근접한다는 것을 의미한다. 예를 들어, 데이터에 액세스하는 개인의 행동에 후속되는 데이터의 표시(또는 표시의 개시)에 대한 응답의 시간차는 1ms 미만, 1sec 미만 또는 5sec 미만일 수 있다. 요청된 데이터는 즉시 디스플레이(또는 표시를 위해 개시)될 필요는 없지만, 개시된 컴퓨팅 시스템의 처리 제한 사항 및 예를 들어 데이터를 수집, 정확하게 측정, 분석, 처리, 저장 또는 전송하는 데 필요한 시간을 고려하여 의도적인 지연없이 표시(또는 표시를 위해 개시)된다.
용어 "데이터 처리 장치", "컴퓨터" 또는 "전자 컴퓨터 디바이스"(또는 당업자가 이해할 수 있는 등가물)는 데이터 처리 하드웨어를 지칭하며, 예를 들어 프로그램 가능 프로세서, 컴퓨터, 또는 다중 프로세서 또는 컴퓨터를 포함하여, 데이터를 처리하기 위한 모든 종류의 장치, 디바이스 및 머신을 포함한다. 상기 장치는 또한 예를 들어 중앙 처리 장치(CPU), FPGA(필드 프로그램 가능 게이트 어레이) 또는 ASIC(주문형 집적 회로)와 같은 특수 용도의 논리 회로일 수 있거나 포함할 수 있다. 일부 실시예에서, 데이터 처리 장치 또는 특수 용도의 논리 회로(또는 데이터 처리 장치 또는 특수 용도의 논리 회로의 조합)는 하드웨어 기반 또는 소프트웨어 기반(또는 하드웨어 기반 및 소프트웨어 기반의 조합)일 수 있다. 상기 장치는 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 시스템, 또는 실행 환경의 조합을 구성하는 코드를 옵션으로 포함할 수 있다. 본 발명은 종래의 운영 시스템, 예를 들어 LINUX, UNIX, WINDOWS, MAC OS, ANDROID, IOS, 또는 임의의 다른 적절한 종래의 운영 시스템을 갖거나 갖지 않는 데이터 처리 장치의 사용을 고려한다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 모듈, 소프트웨어 모듈, 스크립트 또는 코드로 지칭되거나 개시될 수 있는 컴퓨터 프로그램은 컴파일된 또는 해석된 언어, 또는 선언적 또는 절차적 언어를 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립형 프로그램 또는 모듈, 구성 요소, 서브 루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛을 포함하는 임의 형태로 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템 내의 파일에 대응할 수도 있지만 대응하지 않을 수도 있다. 프로그램은, 다른 프로그램 또는 데이터를 보유하는 파일의 일부, 예를 들어, 마크 업 언어 문서에 저장된 하나 이상의 스크립트, 문제의 프로그램 전용의 단일 파일 또는 복수의 조정된 파일, 예를 들어, 하나 이상의 모듈, 하위 프로그램 또는 코드의 일부를 저장하는 파일에 저장될 수 있다. 컴퓨터 프로그램은, 하나의 컴퓨터에서, 또는 하나의 사이트에 위치하거나 여러 사이트에 걸쳐 분산되어 있으며 통신 네트워크에 의해 상호 접속된 여러 대의 컴퓨터에서 실행되도록 배포될 수 있다.
여러 도면에 도시된 프로그램들의 일부분은 다양한 객체, 방법 또는 다른 프로세스를 통해 다양한 특징 및 기능을 구현하는 개별 모듈로서 도시되어 있지만, 프로그램은 복수의 서브 모듈, 제 3 자 서비스, 구성 요소, 라이브러리 등을 적절하게 포함할 수 있다. 반대로, 다양한 구성 요소의 기능 및 기능을 적절하게 단일 구성 요소로 조합할 수 있다. 계산 결정을 내리는 데 사용되는 임계치는 정적, 동적 또는 정적 및 동적 둘다로 결정될 수 있다.
본 발명에 개시된 방법, 프로세스 또는 논리 흐름은 입력 데이터에 대해 연산해서 출력을 생성함으로써 기능을 수행하는 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 컴퓨터에 의해 수행될 수 있다. 상기 방법, 프로세스 또는 논리 흐름은 또한 CPU, FPGA 또는 ASIC과 같은 특수 용도의 논리 회로에 의해 수행될 수 있으며, 상기 장치는 또한 특수 용도의 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터는 범용 또는 특수 용도의 마이크로 프로세서, 둘다, 또는 임의의 다른 종류의 CPU를 기반으로 할 수 있다. 일반적으로, CPU는 메모리로부터 명령어와 데이터를 수신하고 메모리에 기록할 수 있다. 컴퓨터의 필수 구성 요소는 명령어를 수행하거나 실행하기 위한 CPU와, 명령어 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 데이터를 저장하는 하나 이상의 대용량 저장 장치, 예를 들어, 자기 디스크, 자기 광학 디스크 또는 광학 디스크를 포함하거나, 상기 대용량 저장 장치로부터 데이터를 수신하거나 송신하거나 송수신하도록 동작 가능하게 결합될 수 있다. 그러나 컴퓨터는 이러한 장치를 가질 필요는 없다. 또한, 컴퓨터는 다른 장치, 예를 들어, 몇개만 말하면, 이동 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 위성 위치 확인 시스템(GPS) 수신기 또는 휴대용 저장 장치, 예를 들어 범용 직렬 버스(USB) 플래시 드라이브에 내장될 수 있다.
컴퓨터 프로그램 명령어 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체(적절하게 일시적 또는 비 일시적)는, 반도체 메모리 디바이스, 예를 들어, RAM, ROM, PRAM, SRAM, DRAM, EPROM, EEPROM, 및 플래시 메모리 디바이스; 자기 디바이스, 예를 들어, 테이프, 카트리지, 카세트, 내부/이동식 디스크; 자기 광학 디스크; 광학 메모리 디바이스, 예를 들어, DVD, CD ROM, DVD+/-R, DVD-RAM, DVD-ROM, HD-DVD 및 BLURAY 및 기타 광학 메모리 기술을 포함하여, 영구적/비 영구적 또는 휘발성/비 휘발성 메모리, 매체 및 메모리 디바이스의 모든 형태를 포함한다. 메모리는 캐시, 클래스, 프레임 워크, 애플리케이션, 모듈, 백업 데이터, 작업, 웹 페이지, 웹 페이지 템플릿, 데이터 구조, 데이터베이스 테이블, 동적 정보를 저장하는 저장소, 및 변수, 알고리즘, 명령어, 룰, 제약 또는 이들에 대한 참조를 포함하는 임의의 다른 적절한 정보를 포함하는 다양한 객체 또는 데이터를 저장할 수 있다. 또한, 메모리는 로그, 폴리시, 보안 또는 액세스 데이터, 보고 파일 및 기타 등의 다른 적절한 데이터를 포함할 수 있다. 프로세서 및 메모리는 특수 용도의 논리 회로에 의해 보충되거나 또는 그 안에 포함될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에서 개시된 본 발명의 실시예는, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예를 들어 CRT(음극선 관), LCD(액정 디스플레이), LED(발광 다이오드) 또는 플라즈마 모니터; 키보드; 및 사용자가 컴퓨터에 입력을 제공할 수 있는 포인팅 장치, 예를 들어, 마우스, 트랙볼 또는 트랙 패드를 갖는 컴퓨터 상에서 구현될 수 있다. 압력 감응을 이용한 태블릿 컴퓨터 표면, 용량성 또는 전기적 감지를 이용한 멀티 터치 스크린 또는 다른 유형의 터치 스크린 등의 터치 스크린을 이용하여 컴퓨터에 입력이 제공될 수도 있다. 다른 종류의 디바이스가 사용자와의 상호 작용을 제공하는 데 사용될 수 있으며, 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각 피드백일 수 있으며, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자가 사용하는 디바이스와 문서를 송수신함으로써, 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여 사용자의 클라이언트 디바이스 상의 웹 브라우저에 웹 페이지를 전송함으로써 사용자와 상호 작용할 수 있다.
용어 "그래픽 사용자 인터페이스", 즉 "GUI"는 하나 이상의 그래픽 사용자 인터페이스 및 특정 그래픽 사용자 인터페이스의 디스플레이 각각을 설명하기 위해 단수 또는 복수로 사용될 수 있다. 따라서, GUI는, 웹 브라우저, 터치 스크린, 또는 정보를 처리하고 사용자에게 정보 결과를 효율적으로 제공하는 커맨드 라인 인터페이스(콘볼루션 레이어 I)를 포함하지만 이에 제한되지 않는 임의의 그래픽 사용자 인터페이스를 나타낼 수 있다. 일반적으로, GUI는 대화형 필드, 풀다운 리스트 및 버튼과 같은 웹 브라우저와 일부 또는 전부가 관련된 하나 이상의 사용자 인터페이스(UI) 요소를 포함할 수 있다. 이러한 및 다른 UI 요소는 웹 브라우저의 기능과 관련되거나 웹 브라우저의 기능을 나타낼 수 있다.
본 명세서에서 개시된 본 발명의 실시예는, 예를 들어 데이터 서버와 같은 백엔드 구성 요소를 포함하거나, 예를 들어 애플리케이션 서버와 같은 미들웨어 구성 요소를 포함하거나, 예를 들어, 그래픽 사용자 인터페이스를 갖는 클라이언트 컴퓨터 또는 본 명세서에 개시된 본 발명의 실시예를 이용하여 상호 작용할 수 있는 웹 브라우저를 포함하는 프런트 엔드 구성 요소를 포함하거나, 이러한 하나 이상의 백엔드, 미들웨어 또는 프런트 엔드 구성 요소의 조합을 포함할 수 있는 컴퓨팅 시스템에서 구현될 수 있다. 상기 시스템의 구성 요소들은 유선 또는 무선 디지털 데이터 통신(또는 데이터 통신의 조합)의 임의의 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호 접속될 수 있다. 통신 네트워크의 예는 LAN(Local Area Network), RAN(Radio Access Network), MAN(Metropolitan Area Network), WAN(Wide Area Network), WIMAX(Worldwide Interoperability for Microwave Access), 예를 들어 802.11 a/b/g/n 또는 802.20(또는 802.11x 및 802.20의 조합 또는 본 발명과 일치하는 다른 프로토콜)을 이용하는 WLAN(Wireless Local Area Network) , 인터넷의 전부 또는 일부, 또는 하나 이상의 위치에 있는 다른 통신 시스템 또는 시스템들(또는 통신 네트워크의 조합)을 포함한다. 네트워크는 예를 들어 인터넷 어드레스(IP) 패킷, 프레임 릴레이 프레임, 비동기 전송 모드(ATM) 셀, 음성, 비디오, 데이터 또는 네트워크 어드레스 사이의 다른 적절한 정보(또는 통신 타입의 조합)를 이용하여 통신할 수 있다.
컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는, 각각의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다.
본 명세서는 복수의 특정 실시예의 세부 사항을 포함하지만, 이들은 임의의 발명의 범위 또는 청구 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정 발명의 특정 실시예에 특정될 수 있는 특징에 대한 설명으로서 해석되어서는 안된다. 개별 실시예와 관련해서 본 명세서에 개시된 특정의 특징은 또한 단일의 실시예로 조합해서 구현될 수 있다. 반대로, 단일의 실시예와 관련해서 개시된 여러 특징은 복수의 실시예에서, 개별적으로 또는 임의의 적절한 하위 조합으로 구현될 수 있다. 또한, 상술한 특징들이 특정 조합으로서 작용한다고 기술될 수 있고 심지어 처음에는 이와 같이 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 몇몇의 경우에 조합으로부터 제거될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형을 대상으로 할 수 있다.
본 발명의 특정 실시예가 설명되었다. 개시된 실시예의 다른 실시예, 변경 및 치환은 당업자에게 자명한 바와 같이 다음의 청구 범위의 범위 내에 있다. 동작이 도면 또는 청구 범위에 특정 순서로 도시되어 있지만, 이는, 바람직한 결과를 얻기 위해, 이러한 동작이 도시된 순서 또는 순차적인 순서로 수행되거나, 도시된 모든 동작이 수행되어야 함을 요구하는 것으로서 이해되어서는 안된다(일부 동작은 선택적으로 고려될 수 있다). 특정 상황에서, 멀티 태스킹 또는 병렬 처리(또는 멀티 태스킹과 병렬 처리의 조합)가 바람직할 수 있고, 적절하다고 판단되면 수행될 수 있다.
또한, 상술한 실시예에서의 다양한 시스템 모듈 및 구성 요소의 분리 또는 통합은 모든 실시예에서의 이러한 분리 또는 통합을 필요로 하는 것으로 이해되어서는 안되며, 설명된 프로그램 구성 요소 및 시스템은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 여러 소프트웨어 제품에 패키지되는 것으로 이해되어야 한다.
따라서, 상술한 예시적인 실시예들은 본 발명을 정의하거나 제한하지 않는다. 본 발명의 사상 및 범위를 벗어나지 않으면서 다른 변경, 대체 및 변형이 또한 가능하다.
또한, 임의의 청구된 실시예는 적어도 컴퓨터 구현 방법; 상기 컴퓨터 구현 방법을 수행하기 위한 컴퓨터 판독 가능 명령어를 저장하는 비 일시적 컴퓨터 판독 가능 매체; 및 상기 컴퓨터 구현 방법 또는 상기 비 일시적 컴퓨터 판독 가능 매체 상에 저장된 명령어를 수행하도록 구성된 하드웨어 프로세서와 상호 작동 가능하게 결합된 컴퓨터 메모리를 포함하는 컴퓨터 시스템에 적용 가능한 것으로 고려된다.

Claims (20)

  1. 컴퓨터 구현 방법으로서,
    데이터 처리 장치에 의해, 기지의 필터 파라미터를 갖는 복수의 필터를 각각이 포함하는 하나 이상의 콘볼루션 레이어(convolutional layer)를 포함하는 트레이닝된 콘볼루션 뉴럴 네트워크(trained convolutional neural network)를 획득하는 단계;
    상기 데이터 처리 장치에 의해, 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 기지의 필터 파라미터에 근거하여 상기 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자(factor)를 사전 계산하는 단계;
    상기 데이터 처리 장치에 의해, 상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터를 수신하는 단계;
    상기 데이터 처리 장치에 의해, 상기 사전 계산된 재사용 가능한 인자 및 상기 입력 데이터에 근거하여, 위노그래드(Winograd) 콘볼루션 연산자를 사용하여 상기 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 단계; 및
    상기 데이터 처리 장치에 의해, 상기 하나 이상의 콘볼루션 레이어의 각각의 출력에 근거하여 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터를 결정하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 기지의 필터 파라미터에 근거하여 상기 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 단계는, 상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터에 관계없이, 오프라인으로 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 기지의 필터 파라미터에 근거하여 상기 하나 이상의 콘벌루션 레이어의 각각에 대한 상기 재사용 가능한 인자를 계산하는 단계를 포함하는 것인, 컴퓨터 구현 방법.
  3. 제 1 항에 있어서,
    상기 하나 이상의 콘볼루션 레이어의 각각에 대한 상기 사전 계산된 재사용 가능한 인자를 저장하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    상기 사전 계산된 재사용 가능한 인자 및 상기 입력 데이터에 근거하여 상기 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 단계는, 상기 사전 계산된 재사용 가능한 인자 및 상기 입력 데이터를 이용하는 위노그래드 최소 필터링 알고리즘에 따라서 상기 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 단계를 포함하는 것인, 컴퓨터 구현 방법.
  5. 제 1 항에 있어서,
    상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터는 하나 이상의 이미지를 포함하는 것인, 컴퓨터 구현 방법.
  6. 제 1 항에 있어서,
    상기 데이터 처리 장치에 의해, 상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 제 2 입력 데이터를 수신하는 단계;
    상기 데이터 처리 장치에 의해, 상기 사전 계산된 재사용 가능 인자 및 상기 제 2 입력 데이터에 근거하여 상기 하나 이상의 콘벌루션 레이어의 각각의 제 2 출력을 계산하는 단계; 및
    상기 데이터 처리 장치에 의해, 상기 하나 이상의 콘벌루션 레이어의 각각의 상기 제 2 출력에 근거하여, 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 제 2 출력 데이터를 예측하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  7. 제 1 항에 있어서,
    사용자 인터페이스를 통해 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 출력 데이터를 출력하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  8. 다음의 동작들을 수행하도록 컴퓨터 시스템에 의해 실행가능한 하나 이상의 명령어들을 저장하는 비일시적 컴퓨터 판독 가능 매체로서. 상기 동작들은,
    기지의 필터 파라미터를 갖는 복수의 필터를 각각이 포함하는 하나 이상의 콘볼루션 레이어를 포함하는 트레이닝된 콘볼루션 뉴럴 네트워크를 획득하는 것;
    상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 기지의 필터 파라미터에 근거하여 상기 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 것;
    상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터를 수신하는 것;
    상기 사전 계산된 재사용 가능한 인자 및 상기 입력 데이터에 근거하여, 위노그래드 콘볼루션 연산자를 이용하여 상기 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 것; 및
    상기 하나 이상의 콘볼루션 레이어의 각각의 출력에 근거하여, 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터를 결정하는 것
    을 포함하는 것인 비일시적 컴퓨터 판독 가능 매체.
  9. 제 8 항에 있어서,
    상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 기지의 필터 파라미터에 근거하여 상기 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 것은, 상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터에 관계없이, 오프라인으로 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 기지의 필터 파라미터에 근거하여 상기 하나 이상의 콘벌루션 레이어의 각각에 대한 상기 재사용 가능한 인자를 계산하는 것을 포함하는 것인, 비일시적 컴퓨터 판독 가능 매체.
  10. 제 8 항에 있어서,
    상기 동작들은, 상기 하나 이상의 콘볼루션 레이어의 각각에 대한 상기 사전 계산된 재사용 가능한 인자를 저장하는 것을 더 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  11. 제 8 항에 있어서,
    상기 사전 계산된 재사용 가능한 인자 및 상기 입력 데이터에 근거하여 상기 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 것은, 상기 사전 계산된 재사용 가능한 인자 및 상기 입력 데이터를 이용하는 위노그래드 최소 필터링 알고리즘에 따라서 상기 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 것을 포함하는 것인, 비일시적 컴퓨터 판독 가능 매체.
  12. 제 8 항에 있어서,
    상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터는, 하나 이상의 이미지를 포함하는 것인, 비일시적 컴퓨터 판독 가능 매체.
  13. 제 8 항에 있어서,
    상기 동작들은,
    상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 제 2 입력 데이터를 수신하는 것;
    상기 사전 계산된 재사용 가능 인자 및 상기 제 2 입력 데이터에 근거하여 상기 하나 이상의 콘벌루션 레이어의 각각의 제 2 출력을 계산하는 것; 및
    상기 하나 이상의 콘벌루션 레이어의 각각의 상기 제 2 출력에 근거하여, 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 제 2 출력 데이터를 예측하는 것
    을 더 포함하는 것인, 비일시적 컴퓨터 판독 가능 매체.
  14. 제 8 항에 있어서,
    상기 동작들은, 사용자 인터페이스를 통해 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 출력 데이터를 출력하는 것을 더 포함하는 것인, 비일시적 컴퓨터 판독 가능 매체.
  15. 컴퓨터 구현 시스템으로서,
    하나 이상의 컴퓨터; 및
    하나 이상의 컴퓨터 메모리 디바이스
    를 포함하고,
    상기 하나 이상의 컴퓨터 메모리 디바이스는,
    상기 하나 이상의 컴퓨터와 상호 동작 가능하게 연결되며, 상기 하나 이상의 컴퓨터에 의해 실행될 때,
    기지의 필터 파라미터를 갖는 복수의 필터를 각각이 포함하는 하나 이상의 콘볼루션 레이어를 포함하는 트레이닝된 콘볼루션 뉴럴 네트워크를 획득하는 것;
    상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 기지의 필터 파라미터에 근거하여 상기 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 것;
    상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터를 수신하는 것;
    상기 사전 계산된 재사용 가능한 인자 및 상기 입력 데이터에 근거하여 위노그래드 콘볼루션 연산자를 이용하여 상기 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 것; 및
    상기 하나 이상의 콘볼루션 레이어의 각각의 출력에 근거하여, 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 출력 데이터를 결정하는 것
    을 포함하는 동작들을 수행하는 명령어들을 저장하는 유형의(tangible) 비일시적 기계 판독 가능 매체를 포함하는 것인, 컴퓨터 구현 시스템.
  16. 제 15 항에 있어서,
    상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 기지의 필터 파라미터에 근거하여 상기 하나 이상의 콘볼루션 레이어의 각각에 대한 재사용 가능한 인자를 사전 계산하는 것은, 상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 입력 데이터에 관계없이, 오프라인으로 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 기지의 필터 파라미터에 근거하여 상기 하나 이상의 콘벌루션 레이어의 각각에 대한 상기 재사용 가능한 인자를 계산하는 것을 포함하는 것인, 컴퓨터 구현 시스템.
  17. 제 15 항에 있어서,
    상기 동작들은, 상기 하나 이상의 콘볼루션 레이어의 각각에 대한 상기 사전 계산된 재사용 가능한 인자를 저장하는 것을 더 포함하는 것인, 컴퓨터 구현 시스템.
  18. 제 15 항에 있어서,
    상기 사전 계산된 재사용 가능한 인자 및 상기 입력 데이터에 근거하여 상기 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 것은, 상기 사전 계산된 재사용 가능한 인자 및 상기 입력 데이터를 이용하는 위노그래드 최소 필터링 알고리즘에 따라서 상기 하나 이상의 콘볼루션 레이어의 각각의 출력을 계산하는 것을 포함하는 것인, 컴퓨터 구현 시스템.
  19. 제 15 항에 있어서,
    상기 동작들은,
    상기 트레이닝된 콘볼루션 뉴럴 네트워크로의 제 2 입력 데이터를 수신하는 것;
    상기 사전 계산된 재사용 가능 인자 및 상기 제 2 입력 데이터에 근거하여 상기 하나 이상의 콘벌루션 레이어의 각각의 제 2 출력을 계산하는 것; 및
    상기 하나 이상의 콘벌루션 레이어의 각각의 상기 제 2 출력에 근거하여, 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 제 2 출력 데이터를 예측하는 것
    을 더 포함하는 것인, 컴퓨터 구현 시스템.
  20. 제 15 항에 있어서,
    사용자 인터페이스를 더 포함하며,
    상기 동작들은, 상기 사용자 인터페이스를 통해 상기 트레이닝된 콘볼루션 뉴럴 네트워크의 상기 출력 데이터를 출력하는 것을 더 포함하는 것인, 컴퓨터 구현 시스템.
KR1020197011555A 2018-10-24 2018-10-24 콘볼루션 뉴럴 네트워크의 고속 계산 KR102141324B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/111655 WO2020082263A1 (en) 2018-10-24 2018-10-24 Fast computation of convolutional neural network

Publications (2)

Publication Number Publication Date
KR20200049695A true KR20200049695A (ko) 2020-05-08
KR102141324B1 KR102141324B1 (ko) 2020-08-05

Family

ID=66850328

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197011555A KR102141324B1 (ko) 2018-10-24 2018-10-24 콘볼루션 뉴럴 네트워크의 고속 계산

Country Status (14)

Country Link
US (1) US10635951B1 (ko)
EP (1) EP3662414A4 (ko)
JP (1) JP6798021B1 (ko)
KR (1) KR102141324B1 (ko)
CN (1) CN110537193A (ko)
AU (1) AU2018353930B2 (ko)
BR (1) BR112019008055B1 (ko)
CA (1) CA3040685C (ko)
MX (1) MX2019004654A (ko)
PH (1) PH12019500889A1 (ko)
RU (1) RU2722473C1 (ko)
SG (1) SG11201903591QA (ko)
WO (1) WO2020082263A1 (ko)
ZA (1) ZA201902547B (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
US11494608B2 (en) * 2019-08-14 2022-11-08 Intel Corporation Methods and apparatus to tile walk a tensor for convolution operations
US11657282B2 (en) * 2019-09-16 2023-05-23 Qualcomm Incorporated Efficient inferencing with fast pointwise convolution
CN112784206A (zh) * 2019-11-01 2021-05-11 中科寒武纪科技股份有限公司 winograd卷积运算方法、装置、设备及存储介质
CN112766471B (zh) * 2019-11-01 2024-03-29 中科寒武纪科技股份有限公司 运算装置及相关产品
US20210216868A1 (en) * 2020-01-08 2021-07-15 Maxim Integrated Products, Inc. Systems and methods for reducing memory requirements in neural networks
CN111294512A (zh) * 2020-02-10 2020-06-16 深圳市铂岩科技有限公司 图像处理方法、装置、存储介质及摄像装置
CN111475775B (zh) * 2020-04-14 2023-09-15 腾讯科技(深圳)有限公司 图形处理器的数据处理方法、文本处理方法、装置和设备
CN111415000B (zh) * 2020-04-29 2024-03-22 Oppo广东移动通信有限公司 卷积神经网络、基于卷积神经网络的数据处理方法和装置
CN111580828B (zh) * 2020-04-30 2021-08-27 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN111553466B (zh) * 2020-04-30 2024-03-22 上海商汤智能科技有限公司 信息处理方法、装置及设备
US11687336B2 (en) * 2020-05-08 2023-06-27 Black Sesame Technologies Inc. Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks
CN111767964A (zh) * 2020-07-08 2020-10-13 福州大学 基于改进的DenseNet的多通道特征重标记图像分类方法
JP2022018997A (ja) * 2020-07-17 2022-01-27 ソニーセミコンダクタソリューションズ株式会社 固体撮像素子、撮像装置、および、情報処理システム
WO2022064901A1 (ja) * 2020-09-28 2022-03-31 富士フイルム株式会社 学習済みモデル変換方法、推論方法、学習済みモデル変換装置、学習済みモデル、及び推論装置
CN116547672A (zh) * 2020-12-01 2023-08-04 华为技术有限公司 一种用于实现张量链式分解运算的设备和方法
JP7420100B2 (ja) 2021-03-15 2024-01-23 オムロン株式会社 処理装置、処理方法、およびプログラム
KR20220162971A (ko) * 2021-06-02 2022-12-09 세메스 주식회사 데이터 처리 방법 및 데이터 비교 방법
CN117495833B (zh) * 2023-11-16 2024-05-28 广州思沛医药科技股份有限公司 一种基于大数据的脑卒中预测方法、系统及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150016299A (ko) * 2012-05-04 2015-02-11 리어덴 엘엘씨 분산 입력 분산 출력 무선 시스템에서 도플러 효과를 극복하기 위한 시스템 및 방법
KR20170135752A (ko) * 2016-05-31 2017-12-08 삼성전자주식회사 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계
US20180130178A1 (en) * 2015-02-19 2018-05-10 Magic Pony Technology Limited Enhancing Visual Data Using Strided Convolutions

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10403269B2 (en) * 2015-03-27 2019-09-03 Google Llc Processing audio waveforms
CN105740894B (zh) * 2016-01-28 2020-05-29 北京航空航天大学 一种高光谱遥感图像的语义标注方法
CN106407986B (zh) * 2016-08-29 2019-07-19 电子科技大学 一种基于深度模型的合成孔径雷达图像目标识别方法
GB2554711B (en) * 2016-10-06 2020-11-25 Imagination Tech Ltd Buffer addressing for a convolutional neural network
US10230725B2 (en) * 2016-10-24 2019-03-12 Sonicwall Inc. Edge protection for internal identity providers
US10482155B2 (en) * 2016-12-30 2019-11-19 Intel Corporation Winograd algorithm on a matrix processing architecture
RU2651147C1 (ru) * 2017-03-27 2018-04-18 Акционерное общество "ЭЛВИС-НеоТек" Устройство и способ каскадной обработки потока изображений с помощью свёрточных нейронных сетей
US10467795B2 (en) * 2017-04-08 2019-11-05 Intel Corporation Sub-graph in frequency domain and dynamic selection of convolution implementation on a GPU
CN107480707B (zh) * 2017-07-26 2020-08-07 天津大学 一种基于信息无损池化的深度神经网络方法
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
KR102452953B1 (ko) * 2017-10-30 2022-10-11 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
CN107844833A (zh) * 2017-11-28 2018-03-27 郑州云海信息技术有限公司 一种卷积神经网络的数据处理方法、装置及介质
US10372787B2 (en) * 2017-12-12 2019-08-06 Facebook, Inc. Hardware accelerator pre-configured with coefficients for matrix-transform operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150016299A (ko) * 2012-05-04 2015-02-11 리어덴 엘엘씨 분산 입력 분산 출력 무선 시스템에서 도플러 효과를 극복하기 위한 시스템 및 방법
US20180130178A1 (en) * 2015-02-19 2018-05-10 Magic Pony Technology Limited Enhancing Visual Data Using Strided Convolutions
KR20170135752A (ko) * 2016-05-31 2017-12-08 삼성전자주식회사 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계

Also Published As

Publication number Publication date
RU2722473C1 (ru) 2020-06-01
SG11201903591QA (en) 2020-05-28
CA3040685A1 (en) 2020-04-28
CA3040685C (en) 2020-07-28
BR112019008055B1 (pt) 2022-02-01
AU2018353930A1 (en) 2020-05-14
AU2018353930B2 (en) 2020-10-08
EP3662414A1 (en) 2020-06-10
PH12019500889A1 (en) 2019-06-17
US10635951B1 (en) 2020-04-28
EP3662414A4 (en) 2020-07-22
JP6798021B1 (ja) 2020-12-09
WO2020082263A1 (en) 2020-04-30
MX2019004654A (es) 2022-05-04
KR102141324B1 (ko) 2020-08-05
US20200134400A1 (en) 2020-04-30
ZA201902547B (en) 2021-02-24
CN110537193A (zh) 2019-12-03
JP2021501377A (ja) 2021-01-14
BR112019008055A2 (pt) 2021-05-18

Similar Documents

Publication Publication Date Title
KR102141324B1 (ko) 콘볼루션 뉴럴 네트워크의 고속 계산
WO2022083536A1 (zh) 一种神经网络构建方法以及装置
EP4064130A1 (en) Neural network model update method, and image processing method and device
CN110023964B (zh) 训练和/或使用神经网络模型来生成光谱图像的中间输出
EP3732631A1 (en) Neural architecture search for dense image prediction tasks
JP2022510704A (ja) クロスモーダル情報検索方法、装置及び記憶媒体
CN111797983A (zh) 一种神经网络构建方法以及装置
CA3144236A1 (en) Real-time video ultra resolution
CN113570029A (zh) 获取神经网络模型的方法、图像处理方法及装置
US10909471B2 (en) Resource-efficient machine learning
CN111133458B (zh) 增强神经网络
WO2023280113A1 (zh) 数据处理方法、神经网络模型的训练方法及装置
KR20220047228A (ko) 이미지 분류 모델 생성 방법 및 장치, 전자 기기, 저장 매체, 컴퓨터 프로그램, 노변 장치 및 클라우드 제어 플랫폼
WO2023160290A1 (zh) 神经网络推理加速方法、目标检测方法、设备及存储介质
JP7188856B2 (ja) 動的な画像解像度評価
US11948090B2 (en) Method and apparatus for video coding
EP4030347A1 (en) Neural network building method and device, and image processing method and device
CN115412401B (zh) 训练虚拟网络嵌入模型及虚拟网络嵌入的方法和装置
US20150324324A1 (en) Linear Regression Using Safe Screening Techniques
US20210232891A1 (en) Neural network model compression with structured weight unification
US9886652B2 (en) Computerized correspondence estimation using distinctively matched patches
WO2024055920A1 (en) Automatic adjustment of constraints in task solution generation
US20240046097A1 (en) Automatic compression of machine learning models
US20230004812A1 (en) Hierarchical supervised training for neural networks
CN113159312B (zh) 压缩神经网络模型的方法、计算机系统以及存储介质

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant