KR20200130775A - 이미지를 분석하기 위한 신경망 시스템 - Google Patents

이미지를 분석하기 위한 신경망 시스템 Download PDF

Info

Publication number
KR20200130775A
KR20200130775A KR1020190052433A KR20190052433A KR20200130775A KR 20200130775 A KR20200130775 A KR 20200130775A KR 1020190052433 A KR1020190052433 A KR 1020190052433A KR 20190052433 A KR20190052433 A KR 20190052433A KR 20200130775 A KR20200130775 A KR 20200130775A
Authority
KR
South Korea
Prior art keywords
kernel
feature
value
kernels
feature maps
Prior art date
Application number
KR1020190052433A
Other languages
English (en)
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 한국전자통신연구원
Priority to KR1020190052433A priority Critical patent/KR20200130775A/ko
Publication of KR20200130775A publication Critical patent/KR20200130775A/ko

Links

Images

Classifications

    • 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
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)

Abstract

본 발명은 이미지를 인식하기 위한 신경망 시스템을 제공한다. 피처 추출기는 제 1 커널 및 제 2 커널을 포함하는 제 1 커널 집합과 입력 데이터를 연산하여 제 1 피처 맵들을 생성한다. 분류기는 제 1 피처 맵들 및 하나 이상의 가중치에 기초하여, 입력 데이터에 대한 연산의 결과값을 생성한다. 피처 추출기는 제 1 커널과 제 2 커널 사이의 차이값 및 결과값에 기초하여, 제 1 커널 및 제 2 커널 중 적어도 하나의 커널을 삭제할지 여부를 결정한다.

Description

이미지를 분석하기 위한 신경망 시스템{NEURAL NETWORK SYSTEM FOR ANALYZING IMAGE}
본 발명은 신경망 시스템에 관한 것으로, 좀 더 구체적으로 입력 이미지를 분석하기 위한 신경망 시스템에 관한 것이다.
신경망(Neural Network)은 인간의 뇌 기능을 모방하여 데이터를 처리하는 네트워크다. 인간의 뇌는 신경 세포(neuron)들 사이의 시냅스(synapse)를 통해 하나의 신경 세포로부터 다른 신경 세포로 신호를 전달한다. 이러한 신경 세포들과 시냅스들의 연결 관계가 신경망으로 구현된다.
신경망 시스템은 이러한 연결 관계를 이용하여 다양한 유형의 서비스를 제공한다. 예로서, 신경망 시스템은 입력 이미지의 패턴 인식, 필터링, 클러스터링 및 시계열 예측 등의 서비스를 제공한다.
신경망 시스템 중 컨볼루션 신경망 시스템(Convolutional Neural Network, CNN)은 주로 이미지를 인식하고 분석하는데에 사용된다. 딥러닝 기술이 발전함에 따라, 컨볼루션 신경망 시스템에서 처리해야 되는 데이터의 양이 급속도로 증가하고 있다. 따라서, 신경망 시스템의 연산량을 줄이면서, 신경망 시스템의 성능은 유지할 수 있는 기술이 필요하다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은데이터를 고속으로 처리하는 신경망 시스템을 제공하는 데 있다.
본 발명의 실시 예에 따른 신경망 시스템은 피처 추출기 및 분류기를 포함할 수 있다. 피처 추출기는 제 1 커널 및 제 2 커널을 포함하는 제 1 커널 집합과 입력 데이터를 연산하여 제 1 피처 맵들을 생성할 수 있다. 분류기는 제 1 피처 맵들 및 하나 이상의 가중치에 기초하여, 입력 데이터에 대한 연산의 결과값을 생성할 수 있다. 피처 추출기는 제 1 커널과 제 2 커널 사이의 차이값 및 결과값에 기초하여, 제 1 커널 및 제 2 커널 중 적어도 하나의 커널을 삭제할지 여부를 결정할 수 있다.
신경망 시스템은 성능을 높이기 위해 커널들을 갱신할 수 있다. 또한, 본 발명의 신경망 시스템은 데이터 처리 속도를 높이기 위해, 커널들의 유사도를 고려하여 커널들의 개수도 조절할 수 있다. 따라서, 본 발명은 데이터를 고속으로 처리하는 고성능의 신경망 시스템을 제공할 수 있다.
도 1은 신경망 시스템을 보여주는 블록도이다.
도 2는 신경망 시스템에서 수행되는 연산을 설명하기 위한 개념도이다.
도 3은 PEU에서 수행되는 동작들을 설명하기 위한 개념도이다.
도 4는 본 발명의 실시 예에 따른 신경망 시스템을 보여주는 블록도이다.
도 5는 신경망 시스템의 동작을 설명하기 위한 흐름도이다.
도 6은 신경망 시스템의 동작을 설명하기 위한 흐름도이다.
도 7은 커널이 삭제되는 동작을 설명하기 위한 개념도이다.
도 8은 커널이 삭제되는 동작을 설명하기 위한 개념도이다.
도 9는 신경망 시스템의 동작을 설명하기 위한 흐름도이다.
도 10은 새로운 커널이 생성되는 동작을 설명하기 위한 개념도이다.
도 11은 신경망 시스템의 동작을 설명하기 위한 흐름도이다.
도 12는 커널이 갱신되는 동작을 설명하기 위한 개념도이다.
도 13은 커널이 갱신되는 동작을 설명하기 위한 흐름도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
본 명세서에서 “신경망 시스템(neural network)”은 인간의 뇌 기능을 모방하여 데이터를 처리하기 위한 시스템일 수 있다. 인간의 뇌는 신경 세포(neuron)들 사이의 시냅스(synapse)를 통해 하나의 신경 세포로부터 다른 신경 세포로 신호를 전달할 수 있다. 이러한 신경 세포들과 시냅스들의 연결 관계가 “신경망 시스템”으로 구현될 수 있다. 이 경우, 신경 세포들은 그래프의 노드(node)에 대응하고, 시냅스는 노드와 노드를 연결하는 선에 대응할 수 있다.
도 1은 신경망 시스템을 보여주는 블록도이다.
신경망 시스템(1000)은 피처 추출기(100) 및 분류기(200)를 포함할 수 있다. 신경망 시스템(1000)은, 예로서, 컨볼루션 신경망 시스템(Convolution Neural Network, CNN)일 수 있다. 컨볼루션 신경망 시스템은 이미지 데이터를 처리하는데 이용되는 신경망 시스템일 수 있다. 신경망 시스템(1000)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 웨어러블(wearable) 장치, 사물 인터넷(IoT; Internet of Things) 장치, 전기 자동차, 워크스테이션, 서버 시스템, 직접 회로(IC; Integrated Circuit), 마더보드(mother board), 시스템 온 칩(SoC; System On Chip), 마이크로프로세서, 애플리케이션 프로세서(AP; Application Processor) 또는 반도체 칩셋으로 구현될 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니며, 신경망 시스템(1000)은 뉴럴 네트워크를 기반으로 데이터를 처리하는 어떠한 종류의 장치 또는 회로로 구현될 수 있다.
피처 추출기(100)는 입력 버퍼(110), 커널 메모리(120), 커널 버퍼(130), Processing Element Unit(140, 이하 PEU), 출력 버퍼(150) 및 제 1 컨트롤러(160)를 포함할 수 있다. 피처 추출기(100)는 입력 데이터의 특징을 추출하는 신경망 시스템일 수 있다. 피처 추출기(100)는 입력 데이터를 처리하여 출력 피처 맵(output feature map)을 생성할 수 있다.
입력 데이터는 이미지 센서를 통해서 제공되는 정지 이미지나 동영상일 수 있다. 입력 데이터는 유무선 통신 수단을 통해서 전달된 이미지일 수도 있다. 입력 데이터는 신경망 시스템(1000)의 트레이닝(Training)을 위해 제공되는 샘플 이미지일 수도 있다. 입력 데이터는 디지털화된 이미지 데이터의 다차원 어레이 형태로 제공될 수 있다.
출력 피처 맵은 입력 데이터의 특징이 강조된 데이터일 수 있다. 출력 피처 맵은 입력 데이터로부터 검출된 패턴이나 식별 정보를 포함할 수 있다. 출력 피처 맵은 다차원 어레이 형태일 수 있다.
입력 데이터는 입력 버퍼(110)에 로드될 수 있다. 입력 버퍼(110)의 크기는 커널(Kernel)의 사이즈에 따라 가변될 수 있다. 따라서, 입력 버퍼(110)에는 커널과의 컨볼루션 연산을 순차적으로 수행하기 위한 충분한 크기의 입력 데이터가 로드될 수 있다.
커널 메모리(120)는 커널들을 저장할 수 있다. 커널 메모리(120)에 저장된 커널들은 커널 버퍼(130)에 로드될 수 있다. 커널 버퍼(130)는 PEU(140)로 커널들을 출력할 수 있다. 커널과 입력 데이터의 중첩 위치의 제반 데이터를 곱하고, 그 결과들을 합하는 컨볼루션 연산 과정을 커널링(Kernelling)이라고 한다. 커널들 각각은 입력 데이터의 특징을 추출하기 위한 특정 피처 식별자(Feature Identifier)일 수 있다. 커널링은 입력 데이터와 다양한 피처 식별자에 대응하는 커널들에 대해서 수행될 수 있다.
커널 메모리(120)는 커널들 뿐만 아니라 컨볼루션 연산, 바이어스(Bias) 가산, 활성화(Relu), 풀링(Pooling) 등에 필요한 파라미터들을 저장할 수 있다. 커널은 파라미터들 중 하나일 수 있다. 또한, 커널 메모리(120)는 파라미터들을 커널 버퍼(130)로 출력할 수 있다.
PEU(140)는 입력 버퍼(110), 커널 버퍼(130) 및 출력 버퍼(150)를 사용하여 컨볼루션 연산 및 풀링 연산 등을 수행할 수 있다. PEU(140)는 복수의 컨볼루션 연산 또는 풀링 연산을 병렬로 처리하기 위한 병렬 처리 코어들을 포함할 수 있다.
PEU(140)는 입력 버퍼(110)로부터 입력 데이터를 수신할 수 있다. PEU(140)는 커널 버퍼(130)로부터 커널들을 수신할 수 있다. PEU(140)는 입력 데이터와 커널들에 대해서 커널링을 수행할 수 있다. PEU(140)는 컨볼루션 계층(Convolution layer)에서 커널링을 수행할 수 있고, 그 결과값으로 피처 맵(Feature Map)들을 생성할 수 있다. 피처 맵들에서 입력 데이터의 고유한 특징들이 강조될 수 있다.
PEU(140)는 피처 맵들에 대해 풀링(Pooling) 연산을 수행할 수 있다. 풀링(pooling) 연산은 피처 맵들을 다운 샘플링(Down sampling)으로 처리하는 연산일 수 있다. 컨볼루션 연산에 의해서 생성된 피처 맵들의 사이즈가 상대적으로 크기 때문에, PEU(140)는 풀링 연산을 수행하여 피처 맵들의 사이즈를 줄일 수 있다. 예로서, 풀링 연산은 픽셀들을 묶어서 하나의 대표 픽셀로 변환하는 연산일 수 있다.
출력 버퍼(150)는 컨볼루션 연산의 결과값 및 풀링 연산의 결과값을 저장할 수 있다. PEU(140)는 컨볼루션 연산 및 풀링 연산을 반복하여 수행할 수 있다. 컨볼루션 연산 및 풀링 연산이 반복될 때마다, 출력 버퍼(150)에 저장된 컨볼루션 연산의 결과값 및 풀링 연산의 결과값이 갱신될 수 있다. PEU(140)는 컨볼루션 연산 및 풀링 연산을 특정 횟수만큼 반복하여 수행할 수 있고, 최종적으로 출력 피처 맵(Output Feature Map)을 생성할 수 있다.
분류기(200)는 피처 추출기(100)로부터 출력 피처 맵을 수신할 수 있다. 분류기(200)는 출력 피처 맵을 이용하여 입력 데이터를 판별 또는 인식하는 신경망 시스템일 수 있다. 분류기(200)는 출력 피처 맵에 기초하여 피처 어레이를 생성할 수 있다. 피처 어레이는 출력 피처 맵을 벡터 형태로 변환한 어레이일 수 있다. 벡터 형태로 변환된 출력 피처 맵은 입력층의 노드들로 입력될 수 있다. 입력층의 노드들은 은닉층의 노드들과 연결되고, 은닉층의 노드들은 출력층의 노드들과 연결될 수 있다. 각 층의 노드들 사이의 연결 관계는 가중치로 표현될 수 있다. 분류기(200)는 출력 피처 맵에 가중치를 곱하면서 출력 피처 맵을 입력층에서부터 출력층까지 이동시킬 수 있다. 출력층의 노드들에서 출력되는 데이터는 출력 데이터일 수 있다.
출력 데이터는 신경망 시스템(1000)에서 입력 데이터에 대해 연산한 결과값일 수 있다. 이하 설명들에서, 입력 데이터에 대해 연산하였다는 것은 입력 데이터에 대해 학습하였다는 의미를 포함할 수 있다. 예로서, 출력 데이터는 입력 데이터의 범주를 판별한 결과값일 수 있다. 분류기(200)는 정답 데이터를 제공받을 수 있다. 정답 데이터는 입력 데이터에 수행된 연산의 정답값에 대한 정보를 포함할 수 있다. 분류기(200)는 출력 데이터 및 정답 데이터에 기초하여 오차값을 계산할 수 있다. 오차값은 결과값과 정답값 사이의 차이에 비례할 수 있다. 예로서, 오차값은 결과값과 정답값 사이의 차이의 절대값일 수 있다. 다른 예로서, 결과값과 정답값 사이의 차이의 제곱값일 수 있다. 다만, 본 발명은 이에 한정되지 않고, 오차값은 비용 함수(sum of squared error) 및 크로스 엔트로피(cross entropy) 함수 등 중 어느 하나에 의해 계산되는 값일 수 있다.
분류기(200)는 오차값에 기초하여 신경망 시스템(1000)의 성능을 파악할 수 있다. 신경망 시스템(1000)의 성능은 신경망 시스템(1000)에서 수행된 연산의 정확도를 의미할 수 있다. 분류기(200)는 오차값과 오차 임계값을 비교할 수 있다. 오차값이 오차 임계값보다 크다는 것은 신경망 시스템(1000)의 성능이 기대치보다 낮다는 것을 의미할 수 있다. 분류기(200)는 오차값이 오차 임계값 이상(또는, 초과)인 경우, 역전파(back propagation) 알고리즘을 수행할 수 있다. 역전파 알고리즘은 은닉층 노드들의 오차들을 역방향으로 계산해가면서 노드들의 가중치를 조절하는 방법일 수 있다. 분류기(200)는 역전파 알고리즘을 수행하여 오차값을 감소시킬 수 있다.
분류기(200)는 오차값이 오차 임계값 이상(또는, 초과)인 경우, 제 1 컨트롤러(160)로 신호(bs)를 출력할 수 있다. 제 1 컨트롤러(160)는 신호(bs)가 수신되는 경우, 역전파 알고리즘을 수행할 수 있다. 제 1 컨트롤러(160)는 역전파 알고리즘을 수행하여 파라미터들을 갱신시킬 수 있다. 특히, 제 1 컨트롤러(160)는 오차값이 감소되도록 커널들의 커널 값들을 조절할 수 있다. 제 1 컨트롤러(160)는 커널 데이터를 커널 메모리(120)로 출력할 수 있다. 커널 데이터는 조절된 커널 값들에 대한 정보를 포함할 수 있다.
신경망 시스템(1000)은 갱신된 파라미터들, 갱신된 가중치 등을 이용하여 입력 데이터에 대해 다시 연산할 수 있다. 신경망 시스템(1000)은 오차값이 오차 임계값 미만(또는, 이하)이 될 때까지 입력 데이터에 대해 연산할 수 있다. 오차값이 오차 임계값 미만(또는, 이하)이 되는 경우, 신경망 시스템(1000)은 기존이 입력 데이터에 대한 연산을 완료할 수 있다.
다만, 본 발명은 이에 한정되지 않고, 제 1 컨트롤러(160)는 분류기(200)의 일부 기능을 수행할 수 있다. 제 1 컨트롤러(160)는 분류기(200)로부터 정답 데이터 및 출력 데이터를 수신할 수 있다. 제 1 컨트롤러(160)는 정답 데이터 및 출력 데이터에 기초하여 오차값을 계산할 수 있다. 제 1 컨트롤러(160)는 자체적으로 오차값과 오차 임계값을 비교하여, 그 결과에 따라 역전파 알고리즘을 수행할지 여부를 결정할 수 있다.
도 2는 신경망 시스템에서 수행되는 연산을 설명하기 위한 개념도이다.
도 2를 참조하여서는, PEU(140)에서 수행되는 컨볼루션 연산 및 풀링 연산이 설명된다. PEU(140)는 입력 데이터(10)와 커널들(20)을 컨볼루션 연산하여 피처 맵들(30)을 생성할 수 있다. PEU(140)는 피처 맵들(30)에 대해 풀링 연산을 수행하여 피처 맵들(40)을 생성할 수 있다.
PEU(140)는 입력 데이터(10)를 수신할 수 있다. 입력 데이터(10)는 이차원 어레이 형태일 수 있다. PEU(140)는 N개의 커널들(20)을 수신할 수 있다. 커널들(20)의 크기들은 K*K일 수 있다.
PEU(140)는 입력 데이터(10) 중 커널(21)과 중첩되는 위치의 데이터와 커널(21)을 곱할 수 있다. PEU(140)는 곱한값들을 가산하여, 피처 맵(31)의 하나의 포인트에 대응하는 피처값을 생성할 수 있다. 포인트는 하나의 행 및 하나의 열로 표현되는 특정 위치일 수 있다. PEU(140)는 입력 데이터(10) 상에서 커널(21)을 시프트(shift)하면서 입력 데이터(10)의 모든 위치에서 커널링을 수행할 수 있다. 입력 데이터(10)의 모든 위치에서 커널링이 수행되면, 피처 맵(31)이 생성될 수 있다. 즉, PEU(140)는 입력 데이터(10)와 커널들(20) 각각을 컨볼루션 연산하여, N개의 피처 맵들(30)을 생성할 수 있다. 따라서, 피처 맵들(30)은 커널들(20)과 일대일 대응할 수 있다. 피처 맵들(30)의 개수는 커널들(20)의 개수와 동일할 수 있다.
피처 맵들(30)은 커널들(20)의 개수나 입력 데이터(10)의 크기에 따라 처리에 부담이 되는 크기로 생성될 수 있다. 피처 맵들(30)의 크기가 크다는 것은 피처 맵들(30)의 개수가 많다는 것을 의미할 수 있다.
따라서, PEU(140)는 풀링 연산을 수행하여 피처 맵들(30)의 크기들을 줄일 수 있다. PEU(140)는 피처 맵들(30)을 피처 맵들(40)로 변환할 수 있다. PEU(140)는 영역(31a)의 피처값들을 처리하여 피처 맵(41)의 한 포인트에 대응하는 피처값(41a)을 생성할 수 있다. 예로서, 피처값(41a)은 영역(31a)의 피처값들의 평균값일 수 있다. 다른 예로서, 피처값(41a)은 영역(31a)의 피처값들의 최대값일 수 있다. PEU(140)는 피처 맵(30)의 모든 영역에 대해 풀링 연산을 수행하여 피처 맵(41)을 생성할 수 있다. 피처 맵(41)의 크기는 피처 맵(30)의 크기보다 작을 수 있다.
도 3은 PEU에서 수행되는 동작들을 설명하기 위한 개념도이다.
PEU(140, 도 1 참조)는 컨볼루션 계층들 및 풀링 계층들을 포함할 수 있다. 이하 설명들에서, PEU(140)는 두 개의 컨볼루션 계층들 및 두 개의 풀링 계층들을 포함하는 것으로 가정되나 본 발명은 이에 한정되지 않는다. 컨볼루션 계층 및 풀링 계층은 번갈아가며 나열되고, 이에 따라 PEU(140)는 컨볼루션 연산 및 풀링 연산을 번갈아가며 수행할 수 있다. m 번째 계층은 m 번째 컨볼루션 계층 및 풀링 계층을 포함할 수 있다. m 번째 컨볼루션 계층 및 풀링 계층은 m 번째로 위치한 컨볼루션 계층 및 풀링 계층을 의미한다.
첫 번째 컨볼루션 계층에서, PEU(140)는 입력 데이터(10)와 커널들(50)을 컨볼루션 연산하여 피처 맵들(52)을 생성할 수 있다. 커널들(50)은 제 1 커널 집합으로 표현될 수 있다. 피처 맵들(52)의 개수는 커널들(50)의 개수와 동일할 수 있다. 피처 맵들(52)은 커널들(50)과 일대일 대응할 수 있다. 첫 번째 풀링 계층에서, PEU(140)는 피처 맵들(52)에 대해 풀링 연산을 수행하여 피처 맵들(55)을 생성할 수 있다. 피처 맵들(55)의 크기들은 각각 피처 맵들(52)의 크기들보다 작을 수 있다.
두 번째 컨볼루션 계층에서, PEU(140)는 피처 맵들(55)과 커널들(60)을 컨볼루션 연산하여 피처 맵들(62)을 생성할 수 있다. 커널들(60)은 제 2 커널 집합으로 표현될 수 있다. 두 번째 풀링 계층에서, PEU(140)는 피처 맵들(62)에 대해 풀링 연산을 수행하여 피처 맵들(65)을 생성할 수 있다.
PEU(140)는 피처 맵들(65)을 분류기(200, 도 1 참조)로 출력할 수 있다. 도 1을 참조하여 설명된 것처럼, 분류기(200)는 피처 맵들(65)을 피처 어레이(70)로 변환할 수 있다. 피처 어레이(70)는 피처 맵들(65)이 벡터 형태로 변환된 어레이일 수 있다. 분류기(200)는 피처 어레이(70)에 기초하여 입력 데이터(10)의 범주를 판별할 수 있다. 출력 데이터(75)는 입력 데이터(10)에 대해 연산한 결과값을 포함할 수 있다.
신경망 시스템(1000)은 출력 데이터(75)에 기초하여 역전파 알고리즘을 수행할 수 있다. 신경망 시스템(1000)은 역전파 알고리즘을 수행하여 커널들(50) 및/또는 커널들(60)을 조절할 수 있다.
도 4는 본 발명의 실시 예에 따른 신경망 시스템을 보여주는 블록도이다.
피처 추출기(100a)의 구성들(110~160) 및 분류기(200)는 도 1에 도시된 피처 추출기(100)의 구성들(110~160) 및 분류기(200)와 실질적으로 동일한 동작을 제공할 수 있다. 따라서, 이하 중복되는 설명은 생략된다. 도 4를 참조하여서는, 제 2 컨트롤러(180)가 자세하게 설명된다.
피처 추출기(100a)는 구성들(110~160) 및 제 2 컨트롤러(180)를 포함할 수 있다. 제 2 컨트롤러(180)는 분류기(200)로부터 신호(bs)를 수신할 수 있다. 분류기(200)는 오차값이 오차 임계값보다 큰 경우 신호(bs)를 출력할 수 있다. 다만, 본 발명은 이에 한정되지 않고, 분류기(200)는 오차값이 오차 임계값 이상(또는, 초과)인 경우 제 1 논리 값을 갖는 신호(bs)를 출력하고, 오차값이 오차 임계값 미만인 경우 제 2 논리 값을 갖는 신호(bs)를 출력할 수 있다. 제 2 컨트롤러(180)는 신호(bs)가 수신되는 경우 하나 이상의 커널을 갱신할 수 있다. 구체적으로, 제 2 컨트롤러(180)는 커널들(50, 60, 도 3 참조) 중 하나 이상의 커널을 삭제하거나, 새로운 커널을 생성할 수 있다.
다만, 본 발명은 이에 한정되지 않고, 제 2 컨트롤러(180)는 분류기(200)의 일부 기능을 수행할 수 있다. 제 2 컨트롤러(180)는 정답 데이터 및 출력 데이터를 수신할 수 있다. 제 2 컨트롤러(180)는 정답 데이터 및 출력 데이터에 기초하여 오차값을 계산할 수 있다. 제 2 컨트롤러(180)는 자체적으로 오차값과 오차 임계값을 비교할 수도 있다. 제 2 컨트롤러(180)는 오차값이 오차 임계값보다 큰 경우, 하나 이상의 커널을 갱신할 수 있다.
제 2 컨트롤러(180)는 커널 메모리(120)로부터 신호(ks)를 수신할 수 있다. 신호(ks)는 커널들에 대한 정보를 포함할 수 있다. 구체적으로, 신호(ks)는 각 계층에서의 커널들의 개수, 커널들의 커널값들 등에 대한 정보를 포함할 수 있다.
제 2 컨트롤러(180)는 PEU(120)로부터 신호(ps)를 수신할 수 있다. 신호(ps)는 PEU(140)에서 수행되는 연산 동작들의 진행 상태에 대한 정보, 각 계층에서 생성되는 피처 맵들의 개수 등을 포함할 수 있다.
제 2 컨트롤러(180)는 메모리로부터 피처 임계값들(Kth, Kth(1)~Kth(n), n은 2이상 정수)에 대한 정보 및 차이 임계값들(Dth, Dth(1)~Dth(n), n은 2이상 정수)에 대한 정보를 제공받을 수 있다. 메모리는 피처 추출기(100a)의 외부 또는 내부에 위치하는 메모리일 수 있다. 예로서, 메모리는 커널 메모리(120)일 수 있다.
피처 임계값(Kth)은 컨볼루션 계층들에서 생성되는 피처 맵들의 개수의 총 합의 임계값일 수 있다. 피처 임계값(Kth(m), m은 1이상 n이하 정수)은 m번째 컨볼루션 계층에서 생성되는 피처 맵들의 개수의 임계값일 수 있다. 피처 임계값들(Kth(1)~Kth(n))은 상이한 값들일 수 있다. 다만, 본 발명은 이에 한정되지 않고, 피처 임계값(Kth)은 풀링 계층들에서 생성되는 피처 맵들의 개수의 총 합의 임계값일 수 있다. 또한, 피처 임계값(Kth(m))은 m번째 풀링 계층에서 생성되는 피처 맵들의 개수의 임계값일 수 있다.
차이 임계값(Dth)은 커널들 사이의 차이의 임계값일 수 있다. 차이 임계값(Dth(m), m은 1이상 n이하 정수)은 m번째 컨볼루션 계층에서의 커널들 사이의 차이의 임계값일 수 있다. 차이 임계값들(Dth(1)~Dth(n))은 상이한 값들일 수 있다.
제 2 컨트롤러(180)는 피처 임계값(Kth)에 기초하여 커널들을 갱신할 수 있다. 이 경우, 제 2 컨트롤러(180)는 컨볼루션 계층들에서 생성되는 피처 맵들의 개수의 총 합과 피처 임계값(Kth)을 비교하여 커널들을 갱신할 수 있다. 구체적으로, 제 2 컨트롤러(180)는 피처 맵들의 개수의 총 합이 피처 임계값(Kth)보다 큰 경우, 하나 이상의 커널을 삭제할 수 있다. 피처 맵들의 개수가 증가하면 PEU(140) 또는 분류기(200)에서 처리해야될 데이터의 양이 증가할 수 있다. 신경망 시스템(1000a)에서 수행되는 동작들은 엄청난 양의 연산을 요구하므로, 피처 맵들의 개수를 감소시키거나 적정 개수로 유지하는 것은 중요한 문제이다. 본 발명은 피처 맵들의 개수의 총 합이 피처 임계값(Kth)보다 큰 경우 커널을 삭제하여, 신경망 시스템(1000a)의 연산 처리 속도를 개선시킬 수 있다. 이러한 제 2 컨트롤러(180)의 동작은 도 7 내지 도 11을 참조하여 자세하게 설명될 것이다.
제 2 컨트롤러(180)는 피처 맵들의 개수의 총 합이 피처 임계값(Kth)보다 큰 경우, 유사한 커널들 중 하나 이상의 커널을 삭제할 수 있다. 이하 설명들에서, 제 2 컨트롤러(180)는 유사한 커널들 중 하나의 커널을 삭제하는 것으로 가정된다.
제 2 컨트롤러(180)는 차이 임계값(Dth) 또는 차이 임계값들(Dth(1)~Dth(n))을 사용하여 유사한 커널들을 검출할 수 있다. 예로서, 제 1 컨트롤러(160)는 계층에 상관없이 동일한 차이 임계값(Dth)을 사용하여 유사한 커널들을 검출할 수 있다. 유사한 커널들은 커널들 사이의 차이값이 차이 임계값(Dth)보다 작은 커널들일 수 있다. 다만, 본 발명은 이에 한정되지 않고, 유사한 커널들은 유사한 커널들 사이의 차이 값이 커널들 사이의 차이값들 중 가장 작은 값인 커널들일 수도 있다. 커널들 사이의 차이값은 커널들 각각의 커널값들 사이의 차이값에 비례할 수 있다.
다른 예로서, 제 1 컨트롤러(160)는 각 계층마다 상이한 차이 임계값들(Dth(1)~Dth(n))을 사용하여 유사한 커널들을 검출할 수 있다. 이 경우, m 번째 계층에서의 유사한 커널들은 커널들 사이의 차이값이 차이 임계값(Dth(m))보다 작은 커널들일 수 있다.
유사한 커널들에 의해 생성되는 피처 맵들은 유사한 피처값들을 가질 수 있다. 따라서, 본 발명은 유사한 커널들 중 하나를 삭제하여, 신경망 시스템(1000a)의 연산량이 불필요하게 증가하는 것을 방지할 수 있다. 또한, 피처 추출기(100a)는 각각 입력 데이터의 상이한 특징들이 각각 잘 나타나는 피처 맵들을 생성할 수 있다.
제 2 컨트롤러(180)는 피처 임계값들(Kth(1)~Kth(n))에 기초하여 커널들을 갱신할 수 있다. 이 경우, 제 2 컨트롤러(180)는 컨볼루션 계층들에서 생성되는 피처 맵들의 개수와 피처 임계값들(Kth(1)~Kth(n))을 비교하여 각 컨볼루션 계층의 커널들을 갱신할 수 있다. 구체적으로, 제 2 컨트롤러(180)는 m번째 컨볼루션 계층에서 생성되는 피처 맵들의 개수와 피처 임계값(Kth(m))을 비교하여 m번째 컨볼루션 계층의 커널들을 갱신할 수 있다. 이러한 제 2 컨트롤러(180)의 동작은 도 12 내지 도 13을 참조하여 자세하게 설명될 것이다.
도 2를 참조하여 설명된 것처럼, 각 컨볼루션 계층 또는 각 풀링 계층에서 생성되는 피처 맵들의 개수는 각 컨볼루션 계층의 커널들의 개수와 동일할 수 있다. 따라서, 제 2 컨트롤러(180)는 피처 임계값들(Kth, Kth(1)~Kth(n))과 피처 맵들의 개수를 비교하는 대신 피처 임계값들(Kth, Kth(1)~Kth(n))과 커널들의 개수를 비교할 수 있다. 예로서, 제 2 컨트롤러(180)는 컨볼루션 계층들에서의 커널들의 개수의 총 합과 피처 임계값(Kth)을 비교하여 커널들을 갱신할 수 있다. 다른 예로서, 제 2 컨트롤러(180)는 m번째 컨볼루션 계층에서의 커널들의 개수와 피처 임계값(Kth(m))을 비교하여 m번째 컨볼루션 계층의 커널들을 갱신할 수 있다. 제 2 컨트롤러(180)는 피처 임계값들(Kth, Kth(1)~Kth(n))과 커널들의 개수를 비교한 결과에 기초하여, 커널들을 갱신할 수 있다.
제 2 컨트롤러(180)는 하나 이상의 커널을 갱신하는 경우, 커널 메모리(120)로 신호(cs0)를 출력할 수 있다. 커널 메모리(120)는 신호(cs0)에 기초하여, 커널 메모리(120)에 저장된 커널을 삭제하거나 새로운 커널을 저장할 수 있다. 예로서, 신호(cs0)는 삭제될 커널이 저장된 위치에 대한 정보를 포함할 수 있다. 다른 예로서, 신호(cs0)는 새로운 커널에 대한 정보를 포함할 수 있다. 이하 설명들에서, 커널을 삭제한다는 것은 커널을 비활성화한다는 것을 의미하기도 한다. 커널을 비활성화한다는 것은 커널 메모리(120)에 저장된 커널 데이터를 삭제하지는 않되 컨볼루션 연산 등에서 커널 데이터를 이용하지는 않는 것을 의미한다.
제 2 컨트롤러(180)는 하나 이상의 커널을 갱신하는 경우, 신호(cs1)를 PEU(140)로 출력할 수 있다. PEU(140)는 신호(cs1)에 기초하여 피처 맵들을 갱신할 수 있다. 커널이 추가된 경우, PEU(140)는 추가된 커널에 기초하여, 다시 컨볼루션 연산 및 풀링 연산을 수행할 수 있다.
제 2 컨트롤러(180)는 하나 이상의 커널을 갱신하는 경우, 신호(cs2)를 출력 버퍼(150)로 출력할 수 있다. 커널이 삭제된 경우, 출력 버퍼(150)는 신호(cs2)에 기초하여, 삭제된 커널에 대응하는 피처 맵을 삭제할 수 있다. 출력 버퍼(150)는 피처 맵을 삭제한 후, 나머지 피처 맵들에 대한 정보를 PEU(140) 또는 입력 버퍼(110)로 출력할 수 있다. PEU(140)는 갱신된 커널들과 나머지 피처 맵들에 기초하여 다시 컨볼루션 연산 및 풀링 연산을 수행할 수 있다.
도 5는 신경망 시스템의 동작을 설명하기 위한 흐름도이다.
S110 동작에서, 입력 버퍼(110, 도 4 참조)는 입력 데이터를 수신할 수 있다.
S120 동작에서, 피처 추출기(100a, 도 4 참조) 및 분류기(200, 도 4 참조)는 입력 데이터에 대해 연산할 수 있다.
S130 동작에서, 분류기(200, 도 4 참조)는 입력 데이터에 대한 연산 결과로써 출력 데이터를 생성할 수 있다. 분류기(200)는 출력 데이터 및 정답 데이터에 기초하여 오차값을 계산할 수 있다.
S140 동작에서, 분류기(200)는 오차값과 오차 임계값을 비교할 수 있다.
오차값이 오차 임계값 미만인 경우, 절차는 S140 동작으로부터 S150 동작으로 이동한다. S150 동작에서, 분류기(200)는 입력 데이터에 대한 연산을 완료할 수 있다. 연산이 완료되는 경우, 신경망 시스템(1000a, 도 4 참조)은 새로운 입력 데이터를 연산할 수 있다.
오차값이 오차 임계값 이상인 경우, 절차는 S140 동작으로부터 S160 동작으로 이동한다. S160 동작에서, 분류기(200)는 컨트롤러(180, 도 4 참조)로 신호(bs)를 출력할 수 있다. 제 2 컨트롤러(180)는 신호(bs)가 수신되는 경우, 커널을 갱신할 수 있다. 피처 추출기(100a)는 저장된 기존 커널을 삭제하거나, 새로운 커널을 추가할 수 있다.
S170 동작에서, 제 2 컨트롤러(180)는 갱신된 커널에 대응하는 피처 맵을 갱신할 수 있다. 피처 추출기(100a)는 기존 커널이 삭제된 경우, 삭제된 커널에 대응하는 피처 맵을 삭제할 수 있다. 피처 추출기(100a)는 새로운 커널이 추가된 경우, 추가된 커널에 기초하여 새로운 피처 맵을 생성할 수 있다.
도 6은 신경망 시스템의 동작을 설명하기 위한 흐름도이다.
도 6을 참조하여서는, 컨트롤러(180, 도 4 참조)가 신호(bs)를 수신한 이후의 동작들이 설명된다. 도 6을 참조하여, 제 2 컨트롤러(180)의 동작이 보다 자세하게 설명된다.
S210 동작에서, 제 2 컨트롤러(180)는 커널 메모리(120, 도 4 참조)로부터 신호(ks)를 수신할 수 있다. 신호(ks)는 커널들에 대한 정보를 포함할 수 있다. 제 2 컨트롤러(180)는 PEU(140, 도 4 참조)로부터 신호(ps)를 수신할 수 있다. 신호(ps)는 피처 맵들에 대한 정보를 포함할 수 있다.
S220 동작에서, 제 2 컨트롤러(180)는 컨볼루션 계층에서 생성되는 피처 맵들의 개수의 총 합과 피처 임계값(Kth)을 비교할 수 있다.
피처 맵들의 개수의 총 합이 피처 임계값(Kth) 이상인 경우, 절차는 S220 동작으로부터 S230 동작으로 이동한다. S230 동작에서, 피처 추출기(100a, 도 4 참조)는 유사한 커널들 중 하나의 커널을 삭제할 수 있다.
피처 맵들의 개수의 총 합이 피처 임계값(Kth) 미만인 경우, 절차는 S220 동작으로부터 S235 동작으로 이동한다. S235 동작에서, 피처 추출기(100a, 도 4 참조)는 새로운 커널을 추가할 수 있다.
S240 동작에서, 신경망 시스템(1000a, 도 4 참조)은 갱신된 커널들에 기초하여 새로운 출력 데이터를 생성할 수 있다. 분류기(200)는 새로운 출력 데이터에 기초하여 오차값을 계산할 수 있다.
S250 동작에서, 분류기(200)는 오차값과 오차 임계값을 비교할 수 있다.
오차값이 오차 임계값 이상인 경우, 절차는 S250 동작으로부터 S220 동작으로 이동한다. 신경망 시스템(1000a)은 오차값이 오차 임계값보다 작아질 때까지 S220 동작 내지 S240 동작을 반복할 수 있다.
오차값이 오차 임계값 미만인 경우, 절차는 S250 동작으로부터 S260 동작으로 이동한다. S260 동작에서, 신경망 시스템(1000a)은 입력 데이터에 대한 연산을 완료할 수 있다.
도 7은 커널이 삭제되는 동작을 설명하기 위한 개념도이다. 도 8은 커널이 삭제되는 동작을 설명하기 위한 개념도이다. 본 발명의 이해를 돕기 위해, 도 7 및 도 8이 함께 설명된다.
컨트롤러(180, 도 4 참조)는 오차값이 오차 임계값 이상이고 피처 맵들의 개수가 피처 임계값(Kth) 이상인 경우, 유사한 커널들 중 하나의 커널을 삭제할 수 있다. 도 7을 참조하는 설명에서, 오차값이 오차 임계값 이상인 것으로 가정된다. 또한, 피처 임계값(Kth)은 5인 것으로 가정된다.
도 7을 참조하면, 컨볼루션 계층에서 생성되는 피처 맵들(52, 62)의 개수의 총 합은 7일 수 있다. 피처 맵들(52, 62)의 개수의 총 합이 피처 임계값(Kth)보다 크므로, 제 2 컨트롤러(180)는 유사한 커널들 중 하나의 커널을 삭제할 수 있다.
제 2 컨트롤러(180)는 커널들(50) 사이의 차이값들을 계산할 수 있다. 또한, 제 2 컨트롤러(180)는 커널들(60) 사이의 차이값들을 계산할 수 있다. 제 2 컨트롤러(180)는 차이값들 각각을 차이 임계값(Dth)과 비교하여 유사한 커널들을 검출할 수 있다. 도 7을 참조하면, 커널들(50) 중 세 번째 커널 및 네 번째 커널이 유사한 커널들일 수 있다. 도 8을 참조하면, 커널들(50) 중 네 번째 커널이 삭제될 수 있다. 다만, 본 발명은 이에 한정되지 않고, 커널들(50) 중 세 번째 커널이 삭제될 수도 있다. 제 2 컨트롤러(180)는 커널 메모리(120, 도 4 참조)로 신호(cs0)를 출력할 수 있다. 커널 메모리(120)는 신호(cs0)에 기초하여 커널들(50a)을 저장할 수 있다.
도 7을 참조하면, 유사한 커널들에 대응하는 피처 맵들은 피처 맵들(52, 55) 중 세 번째 피처 맵들 및 네 번째 피처 맵들일 수 있다. 도 7 및 도 8을 참조하면, 피처 맵들(52, 55) 중 네 번째 피처 맵들이 삭제될 수 있다. 피처 맵들(52, 55) 중 네 번째 피처 맵들은 삭제된 커널에 대응하는 피처 맵들일 수 있다.
제 2 컨트롤러(180)는 신호(cs2)를 출력 버퍼(150, 도 4 참조)로 출력할 수 있다. 출력 버퍼(150)는 신호(cs2)에 기초하여 피처 맵들(52, 55) 중 네 번째 피처 맵들을 삭제할 수 있다. 출력 버퍼(150)는 피처 맵들(52a, 55a)을 PEU(140, 도 4 참조)로 출력할 수 있다.
제 2 컨트롤러(180)는 신호(cs1)를 PEU(140)로 출력할 수 있다. 제 2 컨트롤러(180)는 신호(cs1)가 수신되면, 커널들(50a, 60) 및 피처 맵들(52a, 55a)에 기초하여 입력 데이터(10)에 대해 다시 연산할 수 있다. 연산 결과, 새로운 피처 맵들(62a, 65a), 피처 어레이(70a) 및 출력 데이터(75a)가 생성될 수 있다.
도 9는 신경망 시스템의 동작을 설명하기 위한 흐름도이다. 도 9를 참조하여, 커널이 삭제되는 경우에 신경망 시스템(1000a)의 동작이 설명된다.
S310 동작에서, 컨트롤러(180, 도 4 참조)는 커널들 사이의 차이값들을 계산할 수 있다. 제 2 컨트롤러(180)는 차이값들에 기초하여 유사한 커널들을 검출할 수 있다.
S320 동작에서, 제 2 컨트롤러(180)는 유사한 커널들 중 하나를 삭제할 수 있다.
S330 동작에서, 제 2 컨트롤러(180)는 삭제된 커널에 대응하는 피처 맵을 삭제할 수 있다.
S340 동작에서, PEU(140, 도 4 참조)는 제 2 컨트롤러(180)의 제어에 의해 컨볼루션 연산 및 풀링 연산을 다시 수행할 수 있다. 즉, PEU(140)는 갱신된 커널들 및 갱신된 피처 맵들에 기초하여, 입력 데이터에 대해 다시 연산할 수 있다.
도 10은 새로운 커널이 생성되는 동작을 설명하기 위한 개념도이다.
컨트롤러(180, 도 4 참조)는 오차값이 오차 임계값 이상이고 피처 맵들의 개수가 피처 임계값(Kth) 미만인 경우, 새로운 커널을 생성할 수 있다. 도 10을 참조하는 설명에서, 오차값이 오차 임계값 이상인 것으로 가정된다. 또한, 피처 임계값(Kth)은 8인 것으로 가정된다.
컨볼루션 계층에서 생성되는 피처 맵들(52, 62, 도 2 참조)의 개수의 총 합은 7일 수 있다. 피처 맵들(52, 62)의 개수의 총 합이 피처 임계값(Kth)보다 작으므로, 제 2 컨트롤러(180)는 새로운 커널을 생성할 수 있다. 제 2 컨트롤러(180)는 기존 커널들(50, 60, 도 2 참조), 오차값, 이전에 삭제된 커널들 등을 고려하여 새로운 커널을 생성할 수 있다.
제 2 컨트롤러(180)는 다양한 방법으로 새로운 커널을 생성할 수 있다. 제 2 컨트롤러(180)는 각 컨볼루션 계층에 새로운 커널을 추가하거나 컨볼루션 계층들 중 하나에 새로운 커널을 추가할 수 있다. 도 10을 참조하면, 제 2 컨트롤러(180)는 두 번째 컨볼루션 계층에 새로운 커널을 추가할 수 있다. 제 2 컨트롤러(180)는 커널 메모리(120, 도 4 참조)로 신호(cs0)를 출력할 수 있다. 커널 메모리(120)는 신호(cs0)에 기초하여 커널들(60b)을 저장할 수 있다.
제 2 컨트롤러(180)는 신호(cs1)를 PEU(140)로 출력할 수 있다. 제 2 컨트롤러(180)는 신호(cs1)가 수신되면, 커널(60b)에 기초하여 입력 데이터에 대해 다시 연산할 수 있다. 연산 결과, 새로운 피처 맵들(62b, 65b), 피처 어레이(70b) 및 출력 데이터(75b)가 생성될 수 있다.
도 11은 신경망 시스템의 동작을 설명하기 위한 흐름도이다. 도 11을 참조하여, 커널이 추가되는 경우에 신경망 시스템의 동작이 설명된다.
S410 동작에서, 컨트롤러(180, 도 4 참조)는 새로운 커널을 생성할 수 있다.
S420 동작에서, PEU(140, 도 4 참조)는 새로운 커널에 기초하여 새로운 피처 맵을 생성할 수 있다. 출력 버퍼(150, 도 4 참조)는 새로 생성된 피처 맵을 로드할 수 있다.
S430 동작에서, PEU(140)는 제 2 컨트롤러(180)의 제어에 의해 컨볼루션 연산 및 풀링 연산을 다시 수행할 수 있다. 즉, PEU(140)는 갱신된 커널들 및 갱신된 피처 맵들에 기초하여, 입력 데이터에 대해 다시 연산할 수 있다.
도 12는 커널이 갱신되는 동작을 설명하기 위한 개념도이다.
도 12를 참조하여서는, 컨트롤러(180, 도 4 참조)가 피처 임계값들(Kth(1)~Kth(n)) 및 차이 임계값들(Dth(1)~Dth(n))을 사용하여 커널들을 갱신하는 동작이 설명된다. 도 12를 참조하는 설명에서, 오차값이 오차 임계값 이상인 것으로 가정된다. 또한, 피처 임계값들(Kth(1), Kth(2))은 각각 3, 4인 것으로 가정된다.
제 2 컨트롤러(180)는 커널들(50, 60, 도 2 참조)을 어떤 방법으로 갱신할지에 대해 각 계층별로 판단할 수 있다. 제 2 컨트롤러(180)는 커널들(50, 60, 도 2 참조)의 개수들을 각각 피처 임계값들(Kth(1), Kth(2))과 비교할 수 있다. 다만, 본 발명은 이에 한정되지 않고, 제 2 컨트롤러(180)는 커널들(50, 60, 도 2 참조)의 개수들 대신 피처 맵들(52, 62, 도 2 참조)의 개수들을 피처 임계값들(Kth(1), Kth(2))과 비교할 수 있다.
첫 번째 컨볼루션 계층의 커널들(50)의 개수는 5일 수 있다. 커널들(50)의 개수가 피처 임계값(Kth(1))보다 크므로, 제 2 컨트롤러(180)는 커널들(50) 중 하나를 삭제할 수 있다. 제 2 컨트롤러(180)는 차이 임계값(Dth(1))에 기초하여, 커널들(50) 중에서 유사한 커널들을 검출할 수 있다. 제 2 컨트롤러(180)는 유사한 커널들 중 하나를 삭제할 수 있다. 제 2 컨트롤러(180)는 피처 맵들(52, 55, 도 2 참조)에서 삭제된 커널에 대응하는 피처 맵들을 삭제할 수 있다. 따라서, 커널들(50) 및 피처 맵들(52, 55)이 커널들(50a) 및 피처 맵들(52a, 55a)로 갱신될 수 있다.
두 번째 컨볼루션 계층의 커널들(60)의 개수는 2일 수 있다. 커널들(60)의 개수가 피처 임계값(Kth(2))보다 작으므로, 제 2 컨트롤러(180)는 새로운 커널을 생성할 수 있다. 신경망 시스템(1000a, 도 4 참조)는 새로운 커널이 추가된 커널들(60b)과 피처 맵(55a)에 대해 다시 연산할 수 있다. 연산 결과, 피처 맵들(62c, 60c), 피처 어레이(70c) 및 출력 데이터(75c)가 생성될 수 있다.
도 13은 커널이 갱신되는 동작을 설명하기 위한 흐름도이다.
S510 동작에서, 컨트롤러(180, 도 4 참조)는 커널 메모리(120, 도 4 참조)로부터 신호(ks)를 수신할 수 있다. 신호(ks)는 커널들에 대한 정보를 포함할 수 있다.
S520 동작에서, 제 2 컨트롤러(180)는 m 번째 계층의 커널들의 개수와 피처 임계값(Kth(m))을 비교할 수 있다. S510 동작이 처음 수행될 때, m은 1일 수 있다.
m 번째 계층의 커널들의 개수가 피처 임계값(Kth(m)) 이상인 경우, 절차는 S520 동작으로부터 S530 동작으로 이동한다. S530 동작에서, 제 2 컨트롤러(180)는 m 번째 계층의 유사한 커널들 중 하나의 커널을 삭제할 수 있다.
m 번째 계층의 커널들의 개수가 피처 임계값(Kth(m)) 미만인 경우, 절차는 S520 동작으로부터 S535 동작으로 이동한다. S535 동작에서, 제 2 컨트롤러(180)는 m 번째 계층에 새로운 커널을 추가할 수 있다.
S540 동작에서, 제 2 컨트롤러(180)는 갱신된 커널들에 기초하여 피처 맵들을 갱신할 수 있다.
S550 동작에서, 제 2 컨트롤러(180)는 m과 n을 비교할 수 있다. n은 제 2 컨트롤러(180)에 포함된 계층들의 개수일 수 있다.
m이 n보다 작은 경우, 절차는 S550 동작으로부터 S555 동작으로 이동한다. S555 동작에서, m은 1만큼 증가될 수 있다. 제 2 컨트롤러(180)는 m이 n이 될 때까지 S520 동작 내지 S540 동작을 반복하여 수행할 수 있다.
m이 n인 경우, 절차는 S550 동작으로부터 S560 동작으로 이동한다. S560 동작에서, 분류기(200, 도 4 참조)는 출력 피처 맵에 기초하여 출력 데이터를 생성할 수 있다. 분류기(200)는 출력 데이터에 기초하여 오차값을 계산할 수 있다. 오차값이 오차 에러값보다 작은 경우, 입력 데이터에 대한 연산이 완료될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안 되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (16)

  1. 제 1 커널 및 제 2 커널을 포함하는 제 1 커널 집합과 입력 데이터를 연산하여 제 1 피처 맵들을 생성하는 피처 추출기; 및
    상기 제 1 피처 맵들 및 하나 이상의 가중치에 기초하여, 상기 입력 데이터에 대한 연산의 결과값을 생성하는 분류기를 포함하되,
    상기 피처 추출기는 상기 제 1 커널과 상기 제 2 커널 사이의 차이값 및 상기 결과값에 기초하여, 상기 제 1 커널 및 상기 제 2 커널 중 적어도 하나의 커널을 삭제할지 여부를 결정하는 신경망 시스템.
  2. 제 1 항에 있어서,
    상기 피처 추출기는 입력된 이미지를 상기 입력 데이터로 변환하고,
    상기 분류기는 상기 이미지가 포함되는 범주를 판별하고,
    상기 결과값은 상기 판별된 범주를 나타내는 신경망 시스템.
  3. 제 1 항에 있어서,
    상기 피처 추출기는 상기 입력 데이터와 상기 제 1 커널 집합을 컨볼루션 연산하여 상기 제 1 피처 맵들을 생성하는 신경망 시스템.
  4. 제 1 항에 있어서,
    상기 분류기는:
    상기 제 1 피처 맵들에 기초하여, 벡터 형태의 피처 어레이를 생성하고;
    상기 피처 어레이에 상기 하나 이상의 가중치를 곱하여 상기 결과값을 생성하는 신경망 시스템.
  5. 제 1 항에 있어서,
    상기 차이값은 상기 제 1 커널의 커널값들과 상기 제 2 커널의 커널값들 사이의 차이값들의 합에 비례하는 신경망 시스템.
  6. 제 1 항에 있어서,
    상기 피처 추출기는 상기 차이값, 상기 결과값 및 상기 제 1 피처 맵들의 개수에 기초하여, 상기 적어도 하나의 커널을 삭제할지 여부를 결정하는 신경망 시스템.
  7. 제 6 항에 있어서,
    상기 분류기는 상기 입력 데이터에 대한 상기 연산의 정답값 및 상기 결과값 사이의 차이에 기초하여 오차값을 계산하고,
    상기 피처 추출기는 상기 오차값이 오차 임계값 보다 크고 상기 제 1 피처 맵들의 상기 개수가 피처 임계값 보다 큰 경우, 상기 차이값에 따라 상기 적어도 하나의 커널을 삭제할지 여부를 결정하는 신경망 시스템.
  8. 제 7 항에 있어서,
    상기 피처 추출기는 상기 차이값이 차이 임계값보다 작은 경우 상기 적어도 하나의 커널을 삭제하는 신경망 시스템.
  9. 제 7 항에 있어서,
    상기 피처 추출기는 상기 차이값이 상기 제 1 커널 집합에 포함되는 커널들 사이의 차이값들 중에서 가장 작은 경우, 상기 적어도 하나의 커널을 삭제하는 신경망 시스템.
  10. 제 7 항에 있어서,
    상기 피처 추출기는 상기 오차값이 상기 오차 임계값 보다 크고 상기 제 1 피처 맵들의 상기 개수가 상기 피처 임계값보다 작은 경우, 새로운 커널을 생성하는 신경망 시스템.
  11. 제 10 항에 있어서,
    상기 분류기는 상기 새로운 커널에 기초하여 새로운 결과값을 생성하고,
    상기 피처 추출기는 상기 새로운 결과값에 기초하여 계산되는 새로운 오차값이 상기 오차값 보다 작도록 상기 새로운 커널을 생성하는 신경망 시스템.
  12. 제 10 항에 있어서,
    상기 피처 추출기는 상기 새로운 커널에 기초하여 상기 제 1 피처 맵들을 갱신하는 신경망 시스템.
  13. 제 1 항에 있어서,
    상기 제 1 피처 맵들은 상기 제 1 커널 집합에 포함되는 커널들과 대응하고,
    상기 피처 추출기는 상기 제 1 피처 맵들 중 상기 적어도 하나의 커널에 대응하는 적어도 하나의 제 1 피처 맵을 삭제하는 신경망 시스템.
  14. 제 1 항에 있어서,
    상기 피처 추출기는 상기 제 1 피처 맵들과 제 2 커널 집합을 연산하여 제 2 피처 맵들을 생성하고,
    상기 분류기는 상기 제 2 피처 맵들 및 상기 하나 이상의 가중치에 기초하여 상기 결과값을 생성하는 신경망 시스템.
  15. 제 14 항에 있어서,
    상기 피처 추출기는:
    상기 차이값, 상기 결과값 및 상기 제 1 커널 집합에 포함되는 커널들의 개수에 기초하여, 상기 적어도 하나의 커널을 삭제할지 여부를 결정하고;
    상기 차이값, 상기 결과값 및 상기 제 2 커널 집합에 포함되는 커널들의 개수에 기초하여, 상기 제 2 커널 집합에 포함되는 상기 커널들 중 적어도 하나를 삭제할지 여부를 결정하는 신경망 시스템.
  16. 제 14 항에 있어서,
    상기 피처 추출기는 상기 제 1 커널 집합에 포함되는 커널들의 개수와 상기 제 2 커널 집합에 포함되는 커널들의 개수의 합, 상기 차이값 및 상기 결과값에 기초하여, 상기 제 1 커널 집합에 포함되는 커널들 및 상기 제 2 커널 집합에 포함되는 커널들 중 적어도 하나를 삭제할지 여부를 결정하는 신경망 시스템.
KR1020190052433A 2019-05-03 2019-05-03 이미지를 분석하기 위한 신경망 시스템 KR20200130775A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190052433A KR20200130775A (ko) 2019-05-03 2019-05-03 이미지를 분석하기 위한 신경망 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190052433A KR20200130775A (ko) 2019-05-03 2019-05-03 이미지를 분석하기 위한 신경망 시스템

Publications (1)

Publication Number Publication Date
KR20200130775A true KR20200130775A (ko) 2020-11-20

Family

ID=73697221

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190052433A KR20200130775A (ko) 2019-05-03 2019-05-03 이미지를 분석하기 위한 신경망 시스템

Country Status (1)

Country Link
KR (1) KR20200130775A (ko)

Similar Documents

Publication Publication Date Title
CN108985317B (zh) 一种基于可分离卷积和注意力机制的图像分类方法
US10432653B2 (en) Method and apparatus for detecting anomaly traffic
CN111583263B (zh) 一种基于联合动态图卷积的点云分割方法
CN106415594B (zh) 用于面部验证的方法和系统
CN108734210B (zh) 一种基于跨模态多尺度特征融合的对象检测方法
CN112699847A (zh) 基于深度学习的人脸特征点检测方法
CN109063719B (zh) 一种联合结构相似性和类信息的图像分类方法
KR102061935B1 (ko) 딥 신경망을 이용한 정보 이전 방법 및 그 장치
CN110929080B (zh) 基于注意力和生成对抗网络的光学遥感图像检索方法
CN105528638A (zh) 灰色关联分析法确定卷积神经网络隐层特征图个数的方法
WO2021042857A1 (zh) 图像分割模型的处理方法和处理装置
CN110490265B (zh) 一种基于双路卷积和特征融合的图像隐写分析方法
CN113536925B (zh) 一种基于引导注意力机制的人群计数方法
CN113496247A (zh) 估计生成对抗网络的隐含似然
CN112307982A (zh) 基于交错增强注意力网络的人体行为识别方法
CN111988614A (zh) 哈希编码优化方法、设备及可读存储介质
CN110599443A (zh) 一种使用双向长短期记忆网络的视觉显著性检测方法
CN112036260A (zh) 一种自然环境下多尺度子块聚合的表情识别方法及系统
CN112215298A (zh) 模型训练方法、装置、设备及可读存储介质
CN114419406A (zh) 图像变化检测方法、训练方法、装置和计算机设备
CN114861838A (zh) 一种基于神经元复杂动力学的脉冲神经类脑智能分类方法
CN115941112A (zh) 一种便携式隐蔽通信方法、计算机设备及存储介质
CN116935403A (zh) 一种基于动态采样的端到端文字识别方法
CN109146886B (zh) 一种基于深度密度的rgbd图像语义分割优化方法
KR20200130775A (ko) 이미지를 분석하기 위한 신경망 시스템