KR20230027152A - 심층 신경 네트워크를 인코딩/디코딩하기 위한 시스템들 및 방법들 - Google Patents

심층 신경 네트워크를 인코딩/디코딩하기 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20230027152A
KR20230027152A KR1020237000861A KR20237000861A KR20230027152A KR 20230027152 A KR20230027152 A KR 20230027152A KR 1020237000861 A KR1020237000861 A KR 1020237000861A KR 20237000861 A KR20237000861 A KR 20237000861A KR 20230027152 A KR20230027152 A KR 20230027152A
Authority
KR
South Korea
Prior art keywords
tensor
decoded
decoding
bitstream
signal
Prior art date
Application number
KR1020237000861A
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 KR20230027152A publication Critical patent/KR20230027152A/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/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • 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
    • G06N3/105Shells for specifying net layout
    • 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
    • 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/3057Distributed Source coding, e.g. Wyner-Ziv, Slepian Wolf
    • 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/6005Decoder aspects
    • 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
    • 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/70Type of the data to be coded, other than image and sound

Landscapes

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

Abstract

본 개시내용은, 적어도 하나의 심층 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 제1 텐서가, 파라미터들이 비트스트림에 인코딩되는 제2 텐서 및 제3 텐서로 분해된다는 결정에 응답하여, 비트스트림으로부터, 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기를 디코딩하는 단계, 및 디코딩된 크기에 기초하여 비트스트림으로부터 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서를 디코딩하는 단계를 포함하는 방법에 관한 것이다. 대응하는 장치, 인코딩 방법, 신호; 비트스트림, 저장 매체 및 인코더 및/또는 디코더 디바이스들이 또한 제공된다.

Description

심층 신경 네트워크를 인코딩/디코딩하기 위한 시스템들 및 방법들
본 개시내용의 하나 이상의 실시예들의 기술 분야 영역은, 데이터 압축 및/또는 압축해제를 위한 것과 같은, 데이터 프로세싱의 기술 영역에 관한 것이다. 예를 들어, 적어도 일부 실시예들은, 심층 신경 네트워크(Deep Neural Network, DNN)의 적어도 일부 파라미터들과 같은, 심층 학습 기법들과 연관되는 데이터의 압축 및/또는 압축해제와 같은, 또는 오디오 및/또는 비디오 스트림의 적어도 일부의 압축 및/또는 압축해제와 같은, 대량의 데이터를 수반하는 데이터 압축/압축해제에 관한 것이다.
적어도 일부 실시예들은, HEVC(HEVC는 "ITU-T H.265 Telecommunication standardization sector of ITU (10/2014), series H: audiovisual and multimedia systems, infrastructure of audiovisual services - coding of moving video, High efficiency video coding, Recommendation ITU-T H.265"에서 설명된 H.265 및 MPEG-H Part 2로도 알려진, 고효율 비디오 코딩(High Efficiency Video Coding)을 지칭함)와 같은 기존의 비디오 압축 시스템들에 비해, 또는 VVC(Versatile Video Coding, JVET(Joint Video Experts Team)에 의해 개발되고 있는 새로운 표준)와 같은 미개발 비디오 압축 시스템들에 비해 압축 효율을 개선하는 것에 관한 것이다.
높은 압축 효율을 달성하기 위해, 이미지 및 비디오 코딩 스킴들은 일반적으로 공간 및/또는 모션 벡터 예측을 포함하는 예측, 및 비디오 콘텐츠의 공간적 및 시간적 중복성(redundancy)을 레버리징하기 위한 변환들을 채용한다. 대체적으로, 인트라 또는 인터 예측은 인트라 또는 인터 프레임 상관관계를 이용하는 데 사용되고, 이어서, 종종 예측 에러들 또는 예측 잔차들로 표시되는, 오리지널 이미지와 예측 이미지 사이의 차이들은 변환되고, 양자화되고, 엔트로피 코딩된다. 비디오를 재구성하기 위해, 압축된 데이터는 엔트로피 코딩, 양자화, 변환, 및 예측에 대응하는 역 프로세스들에 의해 디코딩된다.
적어도 일부 실시예들은, 국제 표준화 기구에 의해 현재 개발된 멀티미디어 콘텐츠 설명 및 분석을 위한 신경 네트워크들의 현재 도래하는 표준 ISO/MPEG7과 같은 일부 압축 표준 또는 초안 표준과 같은 심층 신경 네트워크(DNN)의 압축을 위한 기존 시스템들에 비해 압축 효율을 개선하는 것에 관한 것이다.
대체적으로, 인코딩 프로세스에서, DNN의 파라미터들이 양자화되고 엔트로피 코딩되어, 압축된 데이터를 획득한다. 데이터를 재구성하기 위해, 압축된 데이터가 디코딩되는데, 디코딩 프로세스들은 엔트로피 디코딩 및 역양자화를 포함한다.
본 발명의 원리들은 적어도 하나의 비트스트림에 데이터를 인코딩하거나 디코딩하기 위한 방법 및 장치를 제안함으로써 일부 공지된 압축 및/또는 압축해제 방법들의 단점들 중 적어도 하나가 해결될 수 있게 하며, 데이터는 적어도 하나의 심층 신경 네트워크의 적어도 하나의 계층 또는 서브계층의 적어도 하나의 텐서의 하나 이상의 파라미터들이다. 일정 계층에 연관된 파라미터들의 텐서는, 간결성을 위해 하기에서 때때로 간단히 "가중치들"로 지칭되더라도, 가중치들 및/또는 바이어스들을 포함할 수 있다는 것이 주목될 것이다.
일 실시예에 따르면, 적어도 하나의 심층 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 제1 텐서를 디코딩하기 위한 방법이 제공된다. 그러한 방법은, 적어도 하나의 제1 텐서가, 파라미터들이 비트스트림에 인코딩되는 제2 텐서 및 제3 텐서로 분해된다는 결정에 응답하여, 비트스트림으로부터, 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기를 디코딩하는 단계, 및 디코딩된 크기에 기초하여 비트스트림으로부터 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서를 디코딩하는 단계를 포함한다.
다른 실시예에 따르면, 적어도 하나의 심층 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 제1 텐서를 디코딩하기 위한 장치가 제공된다. 장치는, 적어도 하나의 심층 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 제1 텐서가, 파라미터들이 비트스트림에 인코딩되는 제2 텐서 및 제3 텐서로 분해된다고 결정하도록, 비트스트림으로부터, 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기를 디코딩하도록, 그리고 디코딩된 크기에 기초하여 비트스트림으로부터 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서를 디코딩하도록 구성되는 하나 이상의 프로세서들을 포함한다.
다른 실시예에 따르면, 심층 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 제1 텐서를 나타내는 데이터를 비트스트림에 인코딩하는 단계를 포함하는 방법이 제공된다. 방법은, 적어도 하나의 제1 텐서가 제2 텐서 및 제3 텐서로 분해된다는 결정에 응답하여, 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기를 인코딩하는 단계, 및 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서를 나타내는 파라미터들을 인코딩하는 단계를 포함한다.
다른 실시예에 따르면, 심층 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 제1 텐서를 나타내는 데이터를 비트스트림에 인코딩하기 위한 장치가 제공되고, 장치는 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은, 적어도 하나의 제1 텐서가 제2 텐서 및 제3 텐서로 분해된다고 결정하기 위해, 결정에 응답하여, 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기를 인코딩하기 위해, 그리고 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서를 인코딩하기 위해 구성된다.
하나 이상의 실시예들은 또한, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 전술된 실시예들 중 임의의 것에 따른 인코딩 방법 또는 디코딩 방법을 수행하게 하는 명령어들을 포함하는 컴퓨터 프로그램을 제공한다. 본 실시예들 중 하나 이상은 또한, 전술한 방법에 따라 데이터를 인코딩 또는 디코딩하기 위한 명령어들이 저장된 컴퓨터 판독가능 저장 매체를 제공한다. 하나 이상의 실시예들은 또한, 전술된 방법들에 따라 생성된 비트스트림이 저장된 컴퓨터 판독가능 저장 매체를 제공한다. 하나 이상의 실시예들은 또한, 전술된 방법들에 따라 생성된 비트스트림을 송신하거나 수신하기 위한 방법 및 장치를 제공한다.
적어도 하나의 실시예의 다른 대체적인 태양에 따르면, 디코딩 실시예들 중 어느 하나의 디코딩 실시예에 따른 장치, 및 (i) 신호를 수신하도록 구성된 안테나 - 신호는 입력 데이터를 포함함 -, (ii) 입력 데이터를 포함하는 수신된 신호를 주파수들의 대역으로 제한하도록 구성된 대역 제한기, 또는 (iii) 비디오 블록을 나타내는 출력을 디스플레이하도록 구성된 디스플레이 중 적어도 하나를 포함하는 디바이스가 제공된다.
명시적으로 기술되어 있지 않지만, 본 개시내용의 디바이스들은 그들의 실시예들 중 임의의 실시예에서 본 개시내용의 방법들을 수행하도록 적응될 수 있다.
명시적으로 기술되어 있지 않지만, 방법들 또는 대응하는 신호, 디바이스들, 및 컴퓨터 판독가능 저장 매체에 관한 본 실시예들은 임의의 조합 또는 서브조합으로 채용될 수 있다.
도 1은 포괄적 표준 인코딩 스킴을 도시한다.
도 2는 포괄적 표준 디코딩 스킴을 도시한다.
도 3은 기술된 실시예들이 구현될 수 있는 전형적인 프로세서 배열을 도시한다.
도 4는 본 개시내용의 인코딩 방법의 적어도 일부 실시예를 사용한 DNN 전체 인코딩 아키텍처를 도시한다.
도 5는 본 개시내용의 인코딩 방법의 적어도 일부 실시예를 사용한 DNN 전체 디코딩 아키텍처를 도시한다.
도 6은 본 개시내용의 일 실시예에 따른, 비트스트림에 인코딩된 DNN의 텐서를 디코딩하기 위한 방법의 일례를 도시한다.
도 7은 본 개시내용의 일 실시예에 따른, 비트스트림에 DNN의 텐서들을 인코딩하기 위한 방법의 일례를 도시한다.
도 8은 일 실시예에 따른, 심층 신경 네트워크의 적어도 하나의 계층의 제1 텐서를 나타내는 데이터를 포함하는 비트스트림의 일부의 일례를 도시한다.
도면들은 예시적인 실시예들을 도시하고 본 개시내용의 실시예들은 도시된 실시예들로 제한되지 않는다는 점에 유의해야 한다.
많은 기술 분야들이, 컴퓨터 수단을 이용한, 대량의 데이터의 프로세싱을 수반할 수 있다. 그러한 프로세싱은, 예를 들어 그러한 데이터의 적어도 일부의 저장 또는 전송을 목적으로, 데이터 압축 및/또는 데이터의 압축해제를 수반할 수 있다. 다량의 데이터를 포함하는 스트림들의 압축 및/또는 압축해제의 예들은 비디오 프로세싱의 기술 분야, 또는 심층 학습 기법들을 수반하는 기술 분야들에서 발견될 수 있다.
본 개시내용의 실시예들은 제한하는 목적이 아니라 예시로서 심층 신경 네트워크(DNN)들과 관련하여 이하에서 상술된다. 그러나, 본 개시내용은 또한, 비디오 프로세싱의 기술분야에서와 같이, 다른 많은 양의 데이터의 압축/압축해제에 적용될 수 있다는 것이 명백하다. 예를 들어, 본 개시내용은 적어도 하나의 이미지로부터 심층 학습 알고리즘에 의해 획득된 텐서의 압축/압축해제에 적용될 수 있다.
심층 신경 네트워크(DNN)들은 멀티미디어 프로세싱, 컴퓨터 비전, 음성 인식, 자연어 프로세싱 등과 같은 다양한 영역들에서 최첨단 성능을 나타내었다. 그러나, 이러한 성능은, DNN이 종종 수백만, 및 때로는 수십억에 이르는 엄청난 수의 파라미터들을 갖는 경향이 있기 때문에, 막대한 계산 비용(massive computational cost)을 초래할 수 있다.
이는, 예를 들어, 엄청나게 높은 추론 복잡성을 초래할 수 있다. 간단히 말하면, 일단 트레이닝되면, 추론은, 예를 들어 입력 데이터를 그들의 분류 관점에서 프로세싱하기 위한 DNN의 배치(deployment)이다. 추론 복잡성은 추론을 위해 입력 데이터에 트레이닝된 DNN을 적용하는 계산 비용으로 정의될 수 있다. 추론 복잡성은 추론을 위해 테스트 데이터에 트레이닝된 DNN을 적용하는 계산 비용으로 정의될 수 있다.
따라서, 이러한 높은 추론 복잡성은, 제한된 하드웨어 및/또는 소프트웨어 리소스를 갖는 전자 디바이스, 예를 들어 배터리 크기, 제한된 계산 전력, 및 메모리 용량 등과 같은 리소스 제한들을 갖는 모바일 또는 임베디드 디바이스들을 수반하는 환경들에서 DNN들을 사용하기 위한 중요한 과제일 수 있다.
심층 신경 네트워크들은 몇몇 계층들로 구성된다. 계층은, 예를 들어 DNN의 트레이닝 동안 획득될 수 있는 파라미터들의 세트와 연관된다. (가중치들 및/또는 바이어스들과 같은) 이러한 파라미터들은 다차원 어레이들(본 명세서에서 "텐서들"로도 지칭됨)로서 저장된다. 하기에서, 단순화 목적을 위해, 용어 "매트릭스"는 때때로, 파라미터들(예컨대, 주어진 계층의 파라미터들)의 세트를 나타내는 데 사용될 수 있다. 그러나, 본 개시내용의 방법들의 일부 실시예들은, 일반적으로 파라미터들의 4D 텐서들을 포함하는 2D 콘볼루션 계층(convolutional layer)들과 같은 2차원 초과의 차원들을 갖는 파라미터들의 텐서들에 또한 적용될 수 있다는 것이 이해되어야 한다. DNN들의 막대한 개수의 파라미터들은 분산형 환경들에서 DNN들(또는 DNN들을 포함하는 솔루션들)의 배치를 위해 큰 대역폭을 필요로 할 수 있다.
본 개시내용의 적어도 일부 실시예들은 적어도 하나의 DNN(예를 들어, 사전트레이닝된 DNN)의 적어도 일부 파라미터들의 압축 및/또는 압축해제(디코딩)에 적용된다. 실제로, 압축은 적어도 하나의 DNN의 파라미터들의 송신 및/또는 저장을 용이하게 할 수 있다. 보다 정확하게는, 본 개시내용의 적어도 일부 실시예들은 적어도 하나의 심층 신경 네트워크의 적어도 하나의 계층과 연관된 적어도 하나의 텐서의 파라미터들의 압축에 적용된다.
본 개시내용의 실시예들에 따라, 계층들(또는 서브계층들)은 상이한 유형들의 것일 수 있다. 예를 들어, 일부 실시예들에서, 모든 적어도 하나의 계층은 콘볼루션 계층(들), 또는 완전 커넥터 계층(들)일 수 있거나, 또는 적어도 하나의 계층은 적어도 하나의 콘볼루션 계층 및/또는 적어도 하나의 완전 커넥터 계층을 포함할 수 있다.
본 개시내용의 일부 실시예들은 더 구체적으로, 예를 들어 압축의 효율을 개선하기 위해 적어도 하나의 텐서의 분해를 포함하거나 적어도 이를 포함할 수 있는 압축 솔루션들, 및/또는 적어도 하나의 텐서의 재구성을 포함하거나 적어도 이를 포함할 수 있는 디코딩 솔루션들에 관한 것이다. 분해된 적어도 하나의 텐서는, 예를 들어 하나 이상의 DNN들의 압축될 하나 이상의 계층(들)의 적어도 하나의 텐서일 수 있다. 재구성된 적어도 하나의 텐서는, 예를 들어 하나 이상의 DNN들의 압축될 하나 이상의 계층(들)의 분해된 적어도 하나의 텐서와 동일한 형상의 적어도 하나의 텐서일 수 있다.
본 개시내용의 일부 실시예들에 따르면, 텐서의 분해는 낮은 순위(Low Rank, LR) 기술 및/또는 낮은 변위 순위(Low Displacement Rank, LDR) 기술을 사용함으로써 획득될 수 있다.
가중치들의 큰 텐서들을 압축하기 위해 텐서 분해가 사용될 때, 적어도 2개의 더 작은 텐서들이 생성되고, 비트스트림 내에서 저장 또는 송신되도록 추가로 압축, 양자화, 및 엔트로피 코딩된다.
비제한적인 예로서, 일부 실시예들이 표준화되지 않은 기술들에 적용될 수 있지만, 일부 실시예들은 이하에서 더 간단히 MPEG NNR로 표시되는, 멀티미디어 콘텐츠 설명 및 분석에 대한 신경 네트워크들의 압축된 표현들에 관한 도래하는 표준 ISO/MPEG7과 같은, DNN 압축/압축해제에 대한 표준들의 맥락들에서 사용될 수 있다.
본 개시내용의 적어도 일부 실시예들은 신택스 구조뿐만 아니라, 텐서들을 분해하고 다수의 디코딩된 텐서들로부터 텐서들을 재구성하기 위한 메커니즘을 제안한다.
보다 정확하게는, 일부 실시예들에 따르면, 가중치의 큰 텐서들을 압축하기 위해 텐서 분해가 사용될 때, 적어도 2개의 더 작은 텐서들이 생성될 수 있다(그리고 양자화에 입력되어, 예를 들어 양자화의 출력 중 적어도 일부는 인코딩하는 것일 수 있다).
예를 들어, 분해가 낮은 순위(LR)에 기초하는 예시적인 실시예에서, 낮은 순위 근사치들이 가중치들의 오리지널 매트릭스를 곱셈으로서 표현할 수 있다:
Figure pct00001
여기서
Figure pct00002
Figure pct00003
매트릭스이고,
Figure pct00004
는 단일 값 분해(Single Value Decomposition, SVD)로부터 도출될 수 있는
Figure pct00005
매트릭스이다.
디코더에서, 이러한 압축 기법을 사용할 때 2개의 옵션들이 구상될 수 있다:
- 디코딩된 모델의 추론의 디바이스/구현예 중 어느 하나가 그러한 분해를 지원한다. 그 경우, 디코더가 텐서들 G 및 H를 그대로 출력할 수 있거나,
- 또는, 오리지널 텐서 형상들을 갖는 오리지널 그래프가 추론 엔진에 의해 요구된다. 이 경우, 재구성은 (예를 들어, 디코더에 의해) 수행될 필요가 있다.
본 개시내용의 적어도 일부 실시예들은 그러한 조건을 가능하게 하기 위한 신택스뿐만 아니라, 텐서들을 그들의 오리지널 형상으로 재구성하기 위한 메커니즘을 제공한다. 실제로, 본 발명의 발명자들은, 예를 들어 모델의 디코딩 시에 디코더에서, 이러한 텐서의 분해에 의해 획득된 텐서들로부터 텐서의 오리지널 형상을 재구성하기 위한 어떠한 솔루션도 아직 제안되지 않았음을 실수 없이 알아냈다.
예를 들어, MPEG NNR의 현재의 사양 초안에서, 현재의 가정은 오리지널 텐서를 분해한 것에 기인한 텐서들이 디코더에 의해 출력된다는 것이다.
이는 상기에서 설명된 바와 같이, 추론 엔진에 의해 오리지널 텐서 형상들이 필요할 때 문제일 수 있다.
본 개시내용의 적어도 일부 실시예들은 이러한 문제를 해결하는 데 도움이 된다. 본 명세서에 상술된 본 개시내용의 방법들의 실시예들은, 실시예들 중 적어도 일부가 예를 들어, ISO/MPEG7에 의해 개발된 일부 초안 표준과 같은 일부 압축 표준들의 맥락에서 적용될 수 있더라도, 많은 압축 솔루션들에서 구현될 수 있고 특정 표준으로 제한되지 않는다는 것이 주목될 것이다.
상기의 수학식(1)에서 보여진 바와 같이, 텐서 W가 2D-매트릭스인 예시적인 실시예에서, G 및 HT를 디코딩한 후, 2개의 매트릭스들의 매트릭스 곱셈이 오리지널 매트릭스 형상을 획득하기 위해 수행될 필요가 있다.
상기의 예시적인 실시예들에서, LR 분해가 오리지널 텐서에 사용될 수 있다. 그러나, 실시예들에 따라, 또는 하나 이상의 DNN의 텐서들에 따라, 상이한 분해들이 수행될 수 있다. 예를 들어 콘볼루션 또는 깊이별 콘볼루션 계층들의 텐서의 경우, 텐서는 2차원 매트릭스로 재형상화되어, LR/LDR 방법들을 가능하게 할 수 있다.
이러한 본 개시내용은 텐서들을 재구성하는 것을 허용하기 위한 필요한 신택스 및 프로세스들을 기술한다.
특히, 예를 들어 하나 이상의 텐서 유닛들로부터 오리지널 텐서를 재구성하도록 적응된 본 개시내용의 일부 실시예들은, 예를 들어 (수학식 (1)과 관련하여 상기에서 소개된 예시적인 유스케이스에서) W의 재구성을 수행하기 위해 이전에 디코딩된 G 및/또는 H 매트릭스들과 같이, 재구성을 수행하기 위해 이전에 디코딩된 텐서들을 유지하기 위한 텐서들의 버퍼를 수반하는 메커니즘을 제안한다.
하기에서, 디코딩된 텐서 버퍼(Decoded Tensor Buffer, DTB)가 도입되는데, 이는 다수의 이미 디코딩된 텐서들을 메모리에 포함할 수 있다. 예를 들어, 상기의 예시적인 실시예에서, 디코딩된 텐서들 G 및 H는 이들이 주어진 계층에 대해 디코딩될 2개의 텐서들(G 및 H) 중 제1 텐서일 때 버퍼에 추가된다. 보다 정확하게는, 주어진 계층에 대해, 디코딩된 텐서 G(각각, 디코딩된 텐서 H)는, 텐서 H (각각, 텐서 G)가 아직 디코딩되지 않았을 때 버퍼에 추가된다.
이어서, 동일한 계층 내의 대응하는 텐서가 디코딩될 때, 오리지널 텐서의 형상을 갖는 텐서의 재구성이 트리거될 수 있고, DTB 내의 저장된 텐서에 의해 취해진 메모리가 확보될 수 있다.
본 개시내용의 적어도 일부 실시예들에서, 일단 오리지널 텐서가 몇몇 텐서들로 분해되었다면, 몇몇 생성된 텐서들은 개별적으로(다시 말해, 독립적으로) 인코딩 및 디코딩될 수 있다.
도 4 및 도 5는 본 개시내용의 적어도 일부 실시예들에서 사용될 수 있는, 적어도 하나의 DNN의 적어도 하나의 계층의 적어도 하나의 텐서의 파라미터들을 인코딩/디코딩하기 위한 일반적인 프로세스를 하이 레벨로 각각 도시한다. 도 4의 방법은 예를 들어 인코딩 디바이스(또는 인코더)에서 수행될 수 있고, 도 5의 방법은 예를 들어 디코딩 디바이스(또는 디코더)에서 수행될 수 있다.
도 4에 도시된 바와 같이, 인코더에서, 방법은 압축될 계층과 연관된 텐서(본 명세서에서 "오리지널 텐서"로도 불림)의 파라미터들을 획득하는(또는 얻는) 단계(401)를 포함할 수 있다. 획득하는 단계는 예를 들어, 저장 유닛으로부터 적어도 하나의 텐서의 파라미터들을 회수함으로써, 또는 통신 인터페이스를 통해 데이터 소스로부터 파라미터들을 수신함으로써 수행될 수 있다.
일부 실시예들에서, 각각의 획득된 텐서가 분해될 수 있다.
다른 실시예들에서, 도 4의 실시예에서와 같이, 분해는 조건부로 수행될 수 있다. 실제로, 일례로서, 분해는 때때로 적용가능하지 않을 수 있다. 텐서 분해는 예를 들어, 1D 어레이들인 바이어스들에 대해 수행될 수 없다. 더욱이, 일부 실시예들에서, 분해가 텐서에 적용될지의 여부를 결정하기 위해 (오리지널 텐서의 코딩 비용과 같은) 다른 인자들이 또한 고려될 수 있다. 예를 들어, 모드는 텐서에, 그리고/또는 텐서의 계층에, 또는 텐서의 계층을 포함한, 하나 이상의 계층들에 연관될 수 있다(403). 모드의 적어도 하나의 제1 값은, 적용가능한 경우, 텐서에 대해 수행될 분해를 나타낼 수 있고/있거나, 모드의 적어도 하나의 제2 값은 적용되는 분해 없이 프로세싱되는 텐서를 나타낼 수 있다.
도 4의 예시적인 실시예에서, 방법은, 분해가 입력 텐서에 적용가능할 수 있는지의 여부를 테스트하는 단계(402), 및 텐서가 분해될 수 있는 경우(402), 분해 모드(예컨대, 모드의 제1 값)가 선택되는지의 여부를 테스트하는 단계(403)를 포함할 수 있다.
분해 모드가 인코더(404)에 의해 선택되는 경우, 방법은, 텐서들을 분해하고 생성된 텐서들을 인코딩하는 단계(예를 들어, 텐서 G를 인코딩하는 단계(405), 및 텐서 H를 인코딩하는 단계(407))를 포함할 수 있다.
도 4의 예시적인 유스케이스에서, 분해가 선택되지 않거나(분해 모드가 선택되지 않음) 적용가능하지 않은 경우, 입력 텐서는 직접 인코딩될 수 있다(406).
인코딩의 출력은 비트스트림을 구성하는 데 사용된다.
이러한 프로세스는 몇몇 입력 텐서들에 대해, 예를 들어 양자화하고/하거나 인코딩할 모델에서의 모든 텐서들에 대해 반복될 수 있다(408).
일부 실시예들에서, 방법은, 인코딩하는 단계 이전에, 신경 네트워크에서의 고유 리던던시들을 활용함으로써 신경 네트워크의 파라미터들(또는 가중치들 또는 바이어스들)의 수를 감소시키는 단계를 추가로 포함할 수 있다. 예를 들어, DNN의 적어도 하나의 계층의 파라미터들의 오리지널 텐서들 또는 DNN의 적어도 하나의 계층의 파라미터들의 오리지널 텐서들의 분해로부터 기인한 텐서들은 드물 수 있다. 이러한 감소는 선택적이며, 일부 실시예들에서 그리고/또는 일부 계층들의 일부 텐서들에 대해 생략될 수 있다
인코딩하는 단계는 적어도 하나의 텐서(예컨대, 신경 네트워크의 계층의 텐서의 분해에 의해 출력되는 텐서들, 또는 분해가 수행되지 않을 때의 텐서 자체 중 어느 하나)의 (가중치들 및 바이어스들과 같은) 파라미터들을 양자화하는 단계 및 양자화된 정보를 무손실 엔트로피 코딩하여 이들을 더 적은 수의 비트들로 표현하는 단계를 포함할 수 있다.
일부 실시예들에서, DNN의 몇몇 계층들이 인코딩되어야 할 때, 방법은, 인코딩될 마지막 계층의 파라미터들의 인코딩의 종료 때까지, 계층마다 반복적으로 수행될 수 있다.
일부 실시예들에서, 도 4의 예시된 실시예에서와 같이, 동일한 계층의 텐서들은 순차적으로 인코딩될 필요가 없고, 다른 계층들의 다른 텐서들 사이에 병렬로 인코딩되거나 삽입될 수 있다. 실제로, 인코딩은 (예를 들어, 도래하는 MPEG NRR 초안에서와 같이) 동일한 또는 상이한 텐서 유닛들에 포함되는 동일한 계층의 텐서 레벨, 가중치들 및 바이어스들에서의 유닛들에 기초할 수 있다.
도 5는 비트스트림, 예를 들어 도 4와 관련하여 이미 기술된 인코딩 방법에 의해 획득된 비트스트림으로부터 디코딩된 텐서들에 대해 디코딩 측에서 수행되는 대응하는 프로세싱을 도시한다. 도 5의 예시적인 실시예에서, 텐서는 먼저, 예를 들어 그의 유닛 헤더 및/또는 계층 파라미터 세트(Layer Parameter Set, LPS)를 사용하여, 파싱되고 식별된다(501). 예를 들어, 이하에서 더 상세하게 제시되는 예시적인 신택스는, 정확한 계층 파라미터 세트를 가리킬 유닛 헤더에서 lps_layer_parameter_set_id에 의해 참조된 연관된 하이 레벨 신택스를 사용할 수 있다. 도 5에 따르면, 텐서 페이로드는 디코딩될 수 있다(502).분해가 LR 또는 LDR 유형의 것인 도 5의 예시적인 실시예에서, 디코딩된 텐서가 유형 TENSOR_G 또는 TENSOR_H(503)의 것인 경우(각각, 도면에서 G 및 H로 표시됨), 단계들(505 내지 508)이 수행될 수 있다(이하 참조). 달리, 그것이 마지막 디코딩된 텐서가 아닌 경우(509), 다음 텐서는 비트스트림으로부터 액세스될 수 있다. 현재 텐서가 유형 TENSOR_G 또는 TENSOR_H의 것인 경우, 동일한 계층에 속하는 대응하는 텐서가 디코딩된 텐서 버퍼에서 검색된다. 이는 현재 텐서와 동일한 계층을 특정하는 (기준 식별자 "ref_id"와 같은) 식별자와 연관된 텐서를 찾음으로써 수행될 수 있다. 하기에서 도입되는 예시적인 신택스로, 그러한 기준 식별자(예컨대, "ref_id")는 토폴로지 저장 포맷, 예컨대 ONNX 또는 NNEF에 의존하는 고유하게 식별가능한 데이터 구조들에 텐서 유닛들을 맵핑하는 텐서 유닛 헤더로부터의 신택스 요소일 수 있다.
대응하는 텐서가 존재하는 경우, 그것은 DTB(505)로부터 페칭되고, 현재 텐서 및 페칭된 텐서(507) 둘 모두는 오리지널 텐서(즉, 단계(401)의 획득된 텐서)의 형상(508)으로 텐서를 재구성하는 데 사용된다. 그러나, 많은 실시예들에서, 오리지널 텐서와 동일한 치수를 갖지만, 재구성된 텐서는 오리지널 텐서와 상이하다는 것이 주목될 것이다.
대응하는 텐서가 DTB에 존재하지 않는 경우, 방법(500)은 향후 사용을 위해 DTB에 현재 텐서를 저장하는 단계(506)를 포함할 수 있다.
어느 경우든(다시 말해, 현재 텐서 유닛을 디코딩한 후)(단계(509)), 방법은 현재 텐서가 비트스트림에서 마지막 것인지의 여부를 체크하는 단계(509)를 추가로 포함할 수 있고, 방법은 그것이 사실인 경우에 모델을 출력하거나 또는 그렇지 않은 경우 다음 텐서 유닛에 액세스한다.
디코더에서, 도 5에 도시된 바와 같이, 디코딩은 (인코더 측의 동작들과 비교하여) 일부 역동작들을 포함할 수 있다. 예를 들어, 디코딩 방법은 파라미터들의 메타데이터 및/또는 양자화된 형태를 추출하기 위해 입력 빈들의 파싱/엔트로피 디코딩(510)을 포함할 수 있다. 이어서, 역양자화(520)가 텐서의 파라미터들의 최종 값들을 도출하기 위해 적용될 수 있다.
(예를 들어, 몇몇 계층들의) 몇몇 텐서들이 디코딩되어야 할 때, 방법(500)은 몇몇 텐서들 모두가 디코딩될 때까지 수행될 수 있다.
본 개시내용의 일부 실시예들은 인코더와 디코더 사이에서 시그널링 정보를 송신/수신하는 것을 포함할 수 있다. 이러한 시그널링 정보는 예시적인 비제한적 신택스와 관련하여 본 개시내용에 제시된다. 이러한 예시적인 신택스는 주로, 설명의 용이함을 위해, (문헌[N19225 - Working Draft 4 of Compression of neural networks for multimedia content description and analysis
Figure pct00006
. International Organization for Standardization ISO/IEC JTC1/SC29/WG11, apr. 2020]과 같은) 예시적인 MPEG NNR 초안 표준에서 사용되는 신택스에 기초한다.
하기의 신택스는 본 개시내용을 제한하지 않는 예시적인 신택스일 뿐이다. 예를 들어, 신택스 요소들에 사용되는 비트들의 수들은 예시적인 실시예들이다. 이해의 용이함을 위해, 예시적인 신택스에서, 본 개시내용의 실시예들에 따른 하기의 식별자 및 항목들은 MPEG-NNR의 현재의 예시적인 작업 초안과 정렬된 채로 유지되고 있는 섹션들 및 표들의 넘버링과 함께 추가되었다.
이러한 예시적인 신택스를 사용하여, 하기의 텐서 동작들이 추가될 수 있다:
MatrixProd (array_name_1[], array_name_2[]) - 이는 array_name_1과 array_name_2의 매트릭스 곱셈을 반환함.
TensorReshape (array_name[], tensor_dimension[]) - 이는 재형상화된 tensor array_name[]을 특정된 tensor_dimension[]과 함께, 그의 데이터를 변화시키지 않고서 반환함.
더욱이, 하기의 용어들의 정의들이 제공된다:
빈(bin): 빈 스트링의 1 비트.
이진화: 신택스 요소의 모든 가능한 값들에 대한 빈 스트링들의 세트.
이진화 프로세스: 빈 스트링들의 세트에 대한 신택스 요소의 모든 가능한 값들의 고유 맵핑 프로세스.
빈 스트링: 신택스 요소의 이진화로부터의 신택스 요소들의 값들의 중간 이진 표현.
비트스트림: 하나 이상의 코딩된 신경 네트워크 모델들을 형성하는 연관된 데이터 및 코딩된 유닛들의 표현을 형성하는 비트들의 시퀀스.
디코딩된 텐서 버퍼( DTB ): 디코딩된 텐서들/참조를 위한 유닛들을 보유하는 버퍼.
비트스트림의 적어도 일부를 디코딩할 때(단순히 "디코딩 프로세스"라 말함), 하기의 조건들이 예시적인 상세한 신택스와 함께 적용될 수 있다:
Figure pct00007
NNR 비트스트림의 NNR 유닛을 디코딩하기 위해 요구되는 정보는 NNR 비트스트림의 일부로서 시그널링될 수 있다. 그러한 정보가 NNR 비트스트림의 일부가 아닌 경우, 그것은 다른 수단(예컨대, NNR 비트스트림에서 시그널링되거나 또는 전달되지는 않지만 디코딩에 필요한 대역외 토폴로지 정보 또는 파라미터들)에 의해 디코딩 프로세스에 제공될 수 있다.
Figure pct00008
디코딩 프로세스는 유형 NNR_STR의 NNR 유닛으로 개시될 수 있다(하기 표 참조). NNR_STR 유닛의 수신으로, 디코더는 그의 내부 상태들을 재설정하고 NNR 비트스트림을 수신할 준비가 될 수 있다. 선행 NNR 유닛들의 존재 및 카디널리티(cardinality)는 일부 세부항목들 및/또는 부록들에서 특정될 수 있다.
Figure pct00009
버퍼 DTB는 디코딩 프로세싱의 개시 시에 비어 있도록 설정된다(DTB 충만도가 0과 동일하게 설정됨).
본 명세서에서 상술된 예시적인 신택스를 사용하여, 하기에서 표는 상이한 유닛 유형들을 언급한다. 상기에서 언급된 NNR_STR은 NNR 비트스트림의 시작 유닛을 특정한다.
표 NNR 유닛 유형들
Figure pct00010
본 개시내용의 일부 실시예들에 따르면, 텐서 분해의 경우에 NNR 텐서 유형들을 특정하는 것이 제안된다. 예를 들어, 예시적인 MPEG NNR 초안 표준과 관련하여, 하기의 예시적인 신택스가 사용될 수 있다:
6.2 NNR 분해 식별자들
본 명세서에서 상술된 예시적인 신택스를 사용하여, 표는 텐서 분해의 경우에 NNR 텐서 유형들을 특정할 수 있다.
표. NNR 분해 텐서 유형 식별
Figure pct00011
텐서 출력
디코더 측에서, 텐서 프로세싱은, 유닛 헤더(예컨대, 예시적인 신택스를 갖는 nnr_compressed_data_unit_header) 및 압축된 페이로드를 디코딩한 후, NNR 압축된 페이로드마다 1회 수행될 수 있다.
상술된 예시적인 실시예에서, 현재 텐서의 프로세싱의 출력은 하기와 같이 특정될 수 있다:
- output_original_graph이 0과 동일한 경우 또는 lps_tensor_decomposition_flag가 0과 동일한 경우 또는 nnr_decomposition_tensor_type이 "TENSOR_OTHER"와 동일한 경우, 현재 텐서가 출력된다.
- 달리, DTB에 동일한 계층을 특정하는 식별자(예컨대, ref_id)를 갖는 텐서들이 없는 경우, 현재 텐서를 DTB에 추가한다. 텐서는 출력되지 않는다.
- 그렇지 않은 경우(현재 nnr_decomposition_tensor_type이 유형 "TENSOR_G" 또는 "TENSOR_H"의 텐서를 특정하고, DTB에 동일한 계층을 특정하는 식별자(예컨대, ref_id)를 갖는 텐서가 존재함), 상기에서 특정된 바와 같이, 텐서의 재구성을 그의 오리지널 형상으로 호출하여, 유형 "TENSOR_G" 또는 "TENSOR_H" 각각의 현재 텐서, 및 유형 "TENSOR_G" 또는 "TENSOR_H" 각각의, DTB 내의 그의 대응하는 텐서 둘 모두를 전달한다. 후자는 DTB로부터 삭제된다. 반환된 텐서는 출력된다.
"오리지널" 형상의 텐서들의 재구성
오리지널 텐서의 형상을 갖는 텐서들의 재구성은 오리지널 텐서의 분해로부터 기인한 모든 텐서들을 디코딩한 후에 수행될 수 있다.
예를 들어, 오리지널 텐서가 텐서 G 및 텐서 H로 분해되었던 실시예들에서, 상기에 설명된 바와 같이, 재구성은, 대응하는 텐서(예컨대, 동일한 계층을 특정하는 식별자(예컨대, ref_id)를 갖는 텐서)가 DTB에 존재하는 경우, 텐서(예컨대, 유형 "TENSOR_G" 또는 "TENSOR_H"의 텐서)를 디코딩한 후에 발생할 수 있다.
본 명세서에 기술된 예시적인 신택스에서, 이러한 재구성에 대한 입력들은 하기를 포함할 수 있다:
- 유형 "TENSOR_H"의 텐서 tensor_h[ ]
- tensor_h[ ]의 치수들에 대응하는 어레이 tensor_dimensions_h[ ](대응하는 nnr_compressed_data_unit_header로부터의 그의 디코딩된 신택스 tensor_dimensions에 의해 정의된 바와 같음)
- 유형 "TENSOR_G"의 텐서 tensor_g[ ]
- tensor_g[]의 치수들에 대응하는 어레이 tensor_dimensions_g[ ](그의 디코딩된 신택스 tensor_dimensions에 의해 정의된 바와 같음)
- 막 디코딩된 텐서 헤더의 계층 파라미터 세트로부터의 값들 tensor_reconstruction_mode 및 tensor_reconstruction_additional_info
기술된 예시적인 실시예에서, 이러한 재구성의 출력은 오리지널 텐서와 동일한 형상(본 명세서에서 오리지널 형상으로도 불림)을 갖는 현재 텐서 array_w이다. 본 개시내용의 일부 실시예들에 따르면, 현재 텐서 array_w는 텐서의 재구성 모드를 고려함으로써 계산될 수 있다. 본 명세서에서 상술된 예시적인 신택스에서, 하기의 표는 비트스트림에서 텐서의 재구성 모드를 특정하기 위해 사용될 수 있다:
[표 1]
Figure pct00012
현재 텐서 array_w는 하기와 같이 계산될 수 있다:
if (tensor_reconstruction_mode == NNR_FC)
array_w = MatrixProd(tensor_g, tensor_h)
else if (tensor_reconstruction_mode == NNR_CONV) {
rank = tensor_dimensions_g [3]
wShape = [tensor_dimensions_g [0], tensor_dimensions_g [1], tensor_dimensions_g [2], tensor_dimensions_h [3]]
prod = MatrixProd(TensorReshape (g, [-1, rank]), TensorReshape (h, [rank, -1])
array_w = TensorReshape (prod, wShape)
}
else if (tensor_reconstruction_mode == NNR_DWCONV) {
kernel = tensor_reconstruction_additional_info[0]
wShape = [kernel, kernel, -1,1]
array_w = TensorReshape (MatrixProd(g, h), wShape)
}
하이 레벨 신택스에 대해, 예시적인 초안 표준 MPEG-NNR을 사용하여, 일부 요소들이 하기와 같이 예시적인 초안 표준의 일부 표들에 추가될 수 있다:
8.2.4.6 NNR 압축된 데이터 유닛 헤더 신택스
Figure pct00013
여기서
Figure pct00014
nnr _layer_parameter_set_id는, 예를 들어 사용 중인 압축된 유닛에 대한 lps_layer_parameter_set_id의 값을 특정한다. unit_layer_parameter_set_id의 값은 0 내지 63(예를 들어, 이를 포함함)의 범위에 있을 수 있다.
Figure pct00015
nnr _decomposition_tensor_type은 텐서 분해의 경우에 텐서 유형을 특정한다(예를 들어, 상기에서 정의된 바와 같음).
8.2.5.2 NNR 모델 파라미터 세트 페이로드 신택스
Figure pct00016
여기서
Figure pct00017
mps_model_parameter_set_id는 다른 신택스 요소들에 의한 참조를 위해 MPS에 대한 식별자를 제공한다. mps_model_parameter_set_id의 값은 0 내지 15(이를 포함함)의 범위로 설정될 수 있다.
Figure pct00018
1과 동일한 decomposition_flag는 텐서 분해가 모델의 적어도 하나의 계층의 적어도 하나의 텐서에 적용되었음을 특정한다.
Figure pct00019
1과 동일한 output_original_graph는 텐서 분해가 사용될 때 디코더가 가중치들의 텐서들을 그들의 오리지널 형상으로 출력함을 특정한다.
Figure pct00020
mps_max_dec_tensor_buffering_ minus1 + 1은 텐서 저장 버퍼들의 유닛들로, NNR 모델에 대한 디코딩된 텐서 버퍼의 최대 필요 크기를 특정한다. mps_max_dec_tensor_buffering_minus1의 값은 0 내지 63의 범위로 설정될 수 있다.
8.2.5.3 NNR 계층 파라미터 세트 유닛 페이로드 신택스
Figure pct00021
여기서
Figure pct00022
lps _model_parameter_set_id는 활성 LPS의 mps_model_parameter_set_id의 값을 특정한다 . lps_model_parameter_set_id의 값은 0 내지 15(이를 포함함)의 범위로 설정될 수 있다.
Figure pct00023
lps _layer_parameter_set_id는 다른 신택스 요소들에 의한 참조를 위해 LPS에 대한 식별자를 제공한다. lps_layer_parameter_set_id의 값은 0 내지 63(이를 포함함)의 범위로 설정될 수 있다.
Figure pct00024
1과 동일한 lps _tensor_decomposition_flag는 텐서 분해가 이러한 계층에 사용됨을 특정한다.
Figure pct00025
tensor_reconstruction_mode는 상기에 정의된 바와 같은 분해된 디코딩된 텐서들로부터 현재 텐서를 그의 오리지널 형상으로 재구성하는 데 사용되는 모드를 특정한다.
Figure pct00026
tensor_reconstruction_additional_info_counts는 분해된 텐서들의 재구성을 수행하기 위해 요구될 수 있는 파라미터들의 수를 특정한다.
Figure pct00027
tensor_reconstruction_additional_info[ i ]는 분해된 텐서들을 재구성하기 위해 요구될 수 있는 파라미터들의 어레이를 특정한다. (예를 들어, 깊이별 콘볼루션 계층의 경우, tensor_reconstruction_additional_info_counts는 1로 설정될 수 있고, tensor_reconstruction_additional_info[ 0 ]은 콘볼루션의 커널 크기를 특정함).
변형예들:
일부 예시적인 실시예들은 상기에서 상술되었다. 본 개시내용은 또한 상기의 실시예들의 많은 변형예들을 포괄한다.
예를 들어, 본 개시내용의 일부 실시예들은 하기의 변형예들에 관한 것일 수 있다.
제1 변형예: output_original_graph를 갖지 않는 버전
제1 변형예에 따르면, (상기에 도입된) 변수 output_original_graph는 생략될 수 있다. 이러한 변형예에서, 재구성은 topology_storage_format 변수에 의존한다. 따라서, 상기에 도입된 예시적인 NNR 표들과 관련하여, 표 "NNR 모델 파라미터 세트 페이로드 신택스"는 수정될 수 있다(이는 변수 output_original_graph가 요구되지 않기 때문임).
본 명세서에서 상술된 예시적인 신택스를 사용하여, MPEG NNR 표준과 관련하여, 이는 하기의 표로 이어진다.
8.2.5.2 NNR 모델 파라미터 세트 페이로드 신택스
Figure pct00028
재구성 방법의 경우, 하기가 적용된다:
텐서 출력
이러한 프로세스는, 유닛 헤더 nnr_compressed_data_unit_header 및 압축된 페이로드의 디코딩 후, NNR 압축된 페이로드마다 1회 호출될 수 있다.
현재 텐서의 출력은 하기와 같이 특정될 수 있다:
- lps_tensor_decomposition_flag가 0과 동일하거나 nnr_decomposition_tensor_type이 "TENSOR_OTHER"과 동일하거나, 또는 topology_storage_format가 분해된 매트릭스를 사용하여 추론을 지원하는 토폴로지를 특정하는 경우, 현재 텐서가 출력된다.
- 달리, DTB에 동일한 "ref_id"를 갖는 텐서들이 없는 경우, 현재 텐서를 그의 "ref_id"와 함께 DTB에 추가한다. 텐서는 출력되지 않는다.
- 그렇지 않은 경우(현재 nnr_decomposition_tensor_type이 유형 "TENSOR_G" 또는 "TENSOR_H"의 텐서를 특정하고, DTB에 동일한 "ref_id"를 갖는 텐서가 존재함), 상기에서 특정된 바와 같이, 텐서의 재구성을 그의 오리지널 형상으로 호출하여, 유형 "TENSOR_G" 또는 "TENSOR_H" 각각의 현재 텐서, 및 유형 "TENSOR_G" 또는 "TENSOR_H" 각각의, DTB 내의 그의 대응하는 텐서 둘 모두를 전달한다. 후자는 DTB로부터 삭제된다. 반환된 텐서는 출력된다.
본 명세서에서 상술된 예시적인 신택스를 사용하여, topology_storage_format 변수가 하기에서 보여진 바와 같이 (예를 들어, 섹션 8.3.2.3.4에서) 정의될 수 있다:
8.3.2.3.4 NNR 토폴로지 유닛 헤더 시맨틱들
topology_storage_format은 하기에서 특정된 바와 같이, 저장된 신경 네트워크 토폴로지 정보의 포맷을 특정한다:
Figure pct00029
제2 변형예: 분해 성능 맵
제2 변형예에서, 정보는 분해 프로세스의 성능에 관한 시그널링으로 제공될 수 있다. 예를 들어, 그러한 정보는 분해된 텐서들과 이들의 오리지널 버전 사이의 상이한 평균 제곱 오차(Mean Square Error, MSE) 값들과 생성된 신경 네트워크(Neural Network, NN) 추론 정확도들 사이의 맵핑을 나타낼 수 있다.
생성된 정확도들은 NN의 출력의 상이한 태양들 또는 특성들에 대해 별개로 제공될 수 있다. 분류기 NN의 경우, 각각의 MSE 값(예컨대, 임계치)은 모든 클래스들을 고려하는 전체 정확도에 더하여, 각각의 클래스에 대한 별개의 정확도들에 맵핑될 수 있다. 일부 실시예들에서, 클래스들은 신경 네트워크 출력 순서, 즉 트레이닝 동안 특정된 순서에 기초하여 순서화될 수 있다.
본 명세서에서 상술된 예시적인 신택스를 사용하여, MPEG NNR 표준과 관련하여, 하기의 표가 사용될 수 있다.
8.2.5.2 NNR 모델 파라미터 세트 페이로드 신택스
Figure pct00030
여기서 Decomposition_performance_map()은 예를 들어 하기와 같이 정의될 수 있다:
Figure pct00031
여기서,
Figure pct00032
decomposition_performance_map()은 분해된 텐서들과 이들의 오리지널 버전 사이의 상이한 평균 제곱 오차(MSE) 임계치들과 생성된 신경 네트워크(NN) 추론 정확도들 사이의 맵핑을 특정한다. 생성된 정확도들은 NN의 출력의 상이한 태양들 또는 특성들에 대해 별개로 제공된다. 분류기 NN의 경우, 각각의 MSE 임계치는 모든 클래스들을 고려하는 전체 정확도에 더하여, 각각의 클래스에 대한 별개의 정확도들에 맵핑된다. 클래스들은 신경 네트워크 출력 순서, 즉 트레이닝 동안 특정된 순서에 기초하여 순서화된다.
Figure pct00033
count_thresholds는 분해 MSE 임계치들의 수를 특정한다.
Figure pct00034
Decomposition_threshold는 가중치들의 상이한 텐서들의 순위들을 도출하기 위해 적용되는 MSE 임계치들의 어레이를 특정한다.
Figure pct00035
nn _accuracy는 NN의 전체 정확도를 특정한다(예컨대, 모든 클래스들을 고려하는 것에 의한 분류 정확도).
Figure pct00036
nn _reduction_ratio[i]는 전체 모델의 텐서 분해 이후의 파라미터들의 총 수와 오리지널 모델에서의 파라미터들의 수 사이의 비율을 특정한다.
Figure pct00037
count_classes는 각각의 분해 임계치들에 대해 별개의 정확도들이 제공되는 클래스들의 수를 특정한다.
Figure pct00038
nn _class_accuracy는 소정 분해 임계치가 적용될 때 소정 클래스에 대한 정확도들의 어레이를 특정한다.
제3 변형예: 유형 NNR_PT_BLOCK의 유닛들의 경우의 재구성
이러한 제3 변형예는 설명의 용이함을 위해, (문헌[N19225 - Working Draft 4 of Compression of neural networks for multimedia content description and analysis ≫. International Organization for Standardization ISO/IEC JTC1/SC29/WG11, apr. 2020]과 같은) 예시적인 MPEG NNR 초안 표준과 호환가능한 예시적인 신택스를 사용하여 상술되며, 예시적인 신택스는 유형 NNR_PT_BLOCK의 유닛들을 포함한다. 그러한 예시적인 신택스를 사용하여, 다수의 파라미터들, 예컨대 선택적으로 분해될 수 있는 가중치 텐서들, 바이어스들, 배치 표준 파라미터들 등이 유닛 내에 존재할 수 있다. NNR_PT_BLOCK 유닛의 콘텍스트에서, 가중치들의 출력 텐서는, 예를 들어 외부 토폴로지 정보를 통해 디코더에 의해 송신되거나 알려질 수 있는 오리지널 형상을 준수해야 한다. 인코더에서 텐서 분해가 적용된 경우, 디코더에서 텐서의 재구성이 수행된다.
이러한 변형예에서, 때때로 디코더에서 RecWeightG 및 RecWeightH로도 불리는, 분해된 텐서들 G 및 H의 크기들을 각각 특정하기 위한 재구성의 프로세스 및 필요한 신택스를 단순화하는 것이 제안된다.
디코더는, 예컨대 계층이 유형 콘볼루션(CONV) 또는 깊이별 콘볼루션(DWCONV)의 것일 때, G 및 H 텐서들의 크기들을 도출할 필요가 있다. 따라서, 본 개시내용의 일부 실시예들은 G 및/또는 H 텐서들의 크기와 관련된 정보를 송신하는 것을 제안한다. G 및/또는 H 텐서의 크기는 G 및/또는 H 텐서의 치수의 크기, 예컨대 텐서의 행들의 수 또는 열들의 수를 지칭한다.
예시적인 신택스에 따르면, 그러한 정보는, 예를 들어 압축된 데이터 유닛 헤더에서, 하이 레벨 신택스(HLS)에 추가될 수 있다. 예를 들어, (MPEG NNR의 일부 초안과 호환가능한 예시적인 신택스와 같은) 예시적인 신택스에서, 순위 decomposition_rank 및 G 및/또는 H의 텐서 크기와 관련된 정보는 하기와 같이 NR 압축된 데이터 유닛 헤더에서 디코더로 송신될 수 있다:
Figure pct00039
여기서 g_number_of_rows는 유형 NNR_PT_BLOCK의 NNR 유닛에서 분해된 텐서들에 대해 재구성이 수행되는 경우에 매트릭스의 행들의 수 g를 특정한다.
이러한 정보는 NNR_PT_BLOCK의 경우에 디코더가 하기와 같이 재구성을 수행할 수 있게 할 수 있다(이때, (block_parameter_types & 0x01) != 0은 낮은 순위 분해된 가중치들이 존재함을 특정함).
(block_parameter_types & 0x01) != 0인 경우, 하기가 적용된다.
정수 가중치 텐서에 대한 디코딩 프로세스는 [g_number_of_rows, decomposition_rank]로 설정된 입력 변수 TensorDims로 호출될 수 있다. 변수 RecWeightG는 출력 변수 RecParam으로 설정될 수 있다.
유형 NNR_PT_BLOCK의 NNR 유닛에서 분해된 텐서들에 대해 재구성이 수행되는 경우에 매트릭스의 열들의 수 h인 h_number_of_columns가 하기에 의해 획득될 수 있다:
Figure pct00040
이어서, 정수 가중치 텐서에 대한 디코딩 프로세스는 [decomposition_rank, h_number_of_columns]로 설정된 입력 변수 TensorDims로 호출될 수 있다. 변수 RecWeightH는 출력 변수 RecParam으로 설정될 수 있다.
변수 RecWeight는 하기와 같이 도출될 수 있다:
RecWeight = TensorReshape (RecWeightG * RecWeightH, tensor_dimensions)
상기의 예시적인 신택스를 사용하여, 변수 g_number_of_rows가 이제 유닛 헤더로부터 이용가능할 수 있다. 이어서, 변수 h_number_of_columns가 도출될 수 있는데, 이는 출력 텐서 치수들의 치수들(tensor_dimensions)이 알려져 있기 때문이다. 따라서, 그러한 실시예는, 예를 들어 디코더가 텐서들 G 및 H를 개별적으로 디코딩하고 이어서 그들의 곱셈을 재형상화하여 재구성된 텐서 RecWeight를 획득할 수 있게 할 수 있다.
다른 변형예들에서, 변수 h_number_of_columns가 (예를 들어, 상기에서 상술된 제3 변형예에서의 g_number_of_rows와 유사하게, 유닛 헤더로부터 이용가능해지기 위해) 송신될 수 있으며, g_number_of_rows는 디코더 측에서 도출된다.
또 다른 변형예들에서, 변수들 g_number_of_rows 및 h_number_of_columns 둘 모두가 (예를 들어, 상기에서 상술된 제3 변형예에서의 g_number_of_rows와 유사하게, 둘 모두가 유닛 헤더로부터 이용가능해지기 위해) 송신되어, 이에 따라, 예를 들어 디코더 측에서의 대응하는 계산을 회피시킬 수 있다.
도 6은 전술된 바와 같은 실시예에 따른, 텐서 분해를 위해 생성된 텐서들을 디코딩하기 위한 방법(600)의 일례를 도시한다. 신경 네트워크를 나타내는 코딩된 데이터를 포함하는 비트스트림이 디코더에 입력된다. 601에서, 오리지널 텐서가 제1 텐서 및 제2 텐서로 분해되었는지, 예컨대 제1 및 제2 텐서들이 각각 낮은 순위 분해로 기인한 G 및 H 텐서들인지의 여부가 결정된다. 602에서, 디코딩할 현재 유닛이 텐서 분해로 기인한 텐서의 가중치들을 포함하는 경우, 제1 텐서의 크기는 비트스트림으로부터 디코딩된다. 예를 들어, G 텐서의 경우, 제1 텐서의 크기는 G 텐서의 행들의 수이다.
603에서, 제1 텐서는 디코딩된 크기에 기초하여 디코딩된다. 604에서, 디코딩된 크기로부터 제2 텐서의 크기가 도출된다. 예를 들어, 제2 텐서가 H 텐서일 때, 제2 텐서의 크기는 H 텐서의 열들의 수이다. 605에서, 제2 텐서는 도출된 크기에 기초하여 디코딩된다. 606에서, 디코더는 디코딩된 제1 및 제2 텐서들로부터 분해된 텐서를 재구성할 수 있다.
일부 실시예들에서, 비트스트림은 제1 텐서의 크기 대신에 제2 텐서의 크기를, 또는 둘 모두의 크기들을 포함한다.
도 7은 전술된 실시예에 따른, 비트스트림에 DNN의 텐서들을 인코딩하기 위한 방법(700)의 일례를 도시한다. 701에서, 제1 텐서가 제2 텐서 및 제3 텐서로 분해된다. 702에서, 제2 텐서의 크기가 비트스트림에 인코딩된다. 703에서, 제2 텐서의 파라미터들이 비트스트림에 인코딩된다. 704에서, 제3 텐서의 파라미터들이 비트스트림에 인코딩된다. 변형예에서, 제3 텐서의 크기가 또한 비트스트림에 인코딩될 수 있다.
도 8은 전술된 방법들 중 어느 한 방법에 따라 생성된 심층 신경 네트워크의 적어도 하나의 계층의 제1 텐서를 나타내는 데이터를 포함하는 비트스트림(800)의 일부의 일례를 도시한다. 일부 실시예들에서, 데이터는 제1 텐서가 제2 텐서 및 제3 텐서로 분해됨을 나타내는 정보(801), 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기(802), 및 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 파라미터들(803)을 포함한다. 변형예에서, 데이터는 또한, 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 다른 텐서의 파라미터들(804)을 포함한다.
추가적인 실시예들 및 정보
본 출원은 툴들, 특징부들, 실시예들, 모델들, 접근법들 등을 포함한 다양한 태양들을 기술한다. 이들 태양들 중 많은 것은 특이성을 갖고서 기술되며, 적어도, 개별 특성들을 보여주기 위해, 종종, 제한사항으로 들릴 수 있는 방식으로 기술된다. 그러나, 이는 설명의 명확성을 위한 것이며, 그들 태양들의 응용 또는 범주를 제한하지 않는다. 실제로, 상이한 모든 태양들이 조합되고 상호교환되어 추가의 태양들을 제공할 수 있다. 또한, 태양들이 조합될 수 있고, 마찬가지로 이전의 출원에 기술된 태양들과 상호교환될 수 있다.
본 출원에서 기술되고 고려되는 태양들은 많은 상이한 형태들로 구현될 수 있다. 하기의 도 1, 도 2 및 도 3은 일부 실시예들을 제공하지만, 다른 실시예들이 고려되고, 도 1, 도 2 및 도 3의 논의는 구현예들의 폭을 제한하지 않는다. 태양들 중 적어도 하나는 대체적으로 인코딩 및 디코딩(예를 들어, DNN의 적어도 일부 계층의 적어도 일부 가중치들의 인코딩 및 디코딩, 및/또는 비디오 인코딩 및 디코딩)에 관한 것이며, 적어도 하나의 다른 태양은 대체적으로, 생성되거나 또는 인코딩된 비트스트림을 송신하는 것에 관한 것이다. 이들 및 다른 태양들은 방법, 장치, 기술된 방법들 중 임의의 방법에 따라 데이터를 인코딩 또는 디코딩하기 위한 명령어들이 저장된 컴퓨터 판독가능 저장 매체, 및/또는 기술된 방법들 중 임의의 방법에 따라 생성된 비트스트림이 저장된 컴퓨터 판독가능 저장 매체로서 구현될 수 있다.
본 출원에서, "재구성된"및 "디코딩된"이라는 용어들은 상호교환가능하게 사용될 수 있으며, "픽셀" 및 "샘플"이라는 용어들은 상호교환가능하게 사용될 수 있고, "이미지", "픽처" 및 "프레임"이라는 용어들은 상호교환가능하게 사용될 수 있다. 반드시 그렇지는 않지만, 일반적으로, "재구성된"이라는 용어는 인코더 측에서 사용되는 반면, "디코딩된"은 디코더 측에서 사용된다.
본 출원에 기술된 다양한 방법들 및 다른 태양들은, 도 1 및 도 2에 도시된 바와 같이, 인코더(100) 및 디코더(200)의 모듈들, 예를 들어, 인트라 예측, 엔트로피 코딩, 및/또는 디코딩 모듈들(160, 260, 145, 230)을 수정하는 데 사용될 수 있다. 또한, 본 태양들은 VVC 또는 HEVC로 제한되지 않으며, 예를 들어, 기존에 존재하든 향후 개발되든, 다른 표준들 및 권고들, 및 임의의 그러한 표준들 및 권고들(VVC 및 HEVC를 포함함)의 확장들에 적용될 수 있다.
또한, 본 태양들은 VVC 또는 HEVC로 제한되지 않거나, 또는 심지어 비디오 데이터로 제한되지 않으며, 비디오 이외의 많은 기술 분야들에서 사용될 수 있는 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 텐서를 각각 인코딩, 디코딩하도록 적응된 인코더 또는 디코더에 적용될 수 있다(물론, 그러한 실시예들에서, 인트라 예측 모듈(160)과 같은 일부 모듈들은 선택적일 수 있음).
달리 나타내지 않거나, 또는 기술적으로 배제되지 않는 한, 본 출원에 기술되는 태양들은 개별적으로 또는 조합하여 사용될 수 있다.
다양한 수치 값들이 본 출원에서 사용된다(예를 들어, 텐서 재구성 모드들). 특정 값들은 예시적인 목적들을 위한 것이며, 기술된 태양들은 이들 특정 값들로 제한되지 않는다.
도 1은 인코더(100)를 도시한다. 이러한 인코더(100)의 변형들이 고려되지만, 인코더(100)는 모든 예상된 변형들을 기술하지 않고서 명료성의 목적들을 위해 후술된다.
인코딩되기 전, 시퀀스는, 비디오 시퀀스의 경우에 사전-인코딩 프로세싱(101), 예를 들어, 입력 색상 픽처에 색상 변환을 적용하는 것(예컨대, RGB 4:4:4로부터 YCbCr 4:2:0로의 변환), 또는 입력 픽처 컴포넌트들의 리맵핑을 수행하여, (예를 들어, 색상 컴포넌트들 중 하나의 컴포넌트의 히스토그램 등화를 사용하여) 압축에 더 탄력적인 신호 분포를 얻는 것을 거칠 수 있다. 또한, 사전-인코딩 프로세싱은, CABAC와 연관되어 위에서 상세히 설명된 예시적인 이진화로서의 이진화를 포함할 수 있다.
메타데이터는 사전-프로세싱과 연관될 수 있고, 비트스트림에 부착될 수 있다.
인코더(100)에서, 비디오 시퀀스의 경우, 픽처는 후술되는 바와 같이 인코더 요소들에 의해 인코딩된다. 인코딩될 픽처는, 예를 들어 CU들의 유닛들로 파티셔닝(102) 및 프로세싱된다. 각각의 유닛은, 예를 들어 인트라 또는 인터 모드를 사용하여 인코딩된다. 유닛이 인트라 모드에서 인코딩될 때, 그것은 인트라 예측을 수행한다(160). 인터 모드에서는 모션 추정(175) 및 보상(170)이 수행된다. 인코더는 유닛을 인코딩하기 위해 인트라 모드 또는 인터 모드 중 어느 것을 사용할지를 결정하고(105), 예를 들어 예측 모드 플래그에 의해 인트라/인터 결정을 나타낸다. 예측 잔차들은, 예를 들어 오리지널 이미지 블록에서 예측된 블록을 감산함으로써(110) 계산된다.
이어서, 예측 잔차들은 변환되고(125) 양자화된다(130).
양자화된 변환 계수들뿐만 아니라 모션 벡터들 및 다른 신택스 요소들은 엔트로피 코딩되어(145) 비트스트림을 출력한다.
인코더는 변환을 스킵할 수 있고, 비변환된 잔차 신호에 직접 양자화를 적용할 수 있다. 인코더는 변환 및 양자화 모두를 스킵할 수 있으며, 즉, 잔차는 변환 또는 양자화 프로세스들의 적용 없이 직접 코딩된다.
인코더는 인코딩된 블록을 디코딩하여 추가 예측들을 위한 기준을 제공한다. 양자화된 변환 계수들은 예측 잔차들을 디코딩하기 위해 역양자화되고(140) 역변환된다(150). 예를 들어, 비디오 시퀀스의 경우, 디코딩된 예측 잔차들과 예측된 블록을 조합(155)하여, 이미지 블록이 재구성된다. 인루프(in-loop) 필터들(165)이, 예를 들어, 인코딩 아티팩트들을 감소시키기 위해 디블록킹(deblocking)/샘플 적응적 오프셋(Sample Adaptive Offset, SAO) 필터링을 수행하도록 재구성된 픽처에 적용된다. 필터링된 이미지는 기준 픽처 버퍼(180)에 저장된다.
도 2는 디코더(200)의 블록도를 도시한다. 디코더(200)에서, 비트스트림은 후술되는 바와 같이 디코더 요소들에 의해 디코딩된다. 디코더(200)는 대체적으로 도 1에 기술된 바와 같이 인코딩 패스에 거의 상반되는 디코딩 패스를 수행한다. 인코더(100)는 또한, 대체적으로, 데이터를 인코딩하는 것의 일부로서 디코딩을 수행한다.
특히, 디코더(200)의 입력은 인코더(100)에 의해 생성될 수 있는 비트스트림을 포함한다. 비트스트림은 변환 계수들, 모션 벡터들, 및 다른 코딩된 정보를 획득하기 위해 먼저 엔트로피 디코딩된다(230).
비디오 비트스트림의 경우, 픽처 파티션 정보는 픽처가 어떻게 파티셔닝되는지를 나타낸다. 따라서, 디코더는 디코딩된 픽처 파티셔닝 정보에 따라 픽처를 분할할 수 있다(235). 변환 계수들은 예측 잔차들을 디코딩하기 위해 역양자화되고(240) 역변환된다(250). 디코딩된 예측 잔차들 및 예측된 블록을 조합하여(255) 이미지 블록이 재구성된다. 예측된 블록은 인트라 예측(260) 또는 모션 보상 예측(즉, 인터 예측)(275)으로부터 획득(270)될 수 있다. 재구성된 이미지에 인루프 필터들(265)이 적용된다. 필터링된 이미지는 기준 픽처 버퍼(280)에 저장된다.
(픽처 또는 계층 가중치들과 같은) 디코딩된 요소는 추가로, 사후-디코딩 프로세싱(285), 예를 들어, 디코딩된 이미지의 경우, 역 색상 변환(예컨대, YCbCr 4:2:0으로부터 RGB 4:4:4로의 변환), 또는 사전-인코딩 프로세싱(101)에서 수행되는 리맵핑 프로세스의 역을 수행하는 역 리맵핑을 거칠 수 있다. 사후 디코딩 프로세싱은 사전 인코딩 프로세싱에서 도출되고 비트스트림에서 시그널링된 메타데이터를 사용할 수 있다.
도 3은 다양한 태양들 및 실시예들이 구현되는 시스템의 일례의 블록도를 도시한다. 시스템(1000)은 후술되는 다양한 컴포넌트들을 포함하는 디바이스로서 구현될 수 있으며, 본 문서에 기술된 태양들 중 하나 이상을 수행하도록 구성된다. 그러한 디바이스들의 예들은, 다양한 전자 디바이스들, 예컨대 개인용 컴퓨터, 랩톱 컴퓨터, 스마트폰, 태블릿 컴퓨터, 디지털 멀티미디어 셋톱박스, 디지털 TV 수신기, 개인 비디오 기록 시스템, 커넥티드 가전, 및 서버를 포함하지만, 이들로 제한되지 않는다. 시스템(1000)의 요소들은 단일 집적 회로(IC), 다수의 IC들, 및/또는 별개의 컴포넌트들에서, 단독으로 또는 조합되어 구현될 수 있다. 예를 들어, 적어도 하나의 실시예에서, 시스템(1000)의 프로세싱 및 인코더/디코더 요소들은 다수의 IC들 및/또는 이산 컴포넌트들에 걸쳐 분산된다. 다양한 실시예들에서, 시스템(1000)은 예를 들어 통신 버스를 통해 또는 전용 입력 및/또는 출력 포트들을 통해 하나 이상의 다른 시스템들, 또는 다른 전자 디바이스들에 통신가능하게 커플링된다. 다양한 실시예들에서, 시스템(1000)은 본 문서에 기술된 태양들 중 하나 이상을 구현하도록 구성된다.
시스템(1000)은, 예를 들어 본 문서에 기술된 다양한 태양들을 구현하기 위해 그 내부에 로딩된 명령어들을 실행하도록 구성된 적어도 하나의 프로세서(1010)를 포함한다. 프로세서(1010)는 내장된 메모리, 입력 출력 인터페이스, 및 당업계에 알려진 바와 같은 다양한 다른 회로부들을 포함할 수 있다. 시스템(1000)은 적어도 하나의 메모리(1020)(예컨대, 휘발성 메모리 디바이스, 및/또는 비휘발성 메모리 디바이스)를 포함한다. 시스템(1000)은, 전기적으로 소거가능한 프로그래밍가능 판독-전용 메모리(Electrically Erasable Programmable Read-Only Memory, EEPROM), 판독-전용 메모리(Read-Only Memory, ROM), 프로그래밍가능 판독-전용 메모리(Programmable Read-Only Memory, PROM), 랜덤 액세스 메모리(Random Access Memory, RAM), 동적 랜덤 액세스 메모리(Dynamic Random-Access Memory, DRAM), 정적 랜덤 액세스 메모리(Static Random-Access Memory, SRAM), 플래시, 자기 디스크 드라이브, 및/또는 광학 디스크 드라이브를 포함하지만 이에 제한되지 않는 비휘발성 메모리 및/또는 휘발성 메모리를 포함할 수 있는 저장 디바이스(1040)를 포함한다. 저장 디바이스(1040)는 비제한적인 예들로서, 내부 저장 디바이스, 부착된 저장 디바이스(분리가능한 저장 디바이스 및 분리가능하지 않은 저장 디바이스를 포함함), 및/또는 네트워크 액세스가능한 저장 디바이스를 포함할 수 있다.
시스템(1000)은, 예를 들어, 인코딩된 또는 디코딩된 데이터 스트림(그러한 비디오 스트림 및/또는 적어도 하나의 DNN의 적어도 하나의 계층의 적어도 하나의 가중치를 나타내는 스트림)을 제공하기 위해 데이터를 프로세싱하도록 구성된 인코더/디코더 모듈(1030)을 포함하고, 인코더/디코더 모듈(1030)은 그 자신의 프로세서 및 메모리를 포함할 수 있다. 인코더/디코더 모듈(1030)은 인코딩 및/또는 디코딩 기능들을 수행하기 위해 디바이스에 포함될 수 있는 모듈(들)을 나타낸다. 알려진 바와 같이, 디바이스는 인코딩 및 디코딩 모듈들 중 하나 또는 2개 모두를 포함할 수 있다. 추가적으로, 인코더/디코더 모듈(1030)은 시스템(1000)의 별개의 요소로서 구현될 수 있거나, 또는 당업자에게 알려진 바와 같은 하드웨어와 소프트웨어의 조합으로서 프로세서(1010) 내에 통합될 수 있다.
본 문서에 기술된 다양한 태양들을 수행하기 위해 프로세서(1010) 또는 인코더/디코더(1030) 상에 로딩될 프로그램 코드는 저장 디바이스(1040)에 저장될 수 있고, 후속적으로, 프로세서(1010)에 의한 실행을 위해 메모리(1020) 상에 로딩될 수 있다. 다양한 실시예들에 따르면, 프로세서(1010), 메모리(1020), 저장 디바이스(1040), 및 인코더/디코더 모듈(1030) 중 하나 이상은 본 문서에 기술된 프로세스들의 수행 동안 다양한 항목들 중 하나 이상을 저장할 수 있다. 그러한 저장된 항목들은, 입력 비디오, 디코딩된 비디오 또는 디코딩된 비디오의 부분들, 적어도 하나의 DNN의 적어도 하나의 계층의 적어도 하나의 텐서의 적어도 하나의 가중치를 나타내는 데이터, 비트스트림, 매트릭스들, 변수들, 및 방정식들, 공식들, 연산들 및 연산 로직의 프로세싱으로부터의 중간 또는 최종 결과들을 포함할 수 있지만, 이들로 제한되지 않는다.
일부 실시예들에서, 프로세서(1010) 및/또는 인코더/디코더 모듈(1030) 내부의 메모리는 명령어들을 저장하고, 인코딩 또는 디코딩 동안 필요한 프로세싱을 위한 작업 메모리를 제공하는 데 사용된다. 그러나, 다른 실시예들에서, 프로세싱 디바이스(예를 들어, 프로세싱 디바이스는 프로세서(1010) 또는 인코더/디코더 모듈(1030) 중 어느 하나일 수 있음) 외부의 메모리가 이들 기능들 중 하나 이상에 사용된다. 외부 메모리는 메모리(1020) 및/또는 저장 디바이스(1040), 예를 들어, 동적 휘발성 메모리 및/또는 비휘발성 플래시 메모리일 수 있다. 일부 실시예들에서, 외부 비휘발성 플래시 메모리는 예를 들어, 텔레비전의 운영 체제를 저장하는 데 사용된다. 적어도 하나의 실시예에서, RAM과 같은 고속 외부 동적 휘발성 메모리는, MPEG-2(MPEG는 Moving Picture Experts Group을 지칭하고, MPEG-2는 또한 ISO/IEC 13818로도 지칭되고, 13818-1은 또한 H.222로도 알려져 있고, 13818-2는 또한 H.262로도 알려져 있음), HEVC(HEVC는 High Efficiency Video Coding을 지칭하고, H.265 및 MPEG-H Part 2로도 알려져 있음), 또는 VVC(Versatile Video Coding, JVET(Joint Video Experts Team)에서 개발 중인 새로운 표준)에 대한 것과 같은, 코딩 및 디코딩 동작들을 위한 작업 메모리로서 사용된다.
시스템(1000)의 요소들에 대한 입력은 블록(1130)에 표시된 바와 같은 다양한 입력 디바이스들을 통해 제공될 수 있다. 그러한 입력 디바이스들은, (i) 예를 들어 브로드캐스터(broadcaster)에 의해 무선으로(over the air) 송신된 무선 주파수(RF) 신호를 수신하는 무선 주파수(RF) 부분, (ii) 컴포넌트(COMP) 입력 단자(또는 COMP 입력 단자들의 세트), (iii) 범용 직렬 버스(USB) 입력 단자, 및/또는 (iv) 고화질 멀티미디어 인터페이스(HDMI) 입력 단자를 포함하지만, 이들로 제한되지 않는다. 도 3에 도시되지 않은 다른 예들은 복합 비디오를 포함한다.
다양한 실시예들에서, 블록(1130)의 입력 디바이스들은 당업계에 알려진 바와 같은 연관된 각자의 입력 프로세싱 요소들을 갖는다. 예를 들어, RF 부분은, (i) 원하는 주파수를 선택하는 것(신호를 선택하는 것, 신호를 주파수들의 대역으로 대역-제한하는 것으로도 지칭됨), (ii) 선택된 신호를 하향 변환(down converting)하는 것, (iii) (예를 들어) 소정 실시예들에서 채널로 지칭될 수 있는 신호 주파수 대역을 선택하기 위해 주파수들의 더 좁은 대역으로 다시 대역-제한하는 것, (iv) 하향 변환되고 대역-제한된 신호를 복조하는 것, (v) 에러 정정을 수행하는 것, 및 (vi) 데이터 패킷들의 원하는 스트림을 선택하기 위해 역다중화하는 것에 적합한 요소들과 연관될 수 있다. 다양한 실시예들의 RF 부분은 이러한 기능들을 수행하기 위한 하나 이상의 요소들, 예를 들어 주파수 선택기들, 신호 선택기들, 대역-제한기들, 채널 선택기들, 필터들, 하향변환기들, 복조기들, 오류 보정기들, 및 역다중화기들을 포함한다. RF 부분은, 예를 들어, 수신된 신호를 더 낮은 주파수(예를 들어, 중간 주파수 또는 기저대역 인근(near-baseband) 주파수)로 또는 기저대역으로 하향 변환하는 것을 포함한, 다양한 이들 기능들을 수행하는 튜너를 포함할 수 있다. 하나의 셋톱 박스 실시예에서, RF 부분 및 그의 연관된 입력 프로세싱 요소는 유선(예를 들어, 케이블) 매체를 통해 송신된 RF 신호를 수신하고, 원하는 주파수 대역에 대해 필터링, 하향 변환, 및 다시 필터링함으로써 주파수 선택을 수행한다. 다양한 실시예들은 전술한(및 다른) 요소들의 순서를 재배열하고, 이들 요소들 중 일부를 제거하고/하거나 유사하거나 상이한 기능들을 수행하는 다른 요소들을 추가한다. 요소를 추가하는 것은, 예를 들어, 증폭기들 및 아날로그-디지털 변환기를 삽입하는 것과 같이, 기존 요소들 사이에 요소들을 삽입하는 것을 포함할 수 있다. 다양한 실시예들에서, RF 부분은 안테나를 포함한다.
또한, USB 및/또는 HDMI 단자들은 시스템(1000)을 USB 및/또는 HDMI 접속부들을 통해 다른 전자 디바이스들에 접속하기 위한 각자의 인터페이스 프로세서들을 포함할 수 있다. 입력 프로세싱의 다양한 태양들, 예를 들어, 리드-솔로몬(Reed-Solomon) 에러 정정은 필요에 따라, 예를 들어, 별개의 입력 프로세싱 IC 내에서 또는 프로세서(1010) 내에서 구현될 수 있다는 것이 이해되어야 한다. 유사하게, USB 또는 HDMI 인터페이스 프로세싱의 태양들은 필요에 따라, 별개의 인터페이스 IC들 내에서 또는 프로세서(1010) 내에서 구현될 수 있다. 복조, 에러 정정, 및 역다중화된 스트림은, 예를 들어, 출력 디바이스 상에서의 프레젠테이션을 위해 필요에 따라 데이터스트림을 프로세싱하도록 메모리 및 저장 요소들과 조합하여 동작하는 프로세서(1010), 및 인코더/디코더(1030)를 포함한 다양한 프로세싱 요소들에 제공된다.
시스템(1000)의 다양한 요소들이 통합된 하우징 내에 제공될 수 있으며, 통합된 하우징 내에서, 다양한 요소들은 적합한 접속 배열(1140), 예를 들어, 인터-IC(I2C) 버스, 배선, 및 인쇄 회로 기판을 포함하는, 당업계에 알려진 바와 같은 내부 버스를 사용하여 상호접속되고 그들 사이에서 데이터를 전송할 수 있다.
시스템(1000)은 통신 채널(1060)을 통해 다른 디바이스들과의 통신을 가능하게 하는 통신 인터페이스(1050)를 포함한다. 통신 인터페이스(1050)는 통신 채널(1060)을 통해 데이터를 송신하도록 그리고 수신하도록 구성된 송수신기를 포함할 수 있지만, 이에 제한되지 않는다. 통신 인터페이스(1050)는 모뎀 또는 네트워크 카드를 포함할 수 있지만, 이들로 제한되지 않으며, 통신 채널(1060)은, 예를 들어, 유선 및/또는 무선 매체 내에서 구현될 수 있다.
데이터는, 다양한 실시예들에서, Wi-Fi 네트워크, 예를 들어 IEEE 802.11(IEEE는 전기 전자 기술자 협회(Institute of Electrical and Electronics Engineers)를 지칭함)과 같은 무선 네트워크를 사용하여, 시스템(1000)에 스트리밍되거나 또는 달리 제공된다. 이러한 실시예들의 Wi-Fi 신호는 Wi-Fi 통신들에 대해 적응된 통신 채널(1060) 및 통신 인터페이스(1050)를 통해 수신된다. 이러한 실시예들의 통신 채널(1060)은 전형적으로, 스트리밍 애플리케이션들 및 다른 OTT(over-the-top) 통신들을 허용하기 위한 인터넷을 포함하는 외부 네트워크들에 대한 액세스를 제공하는 액세스 포인트 또는 라우터에 접속된다. 다른 실시예들은 입력 블록(1130)의 HDMI 접속을 통해 데이터를 전달하는 셋톱 박스를 사용하여 스트리밍된 데이터를 시스템(1000)에 제공한다. 또 다른 실시예들은 입력 블록(1130)의 RF 접속을 사용하여 스트리밍된 데이터를 시스템(1000)에 제공한다. 전술한 바와 같이, 다양한 실시예들은 비-스트리밍 방식으로 데이터를 제공한다. 또한, 다양한 실시예들은 Wi-Fi 이외의 무선 네트워크들, 예를 들어 셀룰러 네트워크 또는 블루투스 네트워크를 사용한다.
시스템(1000)은 디스플레이(1100), 스피커들(1110), 및 다른 주변 디바이스들(1120)을 포함하는 다양한 출력 디바이스들에 출력 신호를 제공할 수 있다. 다양한 실시예들의 디스플레이(1100)는, 예를 들어, 터치스크린 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 커브드(curved) 디스플레이, 및/또는 폴더블(foldable) 디스플레이 중 하나 이상을 포함한다. 디스플레이(1100)는 텔레비전, 태블릿, 랩톱, 셀 폰(모바일 폰), 또는 다른 디바이스를 위한 것일 수 있다. 디스플레이(1100)는 또한, (예를 들어, 스마트 폰에서와 같이) 다른 컴포넌트들과 통합될 수 있거나, 또는 별개일 수 있다(예를 들어, 랩톱을 위한 외부 모니터). 실시예들의 다양한 예들에서, 다른 주변 디바이스들(1120)은 독립형 디지털 비디오 디스크(또는 디지털 다기능 디스크)(두 용어들 모두에 대해, DVR), 디스크 플레이어, 스테레오 시스템, 및/또는 조명 시스템 중 하나 이상을 포함한다. 다양한 실시예들은 시스템(1000)의 출력에 기초하여 기능을 제공하는 하나 이상의 주변 디바이스들(1120)을 사용한다. 예를 들어, 디스크 플레이어는 시스템(1000)의 출력을 재생하는 기능을 수행한다.
다양한 실시예들에서, 제어 신호들은, AV. Link, 소비자 전자제품 제어(Consumer Electronics Control, CEC)와 같은 시그널링, 또는 사용자 개입이 있거나 또는 개입 없이 디바이스 대 디바이스 제어를 가능하게 하는 다른 통신 프로토콜들을 사용하여 시스템(1000)과 디스플레이(1100), 스피커들(1110), 또는 다른 주변 디바이스들(1120) 사이에서 통신된다. 출력 디바이스들은 각자의 인터페이스들(1070, 1080, 1090)을 통해 전용 접속부들을 거쳐 시스템(1000)에 통신가능하게 커플링될 수 있다. 대안적으로, 출력 디바이스들은 통신 인터페이스(1050)를 통해 통신 채널(1060)을 사용하여 시스템(1000)에 접속될 수 있다. 디스플레이(1100) 및 스피커들(1110)은 예를 들어, 텔레비전과 같은 전자 디바이스에서 시스템(1000)의 다른 컴포넌트들과 단일 유닛으로 통합될 수 있다. 다양한 실시예들에서, 디스플레이 인터페이스(1070)는, 예를 들어 타이밍 제어기(T Con) 칩과 같은 디스플레이 드라이버를 포함한다.
디스플레이(1100) 및 스피커(1110)는 대안적으로, 예를 들어, 입력(1130)의 RF 부분이 별개의 셋톱박스의 일부인 경우, 다른 컴포넌트들 중 하나 이상과 별개일 수 있다. 디스플레이(1100) 및 스피커들(1110)이 외부 컴포넌트들인 다양한 실시예들에서, 출력 신호는, 예를 들어 HDMI 포트들, USB 포트들, 또는 COMP 출력들을 포함하는 전용 출력 접속들을 통해 제공될 수 있다.
실시예들은 프로세서(1010)에 의해 또는 하드웨어에 의해 구현되는 컴퓨터 소프트웨어에 의해, 또는 하드웨어와 소프트웨어의 조합에 의해 수행될 수 있다. 비제한적인 예로서, 실시예들은 하나 이상의 집적 회로들에 의해 구현될 수 있다. 메모리(1020)는 기술적 환경에 적절한 임의의 유형의 것일 수 있고, 비제한적인 예들로서, 광학 메모리 디바이스, 자기 메모리 디바이스, 반도체 기반 메모리 디바이스, 고정 메모리, 및 착탈식 메모리와 같은 임의의 적절한 데이터 저장 기술을 사용하여 구현될 수 있다. 프로세서(1010)는 기술적 환경에 적절한 임의의 유형의 것일 수 있고, 비제한적인 예들로서, 마이크로프로세서, 범용 컴퓨터, 특수 목적 컴퓨터, 및 멀티-코어 아키텍처에 기초한 프로세서 중 하나 이상을 포괄할 수 있다.
다양한 구현예들이 디코딩을 수반한다. 본 출원에서 사용되는 바와 같이, "디코딩"은 예를 들어, 수신된 인코딩된 시퀀스에 대해 수행되어 디스플레이에 적합한 최종 출력을 생성하는 프로세스들의 전부 또는 일부를 포함할 수 있다. 다양한 실시예들에서, 이러한 프로세스들은 디코더에 의해 전형적으로 수행되는 프로세스들 중 하나 이상의 프로세스들, 예를 들어, 엔트로피 디코딩, 역양자화, 역변환, 및 차동 디코딩을 포함한다. 다양한 실시예들에서, 그러한 프로세스들은 또한, 또는 대안적으로, 본 출원에서 기술된 다양한 구현예들의 디코더에 의해 수행되는 프로세스들을 포함한다.
추가 예들로서, 하나의 실시예에서, "디코딩"은 엔트로피 디코딩만을 지칭하고, 다른 실시예에서, "디코딩"은 차동 디코딩만을 지칭하고, 또 다른 실시예에서, "디코딩"은 엔트로피 디코딩과 차동 디코딩의 조합을 지칭한다. 어구 "디코딩 프로세스"가 동작들의 서브세트를 구체적으로 나타내기 위한 것인지, 또는 일반적으로 보다 광의의 디코딩 프로세스를 나타내기 위한 것인지 여부는 특정 설명들의 맥락에 기초하여 명확할 것이며, 당업자에 의해 잘 이해될 것으로 여겨진다.
다양한 구현예들이 인코딩을 수반한다. "디코딩"에 관한 상기의 논의와 유사한 방식으로, 본 출원에서 사용된 바와 같은 "인코딩"은 인코딩된 비트스트림을 생성하기 위해, 예를 들어, 입력 시퀀스 상에서 수행된 프로세스들의 전부 또는 일부를 포함할 수 있다. 다양한 실시예들에서, 이러한 프로세스들은 전형적으로 인코더에 의해 수행되는 프로세스들, 예를 들어, 파티셔닝, 차동 인코딩, 변환, 양자화, 및 엔트로피 인코딩 중 하나 이상을 포함한다. 다양한 실시예들에서, 그러한 프로세스들은 또한, 또는 대안적으로, 본 출원에서 기술된 다양한 구현예들의 인코더에 의해 수행되는 프로세스들을 포함한다.
추가 예들에서, 하나의 실시예에서, "인코딩"은 단지 엔트로피 인코딩을 지칭하며, 다른 실시예에서 "인코딩"은 단지 차동 인코딩을 지칭하고, 다른 실시예에서 "인코딩"은 차동 인코딩과 엔트로피 인코딩의 조합을 지칭한다. 어구 "인코딩 프로세스"가 동작들의 서브세트를 구체적으로 나타내기 위한 것인지, 또는 일반적으로 보다 광의의 인코딩 프로세스를 나타내기 위한 것인지 여부는 특정 설명들의 맥락에 기초하여 명확할 것이며, 당업자에 의해 잘 이해될 것으로 여겨진다.
본 명세서에 사용된 바와 같은 신택스 요소들은 설명적 용어들임에 유의한다. 따라서, 이들은 다른 신택스 요소 이름들의 사용을 배제하지 않는다.
도면이 흐름도로서 제시될 때, 그것은 또한 대응하는 장치의 블록도를 제공한다는 것을 이해해야 한다. 유사하게, 도면이 블록도로서 제시될 때, 그것은 또한 대응하는 방법/프로세스의 흐름도를 제공한다는 것을 이해해야 한다.
다양한 실시예들은 파라미터 모델(parametric model)들 또는 레이트 왜곡 최적화(rate distortion optimization)를 언급한다. 특히, 인코딩 프로세스 동안, 계산 복잡성의 제약들이 종종 주어지면, 레이트와 왜곡 사이의 균형 또는 트레이드오프가 보통 고려된다. 그것은 레이트 왜곡 최적화(RDO) 메트릭을 통해, 또는 최소 제곱 평균(Least Mean Square, LMS), 절대 오차 평균(Mean of Absolute Error, MAE), 또는 다른 그러한 측정들을 통해 측정될 수 있다. 레이트 왜곡 최적화는 일반적으로 레이트와 왜곡의 가중 합인 레이트 왜곡 함수를 최소화하는 것으로 공식화된다. 레이트 왜곡 최적화 문제를 해결하기 위한 상이한 접근법들이 있다. 예를 들어, 접근법들은 코딩 및 디코딩 후의 재구성된 신호의 그들의 코딩 비용 및 관련 왜곡의 완전한 평가와 함께, 모든 고려된 모드들 또는 코딩 파라미터 값들을 포함한, 모든 인코딩 옵션들의 광범위한 테스팅에 기초할 수 있다. 특히 재구성된 것이 아니라 예측 또는 예측 잔차 신호에 기초한 근사화된 왜곡의 계산과 함께 인코딩 복잡성을 덜기 위해, 더 빠른 접근법들이 또한 사용될 수 있다. 이들 2개의 접근법들의 혼합은 또한, 예컨대, 가능한 인코딩 옵션들 중 일부만에 대한 근사화된 왜곡 및 다른 인코딩 옵션들에 대한 완전한 왜곡을 사용함으로써 사용될 수 있다. 다른 접근법들은 가능한 인코딩 옵션들의 서브세트만을 평가한다. 보다 대체적으로, 많은 접근법들은 최적화를 수행하기 위해 다양한 기법들 중 임의의 것을 채용하지만, 최적화는 반드시 코딩 비용 및 관련 왜곡 둘 모두의 완전한 평가인 것은 아니다.
본 명세서에 기술된 구현예들 및 태양들은, 예를 들어, 방법 또는 프로세스, 장치, 소프트웨어 프로그램, 데이터 스트림, 또는 신호에서 구현될 수 있다. 구현예의 단일 형태의 맥락에서 논의된다 하더라도(예를 들어, 방법으로서만 논의됨), 논의된 특징들의 구현예는 다른 형태들(예를 들어, 장치 또는 프로그램)에서 구현될 수 있다. 장치는, 예를 들어, 적절한 하드웨어, 소프트웨어, 및 펌웨어로 구현될 수 있다. 예를 들어, 방법들은 예를 들어 컴퓨터, 마이크로프로세서, 집적 회로, 또는 프로그래밍가능 논리 디바이스를 포함하는, 일반적으로 프로세싱 디바이스들을 지칭하는 프로세서에서 구현될 수 있다. 프로세서들은 또한, 예를 들어, 컴퓨터들, 휴대폰들, 휴대용/개인 디지털 어시스턴트들("PDA들"), 및 최종 사용자들 사이의 정보의 통신을 용이하게 하는 다른 디바이스들과 같은 통신 디바이스들을 포함한다.
"하나의 실시예" 또는 "일 실시예" 또는 "하나의 구현예" 또는 "일 구현예"뿐만 아니라 그의 다른 변형들에 대한 언급은, 실시예와 관련하여 기술된 특정 특징부, 구조, 특성 등이 적어도 하나의 실시예에 포함됨을 의미한다. 따라서, 본 출원 전반에 걸친 다양한 곳에서 나타나는 "하나의 실시예에서" 또는 "일 실시예에서" 또는 "하나의 구현예에서" 또는 "일 구현예에서"라는 문구뿐만 아니라 임의의 다른 변형예들의 출현들은 반드시 모두 동일한 실시예를 참조하는 것은 아니다.
또한, 본 출원은 다양한 정보들을 "결정하는 것"을 지칭할 수 있다. 정보를 결정하는 것은, 예를 들어 정보를 추정하는 것, 정보를 계산하는 것, 정보를 예측하는 것, 또는 메모리로부터 정보를 회수하는 것 중 하나 이상을 포함할 수 있다.
또한, 본 출원은 다양한 정보들에 "액세스하는 것"을 지칭할 수 있다. 정보에 액세스하는 것은, 예를 들어 정보를 수신하는 것, (예를 들어, 메모리로부터) 정보를 회수하는 것, 정보를 저장하는 것, 정보를 이동시키는 것, 정보를 복사하는 것, 정보를 계산하는 것, 정보를 결정하는 것, 정보를 예측하는 것, 또는 정보를 추정하는 것 중 하나 이상을 포함할 수 있다.
또한, 본 출원은 다양한 정보들을 "수신하는 것"을 지칭할 수 있다. 수신하는 것은 "액세스하는 것"과 마찬가지로 광의의 용어인 것으로 의도된다. 정보를 수신하는 것은, 예를 들어, 정보에 액세스하는 것, 또는 (예를 들어, 메모리로부터) 정보를 회수하는 것 중 하나 이상을 포함할 수 있다. 또한, "수신하는 것"은 전형적으로, 예를 들어 정보를 저장하는 동작, 정보를 프로세싱하는 동작, 정보를 전송하는 동작, 정보를 이동시키는 동작, 정보를 복사하는 동작, 정보를 소거하는 동작, 정보를 계산하는 동작, 정보를 결정하는 동작, 정보를 예측하는 동작, 또는 정보를 추정하는 동작과 같은 동작들 동안 어떤 방식으로든 수반된다.
예를 들어 다음의 "A/B", "A 및/또는 B" 및 "A 및 B 중 적어도 하나"의 경우들에서 "/", "및/또는", 및 "적어도 하나" 중 임의의 것의 사용은 제1 열거된 옵션(A) 단독의 선택, 또는 제2 열거된 옵션(B) 단독의 선택, 또는 옵션들(A 및 B) 둘 모두의 선택을 포함하도록 의도됨을 이해해야 한다. 또 다른 예로서, "A, B 및/또는 C" 및 "A, B 및 C 중 적어도 하나"의 경우들에서, 이러한 어구는 제1 열거된 옵션(A) 단독의 선택, 또는 제2 열거된 옵션(B) 단독의 선택, 또는 제3 열거된 옵션(C) 단독의 선택, 또는 제1 및 제2 열거된 옵션들(A 및 B) 단독의 선택, 또는 제1 및 제3 열거된 옵션들(A 및 C) 단독의 선택, 또는 제2 및 제3 열거된 옵션들(B 및 C) 단독의 선택, 또는 3개의 모든 옵션들(A, B 및 C)의 선택을 포함하도록 의도된다. 이는, 본 명세서에 기술된 바와 같은 많은 항목들에 대해, 본 명세서 및 관련 분야의 당업자에게 명백한 바와 같이 확장될 수 있다.
또한, 본 명세서에 사용된 바와 같이, 용어 "신호"는 특히 대응하는 디코더에게 무언가를 나타내는 것을 지칭한다. 예를 들어, 소정 실시예들에서, 인코더는 복수의 변환들, 코딩 모드들 또는 플래그들 중 적어도 하나를 시그널링한다. 이러한 방식으로, 일 실시예에서, 동일한 파라미터가 인코더 측 및 디코더 측 둘 모두에서 사용된다. 따라서, 예를 들어, 인코더는 디코더가 동일한 특정 파라미터를 사용할 수 있도록 디코더에 특정 파라미터를 전송할 수 있다(명시적 시그널링). 반대로, 디코더가 이미 특정 파라미터뿐만 아니라 다른 것들을 갖고 있다면, 단순히 디코더가 특정 파라미터를 알고 선택할 수 있게 하기 위해 송신(암시적 시그널링) 없이 시그널링이 사용될 수 있다. 임의의 실제 함수들의 전송을 피함으로써, 다양한 실시예들에서 비트 절약이 실현된다. 시그널링은 다양한 방식들로 달성될 수 있다는 것이 이해되어야 한다. 예를 들어, 하나 이상의 신택스 요소들, 플래그들 등이 다양한 실시예들에서 대응하는 디코더에 정보를 시그널링하는 데 사용된다. 전술된 표현이 단어 "신호"의 동사 형태와 관련되지만, 단어 "신호"는 또한 명사로서 본 명세서에서 사용될 수 있다.
당업자에게 명백한 바와 같이, 구현예들은, 예를 들어 저장되거나 송신될 수 있는 정보를 전달하도록 포맷화된 다양한 신호들을 생성할 수 있다. 예를 들어, 정보는 방법을 수행하기 위한 명령어들, 또는 기술된 구현예들 중 하나에 의해 생성된 데이터를 포함할 수 있다. 예를 들어, 신호는 기술된 실시예의 비트스트림을 전달하도록 포맷화될 수 있다. 그러한 신호는, 예를 들어, 전자기파로서(예를 들어, 스펙트럼의 무선 주파수 부분을 사용함) 또는 기저대역 신호로서 포맷화될 수 있다. 포맷화는, 예를 들어, 데이터 스트림을 인코딩하는 것, 및 인코딩된 데이터 스트림으로 캐리어를 변조하는 것을 포함할 수 있다. 신호가 전달하는 정보는, 예를 들어, 아날로그 또는 디지털 정보일 수 있다. 신호는, 알려진 바와 같이, 다양한 상이한 유선 또는 무선 링크들을 통해 송신될 수 있다. 신호는 프로세서 판독가능 매체 상에 저장될 수 있다.
다수의 실시예들을 설명한다. 이들 실시예들의 특징부들은 다양한 청구항 카테고리들 및 유형들에 걸쳐 단독으로 또는 임의의 조합으로 제공될 수 있다. 또한, 실시예들은 다양한 청구 범위들 및 유형들에 걸쳐 단독으로 또는 임의의 조합으로 다음의 특징들, 디바이스들, 또는 태양들 중 하나 이상을 포함할 수 있다:
Figure pct00041
사전-트레이닝된 심층 신경 네트워크의 심층 신경 네트워크 압축을 사용하여 인코딩 및 디코딩을 수행하기 위한 프로세스 또는 디바이스.
Figure pct00042
사전-트레이닝된 심층 신경 네트워크의 적어도 하나의 계층의 인코딩 및 디코딩을 수행하여 심층 신경 네트워크 압축을 구현하기 위한 프로세스 또는 디바이스.
Figure pct00043
하나 이상의 계층들을 포함하는 사전-트레이닝된 심층 신경 네트워크의 심층 신경 네트워크 압축을 구현하기 위한 파라미터들을 나타내는 비트스트림에 삽입된 정보를 이용하여 인코딩 및 디코딩을 수행하기 위한 프로세스 또는 디바이스.
Figure pct00044
심층 신경 네트워크의 심층 신경 네트워크 압축을 구현하기 위한 파라미터들을 나타내는 비트스트림에 삽입된 정보를 이용하여 인코딩 및 디코딩을 수행하기 위한 프로세스 또는 디바이스.
Figure pct00045
기술된 신택스 요소들 중 하나 이상, 또는 이들의 변형들을 포함하는 비트스트림 또는 신호.
Figure pct00046
기술된 실시예들 중 어느 하나에 따라 생성된 신택스 이송 정보를 포함하는 비트스트림 또는 신호.
Figure pct00047
기술된 실시예들 중 어느 하나에 따른 생성 및/또는 전송 및/또는 수신 및/또는 디코딩.
Figure pct00048
기술된 실시예들 중 어느 하나에 따른 방법, 프로세스, 장치, 명령어들을 저장하는 매체, 데이터를 저장하는 매체, 또는 신호.
Figure pct00049
디코더가 인코더에 의해 사용되는 것에 대응하는 방식으로 코딩 모드를 결정할 수 있게 하는 시그널링 신택스 요소들에 삽입하는 것.
Figure pct00050
기술된 신택스 요소들 중 하나 이상 또는 이들의 변형들을 포함하는 비트스트림 또는 신호를 생성하는 것 그리고/또는 송신하는 것 그리고/또는 수신하는 것 그리고/또는 디코딩하는 것.
Figure pct00051
기술된 실시예들 중 어느 하나에 따라 변환 방법(들)을 수행하는 TV, 셋톱 박스, 셀 폰, 태블릿, 또는 다른 전자 디바이스.
Figure pct00052
전술된 실시예들 중 어느 하나에 따라, 변환 방법(들) 결정을 수행하고, (예를 들어, 모니터, 스크린, 또는 다른 유형의 디스플레이를 사용하여) 생성된 이미지를 디스플레이하는 TV, 셋톱 박스, 셀 폰, 태블릿, 또는 다른 전자 디바이스.
Figure pct00053
기술된 실시예들 중 어느 하나에 따라, 인코딩된 이미지를 포함하는 신호를 수신하기 위한 채널을 선택, 대역제한, 또는 (예를 들어, 튜너를 사용하여) 튜닝하고, 변환 방법(들)을 수행하는 TV, 셋톱 박스, 셀 폰, 태블릿, 또는 다른 전자 디바이스.
Figure pct00054
(예를 들어, 안테나를 사용하여) 인코딩된 이미지를 포함하는 무선 신호를 수신하고, 변환 방법(들)을 수행하는 TV, 셋톱 박스, 셀 폰, 태블릿, 또는 다른 전자 디바이스.

Claims (25)

  1. 방법으로서,
    - 적어도 하나의 심층 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 제1 텐서가, 파라미터들이 비트스트림에 인코딩되는 제2 텐서 및 제3 텐서로 분해된다는 결정에 응답하여, 비트스트림으로부터, 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기를 디코딩하는 단계, 및
    - 디코딩된 크기에 기초하여 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서를 디코딩하는 단계를 포함하는, 방법.
  2. 하나 이상의 프로세서들을 포함하는 장치로서, 하나 이상의 프로세서들은,
    - 적어도 하나의 심층 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 제1 텐서가, 파라미터들이 비트스트림에 인코딩되는 제2 텐서 및 제3 텐서로 분해된다고 결정하도록,
    - 비트스트림으로부터, 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기를 디코딩하도록, 그리고
    - 디코딩된 크기에 기초하여 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서를 디코딩하도록 구성되는, 장치.
  3. 제1항의 방법, 또는 제2항의 장치에 있어서, 비트스트림으로부터, 제2 텐서 및 제3 텐서로 분해되는 적어도 하나의 제1 텐서의 텐서 분해의 분해 순위를 디코딩하는 단계를 추가로 포함하거나, 또는 하나 이상의 프로세서들은 상기 디코딩을 위해 추가로 구성되는, 방법 또는 장치.
  4. 제1항 또는 제3항의 방법, 또는 제2항 또는 제3항의 장치에 있어서, 디코딩된 크기로부터 제2 텐서 및 제3 텐서 중 다른 하나의 텐서의 크기를 도출하는 단계를 추가로 포함하거나, 또는 하나 이상의 프로세서들은 상기 도출을 위해 추가로 구성되는, 방법 또는 장치.
  5. 제4항의 방법, 또는 제4항의 장치에 있어서, 도출된 크기에 기초하여 제2 텐서 및 제3 텐서 중 다른 하나의 텐서를 디코딩하는 단계를 추가로 포함하거나, 또는 하나 이상의 프로세서들은 상기 디코딩을 위해 추가로 구성되는, 방법 또는 장치.
  6. 제1항 또는 제3항 내지 제5항 중 어느 한 항의 방법, 또는 제2항 또는 제3항 내지 제5항 중 어느 한 항의 장치에 있어서, 상기 디코딩된 제2 텐서 및 상기 디코딩된 제3 텐서로부터 상기 적어도 하나의 제1 텐서를 재구성하는 단계를 추가로 포함하거나, 또는 하나 이상의 프로세서들은 상기 재구성을 위해 추가로 구성되는, 방법 또는 장치.
  7. 제6항의 방법 또는 장치에 있어서, 적어도 하나의 제1 텐서의 재구성 동안, 적어도 하나의 제2 텐서 및 적어도 하나의 제3 텐서의 제1 디코딩된 텐서는 디코딩된 텐서 버퍼에 저장되는, 방법 또는 장치.
  8. 제6항 또는 제7항의 방법, 또는 제6항 또는 제7항의 장치에 있어서,
    비트스트림으로부터, 상기 디코딩된 제2 텐서 및 상기 디코딩된 제3 텐서로부터 제1 텐서를 그의 오리지널 형상으로 재구성하는 데 사용되는 모드를 나타내는 정보를 디코딩하는 단계를 추가로 포함하거나, 또는 하나 이상의 프로세서들은 상기 디코딩을 위해 추가로 구성되는, 방법 또는 장치.
  9. 제7항 또는 제8항의 방법 또는 장치에 있어서, 제2 텐서 또는 제3 텐서 중 하나의 텐서를 디코딩하는 것은,
    - 적어도 하나의 제2 텐서 및 적어도 하나의 제3 텐서 중 다른 하나의 텐서가 디코딩된 텐서 버퍼에 존재하지 않는다는 결정에 응답하여, 상기 하나의 디코딩된 텐서를 상기 디코딩된 텐서 버퍼에 저장하는 것을 포함하는, 방법 또는 장치.
  10. 제9항의 방법 또는 장치에 있어서, 적어도 하나의 제2 텐서 및 적어도 하나의 제3 텐서 중 다른 하나의 텐서가 디코딩된 텐서 버퍼에 존재하지 않는다고 결정하는 것은 디코딩된 텐서의 유형에 응답하는, 방법 또는 장치.
  11. 제9항 또는 제10항의 방법 또는 장치에 있어서, 적어도 하나의 제2 텐서 및 적어도 하나의 제3 텐서 중 다른 하나의 텐서가 디코딩된 텐서 버퍼에 존재하지 않는다고 결정하는 것은 디코딩된 텐서와 동일한 계층을 특정하는 식별자와 연관된 텐서를 찾는 것을 포함하는, 방법 또는 장치.
  12. 제7항 내지 제11항 중 어느 한 항의 방법 또는 장치에 있어서, 디코딩된 텐서 버퍼는 하나 초과의 디코딩된 텐서를 저장하도록 구성되는, 방법 또는 장치.
  13. 심층 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 제1 텐서를 나타내는 데이터를 비트스트림에 인코딩하는 단계를 포함하는 방법으로서, 데이터를 인코딩하는 단계는,
    - 적어도 하나의 제1 텐서가 제2 텐서 및 제3 텐서로 분해된다는 결정에 응답하여, 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기를 인코딩하는 단계, 및
    - 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서를 나타내는 파라미터들을 인코딩하는 단계를 포함하는, 방법.
  14. 심층 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 제1 텐서를 나타내는 데이터를 비트스트림에 인코딩하기 위한 장치로서, 장치는 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은,
    - 적어도 하나의 제1 텐서가 제2 텐서 및 제3 텐서로 분해된다고 결정하기 위해,
    - 결정에 응답하여, 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기를 인코딩하기 위해, 그리고
    - 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서를 인코딩하기 위해 구성되는, 장치.
  15. 심층 신경 네트워크의 적어도 하나의 계층의 적어도 하나의 제1 텐서를 나타내는 데이터를 포함하는 비트스트림을 포함하는 신호로서, 데이터는,
    - 적어도 하나의 제1 텐서가 제2 텐서 및 제3 텐서로 분해됨을 나타내는 정보,
    - 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기,
    - 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 파라미터들을 포함하는, 신호.
  16. 제13항의 방법, 또는 제14항의 장치, 또는 제15항의 신호에 있어서, 데이터는 제2 텐서 및 제3 텐서로 분해되는 적어도 하나의 제1 텐서의 텐서 분해의 분해 순위를 추가로 포함하는, 방법 또는 장치 또는 신호.
  17. 제13항 또는 제16항의 방법, 또는 제14항 또는 제16항의 장치, 또는 제15항 또는 제16항의 신호에 있어서, 데이터는 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 다른 하나의 것의 파라미터들을 포함하는, 방법 또는 장치 또는 신호.
  18. 제17항의 방법, 또는 제17항의 장치, 또는 제17항의 신호에 있어서, 데이터는 적어도 하나의 제2 텐서 또는 적어도 하나의 제3 텐서의 텐서 유형을 나타내는 정보를 추가로 포함하는, 방법 또는 장치 또는 신호.
  19. 제17항 또는 제18항의 방법, 또는 제17항 또는 제18항의 장치, 또는 제17항 또는 제18항의 신호에 있어서, 데이터는 제2 텐서 및 제3 텐서로부터 제1 텐서를 그의 오리지널 형상으로 재구성하는 데 사용되는 모드를 나타내는 정보를 추가로 포함하는, 방법 또는 장치 또는 신호.
  20. 제1항 또는 제3항 내지 제13항 또는 제16항 내지 제19항 중 어느 한 항의 방법, 또는 제2항 내지 제12항 또는 제14항 또는 제16항 내지 제19항 중 어느 한 항의 장치, 또는 제15항 내지 제19항 중 어느 한 항의 신호에 있어서, 제2 텐서 및 제3 텐서는 적어도 하나의 제1 텐서의 낮은 순위 또는 낮은 변위 순위 분해로부터 기인하는, 방법 또는 장치 또는 신호.
  21. 제20항의 방법 또는 장치 또는 신호에 있어서, 제2 텐서는 G 텐서이고, 제3 텐서는 H 텐서인, 방법 또는 장치 또는 신호.
  22. 제1항 또는 제3항 내지 제13항 또는 제16항 내지 제21항 중 어느 한 항의 방법, 또는 제2항 내지 제12항 또는 제14항 또는 제16항 내지 제21항 중 어느 한 항의 장치, 또는 제15항 내지 제21항 중 어느 한 항의 신호에 있어서, 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 크기는 제2 텐서 및 제3 텐서 중 적어도 하나의 텐서의 행들의 수 또는 열들의 수인, 방법 또는 장치 또는 신호.
  23. 제15항 내지 제22항 중 어느 한 항에 따른 신호를 포함하는 컴퓨터 판독가능 매체.
  24. 하나 이상의 프로세서들로 하여금, 제1항 또는 제3항 내지 제13항 또는 제16항 내지 제22항 중 어느 한 항의 방법을 수행하게 하기 위한 명령어들이 저장된 컴퓨터 판독가능 저장 매체.
  25. 프로그램이 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 제1항 또는 제3항 내지 제13항 또는 제16항 내지 제22항 중 어느 한 항의 방법을 수행하게 하는 명령어들을 포함하는 컴퓨터 프로그램 제품.
KR1020237000861A 2020-06-17 2021-06-09 심층 신경 네트워크를 인코딩/디코딩하기 위한 시스템들 및 방법들 KR20230027152A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063040048P 2020-06-17 2020-06-17
US63/040,048 2020-06-17
US202063050052P 2020-07-09 2020-07-09
US63/050,052 2020-07-09
PCT/EP2021/065522 WO2021254855A1 (en) 2020-06-17 2021-06-09 Systems and methods for encoding/decoding a deep neural network

Publications (1)

Publication Number Publication Date
KR20230027152A true KR20230027152A (ko) 2023-02-27

Family

ID=76483297

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237000861A KR20230027152A (ko) 2020-06-17 2021-06-09 심층 신경 네트워크를 인코딩/디코딩하기 위한 시스템들 및 방법들

Country Status (7)

Country Link
US (1) US20230252273A1 (ko)
EP (1) EP4168940A1 (ko)
JP (1) JP2023530470A (ko)
KR (1) KR20230027152A (ko)
CN (1) CN116018757A (ko)
IL (1) IL299171A (ko)
WO (1) WO2021254855A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2022202472A1 (en) * 2022-04-13 2023-11-02 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tensor
AU2022202471A1 (en) * 2022-04-13 2023-11-02 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tensor
AU2022202470A1 (en) * 2022-04-13 2023-11-02 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tensor

Also Published As

Publication number Publication date
WO2021254855A1 (en) 2021-12-23
IL299171A (en) 2023-02-01
US20230252273A1 (en) 2023-08-10
EP4168940A1 (en) 2023-04-26
CN116018757A (zh) 2023-04-25
JP2023530470A (ja) 2023-07-18

Similar Documents

Publication Publication Date Title
US20230252273A1 (en) Systems and methods for encoding/decoding a deep neural network
KR20220047725A (ko) 암시적 다중 변환 선택을 위한 변환 선택
US20230267309A1 (en) Systems and methods for encoding/decoding a deep neural network
US20220188633A1 (en) Low displacement rank based deep neural network compression
US20230064234A1 (en) Systems and methods for encoding a deep neural network
KR20230025879A (ko) 신경 네트워크 기반 인트라 예측 모드에 대한 변환 프로세스의 적응
US20220207364A1 (en) Framework for coding and decoding low rank and displacement rank-based layers of deep neural networks
WO2021063559A1 (en) Systems and methods for encoding a deep neural network
US20230396801A1 (en) Learned video compression framework for multiple machine tasks
US20220309350A1 (en) Systems and methods for encoding a deep neural network
US20220300815A1 (en) Compression of convolutional neural networks
JP2024513873A (ja) 切り替え可能な補間フィルタを用いる幾何学的分割
KR20220161441A (ko) 비디오 인코딩 및 디코딩을 위한 방법 및 장치
CN114930819A (zh) 三角形合并模式中的子块合并候选
US20230014367A1 (en) Compression of data stream
TW202420823A (zh) 使用彈性網路之深度特徵壓縮的熵調適
WO2024094478A1 (en) Entropy adaptation for deep feature compression using flexible networks
WO2024068298A1 (en) Mixing analog and digital neural networks implementations in video coding processes

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination