KR20190137684A - 신경망의 희박 활성화 맵의 무손실 압축 - Google Patents

신경망의 희박 활성화 맵의 무손실 압축 Download PDF

Info

Publication number
KR20190137684A
KR20190137684A KR1020190053965A KR20190053965A KR20190137684A KR 20190137684 A KR20190137684 A KR 20190137684A KR 1020190053965 A KR1020190053965 A KR 1020190053965A KR 20190053965 A KR20190053965 A KR 20190053965A KR 20190137684 A KR20190137684 A KR 20190137684A
Authority
KR
South Korea
Prior art keywords
tensor
block
activation map
encoding
compression
Prior art date
Application number
KR1020190053965A
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 삼성전자주식회사
Publication of KR20190137684A publication Critical patent/KR20190137684A/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/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • 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/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/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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/607Selection between different types of compressors
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/70Type of the data to be coded, other than image and sound

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

신경망의 활성화 맵의 무손실 압축을 제공하는 시스템 및 방법이 제공된다. 이 시스템에는 포맷터와 인코더가 포함되어 있다. 포맷터는 활성화 맵에 대응하는 텐서를 H x W x C의 사이즈를 갖는 적어도 하나의 값 블록으로 포맷팅한다(여기서, H는 텐서의 높이를, W는 텐서의 폭을, C는 텐서의 채널 수를 나타냄). 인코더는 적어도 하나의 무손실 압축 모드를 사용하여 적어도 하나의 블록을 텐서의 다른 블록들과 독립적으로 인코딩한다. 적어도 하나의 블록을 인코딩하도록 선택된 적어도 하나의 무손실 압축 모드는 텐서의 다른 블록을 인코딩하도록 선택된 무손실 압축 모드와 다를 수 있다.

Description

신경망의 희박 활성화 맵의 무손실 압축{LOSSLESS COMPRESSION OF SPARSE ACTIVATION MAPS OF NEURAL NETWORKS}
본 명세서에서 개시된 주제는 일반적으로 메모리 요구를 줄이기 위한, 특히 신경망의 트레이닝 동안 신경망의 희박 활성화 맵의 무손실 인코딩/디코딩 시스템 및 방법을 제공하기 위한 것이다.
심신경망(Deep neural network)은 최근 컴퓨터 비전(이미지 분류, 이미지 분할), 자연어 처리(단어 수준 예측, 음성 인식 및 기계 번역)에서부터 의료 영상화에 이르기까지 광범위한 응용 분야에 지배적인 역할을 해 왔다. 전용 하드웨어는 가능한한 효율적으로 심신경망을 실행하도록 설계되었다. 그러나 소프트웨어 측면에서, 일부 연구는 런타임 동안 이러한 신경망의 메모리 및 계산 요구 사항을 최소화하는데 중점을 두고 있다.
제한된 메모리를 갖는 임베디드 장치상에서 신경망을 훈련 시키려고 할 때, 가능한 한 알고리즘의 메모리 요구를 최소화하는 것이 중요하다. 훈련을 하는 동안 대부분의 메모리는 실제로 활성화 맵에 의해 점유된다. 예를 들어, 현재의 심신경망 시스템의 활성화 맵은 시스템에 필요한 총 메모리의 약 60 %에서 85 %를 소모한다. 따라서 활성화 맵과 관련된 메모리 사용 공간을 줄이는 것은 훈련 알고리즘의 전체 메모리 사용량을 줄이는 데 중요한 부분이 된다.
정리된 선형 유닛(Rectified Linear Unit: 이하, ReLU)이 활성화 기능으로서 사용되는 신경망에서, 활성화 맵은 희소(또는, 희박)하게 되는 경향이 있다. 예를 들어, Inception-V3 모델에서 대다수의 활성화 맵은 희박성이 50 % 이상이고 경우에 따라 90 %를 초과한다. 따라서 훈련 알고리즘의 메모리 요구 사항을 줄이기 위해 이 희박성을 목표로하는 압축 시스템에 대한 강력한 시장 요구가 있어 왔다.
본 발명의 목적은 신경망의 트레이닝 동안 신경망의 메모리 및 계산 요구 사항을 최소화할 수 있는 희박 활성화 맵의 무손실 인코딩/디코딩 시스템 및 방법을 제공하는데 있다.
본 발명의 예시적인 실시 예는 포맷터 및 인코더를 포함할 수 있는 신경망의 활성화 맵을 무손실 압축하기 위한 시스템을 제공한다. 포맷터는 활성화 맵에 대응하는 텐서를 적어도 하나의 값 블록으로 포맷팅할 수 있으며, 상기 텐서의 크기는 H x W x C이고, H는 텐서의 높이, W는 텐서의 폭, C는 텐서의 채널 수를 나타낸다. 인코더는 적어도 하나의 무손실 압축 모드를 사용하여 적어도 하나의 값 블록을 텐서의 다른 블록들과 독립적으로 인코딩할 수 있다. 일 실시 예에서, 적어도 하나의 무손실 압축 모드는 지수-골룸(Exponential-Golomb) 인코딩, 희박-지수-골룸(Sparse-Exponential-Golomb) 인코딩, 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 인코딩, 골룸-라이스(Golomb-Rice) 인코딩, 지수-가수(Exponent-Mantissa) 인코딩, 제로 인코딩(Zero-encoding), 고정 길이(Fixed length) 인코딩, 그리고 희박 고정 길이(Sparse Fixed length) 인코딩을 포함하는 그룹으로부터 선택된다. 다른 실시 예에서, 적어도 하나의 블록을 인코딩하도록 선택된 적어도 하나의 무손실 압축 모드는 텐서의 다른 블록을 인코딩하도록 선택된 무손실 압축 모드와 다를 수 있다. 또 다른 실시 예에서, 인코더는 복수의 무손실 압축 모드를 사용하여 텐서의 다른 블록들과 독립적으로 적어도 하나의 블록을 인코딩함으로써 적어도 하나의 블록을 추가로 인코딩할 수 있다.
다른 예시적인 실시 예는 신경망의 활성화 맵을 무손실 압축하는 방법을 제공하는데, 이 방법은 포맷터에서 H x W x C(여기서, H는 텐서의 높이, W는 텐서의 폭, C는 텐서의 채널 수)의 사이즈를 갖는 텐서로서 구성된 적어도 하나의 활성화 맵을 수신하는 단계, 포매터에 의해 텐서를 적어도 하나의 값 블록으로 포맷팅하는 단계, 그리고 적어도 하나의 무손실 압축 모드를 사용하여 상기 텐서의 다른 블록들과 독립적으로 상기 적어도 하나의 블록을 인코더에 의해 인코딩하는 단계를 포함한다.
또 다른 예시적인 실시 예는 신경망의 활성화 맵을 무손실로 압축 해제하는 방법을 제공하며, 이 방법은, 활성화 맵의 값들의 적어도 하나의 압축 블록을 나타내는 비트스트림을 디코더에서 수신하는 단계, 상기 디코더에 의해, 적어도 하나의 압축 해제값 블록을 형성하기 위해 상기 적어도 하나의 압축값 블록을 압축 해제하는 단계를 포함하되, 상기 적어도 하나의 압축 해제값 블록은 상기 적어도 하나의 압축값 블록을 압축하는데 사용되는 적어도 하나의 무손실 압축 모드에 대응하는 적어도 하나의 압축 해제 모드를 사용하여 상기 활성화 맵의 다른 블록들로부터 독립적으로 압축 해제되며; 그리고 상기 적어도 하나의 블록을 H x W x C(여기서, H는 텐서의 높이, W는 텐서의 폭, C는 텐서의 채널 수)의 사이즈를 갖는 텐서(압축 해제된 활성화 맵)로 변형시키는 단계를 포함한다.
상술한 특징에 따른 본 발명에 따르면, 트레이닝 동안 신경망의 메모리 및 계산 요구 사항을 최소화하는 신경망의 희박 활성화 맵의 무손실 인코딩/디코딩 시스템을 구현할 수 있다.
이하의 섹션에서, 본 명세서에 개시된 주제의 특징은 도면에 도시된 예시적인 실시 예를 참조하여 설명하기로 한다.
도 1a 및 도 1b는 본 발명의 실시 예에 따라 심신경망의 활성화 맵을 인코딩/디코딩하기 위한 압축기 및 압축 해제기의 예시적인 실시 예들을 각각 도시한다.
도 2a 및 도 2b는 각각 본 발명의 실시 에에 따른 심신경망의 활성화 맵의 인코딩 방법 및 디코딩 방법의 실시 예를 도시한 것이다.
도 3은 본 발명의 특징에 따른 신경망의 계층에서 활성화 맵의 동작 순서를 도시한다.
이하의 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 다수의 특정 세부 사항이 설명된다. 그러나 당업자는 개시된 특징들이 이러한 특정 세부 사항들 없이 실시될 수 있음을 이해할 것이다. 다른 예들에서, 공지된 방법들, 절차들, 구성 요소들 및 회로들은 여기에 개시된 주제를 모호하게 하지 않기 위해 상세히 설명되지 않았다.
본 명세서에서 "하나의 실시 예" 또는 "일 실시 예"는 본 실시 예와 관련하여 기술된 특정 특징, 구조 또는 특성이 본 명세서에 개시된 적어도 하나의 실시 예에 포함될 수 있다는 것을 의미한다. 따라서, 본 명세서 전체에 걸쳐 "하나의 실시 예에서" 또는 "일 실시 예에서" 또는 "일 실시 예에 따라"(또는, 유사한 의미를 갖는 다른 표현들)은 모두 반드시 동일한 실시 예를 지칭하지는 않는다. 또한, 특정 피처, 구조 또는 특성은 하나 이상의 실시 예에서 임의의 적합한 방식으로 결합될 수 있다. 이와 관련하여, 본 명세서에 사용된 바와 같이, "예시적인"이라는 단어는 "예시, 실례 또는 예시를 제공함"을 의미한다. "예시적인" 것으로 여기에서 설명된 임의의 실시 예는 다른 실시 예보다 반드시 바람직하거나 유리한 것으로 해석되어서는 안된다. 또한, 여기에서 논의의 문맥에 따라, 단수는 대응하는 복수의 형태를 포함할 수 있고, 복수의 용어는 상응하는 단수 형태를 포함할 수 있다. 본 명세서에 도시되고 논의된 다양한 도면(구성 요소도 포함)은 단지 예시적인 목적을 위한 것이며, 실제 척도로 그려진 것은 아니라는 점에 유의해야 한다. 마찬가지로, 다양한 파형 및 타이밍도가 단지 예시적인 목적을 위해 도시된다. 예를 들어, 일부 요소의 치수는 명확성을 위해 다른 요소에 비해 과장될 수 있다. 또한, 적절한 것으로 고려되는 경우, 참조 부호는 대응하는 그리고/또는 유사한 요소를 나타내기 위해 도면들 사이에서 반복되었다.
본 명세서에 사용된 용어는 특정 예시적인 실시 예를 설명하기 위한 것이며, 청구된 주제를 한정하려는 것은 아니다. 본원에서 사용된 단수 형태 "a", "an" 및 "the"는 문맥상 다르게 지시하지 않는한 복수 형태를 포함하고자 한다. 본 명세서에서 사용되는 "포함하다" 그리고/또는 "포함하는"이라는 용어는 명시된 특징, 정수, 단계, 동작, 구성 요소 그리고/또는 구성 요소의 존재를 나타내지만, 존재를 배제하지 않는다는 것이 잘 이해될 것이다. 또는, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 구성 요소 그리고/또는 그룹의 추가를 포함할 수 있다. 여기에 사용된 "첫 번째", "두 번째" 등의 용어는 앞에 명시된 명사의 레이블로 사용되며 명시적으로 정의되지 않은 한 모든 유형의 순서(예 : 공간적, 시간적, 논리적 등)를 암시하지 않는다, 또한, 동일하거나 유사한 기능을 갖는 부품, 부품, 블록, 회로, 유닛 또는 모듈을 지칭하기 위해 둘 이상의 도면에 걸쳐 동일한 참조 번호가 사용될 수 있다. 그러나 이러한 사용법은 설명의 간소화 및 논의의 용이함을 위해서만 사용된다. 그러한 구성 요소 또는 유닛의 구성 또는 구조적 세부 사항이 모든 실시 예에 걸쳐 동일하다는 것을 의미하지 않거나 공통으로 참조된 부품/모듈이 본 명세서에 개시된 특정 실시 예의 교시를 구현하는 유일한 방법이라는 것을 의미하지는 않는다.
달리 정의되지 않는 한, 본 명세서에서 사용된 모든 용어(기술 및 과학 용어 포함)는 이 주제가 속하는 기술 분야의 당업자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 또한, 일반적으로 사용되는 사전에서 정의된 용어와 같은 용어는 관련 기술의 맥락에서 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 이상적인 또는 지나치게 형식적인 의미로 해석되지 않는 한, 명시적인 것으로 여기에서 정의된다.
본 명세서에서 개시된 주제는, 특히 심신경망의 훈련 동안 메모리 요구 사항을 감소시키기 위해, 신경망의 활성화 맵의 무손실 인코딩/디코딩을 제공하는 시스템 및 방법에 관한 것이다. 인코딩 및 디코딩 단계는 다른 계층의 활성화 맵과 독립적으로, 그리고 필요에 따라 학습 알고리즘에 의해 신경망의 각 계층에 대한 활성화 맵에 대해 수행될 수 있다. 본 명세서에 개시된 무손실 인코딩/디코딩 기술은 모든 수준의 희박성(0 % 및 거의 100 % 희박성 포함)을 압축할 수 있지만, 여기에 개시된 기술은 활성화 맵에서 제로 값의 수가 상대적으로 높으면 최적화될 수 있다. 즉, 본 명세서에 개시된 시스템 및 방법은 상응하는 높은 정도의 희박성에 대해보다 높은 수준의 압축을 달성한다. 부가적으로, 본 명세서에 개시된 주제는 보다 큰 수준의 압축을 위해 활성화 맵의 데이터의 희박성을 이용하기 위해 사용될 수 있는 기존 압축 알고리즘에 대한 몇 가지 수정을 제공한다.
일 실시 예에서, 인코더는 입력으로서 H x W x C 사이즈의 텐서를 수신하도록 구성될 수 있다(H는 입력 텐서의 높이, W는 입력 텐서의 폭, 그리고 C는 입력 텐서의 채널 수에 대응). 수신된 텐서는 본 명세서에서 "압축 유닛"으로 지칭되는 더 작은 블록으로 포맷될 수 있다. 압축 유닛은 다양한 상이한 압축 모드를 사용하여 독립적으로 압축될 수 있다. 인코더에 의해 생성된 출력은 압축된 비트스트림이다. 압축 유닛이 압축 해제될 때, 그것은 H x W x C 사이즈의 텐서의 적어도 일부로서 원래의 형상으로 재포맷된다.
여기에 개시된 기술들은, 예를 들어, 이에 한정되는 것은 아니지만, 컴퓨터 비젼(이미지 분류, 이미지 세그멘테이션), 자연어 처리(단어 분류), 및 텍스트 표현(예를 들어, 레벨 예측, 음성 인식 및 기계 번역) 및 의료 영상과 같은 애플리케이션을 제공하도록 구성된 신경망의 활성화 맵에 대한 메모리 요구를 감소시키기 위해 적용될 수 있다. 신경망 애플리케이션은 자율 차량, 모바일 장치, 로봇 그리고/또는 기타 저전력 장치(예를 들면, 무인기) 내에서 사용될 수 있다. 여기에 개시된 기술들은 훈련 동안 그리고/또는 전용 장치에 내장된 신경망에 의한 메모리 소비를 감소시킨다. 여기에 개시된 기술들은 범용 처리 장치 또는 전용 장치에서 구현될 수 있다.
도 1a 및 도 1b는 본 명세서에 개시된 특징에 따른 심신경망의 활성화 맵을 인코딩/디코딩하기 위한 압축기(100) 및 압축 해제기(110)의 예시적인 실시 예들을 각각 도시한다. 압축기(100) 및 압축 해제기(110)를 형성하는 것으로 도시된 다양한 구성 요소는 모듈로서 구현될 수 있다. 본 명세서에서 사용되는 "모듈"이라는 용어는 모듈과 관련하여 본 명세서에 설명된 기능성을 제공하도록 구성된 소프트웨어, 펌웨어 그리고/또는 하드웨어의 임의의 조합을 나타낸다. 소프트웨어는 소프트웨어 패키지, 코드(Code) 그리고/또는 명령어 세트 또는 명령어들로서 구현될 수 있으며, 여기에 기술된 임의의 구현 예에서 사용되는 "하드웨어"라는 용어는, 예를 들면, 하드 와이어드 회로, 프로그램 가능 회로, 상태 머신 회로, 그리고/또는 프로그램 가능 회로들의 단독으로 또는 임의의 조합에 의해 실행되는 명령어들을 저장하는 펌웨어를 포함할 수 있다. 모듈은 집적 회로(IC), 시스템 온칩(SoC) 등과 같은 더 큰 시스템의 일부를 형성하는 회로로서 집합적으로 또는 개별적으로 구현될 수 있다.
활성화 맵을 압축하기 전에, 압축기(100) 및 압축 해제기(110)는 상응하는 압축 및 압축 해제 모드를 사용하도록 구성된다. 신경망의 각 계층(Layer)에 대한 활성화 맵은 훈련 중에 신경망의 메모리 요구 사항을 줄이기 위해 도 1a 및 도 1b의 압축기/압축 해제기 쌍에 의해 처리될 수 있다.
도 1a에 도시된 바와 같이, 신경망의 한 계층에서 생성된 활성화 맵(101)은 H x W X C 사이즈의 텐서로 구성되며, 여기서, H는 입력 텐서의 높이에, W는 입력 텐서의 폭에, 그리고 C는 입력 텐서의 채널 수에 대응한다. 즉, 신경망의 계층에서 활성화 맵은 H x W x C 사이즈의 단일 텐서로서 저장된다. 활성화 맵(101)의 값이 부동 소수로부터 정수로 양자화되지 않은 경우, 활성화 맵(101)의 양자화된 값은 양자화기(102)에 의해 임의의 비트 폭(즉, 8 비트, 12 비트, 16 비트 등)을 갖는 정수 값으로 양자화되어 양자화된 활성화 맵(103)을 형성할 수 있다. 필요한 경우, 양자화기(102)에 의한 양자화는 추가적인 압축을 도입하는 방법을 고려할 수 있지만, 정확도를 희생이 발생한다.
압축을 용이하게 하기 위해, H x W x C 사이즈의 양자화된 활성화 맵(103)은 포맷터(104)에 의해 각 블록이 여기에서 "압축 유닛"(105)으로 지칭되는 값 블록으로 포맷될 수 있다. 즉, 텐서 사이즈(H x W x C)의 활성화 맵(103)은 보다 작은 압축 단위들로 나뉠 수 있다. 압축 유닛(105)은 K > 0 인 채널-위주 순서의 K 개의 엘리먼트(또는 값들); 스캔 라인(즉, 각 블록은 활성화 맵의 행일 수 있는); 또는 K > 0 인 행-위주 순서의 K 개의 엘리먼트(또는 값들)를 포함할 수 있다. 압축 유닛(105)을 형성하기 위한 다른 기술들 또는 접근법들 또한 가능하다. 예를 들어, 대응하는 신경망 하드웨어에 대한 활성화 맵의 로딩 패턴이 블록 포매팅 기술의 기초로 사용될 수 있다.
각각의 압축 유닛(105)은 비트스트림(107)을 형성하기 위해 인코더(106)에 의해 다른 압축 유닛들과 독립적으로 무손실 부호화되거나 압축될 수 있다. 각각의 압축 유닛(105)은 여기에는 "압축 모드" 또는 간단히 "모드"로 지칭되는 다수의 압축 기술들 중 임의의 것을 사용하여 무손실 부호화 또는 압축된다. 무손실 압축 모드의 예로는 지수-골룸(Exponential-Golomb) 인코딩, 희박-지수-골룸(Sparse-Exponential-Golomb) 인코딩, 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 인코딩, 골룸-라이스(Golomb-Rice) 인코딩, 지수-가수(Exponent-Mantissa) 인코딩, 제로 인코딩(Zero-encoding), 고정 길이(Fixed length) 인코딩, 그리고 희박 고정 길이(Sparse Fixed length) 인코딩을 포함할 수 있지만, 이것들에만 국한되지는 않는다. 예시적인 압축 모드의 추가 또는 대체 중 어느 하나의 방식으로 다른 무손실 인코딩 기술이 사용될 수 있음을 이해해야 한다. 하지만, 희박-지수-골룸(Sparse-Exponential-Golomb) 및 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 압축 모드들을 제외하고 많은 예제 압축 모드가 공개적으로 사용 가능하거나 공개적으로 사용 가능한 압축 모드를 기반으로 한다는 점도 알아야 한다. 희박-지수-골룸(Sparse-Exponential-Golomb) 및 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 압축 모드들은 여기에서 제공될 것이다.
지수-골룸(Exponential-Golomb) 인코딩은 더 작은 수에 더 짧은 코드가 할당되는 가변 길이 코드를 할당하는 잘 알려진 압축 모드이다. 숫자를 인코딩하는 데 사용되는 비트 수는 기하급수적으로 증가하며, 일반적으로 k차 파라미터라고 칭하는 하나의 파라미터는 비트 수가 증가하는 속도를 제어한다. 아래 의사 코드(Pseudocode)는 지수-골룸(Exponential-Golomb) 압축 모드의 세부적인 예를 제공한다.
{Let x, x >= 0 be the input, let k be the parameter (order)
Generate output bitstream: <Quotient Code><Remainder Code>:
Quotient Code:
Encode q = floor (x / 2^k) using 0 order exp-Golomb code:
z = binary (q + 1)
numBits = len (z)
Write numBits 1 zero bits followed by z, and denote by u
Remainder Code:
Encode r = x % 2^k in binary, and denote by f = binary (r)
Concatenate u,f to produce output bitstream}
지수-골룸(Exponential-Golomb) 압축 모드의 예는 다음과 같다:
{x = 23, k = 3
q = floor (23 / 2^3) = 2
z = binary (2 + 1) = binary (3) = 11
numBits = len (z) = 2
u = 011 (2 1 = 1 zeros followed by z)
f = binary (r) = binary (23 % 8) = binary (7) = 111
Final output = 011 + 111 = 011111}
표 1은 입력 값 x=0~29 및 차수 k = 0~3에 대한 지수-골룸(Exponential-Golomb) 압축 모드의 값을 나타낸다.
x k = 0 k = 1 k = 2 k = 3
0 1 10 100 1000
1 010 11 101 1001
2 011 0100 110 1010
3 00100 0101 111 1011
4 00101 0110 01000 1100
5 00110 0111 01001 1101
6 00111 001000 01010 1110
7 0001000 001001 010110 1111
8 0001001 001010 01100 010000
9 0001010 001011 01101 010001
10 0001011 001100 01110 010010
11 0001100 001101 01111 010011
12 0001101 001110 0010000 010100
13 0001110 001111 0010001 010101
14 0001111 00010000 0010010 010110
15 000010000 00010001 0010011 010111
16 000010001 00010010 0010100 011000
17 000010010 00010011 0010101 011001
18 000010011 00010100 0010110 011010
19 000010100 00010101 0010111 011011
20 000010101 00010110 0011000 011100
21 000010110 00010111 0011001 011101
22 000010111 00011000 0011010 011110
23 000011000 00011001 0011011 011111
24 000011001 00011010 0011100 00100000
25 000011010 00011011 0011101 00100001
26 000011011 00011100 0011110 00100010
27 000011100 00011101 0011111 00100011
28 000011101 00011110 000100000 00100100
29 000011110 00011111 000100001 00100101
희박-지수-골룸(Sparse-Exponential-Golomb) 압축 모드는 인코딩될 값 x가 0이면, 출력 비트스트림에서 x 값이 "1"로 표현되는 지수-골룸(Exponential-Golomb) 압축 모드의 확장 또는 변형이다. 그렇지 않은 경우 지수-골룸(Exponential-Golomb) 인코딩은 "0"을 더한 다음, 표준 지수-골룸(Exponential-Golomb)을 사용하여 값 x-1을 인코딩한다. 블록(압축 유닛) 값이 8-비트인 일 실시 예에서, 차수 k = 4가 최상의 결과를 제공할 수 있다.
희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 압축 모드는 다음 규칙을 사용하는 희박-지수-골룸(Sparse-Exponential-Golomb) 압축 모드에 대한 확장 또는 변형이다:
(1) 값들이 압축 단위로 인코딩되기 전에, 최소 넌제로(Non-zero) 값이 결정되며, 이 값이 변수 y로 표시될 수 있다.
(2) 변수 y는 지수-골룸(Exponential-Golomb) 압축 모드를 사용하여 인코딩된다.
(3) 인코딩될 값 x가 0이면, 그것은 "1"로 부호화되고,
(4) 그렇지 않으면 "0"이 비트스트림에 부가되고, 이후 x-y는 지수-골룸(Exponential-Golomb) 압축 모드를 사용하여 인코딩된다.
골룸-라이스(Golomb-Rice) 압축 모드 및 지수-가수(Exponent-Mantissa) 압축 모드는 잘 알려진 압축 알고리즘이다. 아래의 의사 코드(Pseudocode)는 골룸-라이스(Golomb-Rice) 압축 모드의 예시적인 세부 사항을 보여준다.
{Let x, x >= 0 be the input and M be the parameter. M is a power of 2.
q = floor (x / M)
r = x % M
Generate output bitstream: <Quotient Code><Remainder Code>:
Quotient Code:
Write q length string of 1 bits
Write a 0 bit
Remainder Code: binary (r) in log2 (M) bits}
예시적인 골룸-라이스(Golomb-Rice) 압축 모드는 다음과 같다:
{x = 23, M = 8, log2 (M) = 3
q = floor (23 / 8 ) = 2
r = 7
Quotient Code: 110
Remainder Code: 111
Output = 110111}
제로 인코딩(Zero-encoding) 압축 모드는 압축 유닛이 완전히 제로로 형성되는지 여부를 검사하고, 만일 그렇다면, 비어있는 비트스트림이 리턴된다. 압축 단위에 적어도 하나의 0이 아닌 값이 포함되어 있으면 제로 인코딩(Zero-encoding) 압축 모드를 사용할 수 없음을 잘 알아야 한다.
고정 길이(Fixed length) 인코딩 압축 모드는 압축을 수행하지 않는 기본 또는 디폴트 압축 모드이며, 고정된 비트 수를 사용하여 압축 유닛의 값을 단순히 인코딩한다.
마지막으로, 희박 고정 길이(Sparse Fixed length) 인코딩 압축 모드는, 인코딩될 값 x가 0인 경우에는 1로 인코딩되고, 그렇지 않으면 0이 추가되고 넌-제로(Non-zero) 값을 인코딩하기 위해 고정된 비트 수가 사용되는 점을 제외하고는 고정 길이 인코딩(Fixed length encoding) 압축 모드와 동일하다.
다시 도 1a를 참조하면, 인코더(106)는 압축된 비트스트림(107)을 48-비트로 시작하는데, 여기서 16-비트는 입력된 텐서의 H, W 및 C를 각각 나타낸다. 각각의 압축 유닛(105)은 이용 가능한 압축 모드마다 반복적으로 압축된다. 각 압축 유닛에 대해 이용 가능한 압축 모드는 활성화 맵의 압축 중에 고정될 수 있다. 일 실시 예에서, 이용 가능한 압축 모드의 전체 범위는 L-비트로 표현될 수 있다. 예를 들어, 4 개의 압축 모드가 이용 가능한 경우, 2-비트 프리픽스(prefix)는 4 개의 이용 가능한 압축 모드에 대응하는 인덱스(즉, 00, 01, 10 및 11)를 지시하기 위해 사용될 수 있다. 다른 실시 예에서, 프리픽스 가변 길이 코딩 기술은 일부 비트를 저장하기 위해 사용될 수 있다. 예를 들어, 인코더(106)에 의해 가장 일반적으로 사용되는 압축 모드의 인덱스는 "0"으로 표현될 수 있고, 제 2, 제 3, 그리고 제 4의 가장 일반적으로 사용되는 압축 모드들은 각각 "10", "110" 그리고 "111"로 표시될 수 있다. 하나의 압축 모드만 사용되는 경우, 압축 단위에 대한 비트스트림의 시작 부분에 색인을 추가하는 것은 불필요하다.
일 실시 예에서, 압축 유닛이 압축될 때, 모든 이용 가능한 압축 모드가 실행될 수 있고 가장 짧은 비트스트림을 생성한 압축 모드가 선택될 수 있다. 선택된 압축 모드에 대한 대응하는 인덱스는 특정 압축 유닛에 대한 비트스트림의 시작에 프리픽스로서 부가될 수 있고, 압축 유닛에 대한 최종 비트스트림은 전체 활성화 맵에 대한 비트스트림에 부가될 수 있다. 이러한 처리는 활성화 맵에 대한 모든 압축 유닛에 대해 반복될 수 있다. 활성화 맵 각각의 개별 압축 유닛은 인접하거나 이웃하는 압축 유닛에 사용된 압축 모드와 다른 압축 모드를 사용하여 압축될 수 있다. 일 실시 예에서, 2 개의 압축 모드와 같은 작은 수의 압축 모드는, 활성화 맵을 압축하는 복잡성을 감소시키기 위해 이용할 수 있다.
도 1b를 참조하면, 압축 해제기(110)는 처음 48-비트를 읽어 H, W 및 C를 복구하고 비트스트림(107)을 한 번에 하나씩 압축한다. 압축 해제기(110)는 L(모드의 인덱스에 대한 비트의 수) 및 압축 유닛 내의 엘리먼트의 수(사용되는 압축 모드에 따라 W 또는 K)를 모두 알고 있다. 즉, 원래 활성화 맵(101)에 대응하는 비트스트림(107)은 디코더(112)에 의해 압축되어 압축 유닛(113)을 형성한다. 압축 유닛(113)은 디포매터(114)에 의해 디포맷되어 H x W x C 사이즈의 텐서를 갖는 양자화된 활성화 맵(115)을 구성한다. 양자화된 활성화 맵(115)은 역양자화기(116)에 의해 역양자화되어 원래의 활성화 맵(117)을 형성할 수 있다.
또한, 도 2a 및 도 2b는 각각 본 명세서에 개시된 주제에 따른 심신경망의 활성화 맵의 인코딩 방법(200) 및 디코딩 방법(210)의 예시적인 실시 예를 도시한다. 신경망의 각 계층에 대한 활성화 맵은 도 2a 및 도 2b의 인코딩/디코딩 방법 쌍에 의해 처리될 수 있다. 활성화 맵을 압축하기 전에, 도 1a 및 도 1b에 도시된 바와 같이 압축기(100) 및 압축 해제기(110)는 대응하는 압축 및 압축 해제 모드를 사용하도록 구성된다.
도 2a에서, 프로세스는 201에서 시작한다. 202에서, 활성화 맵이 수신되어 인코딩된다. 활성화 맵은 신경망의 계층(Layer)에서 생성되었으며, H x W x C 사이즈(H는 입력 텐서의 높이, W는 입력 텐서의 폭, C는 입력 텐서의 채널 수에 대응)의 텐서로 구성된다. 활성화 맵의 값들이 부동 소수점 수로부터 정수로 양자화되지 않았다면, 202에서, 활성화 맵의 비양자화된 값은 양자화된 활성화 맵을 형성하기 위해 임의의 비트 폭을 갖는 정수값으로 양자화될 수 있다.
204에서, 양자화된 활성화 맵은 압축 유닛들로 포맷될 수 있다. 205에서, 각 압축 유닛은 비트스트림을 형성하기 위해 다른 압축 유닛과 독립적으로 무손실 부호화되거나 압축될 수 있다. 각 압축 유닛은 다수의 압축 모드 중 하나를 사용하여 무손실로 인코딩되거나 압축될 수 있다. 무손실 압축 모드의 예로는 지수-골룸(Exponential-Golomb) 인코딩, 희박-지수-골룸(Sparse-Exponential-Golomb) 인코딩, 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 인코딩, 골룸-라이스(Golomb-Rice) 인코딩, 지수-가수(Exponent-Mantissa) 인코딩, 제로 인코딩(Zero-encoding), 고정 길이(Fixed length) 인코딩, 그리고 희박 고정 길이(Sparse Fixed length) 인코딩을 포함할 수 있지만, 이것들에만 국한되지는 않는다. 각각의 압축 유닛(105)은 이용 가능한 압축 모드마다 반복적으로 압축된다. 일 실시 예에서, 압축 유닛이 압축될 때, 모든 이용 가능한 압축 모드가 실행될 수 있고, 가장 짧은 비트스트림을 생성한 압축 모드가 선택될 수 있다. 활성화 맵에 대한 모든 압축 유닛이 인코딩되었을 때, 프로세스는 단계 206에서 활성화 맵을 종료한다.
도 2b에서, 프로세스는 211에서 시작한다. 212에서, 비트스트림이 수신되고 첫 번째 48-비트가 읽혀지고 인코딩된 압축 유닛을 복구한다. 213에서, 각각의 인코딩된 압축 유닛은 디코딩되어 압축된 압축 유닛을 형성한다. 214에서, 각각의 디코딩된 압축 유닛은 활성화 맵을 형성하도록 압축된다. 활성화 맵의 값들이 역양자화되어야 한다면, 215에서 값들은 역양자화되어 역양자화된 활성화 맵을 형성한다. 프로세스는 216에서 활성화 맵을 종료한다.
아래의 예시적인 의사코드(Pseudocode)는 앞서 설명된 방법(200)에 해당한다.
{#Tensor T has size HxWxC
def compress (T):
bitstream = ""
for each channel, c, in C
CU = formatMaps(c)
for each cu in CU
bitstream + = compressCU(cu)
return bitstream
def compressCU(cu)
bitstreams =
generateBitstreamsforAllComprModes(cu)
minBitstreamIdx, minBitstream =
shortestBitstream(bitstreams)
mode = binary(minBitstreammIdx)
bitstream = mode + minBitstream
return bitstream}
아래의 예시적인 의사코드(Pseudocode)는 앞서 설명된 방법(200)에 해당한다.
{def decompress(bitstream):
H,W,C = getActivationMapShape(bitstream[0:48])
bitstream = bitstream[48:]
CU = []
while bitstream 1 = "":
cu , bitstream = decompressCU(bitstream)
CU.append(cu)
return deformatCU (CU, H, W, C)}
# 'decompressUnit'은 압축 모드 인덱스를 나타내기 위해 몇 개의 압축 모드가 사용되고 얼마나 많은 비트가 헤더로 사용되는지 이미 알고 있다. 일 실시 예에서, 사용된 압축 모드의 수는 L이다.# 'decompressUnit'은 또한 압축 단위에 포함된 엘리먼트의 수를 알고 있다. 이 예에서 엘리먼트의 수는 K이다.
# 'decodeNextValue (bitstream, modeIdx)'는 'modeIdx'를 사용하여 다음 값을 디코딩할 올바른 디코더를 선택한다. 또한, 'decodeNextValue (bitstream, modeIdx)'는 비트스트림에서 사용된 비트를 제거한다. 'decodeNextValue (bitstream, modeIdx)'는 디코딩된 값과 스트립된 비트스트림을 반환한다.
{def decompressCU (bitstream):
modeIdx=getComprModeIndex(bitstream[0:L])
bitstream=bitstream[L:]
cu = []
for k in range (K):
val , bitstream = decodeNextValue (bitstream , modeIdx)
cu.append (val)
return cu , bitstream}
도 3은 본 명세서에 개시된 주제에 따른 신경망의 계층(L)에서 활성화 맵의 동작 순서도(300)를 보여준다. 즉, 동작 순서도(300)는 신경망을 훈련시키고 입력으로부터 신경망에 대한 추론을 형성하기 위한 동작 흐름을 나타낸다. 동작 순서도(300)는 계층(L)을 통한 전방 및 후방 처리 방향 모두를 나타낸다. 활성화 맵(도시되지 않음)의 인코딩된(압축된) 표현은 메모리(도시 생략)로부터 판독될 때 비트스트림(301)으로 변환된다. 302에서, 비트스트림은 압축 유닛(303)을 형성하도록 디코딩된다. 압축 유닛(303)은 304에서 변형되어 양자화된 활성화 맵(305)을 형성한다. (다시, 활성화 맵의 양자화는 선택적일 수 있다). 306에서, 양자화된 활성화 맵(305)은 계층(L)에 대한 활성화 맵(307)을 형성하기 위해 역 양자화된다.
활성화 맵(307)은 출력 활성화 맵(308)을 계산하기 위해 신경망의 계층(L)에서 사용된다. 활성화 맵(308)은 309에서 (선택적으로) 양자화되어 양자화된 활성화 맵(310)을 형성한다. 양자화된 활성화 맵(310)은 압축 유닛(312)을 형성하기 위해 311에서 포맷된다. 압축 유닛(312)은 313에서 추후에 사용하기 위해 메모리(도시되지 않음)에 저장되는 비트스트림(314)을 형성하기 위해 인코딩된다.
본 명세서에 나타난 각각의 무손실 압축 모드와 관련된 압축 포텐셜의 일반적인 의미를 제공하기 위해, 활성화 맵의 예시 데이터 세트는 Imagenet 데이터베이스를 사용하여 'Inception V3' 모델에서 10 개의 입력 이미지를 실행함으로써 형성되었다. 'Inception V3' 모델의 모든 계층에 대한 활성화 맵은 데이터 세트(여기서, 데이터 세트 S10이라 칭함)를 형성하기 위해 생성되었다. 각각의 활성화 맵은 독립적으로 압축되고 각 압축 모드에 대해 평균화되어 각 압축 모드에 대한 대표적인 압축 계수를 제공한다. 표 2는 데이터 세트 S10에 대해 결정된 상이한 압축 모드에 대한 대표적인 압축 인자를 나타낸다.
Label Encoding Technique Compression Factor (S10) Comments
1 Fixed Length 1.0x No compression
2 Sparse Fixed Length 1.59x
3 1 + 2 1.65x 2 modes used
4 Exponent-Mantissa 1.37x
5 3 + 4 1.70x 3 modes used
6 Golomb-Rice 1.38x Parameter M = 16
7 5 + 6 1.87x 4 modes used
8 Exponential-Golomb 1.36x Parameter K = 4
9 Sparse-Exponential-Golomb 1.83x Parameter K = 4
10 9 + 6 +1 1.97x 3 modes used
11 10 + Zero Encoding 1.98x 4 modes used
표 2에서 알 수 있는 바와 같이, 데이터 세트(S10)에 대해 얻어진 최대 압축은 4 가지 압축 모드를 사용하여 1.98x였다. 또한, 표 2에서 알 수 있는 바와 같이, 상이한 압축 모드 그리고 상이한 압축 모드들의 조합들을 사용함으로써 상이한 압축 정도를 얻을 수 있다.
다른 예시적인 데이터 세트(S500)는 상이한 양자화 레벨에 대한 'Imagenet' 트레이닝 세트 및 'Inception V3' 모델로부터의 500 개의 입력 이미지를 사용하여 형성되었다. 표 3은 상이한 압축 모드 및 데이터 세트(S500)에 대해 획득된 압축 모드의 조합에 대한 압축 인자를 제시한다. 각 계층의 활성화 맵을 독립적으로 압축하고 그 결과를 평균하여 다섯 번의 실행마다 하나의 압축률을 얻는다. 사용된 로딩 패턴은 채널-위주 로딩 패턴이었다.
Bits Exp1 Exp2 'Exp3' Exp4 Exp5
16 1.8895
k=12
1.8891
k=12
1.8870
k=12
M=32
1.8866
k=12
M=32
1.8868
k=12
M=32
12 1.8695
k=8
1.8684
k=8
1.8666
k=8
M=128
1.8666
k=8
M=128
1.8668
k=8
M=128
8 1.8491k=4 1.9497
k=4
1.8694
k=4
M=32
1.8648
k=4
M=16
1.8650
k=4
M=16
6 1.8752k=2 1.8754
k=2
1.9079
k=2
M=4
1.9039
k=2
M=4
1.9043
k=2
M=4
4 1.9522k=0 1.9448
k=0
1.9920
k=1
M=2
1.9810
k=1
M=2
1.9822
k=1
M=2
표 3에서, 'Exp1'은 희박-지수-골룸(Sparse-Exponential-Golomb) 압축 모드를 사용했다. 'Exp2'는 희박-지수-골룸(Sparse-Exponential-Golomb) 및 고정 길이(Fixed length) 압축 모드를 사용했다. 'Exp3'은 희박-지수-골룸(Sparse-Exponential-Golomb) 및 골룸-라이스(Golomb-Rice) 압축 모드를 사용했다. 'Exp4'는 희박-지수-골룸(Sparse-Exponential-Golomb), 고정 길이(Fixed length) 및 골룸-라이스(Golomb-Rice) 압축 모드를 사용했다. 'Exp5'는 희박-지수-골룸(Sparse-Exponential-Golomb), 고정 길이(Fixed length) 및 골룸-라이스(Golomb-Rice) 및 제로 인코딩(Zero-encoding) 압축 모드를 사용했다.
당업자가 인식할 수 있는 바와 같이, 여기서 설명된 혁신적인 개념은 광범위한 응용 분야에 걸쳐 수정되거나 변경될 수 있다. 따라서, 청구된 주제의 범위는 전술한 특정 예시적인 교시 중 어느 하나에 한정되어서는 안되며, 대신 다음의 청구 범위에 의해 정의된다.

Claims (10)

  1. 신경망의 활성화 맵을 무손실 압축하는 시스템에 있어서,
    활성화 맵에 대응하는 HxWxC 사이즈의 텐서(Tensor)를 적어도 하나의 블록에 대응하는 값들로 포맷팅하는 포매터; 그리고
    적어도 하나의 무손실 압축 모드를 사용하여 상기 적어도 하나의 블록을 상기 텐서의 다른 블록들과 독립적으로 인코딩하는 인코더를 포함하되,
    상기 H는 상기 텐서의 높이를 나타내며, 상기 W는 상기 텐서의 폭을 나타내며, 상기 C는 상기 텐서의 채널 수를 나타내는 시스템.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 무손실 압축 모드는 지수-골룸(Exponential-Golomb) 인코딩, 희박-지수-골룸(Sparse-Exponential-Golomb) 인코딩, 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 인코딩, 골룸-라이스(Golomb-Rice) 인코딩, 지수-가수(Exponent-Mantissa) 인코딩, 제로 인코딩(Zero-encoding), 고정 길이(Fixed length) 인코딩, 그리고 희박 고정 길이(Sparse Fixed length) 인코딩을 포함하는 그룹으로부터 선택되는 시스템.
  3. 제 2 항에 있어서,
    상기 적어도 하나의 블록을 인코딩하도록 선택된 상기 적어도 하나의 무손실 압축 모드는 상기 텐서의 다른 블록을 인코딩하도록 선택된 무손실 압축 모드와는 다른 것을 특징으로 하는 시스템.
  4. 제 2 항에 있어서,
    상기 인코더는 복수의 상기 무손실 압축 모드를 사용하여 상기 텐서의 다른 블록들과 독립적으로 상기 적어도 하나의 블록을 인코딩함으로써 상기 적어도 하나의 블록을 추가로 인코딩하는 시스템.
  5. 제 2 항에 있어서,
    상기 적어도 하나의 블록은 48-비트를 포함하는 시스템.
  6. 제 1 항에 있어서,
    상기 인코더는 비트스트림으로 인코딩된 상기 적어도 하나의 블록을 출력하는 시스템.
  7. 제 6 항에 있어서,
    상기 적어도 하나의 블록을 압축하는데 사용된 상기 적어도 하나의 압축 모드에 대응하는 적어도 하나의 압축 해제 모드를 사용하여, 상기 적어도 하나의 블록을 상기 텐서의 다른 블록들과 독립적으로 디코딩하는 디코더; 그리고
    상기 적어도 하나의 블록을 H x W x C 의 사이즈를 갖는 텐서로 디포맷(deformat)하는 디포매터(Deformatter)를 포함하는 시스템.
  8. 제 1 항에 있어서,
    상기 활성화 맵은 부동 소수점 값을 포함하고,
    상기 시스템은 상기 활성화 맵의 상기 부동 소수점 값을 정수 값으로 양자화하는 양자화기를 더 포함하는 시스템.
  9. 신경망의 활성화 맵을 무손실 압축하는 방법에 있어서:
    포매터에서 텐서 사이즈 H x W x C인 텐서(Tensor)로 구성되는 적어도 하나의 활성화 맵을 수신하는 단계;
    상기 포매터에 의해 상기 텐서를 적어도 하나의 값 블록으로 포맷팅하는 단계; 그리고
    인코더에서 적어도 하나의 무손실 압축 모드를 사용하여 상기 텐서의 다른 블록들과 독립적으로 상기 적어도 하나의 블록을 인코딩하는 단계를 포함하되,
    상기 H는 상기 텐서의 높이를 나타내며, 상기 W는 상기 텐서의 폭을 나타내며, 상기 C는 상기 텐서의 채널 수를 나타내는 것을 특징으로 하는 방법.
  10. 신경망의 활성화 맵을 무손실 압축 해제하는 방법에 있어서:
    디코더에서, 상기 활성화 맵의 값들의 적어도 하나의 압축값 블록을 나타내는 비트스트림을 수신하는 단계;
    상기 디코더에 의해, 적어도 하나의 압축 해제값 블록을 형성하기 위해 상기 적어도 하나의 압축값 블록을 압축 해제하는 단계; 그리고
    디포매터(Deformatter)에 의해, 상기 적어도 하나의 블록을 H x W x C 사이즈를 갖는 압축 해제된 상기 활성화 맵인 텐서(Tensor)로 변형시키는 단계를 포함하되,
    상기 H는 상기 텐서의 높이를 나타내고, 상기 W는 상기 텐서의 폭을 나타내며, 상기 C는 상기 텐서의 채널 수를 나타내며,
    상기 적어도 하나의 압축 해제값 블록은 상기 적어도 하나의 압축값 블록을 압축하는데 사용되는 적어도 하나의 무손실 압축 모드에 대응하는 적어도 하나의 압축 해제 모드를 사용하여 상기 활성화 맵의 다른 블록들로부터 독립적으로 압축 해제되는 방법.
KR1020190053965A 2018-06-01 2019-05-08 신경망의 희박 활성화 맵의 무손실 압축 KR20190137684A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862679545P 2018-06-01 2018-06-01
US62/679,545 2018-06-01
US16/046,993 US20190370667A1 (en) 2018-06-01 2018-07-26 Lossless compression of sparse activation maps of neural networks
US16/046,993 2018-07-26

Publications (1)

Publication Number Publication Date
KR20190137684A true KR20190137684A (ko) 2019-12-11

Family

ID=68692573

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190053965A KR20190137684A (ko) 2018-06-01 2019-05-08 신경망의 희박 활성화 맵의 무손실 압축

Country Status (3)

Country Link
US (1) US20190370667A1 (ko)
KR (1) KR20190137684A (ko)
CN (1) CN110555521A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200093404A (ko) * 2019-01-28 2020-08-05 포항공과대학교 산학협력단 신경망 가속기 및 그것의 동작 방법
WO2021117942A1 (ko) * 2019-12-12 2021-06-17 전자부품연구원 저복잡도 딥러닝 가속 하드웨어 데이터 가공장치
WO2021177628A1 (en) * 2020-03-04 2021-09-10 Samsung Electronics Co., Ltd. Method and apparatus for action recognition

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10785681B1 (en) * 2019-05-31 2020-09-22 Huawei Technologies Co., Ltd. Methods and apparatuses for feature-driven machine-to-machine communications
US11615301B2 (en) * 2019-09-03 2023-03-28 Microsoft Technology Licensing, Llc Lossless exponent and lossy mantissa weight compression for training deep neural networks
US11580402B2 (en) * 2020-05-11 2023-02-14 Arm Limited System and method for compressing activation data
CN114418086B (zh) * 2021-12-02 2023-02-28 北京百度网讯科技有限公司 压缩神经网络模型的方法、装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6987468B1 (en) * 2004-10-29 2006-01-17 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
TWI524265B (zh) * 2011-06-30 2016-03-01 艾特拉股份有限公司 浮點資料之壓縮
US8847798B2 (en) * 2012-12-17 2014-09-30 Maxeler Technologies, Ltd. Systems and methods for data compression and parallel, pipelined decompression

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200093404A (ko) * 2019-01-28 2020-08-05 포항공과대학교 산학협력단 신경망 가속기 및 그것의 동작 방법
WO2021117942A1 (ko) * 2019-12-12 2021-06-17 전자부품연구원 저복잡도 딥러닝 가속 하드웨어 데이터 가공장치
WO2021177628A1 (en) * 2020-03-04 2021-09-10 Samsung Electronics Co., Ltd. Method and apparatus for action recognition
US11837025B2 (en) 2020-03-04 2023-12-05 Samsung Electronics Co., Ltd. Method and apparatus for action recognition

Also Published As

Publication number Publication date
CN110555521A (zh) 2019-12-10
US20190370667A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
US11588499B2 (en) Lossless compression of neural network weights
KR20190137684A (ko) 신경망의 희박 활성화 맵의 무손실 압축
US5818877A (en) Method for reducing storage requirements for grouped data values
TWI840438B (zh) 用於壓縮神經網路的激活映射的系統與方法以及用於對神經網路的經稀疏化的激活映射進行解壓縮的方法
TWI431948B (zh) 轉換區塊之效率編碼和解碼
US8942502B2 (en) Parallelization of variable length decoding
JP5936687B2 (ja) ツリー構造の適応的エントロピー符号化方法
US8767823B2 (en) Method and apparatus for frame memory compression
US8285062B2 (en) Method for improving the performance of embedded graphics coding
US8363729B1 (en) Visual data compression algorithm with parallel processing capability
AU2018298758A1 (en) Method and device for digital data compression
CN103716634A (zh) 使用误差平面编码的数据压缩方法及装置
CN112399181A (zh) 图像编解码的方法、装置和芯片
EP2319038A1 (en) Method, system, and apparatus for compression or decompression of digital signals
US8754792B2 (en) System and method for fixed rate entropy coded scalar quantization
US5966470A (en) Coding apparatus for image compression
US20050232362A1 (en) High-speed image compression apparatus using last non-zero detection circuit
CN111641827A (zh) 多套方案切换进行预测残差熵编码的数据压缩方法和装置
US6433707B1 (en) Universal lossless compressor for digitized analog data
US5561422A (en) Method and apparatus for variable length coding with reduced memory requirement
WO2024142897A1 (ja) 情報処理装置、及び情報処理方法
KR100686354B1 (ko) 가변 트리를 이용한 허프만 복호화 방법 및 장치
JPH08316846A (ja) 画像符号化装置、画像復号化装置、画像符号化方法および画像復号化方法
WO2022219233A1 (en) A method, an apparatus and a computer program product for neural network compression
Bhosale et al. A Modified Image Template for FELICS Algorithm for Lossless Image Compression

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application