KR20240054975A - 기계 학습 시스템들을 사용하여 네트워크 파라미터 서브공간에서의 인스턴스 적응적 이미지 및 비디오 압축 - Google Patents

기계 학습 시스템들을 사용하여 네트워크 파라미터 서브공간에서의 인스턴스 적응적 이미지 및 비디오 압축 Download PDF

Info

Publication number
KR20240054975A
KR20240054975A KR1020247005499A KR20247005499A KR20240054975A KR 20240054975 A KR20240054975 A KR 20240054975A KR 1020247005499 A KR1020247005499 A KR 1020247005499A KR 20247005499 A KR20247005499 A KR 20247005499A KR 20240054975 A KR20240054975 A KR 20240054975A
Authority
KR
South Korea
Prior art keywords
subspace
model parameters
neural network
input data
image
Prior art date
Application number
KR1020247005499A
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 KR20240054975A publication Critical patent/KR20240054975A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/211Selection of the most significant subset of features
    • 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
    • G06N3/0455Auto-encoder networks; Encoder-decoder networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Analysis (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

기계 학습 시스템들을 사용하여 데이터를 압축하기 위한 기술들이 설명된다. 예시적인 프로세스는 신경망 압축 시스템에 의한 압축을 위해 입력 데이터를 수신하는 단계를 포함할 수 있다. 프로세스는 입력 데이터에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하는 단계를 포함할 수 있고, 업데이트된 모델 파라미터들의 세트는 모델 파라미터들의 서브공간으로부터 선택된다. 프로세스는 입력 데이터의 압축된 버전 및 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들의 압축된 버전을 포함하는 적어도 하나의 비트스트림을 생성하는 단계를 포함할 수 있다. 프로세스는 수신기로의 송신을 위해 적어도 하나의 비트스트림을 출력하는 단계를 포함할 수 있다.

Description

기계 학습 시스템들을 사용하여 네트워크 파라미터 서브공간에서의 인스턴스 적응적 이미지 및 비디오 압축
본 개시는 전반적으로 데이터 압축에 관한 것이다. 예를 들어, 본 개시의 양태들은 이미지 및/또는 비디오 콘텐츠를 압축하기 위해 기계 학습 시스템들을 사용하는 것을 포함한다.
많은 디바이스들 및 시스템들은 소비를 위해 이미지/비디오 데이터가 프로세싱되고 출력되는 것을 허용한다. 디지털 이미지/비디오 데이터에는 이미지/비디오 품질, 성능 및 특징(feature)의 증가하는 요구를 충족하기 위해 대량의 데이터를 포함한다. 예를 들어, 비디오 데이터의 소비자들은 전형적으로, 고 충실도(fidelity), 해상도들, 프레임 레이트들 등을 갖는 고품질 비디오들을 원한다. 이러한 요구를 충족시키기 위해 종종 필요한 많은 양의 비디오 데이터는 비디오 데이터를 프로세싱하고 저장하는 통신 네트워크 및 디바이스에 상당한 부담을 준다. 비디오 코딩 기술들은 비디오 데이터를 압축하기 위해 사용될 수 있다. 비디오 코딩의 하나의 예시적인 목표는 비디오 품질에서의 열화를 방지하거나 최소화하면서, 비디오 데이터를 더 낮은 비트 레이트를 사용하는 형태로 압축하는 것이다. 끊임없이 진화하는 비디오 서비스가 이용가능하게 되고, 대량의 비디오 데이터에 대한 요구가 증가함에 따라, 더 나은 성능 및 효율을 갖는 코딩 기술이 필요하다.
일부 예들에서, 하나 이상의 기계 학습 시스템들을 사용하여 데이터 압축 및/또는 압축 해제(decompression)를 위한 시스템들 및 기술들이 설명된다. 일부 예들에서, 이미지/비디오 데이터를 압축 및/또는 압축 해제하기 위한 (예를 들어, 하나 이상의 신경망 시스템들을 사용하는) 기계 학습 시스템들이 제공된다. 적어도 하나의 예시적인 예에 따르면, 이미지 데이터를 프로세싱하는 방법이 제공된다. 방법은: 신경망 압축 시스템에 의한 압축을 위해 입력 데이터를 수신하는 단계; 입력 데이터에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하는 단계로서, 업데이트된 모델 파라미터들의 세트는 모델 파라미터들의 서브공간(subspace)으로부터 선택되는, 상기 업데이트된 모델 파라미터들의 세트를 결정하는 단계; 입력 데이터의 압축된 버전 및 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들의 압축된 버전을 포함하는 적어도 하나의 비트스트림을 생성하는 단계; 및 수신기로의 송신을 위해 적어도 하나의 비트스트림을 출력하는 단계를 포함할 수 있다.
다른 예에서, 적어도 하나의 메모리 및 적어도 하나의 메모리에 통신가능하게 결합된 적어도 하나의 프로세서(예를 들어, 회로부에 구성됨)를 포함하는, 이미지 데이터를 프로세싱하기 위한 장치가 제공된다. 적어도 하나의 프로세서는: 신경망 압축 시스템에 의한 압축을 위해 입력 데이터를 수신하고; 입력 데이터에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하는 것으로서, 업데이트된 모델 파라미터들의 세트는 모델 파라미터들의 서브공간으로부터 선택되는, 상기 업데이트된 모델 파라미터들의 세트를 결정하고; 입력 데이터의 압축된 버전 및 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들의 압축된 버전을 포함하는 적어도 하나의 비트스트림을 생성하고; 및 수신기로의 송신을 위해 적어도 하나의 비트스트림을 출력하도록 구성될 수 있다.
다른 예에서, 저장된 적어도 하나의 명령을 포함하는 비일시적 컴퓨터 판독가능 매체가 제공되고, 명령이 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금: 신경망 압축 시스템에 의한 압축을 위해 입력 데이터를 수신하게 하고; 입력 데이터에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하게 하는 것으로서, 업데이트된 모델 파라미터들의 세트는 모델 파라미터들의 서브공간으로부터 선택되는, 상기 업데이트된 모델 파라미터들의 세트를 결정하게 하고; 입력 데이터의 압축된 버전 및 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들의 압축된 버전을 포함하는 적어도 하나의 비트스트림을 생성하게 하고; 및 수신기로의 송신을 위해 적어도 하나의 비트스트림을 출력하게 할 수 있다.
다른 예에서, 이미지 데이터를 프로세싱하기 위한 장치가 제공된다. 장치는: 신경망 압축 시스템에 의한 압축을 위해 입력 데이터를 수신하기 위한 수단; 입력 데이터에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하기 위한 수단으로서, 업데이트된 모델 파라미터들의 세트는 모델 파라미터들의 서브공간으로부터 선택되는, 상기 업데이트된 모델 파라미터들의 세트를 결정하기 위한 수단; 입력 데이터의 압축된 버전 및 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들의 압축된 버전을 포함하는 적어도 하나의 비트스트림을 생성하기 위한 수단; 및 수신기로의 송신을 위해 적어도 하나의 비트스트림을 출력하기 위한 수단을 포함할 수 있다.
다른 예에서, 이미지 데이터를 프로세싱하기 위한 방법이 제공된다. 방법은: 입력 데이터의 압축된 버전 및 하나 이상의 서브공간 좌표들의 압축된 버전을 수신하는 단계; 하나 이상의 서브공간 좌표들에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하는 단계; 및 입력 데이터의 재구성된 버전을 산출하기 위해 업데이트된 모델 파라미터들의 세트를 사용하여 입력 데이터를 프로세싱하는 단계를 포함할 수 있다.
다른 예에서, 적어도 하나의 메모리 및 적어도 하나의 메모리에 통신가능하게 결합된 적어도 하나의 프로세서(예를 들어, 회로부에 구성됨)를 포함하는, 이미지 데이터를 프로세싱하기 위한 장치가 제공된다. 적어도 하나의 프로세서는, 입력 데이터의 압축된 버전 및 하나 이상의 서브공간 좌표들의 압축된 버전을 수신하고; 하나 이상의 서브공간 좌표들에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하고; 및 입력 데이터의 재구성된 버전을 산출하기 위해 업데이트된 모델 파라미터들의 세트를 사용하여 입력 데이터를 프로세싱하도록 구성될 수 있다.
다른 예에서, 저장된 적어도 하나의 명령을 포함하는 비일시적 컴퓨터 판독가능 매체가 제공되고, 명령이 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금: 입력 데이터의 압축된 버전 및 하나 이상의 서브공간 좌표들의 압축된 버전을 수신하게 하고; 하나 이상의 서브공간 좌표들에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하게 하고; 및 입력 데이터의 재구성된 버전을 산출하기 위해 업데이트된 모델 파라미터들의 세트를 사용하여 입력 데이터를 처리하게 할 수 있다.
다른 예에서, 이미지 데이터를 프로세싱하기 위한 장치가 제공된다. 장치는: 입력 데이터의 압축된 버전 및 하나 이상의 서브공간 좌표들의 압축된 버전을 수신하기 위한 수단; 하나 이상의 서브공간 좌표들에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하기 위한 수단; 및 입력 데이터의 재구성된 버전을 산출하기 위해 업데이트된 모델 파라미터들의 세트를 사용하여 입력 데이터를 프로세싱하기 위한 수단을 포함할 수 있다.
일부 양태들에서, 장치는 카메라 (예를 들어, IP 카메라), 모바일 디바이스 (예를 들어, 모바일 전화 또는 소위 "스마트폰", 또는 다른 모바일 디바이스), 스마트 웨어러블 디바이스, 확장 현실 디바이스 (예를 들어, 가상 현실 (VR) 디바이스, 증강 현실 (AR) 디바이스, 또는 혼합 현실 (MR) 디바이스), 개인용 컴퓨터, 랩톱 컴퓨터, 서버 컴퓨터, 3D 스캐너, 멀티-카메라 시스템, 또는 다른 디바이스일 수 있거나 그 일부일 수 있다. 일부 양태들에서, 장치는 하나 이상의 이미지들을 캡처하기 위한 카메라 또는 다수의 카메라들을 포함한다. 일부 양태들에서, 장치는 하나 이상의 이미지들, 통지(notification)들, 및/또는 다른 디스플레이 가능한 데이터를 디스플레이하기 위한 디스플레이를 더 포함한다. 일부 양태들에서, 상기에서 설명된 장치들은 하나 이상의 센서들을 포함할 수 있다.
본 요약은 청구된 주제의 핵심 또는 필수 특징들을 식별하도록 의도되지 않으며, 청구된 주제의 범위를 결정하기 위해 별개로 사용되도록 의도되지도 않는다. 주제는 본 특허의 전체 명세서의 적절한 부분, 임의의 또는 모든 도면, 및 각각의 청구항을 참조하여 이해되어야 한다.
전술한 내용은, 다른 특징들 및 실시예들과 함께, 다음의 명세서, 청구항들, 및 첨부 도면들을 참조하여 더 명백해질 것이다.
본 출원의 예시적인 실시예들은 이하의 도면들을 참조하여 아래에 상세히 설명된다.
도 1은 본 개시의 일부 예들에 따른 이미지 프로세싱 시스템의 예를 예시하는 다이어그램이다.
도 2a는 본 개시의 일부 예들에 따른 완전 연결 신경망(fully-connected neural network)의 예를 예시하는 다이어그램이다.
도 2b는 본 개시의 일부 예들에 따른 국소 연결된 신경망(locally-connected neural network)의 예를 예시하는 다이어그램이다.
도 2c는 본 개시의 일부 예들에 따른 컨볼루션 신경망(convolutional neural network)의 예를 예시하는 다이어그램이다.
도 2d는 본 개시의 일부 예들에 따른 이미지로부터 시각적 특징(feature)들을 인식하기 위한 심층 컨볼루션 네트워크(DCN)의 예를 예시하는 다이어그램이다.
도 3은 본 개시의 일부 예들에 따른 예시적인 DCN(deep convolutional network)을 예시하는 블록도이다.
도 4는 본 개시의 일부 예들에 따른 비디오 콘텐츠를 압축하기 위한 송신 디바이스 및 수신된 비트스트림을 비디오 콘텐츠로 압축 해제하기 위한 수신 디바이스를 포함하는 시스템의 일 예를 예시하는 다이어그램이다.
도 5a 및 도 5b는 본 개시의 일부 예들에 따른 예시적인 레이트-왜곡(rate-distortion) 오토인코더(autoencoder) 시스템들을 예시하는 다이어그램들이다.
도 6은 본 개시의 일부 예들에 따른 모델 프라이어(model prior)를 사용하여 미세-튜닝된(fine-tuned) 예시적인 신경망 압축 시스템에 의해 구현되는 예시적인 추론 프로세스를 예시하는 다이어그램이다.
도 7은 본 개시의 일부 예들에 따른 네트워크 파라미터 서브공간 내에서 미세-튜닝된 예시적인 신경망 압축 시스템에 의해 구현되는 예시적인 인스턴스 적응적 프로세스를 예시하는 다이어그램이다.
도 8은 본 개시의 일부 예들에 따른 예시적인 네트워크 파라미터 서브공간을 예시하는 그래프이다.
도 9는 본 개시의 일부 예들에 따른 서브공간 내의 네트워크 파라미터들에 대한 업데이트를 예시하는 그래프이다.
도 10은 본 개시의 일부 예들에 따른 서브공간을 결정하기 위한 프로세스의 예를 예시하는 흐름도이다.
도 11은 본 개시의 일부 예들에 따른 인스턴스 적응적 신경 압축을 수행하기 위한 예시적인 프로세스를 예시하는 다이어그램이다.
도 12는 본 개시의 일부 예들에 따른 인스턴스 적응적 신경 압축 해제를 수행하기 위한 프로세스의 예를 예시하는 흐름도이다.
도 13은 본 개시의 일부 예들에 따른 인스턴스 적응적 신경 압축을 수행하기 위한 프로세스의 다른 예를 예시하는 흐름도이다.
도 14는 본 개시의 일부 예들에 따른 인스턴스 적응적 신경 압축 해제를 수행하기 위한 프로세스의 다른 예를 예시하는 흐름도이다.
도 15는 본 개시의 일부 예에 따른 예시적인 컴퓨팅 시스템을 도시한다.
본 개시의 특정 양태들 및 실시예들이 아래에 제공된다. 이러한 양태들 및 실시예들 중 일부는 독립적으로 적용될 수 있고, 이들 중 일부는 당업자에게 자명한 것으로 조합하여 적용될 수 있다. 이하의 설명에서는 설명의 목적으로 출원의 실시예에 대한 철저한 이해를 제공하기 위해 특정 세부 사항이 설명된다. 그러나, 다양한 실시예들이 이러한 특정 세부사항들 없이 실행될 수 있다는 것이 명백할 것이다. 도면들 및 설명은 제한적인 것으로 의도되지 않는다.
다음의 설명은 예시적인 실시예들만을 제공하며, 본 개시의 범위, 적용가능성, 또는 구성을 제한하도록 의도되지 않는다. 오히려, 예시적인 실시예들에 대한 다음의 설명은 예시적인 실시예를 구현하기 위한 가능한 설명을 당업자들에게 제공할 것이다. 첨부된 청구항들에 기재된 출원의 범위를 벗어나지 않으면서 요소들의 기능 및 배열에서 다양한 변경들이 이루어질 수 있다는 것이 이해되어야 한다.
전술한 바와 같이, 특히 고품질 비디오 데이터에 대한 요구가 계속 증가함에 따라, 디지털 이미지 및 비디오 데이터는 많은 양의 데이터를 포함할 수 있다. 예를 들어, 이미지 및 비디오 데이터의 소비자들은 전형적으로, 고 충실도, 해상도, 프레임 레이트들 등과 같은 점점 더 고 비디오 품질을 원한다. 그러나, 이러한 요구들을 충족시키는 데 필요한 많은 양의 데이터는, 고 대역폭 및 네트워크 자원 요건들과 같은, 통신 네트워크들에, 그리고 비디오 데이터를 프로세싱 및 저장하는 디바이스들에 상당한 부담을 줄 수 있다.
압축되지 않은 이미지 및 비디오 콘텐츠는 물리적 저장을 위한 상당한 메모리 및 송신을 위한 상당한 대역폭을 수반할 수 있는 큰 파일들을 초래할 수 있기 때문에, 그러한 이미지 및/또는 비디오 콘텐츠를 압축하기 위한 기술들이 이용될 수 있다. 예를 들어, 이미지 콘텐츠의 크기 - 따라서 이미지 콘텐츠를 저장하는 데 수반되는 스토리지의 양 및 비디오 콘텐츠를 전달하는 데 수반되는 대역폭의 양을 - 감소시키기 위해, 다양한 압축 알고리즘들(코딩 알고리즘들 또는 툴들로도 지칭됨)이 이미지 및 비디오 콘텐츠에 적용될 수 있다.
일부 경우에, 이미지 콘텐츠는 특히 JPEG(Joint Photographic Experts Group), BPG(Better Portable Graphics)와 같은 선험적으로(priori) 정의된 압축 알고리즘을 사용하여 압축될 수 있다. 예를 들어, JPEG는 이산 코사인 변환(DCT : discrete cosine transform)을 기반으로 하는 손실 압축 형태이다. 예를 들어, 이미지의 JPEG 압축을 수행하는 디바이스는 이미지를 최적의 컬러 공간 (예를 들어, 휘도(Y), 크로미넌스-블루(chrominance-blue))(Cb), 크로미넌스-레드(Cr)를 포함하는 YCbCr 컬러 공간)으로 변환할 수 있고, 픽셀들의 그룹들을 함께 평균화함으로써 크로미넌스 성분(chrominance component)들을 다운샘플링할 수 있고, DCT 함수를 픽셀들의 블록들에 적용하여 리던던트(redundant) 이미지 데이터를 제거하고 따라서 이미지 데이터를 압축할 수 있다. 압축은 이미지 내부의 유사한 영역들의 식별에 기초하고, 영역들을 (DCT 함수에 기초하여) 동일한 컬러 코드로 변환한다. 비디오 콘텐츠는 또한 MPEG(Motion Picture Experts Group) 알고리즘, H.264, 또는 고효율 비디오 코딩 알고리즘(High Efficiency Video Coding algorithm)과 같은 선험적으로 정의된 압축 알고리즘을 사용하여 압축될 수 있다.
이들 선험적으로 정의된 압축 알고리즘들은 원시 이미지 및 비디오 콘텐츠에서 정보의 대부분을 유지할 수 있을 수 있고, 신호 프로세싱 및 정보 이론 아이디어에 기초하여 선험적으로 정의될 수 있다. 그러나, 이러한 미리 정의된 압축 알고리즘들이 일반적으로(예를 들어, 임의의 유형의 이미지/비디오 콘텐츠에) 적용가능할 수 있지만, 압축 알고리즘들은 콘텐츠의 유사성들, 비디오 캡처 및 전달을 위한 새로운 해상도들 또는 프레임 레이트들, 비-자연적(non-natural) 이미지(예를 들어, 레이더 이미지 또는 다양한 센서들을 통해 캡처된 다른 이미지) 등을 고려하지 않을 수 있다.
선험적으로 정의된 압축 알고리즘들은 손실 압축 알고리즘(lossy compression algorithm)들로 간주된다. 입력 이미지(또는 비디오 프레임)의 손실 압축에서, 입력 이미지는 코딩된 후 정확한 입력 이미지가 재구성되도록 디코딩/재구성될 수 없다. 오히려, 손실 압축에서, 압축된 입력 이미지의 디코딩/재구성 후에 입력 이미지의 근사 버전이 생성된다. 손실 압축은 재구성된 이미지에 존재하는 아티팩트(artifact)들을 초래하는 왜곡의 대가로, 비트레이트의 감소를 초래한다. 따라서, 손실 압축 시스템에서 레이트-왜곡 트레이드 오프(rate-distortion trade-off)가 존재한다. 특정 압축 방법들(예를 들어, 다른 것들 중에서도, JPEG, BPG)에 대해, 왜곡-기반 아티팩트들은 블로킹 또는 다른 아티팩트들의 형태를 취할 수 있다.
일부 경우들에서, 기계 학습 시스템들이 이미지 및/또는 비디오 데이터의 압축 및 압축 해제를 수행하는 데 사용될 수 있다. 예를 들어, RD-AE(rate-distortion autoencoder)와 같은 심층 신경망(deep neural network)은 콘텐츠(예를 들어, 이미지 콘텐츠, 비디오 콘텐츠, 오디오 콘텐츠 등)의 압축 및 압축 해제를 수행하는 데 사용될 수 있다. 심층 신경망은 이미지들을 레이턴트 코드 공간(latent code space)(예를 들어, 코드들 z의 세트를 포함함)에 매핑하는 오토인코더(AE : autoencoder)를 포함할 수 있다. 일부 경우들에서, 심층 신경망은 또한 레이턴트 코드 공간으로부터 코드들 z를 손실없이 압축할 수 있는 확률론적 모델(probabilistic model)(프라이어(prior) 또는 코드 모델이라고도 지칭됨)을 포함할 수 있다. 확률론적 모델은 입력 데이터에 기초하여 인코딩된 데이터를 나타낼 수 있는 코드들 z의 세트에 대한 확률 분포를 생성할 수 있다.
기계 학습 기반 압축 기술들(예를 들어, RD-AE)은 고 품질 및/또는 감소된 비트레이트를 갖는 압축된 콘텐츠를 생성하는데 사용될 수 있다. 일부 예들에서, RD-AE는 이미지 및/또는 비디오 데이터포인트(datapoint)들과 같은 데이터포인트들의 데이터세트에 걸쳐 평균 레이트-왜곡 손실을 최소화하도록 훈련될 수 있다. 일부 경우들에서, RD-AE는 또한 수신기로 발송되고 수신기에 의해 디코딩될 특정 데이터포인트에 대해 미세-튜닝될 수 있다. 일부 예들에서, 데이터포인트 상에서 RD-AE 를 미세-튜닝함으로써, RD-AE는 고 압축 (레이트/왜곡) 성능을 획득할 수 있다. RD-AE와 연관된 인코더는 비트스트림을 디코딩하기 위해 AE 모델 또는 AE 모델의 일부를 수신기 (예를 들어, 디코더)에 발송할 수 있다.
기계 학습 기반 압축 시스템들이 손실 압축 시스템들보다 성능이 좋을 수 있지만, 그러한 기계 학습 기반 압축 시스템들의 구현은 특정 단점들을 제시한다. 예를 들어, 신경 압축 알고리즘들은 증가된 계산 및/또는 메모리 요건들을 초래할 수 있는 큰 신경망들을 요구한다. 또한, 심층 신경망에서 사용되는 최적의 설정들(예를 들어, 가중치들)은 훈련 데이터세트에 의존하고, 상이한 데이터와 함께 사용될 때 성능이 좋지 않을 수 있다. 예를 들어, 자연 장면들에 대해 훈련된 신경 비디오 코덱들은 애니메이션 장면들에 대해 성능이 좋지 않을 수 있다. 또한, 특정 신경망들이 각각의 인스턴스에 기초하여 미세-튜닝될 수 있지만, 업데이트된 미세-튜닝된 파라미터들의 디코더로의 송신은 파일 크기 및/또는 비트레이트의 실질적인 증가를 야기할 수 있다.
일부 양태들에서, 하나 이상의 기계 학습 시스템들을 사용하여 데이터(예를 들어, 이미지, 비디오, 오디오 등) 압축 및 압축 해제(또한 인코딩 및 디코딩으로 지칭됨, 총괄적으로 코딩으로 지칭됨)를 수행하기 위한 시스템들, 장치들, 프로세스들(방법들로도 지칭됨), 및 컴퓨터 판독가능 매체들(총괄적으로 본원에서 "시스템들 및 기술들"로 지칭됨)이 본원에 설명된다. 일부 예들에서, 기계 학습 기술들은 고품질의 시각적 출력들을 생산하는 이미지 및/또는 비디오 압축을 제공할 수 있다.
일부 양태들에서, 기계 학습 시스템 (예를 들어, 레이트-왜곡 오토인코더 (RD-AE) 와 같은 신경망 또는 다른 신경망)은 이미지 및/또는 비디오 데이터포인트들과 같은 데이터포인트들의 데이터세트에 걸쳐 평균 레이트-왜곡 손실을 최소화하도록 훈련될 수 있다. 일부 예들에서, 전역 모델 파라미터들(예를 들어, 가중치들)의 세트는 훈련된 기계 학습 시스템과 연관될 수 있다. 일부 경우들에서, 기계 학습 시스템의 훈련은 훈련의 각각의 반복(iteration)과 연관된 파라미터들(예를 들어, 가중치 벡터)을 식별하는 것을 포함할 수 있다. 예를 들어, 가중치 벡터는 각각의 훈련 반복에 대응할 수 있고, 전역 모델 파라미터들은 훈련된 신경망에 대한 가중치 벡터에 대응할 수 있다.
일부 예들에서, 기계 학습 시스템의 훈련은 전체 파라미터 공간보다 더 낮은 치수를 갖는 모델 파라미터들의 서브공간(subspace) 또는 매니폴드(manifold)를 결정하는 것을 포함할 수 있다. 일부 양태들에서, 모델 파라미터들의 서브공간 또는 매니폴드는 훈련의 각각의 반복과 연관된 가중치 벡터들의 일부를 포함한다. 일부 경우에, 모델 파라미터의 서브공간 또는 매니폴드는 PCA(Principal Component Analysis)을 사용하여 결정될 수 있다. 예를 들어, PCA는 모델 파라미터들이 신경망의 훈련 동안(예를 들어, 손실 함수의 결과가 임계값 미만일 때) 성능이 좋았던 전체 파라미터 공간에서 하나 이상의 방향 및/또는 궤적을 식별하는 데 사용될 수 있다. 일부 양태들에서, 희소(sparse) PCA는 모델 파라미터들의 서브공간의 크기를 감소시키는 데 사용될 수 있다. 일부 예들에서, 모델 파라미터들의 서브공간 또는 매니폴드는 인코딩된 데이터를 디코딩하도록 구성된 신경망과 공유될 수 있다.
일부 예들에서, 기계 학습 시스템은 압축되어 디코더를 포함하는 수신 디바이스로 송신될 입력 데이터(예를 들어, 이미지, 비디오, 비디오의 일부, 3차원(3D) 데이터 등)의 인스턴스(instance)에 대해 미세-튜닝(예를 들어, 훈련, 피팅 등)될 수 있다. 일부 양태들에서, 기계 학습 시스템을 미세-튜닝하는 것은 모델 파라미터들의 서브공간 또는 매니폴드를 사용하여 수행될 수 있다. 예를 들어, 신경망의 미세-튜닝은 모델 파라미터들의 서브공간 또는 매니폴드의 일부인 가중치 벡터(weight vector)에 대응하는 업데이트된 모델 파라미터들의 세트를 선택하는 것(예를 들어, 인스턴스에 대한 최적의 가중치 벡터를 선택하는 것)을 포함할 수 있다. 일부 경우들에서, 업데이트된 파라미터들의 세트 (예를 들어, 미세-튜닝 동안 선택된 가중치 벡터)는 하나 이상의 서브공간 좌표들과 연관될 수 있다. 일 예에서, 하나 이상의 서브공간 좌표들은 전역 파라미터(global parameter)들의 세트에 상대적(relative to)일 수 있다(예를 들어, 서브공간 좌표들은 전역 파라미터들의 세트에 상대적인 궤적에 대응할 수 있다).
일부 양태들에서, 업데이트된 파라미터들의 세트는 입력 데이터를 인코딩하는데 사용될 수 있다. 일부 예들에서, 기계 학습 시스템(예를 들어, RD-AE 또는 다른 신경망과 같은 신경망)은 산술 코더(예를 들어, 산술 인코더, 산술 디코더, 또는 조합된 산술 인코더-디코더를 포함함)를 더 포함할 수 있다. 산술 코더(예를 들어, 산술 인코더 또는 조합된 산술 인코더-디코더)는 입력 데이터의 압축된 버전을 포함하는 비트스트림을 생성할 수 있다. 일부 경우들에서, 비트스트림은 또한, 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들의 압축된 버전을 포함할 수 있다. 일부 경우들에서, 수신 디바이스는 비트스트림을 수신할 수 있다. 수신 디바이스의 디코더는 신경망에 대한 업데이트된 모델 파라미터들을 결정하기 위해 하나 이상의 서브공간 좌표들을 사용할 수 있다. 디코더의 기계 학습 시스템(예를 들어, RD-AE 또는 다른 신경망과 같은 신경망)은 압축된 입력 데이터를 디코딩하기 위해 업데이트된 모델 파라미터들을 사용할 수 있다.
일부 양태들에서, 본 명세서에 개시된 시스템들 및 기술들은 기계 학습 시스템(예를 들어, 신경망)을 각각의 데이터 인스턴스에 적응시킴으로써 압축 성능을 개선하기 위해 사용될 수 있다. 일부 예들에서, 본 명세서에 개시된 시스템들 및 기술들은 저차원 서브공간으로부터 미세-튜닝된 가중치 벡터들을 선택함으로써 (예를 들어, 신경망을 미세-튜닝하는) 네트워크 파라미터 업데이트들을 디코더로 발송하기 위한 비트레이트 및/또는 파일 크기를 감소시킬 수 있다.
하나 이상의 기계 학습 시스템은 본원에 설명된 바와 같이 훈련될 수 있고, 이미지, 비디오, 및/또는 오디오 압축 및 압축 해제와 같은 데이터 압축 및/또는 압축 해제를 수행하는 데 사용될 수 있다. 본원에 설명된 기계 학습 시스템은 고품질 데이터 출력을 생산하는 압축/압축 해제 기술을 수행하도록 훈련될 수 있다. 본원에 설명된 시스템들 및 기술들은 임의의 유형의 데이터의 압축 및/또는 압축 해제를 수행할 수 있다. 예를 들어, 일부 경우들에서, 본원에 설명된 시스템들 및 기술들은 이미지 데이터의 압축 및/또는 압축 해제를 수행할 수 있다. 다른 예로서, 일부 경우들에서, 본원에 설명된 시스템들 및 기술들은 비디오 데이터의 압축 및/또는 압축 해제를 수행할 수 있다. 본원에서 사용되는, 용어 "이미지" 및 "프레임"은 독립형 이미지 또는 프레임(예를 들어, 사진) 또는 이미지들 또는 프레임들의 그룹 또는 시퀀스(예를 들어, 비디오 또는 이미지들/프레임들의 다른 시퀀스를 구성하는)를 지칭하여 상호 교환적으로 사용된다. 다른 예로서, 일부 경우들에서, 본원에 설명된 시스템들 및 기술들은 오디오 데이터의 압축 및/또는 압축 해제를 수행할 수 있다. 간략화, 예시 및 설명의 목적들을 위해, 본원에 설명된 시스템들 및 기술들은 이미지 데이터(예를 들어, 이미지들 또는 프레임들, 비디오들 등)의 압축 및/또는 압축 해제를 참조하여 논의된다. 그러나, 상기에서 언급된 바와 같이, 본원에 설명된 개념들은 또한 오디오 데이터 및 임의의 다른 유형의 데이터와 같은 다른 양식들에 적용될 수 있다.
인코더 및/또는 디코더에 의해 사용되는 압축 모델은 상이한 유형의 데이터로 일반화될 수 있다. 또한, 본원에 설명된 다양한 특성들을 갖는 인스턴스 적응적 신경 모델을 이용함으로써, 기계 학습 시스템은 특정 데이터 세트에 대한 압축 및/또는 압축 해제 성능, 비트레이트, 품질, 및/또는 효율을 증가시킬 수 있다. 예를 들어, 인스턴스 적응적 신경 모델 기반 기계 학습 시스템(instance-adaptive neural model based machine learning system)은 네트워크 파라미터들의 미리 정의된 서브공간 내에서 신경망을 미세-튜닝하고 서브공간 내의 파라미터 업데이트를 디코더에 제공함으로써 비트레이트를 감소시킬 수 있다.
전술한 바와 같이, 일부 예들에서, 기계 학습 시스템은 하나 이상의 신경망을 포함할 수 있다. 기계 학습(ML)은 인공 지능(AI)의 서브세트이다. ML 시스템들은 컴퓨터 시스템들이 명시적 명령들의 사용 없이, 패턴들 및 추론에 의존함으로써 다양한 태스크들을 수행하기 위해 사용할 수 있는 알고리즘들 및 통계 모델들을 포함한다. ML 시스템의 일 예는 인공 뉴런들(예를 들어, 뉴런 모델들)의 상호연결된 그룹으로 구성될 수 있는 신경망(인공 신경망이라고도 지칭됨)이다. 신경망들은 특히 이미지 분석 및/또는 컴퓨터 비전 애플리케이션들, 인터넷 프로토콜(IP) 카메라들, 사물 인터넷(IoT) 디바이스들, 자율 차량들, 서비스 로봇들과 같은 다양한 애플리케이션들 및/또는 디바이스들을 위해 사용될 수 있다.
신경망 내의 개별 노드들은 입력 데이터를 취하고 데이터에 대해 간단한 연산들을 수행함으로써 생물학적 뉴런들을 에뮬레이트(emulate)할 수 있다. 입력 데이터에 대해 수행된 간단한 연산들의 결과들은 다른 뉴런들에 선택적으로 전달된다. 가중치 값들은 네트워크 내의 각각의 벡터 및 노드와 연관되고, 이들 값들은 입력 데이터가 출력 데이터와 어떻게 관련되는지를 제약한다. 예를 들어, 각각의 노드의 입력 데이터에 대응하는 가중치 값이 곱해지고, 산물(product)이 합산될 수 있다. 산물들의 합산은 선택적인 바이어스(bias)에 의해 조정될 수 있고, 활성화 함수(activation function)가 결과에 적용되어, 노드의 출력 신호 또는 "출력 활성화"(때때로 활성화 맵 또는 특징 맵으로 지칭됨)를 산출할 수 있다. 가중치 값들은 초기에 네트워크를 통한 훈련 데이터의 반복적인 흐름에 의해 결정될 수 있다(예를 들어, 가중치 값들은 네트워크가 전형적인 입력 데이터 특성들에 의해 특정 클래스들을 식별하는 방법을 학습하는 훈련 단계 동안 확립된다).
다른 것들 중에서, 심층 생성 신경망 모델(예를 들어, 생성 적대 신경망(GAN)), 순환 신경망(RNN) 모델, 다층 퍼셉트론(MLP) 신경망 모델, 컨볼루션 신경망(CNN) 모델, 오토인코더(AE)와 같은 상이한 유형의 신경망이 존재한다. 예를 들어, GAN은 신경망 모델이 원래 데이터세트로부터 합리적으로 이루어질 수 있는 새로운 합성 출력(synthetic output)들을 생성할 수 있도록 입력 데이터에서 패턴들을 학습할 수 있는 생성 신경망의 형태이다. GAN은 함께 동작하는 2개의 신경망들을 포함할 수 있다. 신경망들 중 하나(G(z)로 표시된 생성 신경망 또는 생성기(generator)로 지칭됨)는 합성된 출력을 생성하고, 다른 신경망(D(X)로 표시된 판별 신경망 또는 판별기(discriminator)로 지칭됨)은 진본(authenticity)에 대한 출력을 평가한다(출력이 훈련 데이터세트와 같은 원래 데이터세트로부터 생성되는지, 또는 생성기에 의해 생성되는지). 훈련 입력 및 출력은 예시적인 예로서 이미지들을 포함할 수 있다. 생성기는 생성기에 의해 생성된 합성 이미지가 데이터세트로부터의 실제 이미지임을 결정하도록 판별기를 시험(try)하고 속이기(fool) 위해 훈련된다. 훈련 프로세스가 계속되고, 생성기는 실제 이미지처럼 보이는 합성 이미지를 생성하는 것을 더 잘하게 된다. 판별기는 합성 이미지들에서 결함(flaw)들을 계속 찾고, 생성기는 이미지들에서 결함들을 결정하기 위해 판별기가 무엇을 검토하고 있는지를 파악한다. 일단 네트워크가 훈련되면, 생성기는 판별기가 실제 이미지들과 구별할 수 없는 실제처럼 보이는 이미지들을 생산할 수 있다.
RNN은 계층(layer)의 출력을 저장하고 이 출력을 입력에 피드백하여 계층의 성과(outcome)를 예측하는 것을 돕는 원리상에서 작동한다. MLP 신경망들에서, 데이터는 입력 계층에 공급될 수 있고, 하나 이상의 은닉 계층들은 데이터에 대한 추상화의 레벨들을 제공한다. 그런 다음, 추상화된 데이터에 기초하여 출력 계층 상에서 예측들이 이루어질 수 있다. MLP들은 입력들에 클래스 또는 라벨(label)이 할당되는 분류 예측 문제들에 특히 적합할 수 있다. 컨볼루션 신경망(CNN)은 피드-포워드(feed-forward) 인공 신경망의 일 유형이다. CNN들은 각각 수용 필드(예를 들어, 입력 공간의 공간적으로 국소화된 영역)를 갖고 입력 공간을 집합적으로 타일링하는 인공 뉴런들의 집합들을 포함할 수 있다. CNN은 패턴 인식 및 분류를 포함하여 수많은 애플리케이션들을 갖는다.
계층화된(layered) 신경망 아키텍처들(다수의 은닉 계층들이 존재할 때 심층 신경망들로 지칭됨)에서, 인공 뉴런들의 제1 계층의 출력은 인공 뉴런들의 제2 계층에 대한 입력이 되고, 인공 뉴런들의 제2 계층의 출력은 인공 뉴런들의 제3 계층에 대한 입력이 되는 식이다. 컨볼루션 신경망들은 특징들의 계층 구조(hierarchy)를 인식하도록 훈련될 수 있다. 컨볼루션 신경망 아키텍처들에서의 계산은 하나 이상의 계산 체인으로 구성될 수 있는 프로세싱 노드들의 모집단(population)에 걸쳐 분산될 수 있다. 이러한 멀티-계층화된 아키텍처는 한 번에 하나의 계층씩 훈련될 수 있고, 역 전파(back propagation)를 사용하여 미세-튜닝될 수 있다.
오토인코더(AE : Autoencoder)는 비지도 방식으로 효율적인 데이터 코딩을 학습할 수 있다. 일부 예들에서, AE는 신호 잡음을 무시하도록 네트워크를 훈련함으로써 데이터의 세트에 대한 표현(예를 들어, 데이터 코딩)을 학습할 수 있다. AE는 인코더 및 디코더를 포함할 수 있다. 인코더는 입력 데이터를 코드로 매핑할 수 있고, 디코더는 코드를 입력 데이터의 재구성에 매핑할 수 있다. 일부 예들에서, 레이트-왜곡 오토인코더(RD-AE)는 이미지 및/또는 비디오 데이터포인트들과 같은 데이터포인트들의 데이터세트에 걸쳐 평균 레이트-왜곡 손실을 최소화하도록 훈련될 수 있다. 일부 경우들에서, RD-AE는 새로운 데이터포인트를 인코딩하기 위해 추론 시간에 순방향 패스(forward pass)를 수행할 수 있다.
도 1은 본 개시의 일부 예들에 따른 이미지 프로세싱 시스템(100)의 예를 도시하는 다이어그램이다. 일부 경우들에서, 이미지 프로세싱 시스템(100)은 본 명세서에서 설명된 기능들 중 하나 이상을 수행하도록 구성된 중앙 프로세싱 유닛 (CPU)(102) 또는 멀티-코어 CPU를 포함할 수 있다. 다른 정보 중에서도, 변수들(예를 들어, 신경 신호들 및 시냅스 가중치들), 계산 디바이스(예를 들어, 가중치들을 갖는 신경망)와 연관된 시스템 파라미터들, 지연들, 주파수 빈(bin) 정보, 태스크 정보는 신경 프로세싱 유닛(NPU)(108)과 연관된 메모리 블록, CPU(102)와 연관된 메모리 블록, 그래픽 프로세싱 유닛(GPU)(104)과 연관된 메모리 블록, 디지털 신호 프로세서(DSP)(106)와 연관된 메모리 블록, 메모리 블록(118)에 저장되거나, 또는 다수의 블록들에 걸쳐 분산될 수 있다. CPU(102)에서 실행되는 명령들은 CPU(102)와 연관된 프로그램 메모리 및/또는 메모리 블록(118)으로부터 로딩될 수 있다.
이미지 프로세싱 시스템(100)은, GPU(104); DSP(106); 5세대(5G) 접속, 4세대 롱 텀 에볼루션(4G LTE) 접속, Wi-Fi 접속, USB 접속, 블루투스 접속 등을 포함할 수 있는 연결 블록(110); 및/또는, 예를 들어, 특징들을 검출 및 인식할 수 있는 멀티미디어 프로세서(112)와 같은, 특정 기능들에 맞춰진 추가적인 프로세싱 블록들을 포함할 수 있다. 일 구현예에서, NPU(108)는 CPU(102), DSP(106) 및/또는 GPU(104)에서 구현된다. 이미지 프로세싱 시스템(100)은 또한 센서 프로세서(114), 하나 이상의 이미지 신호 프로세서(ISP)(116) 및/또는 스토리지(120)를 포함할 수 있다. 일부 예들에서, 이미지 프로세싱 시스템(100)은 ARM 명령 세트에 기초할 수 있다.
이미지 프로세싱 시스템(100)은 컴퓨팅 디바이스 또는 다수의 컴퓨팅 디바이스의 일부일 수 있다. 일부 예들에서, 이미지 프로세싱 시스템(100)은 카메라 시스템(예를 들어, 디지털 카메라, IP 카메라, 비디오 카메라, 보안 카메라 등), 전화 시스템(예를 들어, 스마트폰, 셀룰러 전화, 회의 시스템(conferencing system) 등), 데스크톱 컴퓨터, XR 디바이스(예를 들어, 헤드-마운트 디스플레이 등), 스마트 웨어러블 디바이스(예를 들어, 스마트 워치, 스마트 안경 등), 랩톱 또는 노트북 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 텔레비전, 디스플레이 디바이스, 디지털 미디어 플레이어, 게이밍 콘솔, 비디오 스트리밍 디바이스, 드론, 자동차 내의 컴퓨터, 시스템-온-칩(SOC), 사물 인터넷(IoT) 디바이스, 또는 임의의 다른 적절한 전자 디바이스(들)와 같은 전자 디바이스(또는 디바이스들)의 일부일 수 있다.
이미지 프로세싱 시스템(100)은 특정 컴포넌트들을 포함하는 것으로 도시되지만, 당업자는 이미지 프로세싱 시스템(100)이 도 1에 도시된 것들보다 더 많거나 더 적은 컴포넌트들을 포함할 수 있다는 것을 인식할 것이다. 예를 들어, 이미지 프로세싱 시스템(100)은 또한, 일부 경우들에서, 도 1에 도시되지 않은 하나 이상의 메모리 디바이스들(예를 들어, RAM, ROM, 캐시 등), 하나 이상의 네트워킹 인터페이스들(예를 들어, 유선 및/또는 무선 통신 인터페이스들 등), 하나 이상의 디스플레이 디바이스들, 및/또는 다른 하드웨어 또는 프로세싱 디바이스들을 포함할 수 있다. 이미지 프로세싱 시스템(100)으로 구현될 수 있는 컴퓨팅 디바이스 및 하드웨어 컴포넌트들의 예시적인 예가 도 16와 관련하여 아래에서 설명된다.
이미지 프로세싱 시스템(100) 및/또는 이의 컴포넌트들은 본원에 설명된 기계 학습 시스템들 및 기술들을 사용하여 압축(compression) 및/또는 압축 해제(decompression)(인코딩 및/또는 디코딩이라고도 지칭되며, 총괄적으로 이미지 코딩으로 지칭됨)를 수행하도록 구성될 수 있다. 일부 경우들에서, 이미지 프로세싱 시스템(100) 및/또는 그 컴포넌트들은 본 명세서에서 설명된 기술들을 사용하여 이미지 또는 비디오 압축 및/또는 압축 해제를 수행하도록 구성될 수 있다. 일부 예들에서, 기계 학습 시스템들은 이미지, 비디오, 및/또는 오디오 데이터의 압축 및/또는 압축 해제를 수행하기 위해 딥러닝 신경망 아키텍처들을 이용할 수 있다. 딥러닝 신경망 아키텍처들을 사용함으로써, 기계 학습 시스템들은 디바이스 상에서의 콘텐츠의 압축 및/또는 압축 해제의 효율 및 속도를 증가시킬 수 있다. 예를 들어, 설명된 압축 및/또는 압축 해제 기술들을 사용하는 디바이스는 기계 학습 기반 기술들을 사용하여 효율적으로 하나 이상의 이미지들을 압축할 수 있고, 압축된 하나 이상의 이미지들을 수신 디바이스로 송신할 수 있으며, 수신 디바이스는 본원에 설명된 기계 학습 기반 기술들을 사용하여 효율적으로 하나 이상의 압축된 이미지들을 압축 해제할 수 있다. 본원에서 사용되는, 이미지는 프레임들의 시퀀스(예를 들어, 비디오)와 연관된 스틸(still) 이미지 및/또는 비디오 프레임을 지칭할 수 있다.
전술한 바와 같이, 신경망은 기계 학습 시스템의 예이다. 신경망은 입력 계층, 하나 이상의 은닉 계층(hidden layer)들, 및 출력 계층을 포함할 수 있다. 데이터는 입력 계층의 입력 노드들로부터 제공되고, 프로세싱은 하나 이상의 은닉 계층들의 은닉 노드들에 의해 수행되고, 출력은 출력 계층의 출력 노드들을 통해 생산된다. 딥러닝 네트워크들은 전형적으로 다수의 은닉 계층들을 포함한다. 신경망의 각각의 계층은 인공 뉴런들(또는 노드들)을 포함할 수 있는 특징 맵(feature map)들 또는 활성화 맵(activation map)들을 포함할 수 있다. 특징 맵은 필터, 커널 등을 포함할 수 있다. 노드들은 계층들 중 하나 이상의 노드들의 중요도를 표시하는 데 사용되는 하나 이상의 가중치(weight)들을 포함할 수 있다. 일부 경우들에서, 딥러닝 네트워크는 일련의 많은 은닉 계층들을 가질 수 있으며, 초기 계층들은 입력의 단순하고 낮은 레벨 특성들을 결정하는 데 사용되고, 나중 계층들은 더 복잡하고 추상적인 특성들의 계층을 구축한다.
딥러닝 아키텍처는 특징들의 계층 구조(hierarchy)을 학습할 수 있다. 예를 들어, 시각적 데이터가 제시되는 경우, 제1 계층은 입력 스트림에서 에지들과 같은 비교적 간단한 특징들을 인식하는 것을 학습할 수 있다. 다른 예에서, 청각적 데이터가 제시되는 경우, 제1 계층은 특정 주파수들에서 스펙트럼 파워를 인식하는 것을 학습할 수 있다. 제1 계층의 출력을 입력으로서 취하는 제2 계층은 시각적 데이터에 대한 간단한 형상들 또는 청각적 데이터에 대한 사운드들의 조합들과 같은 특징들의 조합들을 인식하는 것을 학습할 수 있다. 예를 들어, 상위 계층들은 시각적 데이터에서 복잡한 형상들 또는 청각적 데이터에서 워드(word)들을 표현하는 것을 학습할 수 있다. 한층 더 높은 계층들은 공통의 시각적 객체들 또는 말하여진 문구들을 인식하는 것을 학습할 수 있다.
딥러닝 아키텍처는 자연스런 계층 구조를 갖는 문제에 적용될 때 특히 성능이 좋을 수 있다. 예를 들어, 전동 차량의 분류는 휠, 윈드실드(windshield), 및 다른 특징을 인식하는 제1 학습으로부터 이익을 얻을 수 있다. 이러한 특징들은 자동차, 트럭, 및 항공기를 인식하기 위해 상이한 방식들로 더 높은 계층들에서 조합될 수 있다.
신경망은 다양한 연결 패턴으로 설계될 수 있다. 피드-포워드 네트워크들에서, 정보는 하위 계층들로부터 상위 계층들로 전달되고, 주어진 계층의 각각의 뉴런은 상위 계층들의 뉴런들과 통신한다. 계층 구조적 표현은 전술한 바와 같이 피드-포워드 네트워크의 연속적인 계층들에 구축될 수 있다. 신경망은 또한 순환(recurrent) 또는 피드백(탑-다운식(top-down)이라고도 함) 연결을 가질 수 있다. 순환 연결(recurrent connection)에서, 주어진 계층의 뉴런으로부터의 출력은 동일한 계층의 다른 뉴런으로 통신될 수 있다. 순환 아키텍처는 시퀀스로 신경망에 전달되는 입력 데이터 청크(input data chunk)들 중 하나 초과에 걸쳐 있는 패턴들을 인식하는 데 도움이 될 수 있다. 주어진 계층의 뉴런으로부터 하위 계층의 뉴런으로의 연결은 피드백(또는 탑-다운식(top-down)) 연결이라고 지칭된다. 많은 피드백 연결들을 갖는 네트워크는 하이-레벨 개념의 인식이 입력의 특정 로우-레벨 특징들을 판별하는 것을 도울 수 있을 때 도움이 될 수 있다.
신경망의 계층들 사이의 연결은 완전 연결되거나 국소 연결될 수 있다. 도 2a는 완전 연결(fully connected) 신경망(202)의 예를 도시한다. 완전 연결 신경망(202)에서, 제1 계층의 뉴런은 제2 계층의 모든 뉴런에 출력을 통신할 수 있어서, 제2 계층의 각각의 뉴런은 제1 계층의 모든 뉴런으로부터 입력을 수신할 것이다. 도 2b는 국소 연결된 신경망(204)의 예를 도시한다. 국소 연결된 신경망(204)에서, 제1 계층의 뉴런은 제2 계층의 제한된 수의 뉴런에 연결될 수 있다. 보다 일반적으로, 국소 연결된 신경망(204)의 국소 연결된 계층은 계층 내의 각각의 뉴런이 동일하거나 유사한 연결 패턴을 가질 것이지만, 상이한 값들(예를 들어, 210, 212, 214, 및 216)을 가질 수 있는 연결 강도들을 갖도록 구성될 수 있다. 주어진 영역 내의 상위 계층 뉴런들이 네트워크에 대한 총 입력의 제한된 부분의 속성들에 대한 훈련을 통해 튜닝되는 입력들을 수신할 수 있기 때문에, 국소 연결된 연결 패턴은 상위 계층에서 공간적으로 구별되는 수용 필드(receptive field)들을 발생시킬 수 있다.
국소 연결된 신경망의 일례는 컨볼루션 신경망(convolutional neural network)이다. 도 2c는 컨볼루션 신경망(206)의 예를 도시한다. 컨볼루션 신경망(206)은 제2 계층의 각각의 뉴런에 대한 입력들과 연관된 연결 강도들이 공유되도록(예를 들어, 208) 구성될 수 있다. 컨볼루션 신경망들은 입력들의 공간적 위치가 의미있는 문제들에 매우 적합할 수 있다. 컨볼루션 신경망(206)은 본 개시의 양태들에 따라, 비디오 압축 및/또는 압축 해제의 하나 이상의 양태들을 수행하는 데 사용될 수 있다.
컨볼루션 신경망의 하나의 유형은 심층 컨볼루션 네트워크(DCN : deep convolutional network)이다. 도 2d는 자동차-장착 카메라와 같은 이미지 캡처링 디바이스(230)로부터 입력된 이미지(226)로부터 시각적 특징들을 인식하도록 설계된 DCN(200)의 상세한 예를 예시한다. 본 예의 DCN(200)은 교통 표지판들 및 교통 표지판 상에 제공된 숫자를 식별하도록 훈련될 수 있다. 물론, DCN(200)은 차선 마킹들을 식별하거나 교통 신호등들을 식별하는 것과 같은 다른 태스크들에 대해 훈련될 수 있다.
DCN(200)은 지도 학습(supervised learning)으로 훈련될 수 있다. 훈련 동안, DCN(200)에는 속도 제한 표지판의 이미지(226)와 같은 이미지가 제시될 수 있고, 그런 다음 순방향 패스가 계산되어 출력(222)을 생성할 수 있다. DCN(200)은 특징 추출부(feature extraction section) 및 분류부(classification section)를 포함할 수 있다. 이미지(226)를 수신할 때, 컨볼루션 계층(232)은 제1 세트의 특징 맵들(218)을 생성하기 위해 컨볼루션 커널들(도시되지 않음)을 이미지(226)에 적용할 수 있다. 일 예로서, 컨볼루션 계층(232)에 대한 컨볼루션 커널은 28x28 특징 맵들을 생성하는 5x5 커널일 수 있다. 본 예에서, 4개의 상이한 특징 맵들이 제1 세트의 특징 맵들(218)에서 생성되기 때문에, 4개의 상이한 컨볼루션 커널들이 컨볼루션 계층(232)에서 이미지(226)에 적용되었다. 컨볼루션 커널들은 또한 필터들 또는 컨볼루션 필터들로 지칭될 수 있다.
제1 세트의 특징 맵들(218)은 제2 세트의 특징 맵들(220)을 생성하기 위해 최대 풀링 계층(max pooling layer)(도시되지 않음)에 의해 서브샘플링될 수 있다. 최대 풀링 계층은 제1 세트의 특징 맵들(218)의 크기를 감소시킨다. 즉, 14x14와 같은 제2 세트의 특징 맵(220)의 크기는 28x28과 같은 제1 세트의 특징 맵(218)의 크기보다 작다. 감소된 크기는 메모리 소비를 감소시키면서 후속 계층에 유사한 정보를 제공한다. 제2 세트의 특징 맵들(220)은 특징 맵들의 하나 이상의 후속 세트(도시되지 않음)를 생성하기 위해 하나 이상의 후속 컨볼루션 계층(도시되지 않음)을 통해 추가로 컨볼루션될 수 있다.
도 2d의 예에서, 제2 세트의 특징 맵들(220)은 제1 특징 벡터(224)를 생성하기 위해 컨볼루션된다. 또한, 제1 특징 벡터(224)는 제2 특징 벡터(228)를 생성하기 위해 추가로 컨볼루션된다. 제2 특징 벡터(228)의 각각의 특징은 "사인(sign)", "60" 및 "100"과 같은 이미지(226)의 가능한 특징에 대응하는 숫자를 포함할 수 있다. 소프트맥스 함수(softmax function)(도시되지 않음)는 제2 특징 벡터(228) 내의 숫자들을 확률로 변환할 수 있다. 이와 같이, DCN(200)의 출력(222)은 하나 이상의 특징들을 포함하는 이미지(226)의 확률이다.
본 예에서, "사인(sign)" 및 "60"에 대한 출력(222)에서의 확률들은 "30", "40", "50", "70", "80", "90" 및 "100"과 같은 출력(222)의 다른 것들의 확률들보다 높다. 훈련 전에, DCN(200)에 의해 생성된 출력(222)은 부정확할 가능성이 있다. 따라서, 출력(222)과 타겟 출력(target output) 사이의 에러(error)가 계산될 수 있다. 타겟 출력은 이미지(226)의 실측 자료(ground truth)(예를 들어, "사인" 및 "60")이다. 그런 다음, DCN(200)의 가중치들은 DCN(200)의 출력(222)이 타겟 출력과 더 근접하게 정렬되도록 조정될 수 있다.
가중치를 조정하기 위해, 학습 알고리즘은 가중치에 대한 기울기 벡터(gradient vector)를 계산할 수 있다. 기울기는 가중치가 조정되면 에러가 증가하거나 감소할 양을 나타낼 수 있다. 최상위 계층에서, 기울기는 끝에서 두번째 계층(penultimate layer)의 활성화된 뉴런과 출력 계층의 뉴런을 연결하는 가중치의 값에 직접 대응할 수 있다. 하위 계층들에서, 기울기는 가중치들의 값 및 상위 계층들의 계산된 에러 기울기들에 의존할 수 있다. 그런 다음, 가중치들은 에러를 감소시키기 위해 조정될 수 있다. 가중치를 조정하는 이러한 방식은 신경망을 통한 "역방향 패스"를 수반하기 때문에 "역 전파(back propagation)"로 지칭될 수 있다.
실제로, 가중치들의 에러 기울기는 작은 수의 예들에 걸쳐 계산될 수 있어서, 계산된 기울기는 실제 에러 기울기에 근사한다. 이러한 근사화 방법은 스토캐스틱 경사 하강법(stochastic gradient descent)으로 지칭될 수 있다. 스토캐스틱 경사 하강법은 전체 시스템의 달성 가능한 에러율이 감소를 멈출 때까지 또는 에러율이 타겟 레벨에 도달할 때까지 반복될 수 있다. 학습 후에, DCN에는 새로운 이미지들이 제시될 수 있고, 네트워크를 통한 순방향 패스는 DCN의 추론 또는 예측으로 간주될 수 있는 출력(222)을 산출할 수 있다.
DBN(Deep Belief Network)은 다수의 은닉 노드 계층을 포함하는 확률론적 모델이다. DBN들은 훈련 데이터 세트들의 계층 구조 표현을 추출하는 데 사용될 수 있다. DBN은 RBM(Restricted Boltzmann Machine)의 계층을 쌓아서 획득될 수 있다. RBM은 입력들의 세트에 대한 확률 분포를 학습할 수 있는 인공 신경망의 일 유형이다. RBM은 각각의 입력이 분류되어야 하는 클래스에 대한 정보가 없을 때 확률 분포를 학습할 수 있기 때문에, 비지도 학습에서 종종 RBM이 사용된다. 하이브리드 비지도 및 지도 패러다임을 사용하여, DBN의 바닥 RBM은 비지도 방식으로 훈련될 수 있고, 특징 추출기로서 기능할 수 있고, 상부 RBM은 (이전 계층 및 타겟 클래스로부터의 입력의 조인트 분포(joint distribution) 상에서) 지도 방식으로 훈련될 수 있고, 분류기로서 기능할 수 있다.
심층 컨볼루션 네트워크(DCN)는 추가적인 풀링 및 정규화 계층들로 구성된 컨볼루션 네트워크의 네트워크이다. DCN은 많은 태스크에 대한 최신 성능을 달성했다. DCN들은 입력 및 출력 타겟들 둘 모두가 많은 예시들에 대해 알려져 있고 경사 하강 방법들의 사용에 의해 네트워크의 가중치들을 수정하는 데 사용되는 지도 학습을 사용하여 훈련될 수 있다.
DCN들은 피드-포워드 네트워크들일 수 있다. 또한, 상기에서 설명된 바와 같이, DCN의 제1 계층의 뉴런으로부터 다음 상위 계층의 뉴런들의 그룹으로의 연결들은 제1 계층의 뉴런들에 걸쳐 공유된다. DCN들의 피드-포워드 및 공유 연결들은 빠른 프로세싱을 위해 활용될 수 있다. DCN의 계산 부담은, 예를 들어, 순환 또는 피드백 연결들을 포함하는 유사한 크기의 신경망의 계산 부담보다 훨씬 적을 수 있다.
컨볼루션 네트워크의 각각의 계층의 프로세싱은 공간적으로 불변인 템플릿 또는 기저 투영(basis projection)으로 간주될 수 있다. 입력이 컬러 이미지의 레드, 그린 및 블루 채널들과 같은 다수의 채널들로 먼저 분해되면, 해당 입력에 대해 훈련된 컨볼루션 네트워크는 이미지의 축들을 따른 2개의 공간 차원 및 컬러 정보를 캡처하는 제3 차원을 갖는 3차원으로 간주될 수 있다. 컨볼루션 연결들의 출력들은 후속 계층에서 특징 맵을 형성하기 위해 고려될 수 있고, 특징 맵(예를 들어, 220)의 각각의 요소는 이전 계층의 뉴런들의 범위(예를 들어, 특징 맵들(218))로부터 그리고 다수의 채널들 각각으로부터 입력을 수신한다. 특징 맵에서의 값들은 교정(rectification), max(0,x)와 같은 비선형성으로 추가로 프로세싱될 수 있다. 인접한 뉴런들로부터의 값들은 추가로 풀링될 수 있으며, 이는 다운 샘플링에 대응하고, 추가적인 국소(local) 불변 및 차원 감소를 제공할 수 있다.
도 3은 심층 컨볼루션 네트워크(350)의 일 예를 예시하는 블록도이다. 심층 컨볼루션 네트워크(350)는 연결 및 가중치 공유에 기초하여 다수의 상이한 유형의 계층을 포함할 수 있다. 도 3에 도시된 바와 같이, 심층 컨볼루션 네트워크(350)는 컨볼루션 블록들(354A, 354B)을 포함한다. 컨볼루션 블록들(354A, 354B) 각각은 컨볼루션 계층(CONV)(356), 정규화 계층(LNorm)(358), 및 최대 풀링 계층(MAX POOL)(360)으로 구성될 수 있다.
컨볼루션 계층들(356)은 특징 맵을 생성하기 위해 입력 데이터(352)에 적용될 수 있는 하나 이상의 컨볼루션 필터를 포함할 수 있다. 2개의 컨볼루션 블록들(354A, 354B)만이 도시되어 있지만, 본 개시는 그렇게 제한되지 않으며, 대신에, 설계 선호 사항에 따라 임의의 수의 컨볼루션 블록들(예를 들어, 블록들(354A, 354B))이 심층 컨볼루션 네트워크(350)에 포함될 수 있다. 정규화 계층(358)은 컨볼루션 필터들의 출력을 정규화할 수 있다. 예를 들어, 정규화 계층(358)은 화이트닝(whitening) 또는 측방 억제(lateral inhibition)를 제공할 수 있다. 최대 풀링 계층(360)은 국소 불변 및 차원 감소를 위해 공간에 걸쳐 다운 샘플링 집성을 제공할 수 있다.
예를 들어, 심층 컨볼루션 네트워크의 병렬 필터 뱅크들은 고 성능 및 낮은 전력 소비를 달성하기 위해 이미지 프로세싱 시스템(100)의 CPU(102) 또는 GPU(104) 상에 로딩될 수 있다. 대안적인 실시예들에서, 병렬 필터 뱅크들은 이미지 프로세싱 시스템(100)의 DSP(106) 또는 ISP(116) 상에 로딩될 수 있다. 또한, 심층 컨볼루션 네트워크(350)는 센서 프로세서(114)와 같은 이미지 프로세싱 시스템(100) 상에 존재할 수 있는 다른 프로세싱 블록들에 액세스할 수 있다.
심층 컨볼루션 네트워크(350)는 또한 계층(362A)("FC1"로 라벨링됨) 및 계층(362B)("FC2"로 라벨링됨)과 같은 하나 이상의 완전 연결 계층들을 포함할 수 있다. 심층 컨볼루션 네트워크(350)는 로지스틱 회귀(logistic regression)(LR) 계층(364)을 더 포함할 수 있다. 심층 컨볼루션 네트워크(350)의 각각의 계층(356, 358, 360, 362, 364) 사이에는 업데이트될 가중치들(도시되지 않음)이 있다. 계층들(예를 들어, 356, 358, 360, 362, 364) 각각의 출력은 컨볼루션 블록들(354A) 중 제1 컨볼루션 블록에서 공급되는 입력 데이터(352)(예를 들어, 이미지들, 오디오, 비디오, 센서 데이터 및/또는 다른 입력 데이터)로부터 계층 구조적 특징 표현들을 학습하기 위해 심층 컨볼루션 네트워크(350)에서 계층들(예를 들어, 356, 358, 360, 362, 364)의 연속되는 하나의 입력으로서 기능할 수 있다. 심층 컨볼루션 네트워크(350)의 출력은 입력 데이터(352)에 대한 분류 스코어(366)이다. 분류 스코어(366)는 확률들의 세트일 수 있으며, 여기서 각각의 확률은 입력 데이터가 특징들의 세트로부터의 특징을 포함하는 확률이다.
이미지 및 비디오 콘텐츠는 디바이스들 간에 저장 및/또는 공유될 수 있다. 예를 들어, 이미지 및 비디오 콘텐츠는 미디어 호스팅 서비스들 및 공유 플랫폼들에 업로드될 수 있고, 다양한 디바이스들에 송신될 수 있다. 압축되지 않은 이미지 및 비디오 콘텐츠를 레코딩하는 것(recording)은 일반적으로 이미지 및 비디오 콘텐츠의 해상도가 증가함에 따라 크게 증가하는 큰 파일 크기를 초래한다. 예를 들어, 1080p/24에 레코딩된 압축되지 않은 채널당 16비트 비디오(예를 들어, 폭이 1920픽셀이고 높이가 1080픽셀인 해상도, 초당 24개의 프레임이 캡처됨)는 프레임당 12.4메가바이트, 또는 초당 297.6메가바이트를 차지할 수 있다. 초당 24프레임의 4K 해상도로 레코딩된 채널당 압축되지 않은 16비트 비디오는 프레임당 49.8MB 또는 초당 1195.2MB를 차지할 수 있다.
압축되지 않은 이미지 및 비디오 콘텐츠는 물리적 저장을 위한 상당한 메모리 및 송신을 위한 상당한 대역폭을 수반할 수 있는 큰 파일들을 초래할 수 있기 때문에, 이러한 비디오 콘텐츠를 압축하기 위한 기술들이 이용될 수 있다. 예를 들어, 이미지 콘텐츠의 크기 - 따라서 이미지 콘텐츠를 저장하는 데 수반되는 저장량 및 비디오 콘텐츠를 전달하는 데 수반되는 대역폭량을 감소시키기 위해, 다양한 압축 알고리즘들이 이미지 및 비디오 콘텐츠에 적용될 수 있다.
일부 경우에, 이미지 콘텐츠는 특히 JPEG(Joint Photographic Experts Group), BPG(Better Portable Graphics)와 같은 선험적으로 정의된 압축 알고리즘을 사용하여 압축될 수 있다. 예를 들어, JPEG는 이산 코사인 변환(DCT)을 기반으로 하는 손실 압축 형태이다. 예를 들어, 이미지의 JPEG 압축을 수행하는 디바이스는 이미지를 최적의 컬러 공간 (예를 들어, 휘도(Y), 크로미넌스-블루(Cb), 크로미넌스-레드(Cr)를 포함하는 YCbCr 컬러 공간)으로 변환할 수 있고, 픽셀들의 그룹들을 함께 평균화함으로써 크로미넌스 성분들을 다운샘플링할 수 있고, DCT 함수를 픽셀들의 블록들에 적용하여 리던던트 이미지 데이터를 제거하고 따라서 이미지 데이터를 압축할 수 있다. 압축은 이미지 내부의 유사한 영역들의 식별 및 영역들을 (DCT 함수에 기초하여) 동일한 컬러 코드로 변환하는 것에 기초한다. 비디오 콘텐츠는 또한 MPEG(Motion Picture Experts Group) 알고리즘, H.264, 또는 고효율 비디오 코딩 알고리즘과 같은 선험적으로 정의된 압축 알고리즘을 사용하여 압축될 수 있다.
이들 선험적으로 정의된 압축 알고리즘들은 원시 이미지 및 비디오 콘텐츠에서 정보의 대부분을 유지할 수 있을 수 있고, 신호 프로세싱 및 정보 이론 아이디어에 기초하여 선험적으로 정의될 수 있다. 그러나, 이러한 미리 정의된 압축 알고리즘들이 일반적으로(예를 들어, 임의의 유형의 이미지/비디오 콘텐츠에) 적용가능할 수 있지만, 압축 알고리즘들은 콘텐츠의 유사성들, 비디오 캡처 및 전달을 위한 새로운 해상도들 또는 프레임 레이트들, 비-자연적 이미지(예를 들어, 레이더 이미지 또는 다양한 센서들을 통해 캡처된 다른 이미지) 등을 고려하지 않을 수 있다.
선험적으로 정의된 압축 알고리즘들은 손실 압축 알고리즘들로 간주된다. 입력 이미지(또는 비디오 프레임)의 손실 압축에서, 입력 이미지는 코딩된 후 정확한 입력 이미지가 재구성되도록 디코딩/재구성될 수 없다. 오히려, 손실 압축에서, 압축된 입력 이미지의 디코딩/재구성 후에 입력 이미지의 근사 버전이 생성된다. 손실 압축은 재구성된 이미지에 존재하는 아티팩트(artifact)들을 초래하는 왜곡의 대가로, 비트레이트의 감소를 초래한다. 따라서, 손실 압축 시스템에서 레이트-왜곡 트레이드 오프(rate-distortion trade-off)가 존재한다. 특정 압축 방법들(예를 들어, 다른 것들 중에서도, JPEG, BPG)에 대해, 왜곡-기반 아티팩트들은 블로킹 또는 다른 아티팩트들의 형태를 취할 수 있다. 일부 경우에, 신경망 기반 압축이 사용될 수 있고, 이미지 데이터 및 비디오 데이터의 고품질 압축을 초래할 수 있다. 일부 경우들에서, 블러링(blurring) 및 컬러 시프트(color shift)가 아티팩트들의 예들이다.
비트레이트가 입력 데이터의 실제 엔트로피(entropy) 아래로 내려갈 때마다, 정확한 입력 데이터를 재구성하는 것이 어렵거나 불가능할 수 있다. 그러나, 데이터의 압축/압축 해제로부터 실현되는 왜곡/손실이 있다는 사실이 재구성된 이미지 또는 프레임이 아티팩트를 가질 필요가 없다는 것을 의미하지는 않는다. 실제로, 압축된 이미지를 높은 시각적 품질을 갖는 다른 유사하지만 상이한 이미지로 재구성하는 것이 가능할 수 있다.
일부 경우들에서, 압축 및 압축 해제는 하나 이상의 기계 학습(ML) 시스템들을 사용하여 수행될 수 있다. 일부 예들에서, 이러한 ML 기반 시스템들은 고품질의 시각적 출력들을 생산하는 이미지 및/또는 비디오 압축을 제공할 수 있다. 일부 예들에서, 이러한 시스템들은 레이트-왜곡 오토인코더(RD-AE)와 같은 심층 신경망(들)을 사용하여 콘텐츠 (예를 들어, 이미지 콘텐츠, 비디오 콘텐츠, 오디오 콘텐츠 등)의 압축 및 압축 해제를 수행할 수 있다. 심층 신경망은 이미지들을 레이턴트 코드 공간(예를 들어, 코드들 z의 세트를 포함함)에 매핑하는 오토인코더(AE : autoencoder)를 포함할 수 있다. 레이턴트 코드 공간은 인코더 및 디코더에 의해 사용되고, 콘텐츠가 코드 z로 인코딩된 코드 공간을 포함할 수 있다. 코드들(예를 들어, 코드들 z)은 또한 레이턴트(latent)들, 레이턴트 변수들 또는 레이턴트 표현들로 지칭될 수 있다. 심층 신경망은 레이턴트 코드 공간으로부터 코드들 z를 손실 없이 압축할 수 있는 확률론적 모델(프라이어(prior) 또는 코드 모델이라고도 지칭됨)을 포함할 수 있다. 확률론적 모델은 입력 데이터에 기초하여 인코딩된 데이터를 나타낼 수 있는 코드들 z의 세트에 대한 확률 분포를 생성할 수 있다. 일부 경우에, 확률 분포는 (P(z))로 표시될 수 있다.
일부 예들에서, 심층 신경망(deep neural network)은 확률 분포 P(z) 및/또는 코드들 z의 세트에 기초하여 출력될 압축된 데이터를 포함하는 비트스트림을 생성하는 산술 코더를 포함할 수 있다. 압축된 데이터를 포함하는 비트스트림은 저장될 수 있고 및/또는 수신 디바이스로 송신될 수 있다. 수신 디바이스는 예를 들어, 산술 디코더, 확률적 (또는 코드) 모델, 및 AE의 디코더를 사용하여 비트스트림을 디코딩 또는 압축 해제하기 위해 역 프로세스를 수행할 수 있다. 압축된 데이터를 포함하는 비트스트림을 생성한 디바이스는 또한 스토리지로부터 압축된 데이터를 검색할 때 유사한 디코딩/압축 해제 프로세스를 수행할 수 있다. 업데이트된 모델 파라미터들을 압축/인코딩 및 압축 해제/디코딩하기 위해 유사한 기술이 수행될 수 있다.
일부 예들에서, RD-AE는 (하이-레이트(high-rate) 및 로우-레이트(low-rate) 동작들을 포함하는) 멀티-레이트 AE로서 수행하도록 훈련되고 동작될 수 있다. 예를 들어, 멀티-레이트 AE의 인코더에 의해 생성된 레이턴트 코드 공간은 2 개 이상의 청크(chunk)들 (예를 들어, 청크들 z1 및 z2로 분할된 코드들 z)로 분할될 수 있다. 하이-레이트 동작에서, 멀티-레이트 AE 는 RD-AE에 대해 상술된 동작들과 유사하게, 데이터를 압축 해제하기 위해 수신 디바이스에 의해 사용될 수 있는 전체 레이턴트 공간 (예를 들어, z1, z2 등을 포함하는 코드들 z)에 기초하는 비트스트림을 발송할 수 있다. 로우-레이트 동작에서, 수신 디바이스로 발송되는 비트스트림은 레이턴트 공간의 서브세트 (예를 들어, z2가 아닌 청크 z1)에 기초한다. 수신 디바이스는 발송된 서브세트에 기초하여 레이턴트 공간의 나머지 부분을 추론할 수 있고, 레이턴트 공간의 서브세트 및 레이턴트 공간의 추론된 나머지 부분을 사용하여 재구성된 데이터를 생성할 수 있다.
RD-AE 또는 멀티-레이트 AE를 사용하여 콘텐츠를 압축 (및 압축 해제) 함으로써, 인코딩 및 디코딩 메커니즘들은 다양한 사용 경우들에 적응가능할 수 있다. 기계 학습 기반 압축 기술들은 고 품질 및/또는 감소된 비트레이트를 갖는 압축된 콘텐츠를 생성할 수 있다. 일부 예들에서, RD-AE는 이미지 및/또는 비디오 데이터포인트들과 같은 데이터포인트들의 데이터세트에 걸쳐 평균 레이트-왜곡 손실을 최소화하도록 훈련될 수 있다. 일부 경우들에서, RD-AE는 또한 수신기로 발송되고 수신기에 의해 디코딩될 특정 데이터포인트에 대해 미세-튜닝될 수 있다. 일부 예들에서, 데이터포인트 상에서 RD-AE를 미세-튜닝함으로써, RD-AE는 고 압축 (레이트/왜곡) 성능을 획득할 수 있다. RD-AE와 연관된 인코더는 비트스트림을 디코딩하기 위해 AE 모델 또는 AE 모델의 일부를 수신기 (예를 들어, 디코더)에 발송할 수 있다.
일부 경우들에서, 신경망 압축 시스템은 (양자화된) 레이턴트 표현(latent representation)으로부터 입력 인스턴스(예를 들어, 입력 이미지, 비디오, 오디오 등)를 재구성할 수 있다. 신경망 압축 시스템은 또한 레이턴트 표현을 손실 없이 압축하기 위해 프라이어(prior)를 사용할 수 있다. 일부 경우들에서, 신경망 압축 시스템은 테스트 시간 데이터 분포가 알려져 있고 비교적 낮은 엔트로피(예를 들어, 정적 장면을 보는 카메라, 자율 주행 차 내의 대시 캠(dash cam) 등)를 결정할 수 있고, 이러한 분포에 미세-튜닝되거나 적응될 수 있다. 미세-튜닝 또는 적응은 개선된 레이트/왜곡 (RD) 성능을 초래할 수 있다. 일부 예들에서, 신경망 압축 시스템의 모델은 압축될 단일 입력 인스턴스에 적응될 수 있다. 신경망 압축 시스템은 모델 업데이트들을 제공할 수 있으며, 이는 일부 예들에서 레이턴트 표현과 함께, 파라미터-공간 프라이어(parameter-space prior)를 사용하여 양자화되고 압축될 수 있다.
미세-튜닝은 모델 양자화의 효과 및 모델 업데이트들을 발송함으로써 발생되는 추가적인 비용들을 고려할 수 있다. 일부 예들에서, 신경망 압축 시스템은 RD 손실뿐만 아니라 모델 프라이어 하에서 모델 업데이트들을 발송하는데 필요한 비트들의 수를 측정하는 추가적인 모델 레이트 항 M을 사용하여 미세-튜닝될 수 있으며, 이는 조합된 RDM 손실을 초래한다.
도 4는 본 개시의 일부 예들에 따른 송신 디바이스(410) 및 수신 디바이스(420)를 포함하는 시스템(400)을 예시하는 다이어그램이다. 송신 디바이스(410) 및 수신 디바이스(420)는 각각 일부 경우에 RD-AE로 지칭될 수 있다. 송신 디바이스(410)는 이미지 콘텐츠를 압축할 수 있고, 압축된 이미지 콘텐츠를 저장할 수 있고 및/또는 압축 해제를 위해 압축된 이미지 콘텐츠를 수신 디바이스(420)에 송신할 수 있다. 수신 디바이스(420)는 압축된 이미지 콘텐츠를 압축 해제할 수 있고, 압축 해제된 이미지 콘텐츠를 수신 디바이스(420) 상에 출력할 수 있고(예를 들어, 디스플레이, 편집 등을 위해) 및/또는 압축 해제된 이미지 콘텐츠를 수신 디바이스(420)에 연결된 다른 디바이스들(예를 들어, 텔레비전, 모바일 디바이스, 또는 다른 디바이스)에 출력할 수 있다. 일부 경우들에서, 수신 디바이스(420)는 (인코더(422)를 사용하여) 이미지 콘텐츠를 압축하고 압축된 이미지 콘텐츠를 저장 및/또는 송신 디바이스(410)와 같은 다른 디바이스에 송신함으로써 송신 디바이스가 될 수 있다(이 경우 송신 디바이스(410)는 수신 디바이스가 될 것이다). 시스템(400)이 이미지 압축 및 압축 해제와 관련하여 본원에 설명되지만, 당업자는 시스템(400)이 비디오 콘텐츠를 압축 및 압축 해제하기 위해 본원에 설명된 기술들을 사용할 수 있다는 것을 이해할 것이다.
도 4에 도시된 바와 같이, 송신 디바이스(410)는 이미지 압축 파이프라인을 포함하고, 수신 디바이스(420)는 이미지 비트스트림 압축 해제 파이프라인을 포함한다. 송신 디바이스(410) 내의 이미지 압축 파이프라인 및 수신 디바이스(420) 내의 비트스트림 압축 해제 파이프라인은 일반적으로 본 개시의 양태들에 따라, 이미지 콘텐츠를 압축하고 및/또는 수신된 비트스트림을 이미지 콘텐츠로 압축 해제하기 위해 하나 이상의 인공 신경망들을 사용한다. 송신 디바이스(410)에서의 이미지 압축 파이프라인은 오토인코더(autocoder)(401), 코드 모델(404), 및 산술 코더(arithmetic coder)(406)를 포함한다. 일부 구현예들에서, 산술 코더(406)는 선택적이며, 일부 경우들에서 생략될 수 있다. 수신 디바이스(420)의 이미지 압축 해제 파이프라인은 오토인코더(421), 코드 모델(424) 및 산술 디코더(426)를 포함한다. 일부 구현예들에서, 산술 디코더(426)는 선택적이며, 일부 경우들에서 생략될 수 있다. 송신 디바이스(410)의 오토인코더(401) 및 코드 모델(404)은 이전에 훈련되었고 따라서 훈련된 기계 학습 시스템의 추론 또는 동작 동안 동작들을 수행하도록 구성된 기계 학습 시스템으로서 도 4에 예시된다. 오토인코더(421), 코드 모델(424) 및 완료 모델(completion model)(425)은 또한 이전에 훈련된 기계 학습 시스템으로서 예시된다.
오토인코더(401)는 인코더(402) 및 디코더(403)를 포함한다. 인코더(402)는 비압축 이미지 콘텐츠의 하나 이상의 이미지 내의 픽셀을 레이턴트 코드 공간(latent code space)(코드 z를 포함함)에 맵핑함으로써 수신된 비압축 이미지 콘텐츠에 대해 손실 압축을 수행할 수 있다. 일반적으로, 인코더(402)는 압축된(또는 인코딩된) 이미지를 나타내는 코드들 z이 이산(discrete) 또는 이진(binary)이도록 구성될 수 있다. 이들 코드들은 스토캐스틱 섭동 기술(stochastic perturbation technique)들, 소프트 벡터 양자화, 또는 별개의 코드들을 생성할 수 있는 다른 기술들에 기초하여 생성될 수 있다. 일부 양태들에서, 오토인코더(401)는 압축되지 않은 이미지들을 압축가능한 (낮은 엔트로피) 분포를 갖는 코드들에 맵핑할 수 있다. 이들 코드들은 미리 정의된 또는 학습된 이전 분포에 크로스-엔트로피(cross-entropy)에서 가까울 수 있다.
일부 예들에서, 오토인코더(401)는 컨볼루션 아키텍처를 사용하여 구현될 수 있다. 예를 들어, 일부 경우에, 오토인코더(401)는 오토인코더(401)가 레이턴트 코드 공간에 이미지 콘텐츠를 매핑하기 위한 공간 필터를 학습하도록 2차원 컨볼루션 신경망(CNN)으로서 구성될 수 있다. 시스템(400)이 비디오 데이터를 코딩하기 위해 사용되는 예들에서, 오토인코더(401)는 오토인코더(401)가 비디오를 레이턴트 코드 공간에 맵핑하기 위한 공간-시간 필터들을 학습하도록 3차원 CNN으로서 구성될 수 있다. 이러한 네트워크에서, 오토인코더(401)는 키 프레임(예를 들어, 시퀀스 내의 후속 프레임들이 시퀀스 내의 초기 프레임에 대한 차이로서 기술되는 프레임들의 시퀀스의 시작을 마킹하는 초기 프레임), 비디오 내의 키 프레임과 다른 프레임들 사이의 워핑(warping)(또는 차이들), 및 잔차 인자의 관점에서 비디오를 인코딩할 수 있다. 다른 양태들에서, 오토인코더(401)는 이전 프레임들, 프레임들 사이의 잔차 인자, 및 스태킹 채널들을 통해 또는 순환 계층들을 포함하는 컨디셔닝에 기초하여 컨디셔닝된 2차원 신경망로서 구현될 수 있다.
오토인코더(401)의 인코더(402)는 제1 이미지(도 4에서 이미지 x로서 지정됨)를 입력으로서 수신할 수 있고, 제1 이미지 x를 레이턴트 코드 공간의 코드 z에 매핑할 수 있다. 전술한 바와 같이, 인코더(402)는 레이턴트 코드 공간이 각각의 (x, y) 포지션(position)에서 해당 포지션에 중심을 둔 이미지 x의 블록을 설명하는 벡터를 갖도록 2차원 컨볼루션 네트워크로서 구현될 수 있다. x-좌표는 이미지 x의 블록 내의 수평 픽셀 위치를 나타낼 수 있고, y-좌표는 이미지 x의 블록 내의 수직 픽셀 위치를 나타낼 수 있다. 비디오 데이터를 코딩할 때, 레이턴트 코드 공간은 t 변수 또는 포지션을 가질 수 있으며, t 변수는 (공간 x- 및 y-좌표들에 추가하여) 비디오 데이터의 블록에서의 타임스탬프를 나타낸다. 수평 및 수직 픽셀 위치들의 2차원을 사용함으로써, 벡터는 이미지 x 내의 이미지 패치(image patch)를 설명할 수 있다.
오토인코더(401)의 디코더(403)는 그런 다음 제1 이미지 x의 재구성 를 획득하기 위해 코드 z를 압축 해제할 수 있다. 일반적으로, 재구성 는 압축되지 않은 제1 이미지 x의 근사치일 수 있고, 제1 이미지 x의 정확한 사본일 필요는 없다. 일부 경우들에서, 재구성된 이미지 는 송신 디바이스에서의 저장을 위해 압축된 이미지 파일로서 출력될 수 있다.
코드 모델(404)은 인코딩된 이미지 또는 이의 일부를 나타내는 코드 z를 수신하고, 코드 z를 나타내기 위해 사용될 수 있는 압축된 코드워드들의 세트에 걸쳐 확률 분포 P(z)를 생성한다. 일부 예에서, 코드 모델(404)은 확률적 자동 회귀 생성 모델(probabilistic auto-regressive generative model)을 포함할 수 있다. 일부 경우들에서, 확률 분포가 생성될 수 있는 코드들은 산술 코더(406)에 기초하여 비트 할당을 제어하는 학습된 분포를 포함한다. 예를 들어, 산술 코더(406)를 사용하여, 제1 코드 z에 대한 압축 코드가 격리 상태(isolation)에서 예측될 수 있고; 제2 코드 z에 대한 압축 코드가 제1 코드 z에 대한 압축 코드에 기초하여 예측될 수 있고; 제3 코드 z에 대한 압축 코드가 제1 코드 z 및 제2 코드 z에 대한 압축 코드들에 기초하여 예측될 수 있는 식이다. 압축 코드들은 일반적으로 압축될 주어진 이미지의 상이한 공간-시간 청크(spatio-temporal chunk)들을 나타낸다.
일부 양태들에서, z는 3차원 텐서(tensor)로서 표현될 수 있다. 텐서의 3개의 차원은 특징 채널 차원, 및 높이 및 폭 공간 차원(예를 들어, 코드 로 표시됨)을 포함할 수 있다. 각각의 코드 (채널 및 수평 및 수직 위치에 의해 인덱싱된 코드를 나타냄)는 코드들의 고정적이고 이론적으로 임의적인 순서일 수 있는 이전 코드에 기초하여 예측될 수 있다. 일부 예들에서, 코드들은 주어진 이미지 파일을 시작부터 끝까지 분석하고 래스터 스캔 순서(raster scan order)로 이미지의 각각의 블록을 분석함으로써 생성될 수 있다.
코드 모델(404)은 확률적 자동 회귀 모델을 사용하여 입력 코드 z에 대한 확률 분포를 학습할 수 있다. 확률 분포는 (전술한 바와 같이) 이전 값들에 대해 커디셔닝될 수 있다. 일부 예들에서, 확률 분포는 다음의 수학식에 의해 표현될 수 있다:
여기서, c는 모든 이미지 채널들 C(예를 들어, R, G, 및 B 채널들, Y, Cb, 및 Cr 채널들, 또는 다른 채널들)에 대한 채널 인덱스이고, w는 총 이미지 프레임 폭(W)에 대한 폭 인덱스이고, h는 총 이미지 프레임 높이(H)에 대한 높이 인덱스이다.
일부 예들에서, 확률 분포 는 인과적 컨볼루션(causal convolution)들의 완전한 컨볼루션 신경망(fully convolutional neural network)에 의해 예측될 수 있다. 일부 양태들에서, 컨볼루션 신경망의 각각의 계층의 커널들은, 컨볼루션 네트워크가 이전 값들 을 인지하고, 확률 분포를 계산할 때 다른 값들을 인지하지 않을 수 있도록 마스킹(mask)될 수 있다. 일부 양태들에서, 컨볼루션 네트워크의 최종 계층은 입력 값에 걸쳐 적용가능한 레이턴트 공간 내의 코드의 확률(예를 들어, 주어진 코드가 주어진 입력을 압축하기 위해 사용될 수 있는 가능성(likelihood))을 결정하는 소프트맥스 함수(softmax function)를 포함할 수 있다.
산술 코더(406)는 코드 모델(404)에 의해 생성된 확률 분포 를 사용하여 코드 z의 예측에 대응하는 비트스트림(415)("0010011..."로서 도 4에 도시됨)을 생성한다. 코드 z의 예측은 가능한 코드들의 세트에 걸쳐 생성된 확률 분포 에서 가장 높은 확률 스코어를 갖는 코드로서 표현될 수 있다. 일부 양태들에서, 산술 코더(406)는 코드 z의 예측의 정확도 및 오토인코더(401)에 의해 생성된 실제 코드 z에 기초하여 가변 길이의 비트스트림을 출력할 수 있다. 예를 들어, 비트스트림(415)은 예측이 정확한 경우 짧은 코드워드에 대응할 수 있는 반면, 비트스트림(415)은 코드 z 와 코드 z의 예측 사이의 차이의 크기가 증가함에 따라 더 긴 코드워드(codeword)들에 대응할 수 있다.
일부 경우에, 비트스트림(415)은 압축된 이미지 파일에 저장하기 위해 산술 코더(406)에 의해 출력될 수 있다. 비트스트림(415)은 또한 요청 디바이스(예를 들어, 도 4에 예시된 수신 디바이스(420))로의 송신을 위해 출력될 수 있다. 일반적으로, 산술 코더(406)에 의해 출력된 비트스트림(415)은 z가 압축된 이미지 파일에 적용된 압축 해제 프로세스들 동안 정확하게 복원될 수 있도록 z를 손실없이(losslessly) 인코딩할 수 있다.
산술 코더(406)에 의해 생성되고 송신 디바이스(410)로부터 송신된 비트스트림(415)은 수신 디바이스(420)에 의해 수신될 수 있다. 송신 디바이스(410)와 수신 디바이스(420) 사이의 송신은 다양한 적절한 유선 또는 무선 통신 기술들 중 임의의 것을 사용하여 발생할 수 있다. 송신 디바이스(410)와 수신 디바이스(420) 사이의 통신은 직접적일 수 있거나, 또는 하나 이상의 네트워크 인프라스트럭처 컴포넌트들(예를 들어, 기지국들, 중계국들, 이동국(mobile station)들, 네트워크 허브들, 라우터들, 및/또는 다른 네트워크 인프라스트럭처 컴포넌트들)을 통해 수행될 수 있다.
예시된 바와 같이, 수신 디바이스(420)는 산술 디코더(426), 코드 모델(424), 및 오토인코더(421)를 포함할 수 있다. 오토 인코더(421)는 인코더(422) 및 디코더(423)를 포함한다. 디코더(423)는, 주어진 입력에 대해, 디코더(403)와 동일하거나 유사한 출력을 생성할 수 있다. 오토인코더(421)가 인코더(422)를 포함하는 것으로 예시되지만, 인코더(422)는 송신 디바이스(410)로부터 수신된 코드 z로부터 (예를 들어, 송신 디바이스(410)에서 압축되었던 원래 이미지 x의 근사치)를 획득하기 위해 디코딩 프로세스 동안 사용될 필요가 없다.
수신된 비트스트림(415)은 비트스트림으로부터 하나 이상의 코드들 z을 획득하기 위해 산술 디코더(426)에 입력될 수 있다. 산술 디코더(426)는 가능한 코드들의 세트 및 각각의 생성된 코드 z를 비트스트림과 연관시키는 정보에 대해 코드 모델(424)에 의해 생성된 확률 분포 에 기초하여 압축 해제된 코드 z를 추출할 수 있다. 비트스트림의 수신된 부분 및 다음 코드 z의 확률적 예측이 주어지면, 산술 디코더(426)는 송신 디바이스(410)에서 산술 코더(406)에 의해 인코딩되었을 때 새로운 코드 z를 생산할 수 있다. 새로운 코드 z를 사용하여, 산술 디코더(426)는 연속적인 코드 z에 대한 확률적 예측을 수행하고, 비트스트림의 추가 부분을 판독하고, 수신된 비트스트림 전체가 디코딩될 때까지 연속적인 코드 z를 디코딩할 수 있다. 압축 해제된 코드 z는 오토인코더(421) 내의 디코더(423)에 제공될 수 있다. 디코더(423)는 코드 z를 압축 해제하고, 이미지 콘텐츠 x의 근사치 (재구성된 또는 디코딩된 이미지라고 지칭될 수 있는)를 출력한다. 일부 경우에, 콘텐츠 x의 근사치 는 추후 검색을 위해 저장될 수 있다. 일부 경우들에서, 콘텐츠 x의 근사치 는 수신 디바이스(420)에 의해 복원되고 수신 디바이스(420)에 통신가능하게 결합되거나 그와 통합된 스크린 상에 디스플레이될 수 있다.
전술한 바와 같이, 송신 디바이스(410)의 오토인코더(401) 및 코드 모델(404)은 이전에 훈련된 기계 학습 시스템으로서 도 4에 예시되어 있다. 일부 양태들에서, 오토인코더(401) 및 코드 모델(404)은 이미지 데이터를 사용하여 함께 훈련될 수 있다. 예를 들어, 오토인코더(401)의 인코더(402)는 입력으로서 제1 훈련 이미지 n 를 수신할 수 있고, 제1 훈련 이미지 n를 레이턴트 코드 공간 내의 코드 z에 매핑할 수 있다. 코드 모델(404)은 (전술한 기술들과 유사한) 확률적 자동 회귀 모델을 사용하여 코드 z에 대한 확률 분포 를 학습할 수 있다. 산술 코더(406)는 이미지 비트스트림을 생성하기 위해 코드 모델(404)에 의해 생성된 확률 분포 를 사용할 수 있다. 코드 모델(404)로부터의 확률 분포 및 비트스트림을 사용하여, 산술 코더(406)는 코드 z를 생성할 수 있고, 코드 z를 오토인코더(401)의 디코더(403)로 출력할 수 있다. 디코더(403)는 그런 다음 제1 훈련 이미지 n의 재구성 을 획득하기 위해 코드 z를 압축 해제할 수 있다(여기서, 재구성 은 압축되지 않은 제1 훈련 이미지 n 의 근사치이다).
일부 경우들에서, 송신 디바이스(410)의 훈련 동안 사용되는 역전파 엔진은 하나 이상의 손실 함수들에 기초하여 오토인코더(401)의 신경망 및 코드 모델(404)의 파라미터들(예를 들어, 가중치들, 바이어스들 등)을 튜닝하기 위해 역전파 프로세스를 수행할 수 있다. 일부 경우에, 역전파 프로세스는 스토캐스틱 경사 하강(stochastic gradient descent) 기술에 기초할 수 있다. 역전파는 순방향 패스, 하나 이상의 손실 함수들, 역방향 패스, 및 가중치(및/또는 다른 파라미터(들)) 업데이트를 포함할 수 있다. 순방향 패스, 손실 함수, 역방향 패스, 및 파라미터 업데이트는 하나의 훈련 반복에 대해 수행될 수 있다. 프로세스는 신경망의 가중치들 및/또는 다른 파라미터들이 정확하게 튜닝될 때까지 훈련 데이터의 각각의 세트에 대해 특정 수의 반복들 동안 반복될 수 있다.
예를 들어, 오토인코더(401)는 제1 훈련 이미지 n 와 재구성된 제1 훈련 이미지 사이의 손실(예를 들어, 거리 벡터 또는 다른 차이 값으로 표현됨)을 결정하기 위해 n 과 을 비교할 수 있다. 손실 함수는 출력에서의 에러를 분석하는 데 사용될 수 있다. 일부 예들에서, 손실은 최대 가능성에 기초할 수 있다. 압축되지 않은 이미지 n를 입력으로서 그리고 재구성된 이미지 를 출력으로서 사용하는 하나의 예시적인 예에서, 손실 함수 손실 은 오토인코더(401) 및 코드 모델(404)의 신경망 시스템을 훈련하는 데 사용될 수 있으며, 여기서, R은 레이트이고, D는 왜곡이고, *는 곱셈 함수를 나타내고, 베타 는 비트레이트를 정의하는 값으로 설정되는 트레이드오프 파라미터(tradeoff parameter)이다. 다른 예에서, 손실 함수 는 오토인코더(401) 및 코드 모델(404)의 신경망 시스템을 훈련하는 데 사용될 수 있다. 다른 훈련 데이터가 사용될 때와 같은 일부 경우들에서 다른 손실 함수들이 사용될 수 있다. 다른 손실 함수의 일 예는 로 정의되는 평균 제곱 에러(MSE : mean squared error)를 포함한다. MSE는 실제 응답(actual answer) 마이너스 예측(출력) 응답을 제곱한 것의 1/2배의 합계를 계산한다.
결정된 손실(예를 들어, 거리 벡터 또는 다른 차이 값)에 기초하여 그리고 역전파 프로세스를 사용하여, 오토인코더(401)의 신경망 시스템 및 코드 모델(404)의 파라미터들(예를 들어, 가중치들, 바이어스들 등)은 오토인코더(401)에 의한 출력으로서 생성된 압축된 이미지 콘텐츠와 입력된 비압축된 이미지들 사이의 손실을 감소시키도록 조정될 수 있다(수신된 이미지 콘텐츠와 레이턴트 코드 공간 사이의 매핑들을 효과적으로 조정하여).
실제 출력값(재구성된 이미지)이 입력 이미지와 많이 다를 수 있기 때문에, 제1 훈련 이미지에서는 손실(또는 에러)이 클 수 있다. 훈련의 목표는 예측된 출력에 대한 손실량을 최소화하는 것이다. 신경망은 (대응하는 가중치들을 갖는) 신경망의 어느 노드들이 신경망의 손실에 가장 기여했는지를 결정함으로써 역방향 패스를 수행할 수 있고, 손실이 감소하고 궁극적으로 최소화되도록 가중치들(및/또는 다른 파라미터들)을 조정할 수 있다. 가중치들에 대한 손실의 도함수 dL / dW 로 표시됨, 여기서, W는 특정 계층에서의 가중치들임)는 신경망의 손실에 가장 기여한 가중치들을 결정하기 위해 계산될 수 있다. 예를 들어, 가중치는 기울기의 반대 방향으로 변경되도록 업데이트될 수 있다. 가중치 업데이트는 로 표현될수 있고, 여기서, w는 가중치, wi는 초기 가중치, η 는 학습 레이트를 의미한다. 학습 레이트는 임의의 적절한 값으로 설정될 수 있으며, 높은 학습 레이트는 더 큰 가중치 업데이트들 및 더 낮은 값은 더 작은 가중치 업데이트들을 나타낸다.
오토인코더(401) 및 코드 모델(404)의 신경망 시스템은 원하는 출력이 달성될 때까지 이러한 방식으로 계속 훈련될 수 있다. 예를 들어, 오토인코더(401) 및 코드 모델(404)은 생성된 코드 z의 압축 해제로부터 발생한 입력 이미지 n과 재구성된 이미지 사이의 차이를 최소화하거나 다른 방식으로 감소시키기 위해 역전파 프로세스를 반복할 수 있다.
오토인코더(421) 및 코드 모델(424)은 송신 디바이스(410)의 오토인코더(401) 및 코드 모델(404)을 훈련하기 위해 상기 설명된 것과 유사한 기술들을 사용하여 훈련될 수 있다. 일부 경우들에서, 오토인코더(421) 및 코드 모델(424)은 송신 디바이스(410)의 오토인코더(401) 및 코드 모델(404)을 훈련하는데 사용되는 동일하거나 상이한 훈련 데이터세트를 사용하여 훈련될 수 있다.
도 4에 도시된 예에서, 레이트-왜곡 오토인코더들 (송신 디바이스(410) 및 수신 디바이스(420))은 비트레이트에 따라 추론에서 훈련되고 실행된다. 일부 구현예들에서, 레이트-왜곡 오토인코더는, 가변하는 양들의 정보가 레이턴트 코드들 z에 제공될 때 (예를 들어, 입력 이미지에 대한 왜곡으로 인한 제한된 아티팩트들 없이 또는 제한된 아티팩트들을 갖는) 고품질 재구성된 이미지들 또는 비디오 프레임들의 생성 및 출력을 허용하기 위해 다수의 비트레이트들로 훈련될 수 있다.
일부 구현예들에서, 레이턴트 코드들 z는 적어도 2개의 청크들 z1 및 z2로 분할될 수 있다. RD-AE 모델이 하이-레이트 설정에서 사용될 때, 양쪽 청크들은 디코딩을 위해 디바이스로 송신된다. 레이트-왜곡 오토인코더 모델이 로우-레이트 설정에서 사용될 때, 청크 z1만이 송신되고 청크 z2는 디코더 측에서 z1로부터 추론된다. z1으로부터 z2의 추론은 아래에서 더 상세히 설명되는 다양한 기술을 사용하여 수행될 수 있다.
일부 구현예들에서, (예를 들어, 많은 양의 정보를 전달할 수 있는) 연속적인 레이턴트(latent)들의 세트 및 (예를 들어, 더 적은 정보를 포함하는) 대응하는 양자화된 이산 레이턴트들이 사용될 수 있다. RD-AE 모델을 훈련시킨 후, 보조 역양자화 모델이 훈련될 수 있다. 일부 경우들에서, RD-AE를 사용할 때, 이산 레이턴시들만이 송신되고, 보조 역양자화 모델은 이산 레이턴시들로부터 연속 레이턴트들을 추론하기 위해 디코더 측에서 사용된다.
시스템(400)이 특정 컴포넌트들을 포함하는 것으로 도시되지만, 당업자는 시스템(400)이 도 4에 도시된 것들보다 더 많거나 더 적은 컴포넌트들을 포함할 수 있다는 것을 인식할 것이다. 예를 들어, 시스템(400)의 송신 디바이스(410) 및/또는 수신 디바이스(420)는 또한, 일부 경우들에서, 도 4에 도시되지 않은 하나 이상의 메모리 디바이스들(예를 들어, RAM, ROM, 캐시 등), 하나 이상의 네트워킹 인터페이스들(예를 들어, 유선 및/또는 무선 통신 인터페이스들 등), 하나 이상의 디스플레이 디바이스들, 및/또는 다른 하드웨어 또는 프로세싱 디바이스들을 포함할 수 있다. 도 4에 도시된 컴포넌트들 및/또는 시스템(400)의 다른 컴포넌트들은 하나 이상의 컴퓨팅 또는 프로세싱 컴포넌트들을 사용하여 구현될 수 있다. 하나 이상의 컴퓨팅 컴포넌트는 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 디지털 신호 프로세서(DSP) 및/또는 이미지 신호 프로세서(ISP)를 포함할 수 있다. 시스템(1600)으로 구현될 수 있는 컴퓨팅 디바이스 및 하드웨어 컴포넌트들의 예시적인 예가 도 16과 관련하여 아래에서 설명된다.
시스템(400)은 단일 컴퓨팅 디바이스 또는 다수의 컴퓨팅 디바이스의 일부이거나 이에 의해 구현될 수 있다. 일부 예들에서, 송신 디바이스(410)는 제1 디바이스의 일부일 수 있고 수신 디바이스(420)는 제2 컴퓨팅 디바이스의 일부일 수 있다. 일부 예들에서, 송신 디바이스(410) 및/또는 수신 디바이스(420)는 전화 시스템(예를 들어, 스마트폰, 셀룰러 전화, 회의 시스템 등), 데스크톱 컴퓨터, 랩톱 또는 노트북 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 스마트 텔레비전, 디스플레이 디바이스, 게이밍 콘솔, 비디오 스트리밍 디바이스, SOC, IoT(Internet-of-Things) 디바이스, 스마트 웨어러블 디바이스(예를 들어, 헤드-마운트 디스플레이(HMD), 스마트 안경 등), 카메라 시스템(예를 들어, 디지털 카메라, IP 카메라, 비디오 카메라, 보안 카메라 등), 또는 임의의 다른 적절한 전자 디바이스(들)와 같은 전자 디바이스(또는 디바이스들)의 일부로서 포함될 수 있다. 일부 경우에, 시스템(400)은 도 1에 도시된 이미지 프로세싱 시스템(100)에 의해 구현될 수 있다. 다른 경우에, 시스템(400)은 하나 이상의 다른 시스템 또는 디바이스에 의해 구현될 수 있다.
도 5a는 예시적인 신경망 압축 시스템(500)을 예시하는 다이어그램이다. 일부 예들에서, 신경망 압축 시스템(500)은 RD-AE 시스템을 포함할 수 있다. 도 5a에서, 신경망 압축 시스템(500)은 인코더(502), 산술 인코더(508), 산술 디코더(512), 및 디코더(514)를 포함한다. 일부 경우에, 인코더(502) 및/또는 디코더(514)는 각각 인코더(402) 및/또는 디코더(403)와 동일할 수 있다. 다른 경우에, 인코더(502) 및/또는 디코더(514)는 각각 인코더(402) 및/또는 디코더(403)와 상이할 수 있다.
인코더(502)는 이미지(501)(이미지 )를 입력으로서 수신할 수 있고, 이미지(501)(이미지 )를 레이턴트 코드 공간 내의 레이턴트 코드(504)(레이턴트(latent) )에 매핑 및/또는 변환할 수 있다. 이미지(501)는 스틸 이미지 및/또는 프레임들의 시퀀스(예를 들어, 비디오)와 연관된 비디오 프레임을 나타낼 수 있다. 일부 경우에, 인코더(502)는 레이턴트 코드(504)를 생성하기 위해 순방향 패스를 수행할 수 있다. 일부 예에서, 인코더(502)는 학습 가능한 함수를 구현할 수 있다. 일부 경우에, 인코더(502)는 로 파라미터화된 학습 가능한 함수를 구현할 수 있다. 예를 들어, 인코더(502)는 함수 을 구현할 수 있다. 일부 예들에서, 학습가능한 함수는 디코더(514)와 공유되거나 그에 의해 알려질 필요가 없다.
산술 인코더(508)는 레이턴트 코드(504)(레이턴트 ) 및 레이턴트 프라이어(latent prior)(506)에 기초하여 비트스트림(510)을 생성할 수 있다. 일부 예에서, 레이턴트 프라이어(506)는 학습 가능한 함수를 구현할 수 있다. 일부 경우에, 레이턴트 프라이어(506)는 ψ에 의해 파라미터화된 학습 가능한 함수를 구현할 수 있다. 예를 들어, 레이턴트 프라이어(506)는 함수 을 구현할 수 있다. 레이턴트 프라이어(506)는 무손실 압축을 사용하여 레이턴트 코드(504)(레이턴트 )를 비트스트림(510)으로 변환하기 위해 사용될 수 있다. 레이턴트 프라이어(506)는 발신기측(예를 들어, 인코더(502) 및/또는 산술 인코더(508)) 및 수신기측(예를 들어, 산술 디코더(512) 및/또는 디코더(514)) 둘 모두에서 공유될 수 있고 및/또는 이용가능하게 될 수 있다.
디코더(514)는 산술 인코더(508)로부터 인코딩된 비트스트림(510)을 수신하고, 인코딩된 비트스트림(510) 내의 레이턴트 코드(504)(레이턴트 )를 디코딩하기 위해 레이턴트 프라이어(506)를 사용할 수 있다. 디코더(514)는 레이턴트 코드(504)(레이턴트 )를 근사 재구성 이미지(516)(재구성 )로 디코딩할 수 있다. 일부 경우에, 디코더(514)는 θ에 의해 파라미터화된 학습 가능한 함수를 구현할 수 있다. 예를 들어, 디코더(514)는 함수 를 구현할 수 있다. 디코더(514)에 의해 구현되는 학습 가능한 함수는 발신기 측(예를 들어, 인코더(502) 및/또는 산술 인코더(508)) 및 수신기 측(예를 들어, 산술 디코더(512) 및/또는 디코더(514)) 둘 모두에서 공유 및/또는 이용 가능하게 될 수 있다.
신경망 압축 시스템(500)은 레이트-왜곡(rate-distortion)을 최소화하도록 훈련될 수 있다. 일부 예들에서, 레이트는 비트스트림(510) (비트스트림 b)의 길이를 반영하고, 왜곡은 이미지(501) (이미지 )와 재구성 이미지(516) (재구성 ) 사이의 왜곡을 반영한다. 파라미터 β는 특정 레이트-왜곡 비율에 대한 모델을 훈련시키는 데 사용될 수 있다. 일부 예들에서, 파라미터 β 는 레이트와 왜곡 사이의 특정 트레이드오프를 정의 및/또는 구현하는 데 사용될 수 있다.
일부 예들에서, 손실은 다음과 같이 표시될 수 있다: , 여기서 함수 E는 기대치(expectation)이다. 왜곡 은, 예를 들어, 평균 제곱 에러(MSE : mean squared error)와 같은 손실 함수에 기초하여 결정될 수 있다. 일부 예들에서, 항 은 왜곡 을 표시하고 및/또는 나타낼 수 있다.
레이턴트(latent)들을 발송하기 위한 레이트는 로 표시될 수 있다. 일부 예들에서, 항 은 레이트 를 표시 및/또는 나타낼 수 있다. 일부 경우들에서, 손실은 다음과 같이 전체 데이터세트 D에 대해 최소화될 수 있다 : .
도 5b는 신경망 압축 시스템(500)에 의해 수행되는 추론 프로세스(530)를 나타내는 다이어그램이다. 도시된 바와 같이, 인코더(502)는 이미지(501)를 레이턴트 코드(latent code)(504)로 변환할 수 있다. 일부 예들에서, 이미지(501)는 스틸 이미지 및/또는 프레임들의 시퀀스(예를 들어, 비디오)와 연관된 비디오 프레임을 나타낼 수 있다.
일부 예들에서, 인코더(502)는 단일 순방향 패스 를 사용하여 이미지(501)를 인코딩할 수 있다. 산술 인코더(508)는 그런 다음 레이턴트 프라이어(506) 하에서의 레이턴트 코드(504)(레이턴트 )의 산술 코딩을 수행하여 비트스트림(520)을 생성할 수 있다. 일부 예들에서, 산술 인코더(508)는 다음과 같이 비트스트림(520)을 생성할 수 있다 :
산술 디코더(512)는 산술 인코더(508)로부터 비트스트림(520)을 수신하고 레이턴트 프라이어(506) 하에서의 레이턴트 코드(504)(레이턴트 )의 산술 디코딩을 수행할 수 있다. 일부 예들에서, 산술 디코더(512)는 다음과 같이 비트스트림(520)으로부터 레이턴트 코드(504)를 디코딩할 수 있다 : . 디코더(514)는 레이턴트 코드(504)(레이턴트 )를 디코딩하고 재구성 이미지(516)(재구성 )를 생성할 수 있다. 일부 예들에서, 디코더(514)는 다음과 같이 단일 순방향 패스를 사용하여 레이턴트 코드(504)(레이턴트 )를 디코딩할 수 있다 :
일부 예들에서, RD-AE 시스템은 훈련 데이터의 세트를 사용하여 훈련될 수 있고, 수신기(예를 들어, 디코더)에 송신되고 수신기에 의해 디코딩될 데이터포인트(예를 들어, 이미지 데이터, 비디오 데이터, 오디오 데이터)에 대해 추가로 미세-튜닝될 수 있다. 예를 들어, 추론 시간에, RD-AE 시스템은 수신기에 송신되는 이미지 데이터에 대해 미세-튜닝될 수 있다. 압축 모델들이 일반적으로 크기 때문에, 모델과 연관된 파라미터들을 수신기에 발송하는 것은 네트워크(예를 들어, 대역폭 등), 스토리지 및 컴퓨팅 자원들과 같은 자원들의 관점에서 매우 비용이 많이 들 수 있다. 일부 경우들에서, RD-AE 시스템은 압축되고 압축 해제를 위해 수신기로 발송되는 단일 데이터포인트에 대해 미세-튜닝될 수 있다. 이는 압축/압축 해제 효율, 성능, 및/또는 품질을 유지 및/또는 증가시키면서, 수신기로 발송되는 정보의 양(및 연관된 비용)을 제한할 수 있다.
도 6은 모델 프라이어(model prior)를 사용하여 미세-튜닝된 예시적인 신경망 압축 시스템(600)에 의해 구현되는 예시적인 추론 프로세스를 예시하는 다이어그램이다. 일부 예들에서, 신경망 압축 시스템(600)은 RDM-AE 모델 프라이어를 사용하여 미세-튜닝된 RD-AE 시스템을 포함할 수 있다. 일부 경우들에서, 신경망 압축 시스템(600)은 모델 프라이어를 사용하여 미세-튜닝된 AE 모델을 포함할 수 있다.
이 예시적인 예에서, 신경망 압축 시스템(600)은 인코더(602), 산술 인코더(608), 산술 디코더(612), 디코더(614), 모델 프라이어(model prior)(616) 및 레이턴트 프라이어(latent prior)(606)을 포함한다. 일부 경우에, 인코더(602)는 인코더(402) 또는 인코더(502)와 동일하거나 상이할 수 있고, 디코더(614)는 디코더(403) 또는 디코더(514)와 동일하거나 상이할 수 있다. 산술 인코더(608)는 산술 코더(406) 또는 산술 인코더(508)와 동일하거나 상이할 수 있고, 산술 디코더(612)는 산술 디코더(426) 또는 산술 디코더(512)와 동일하거나 상이할 수 있다.
신경망 압축 시스템(600)은 이미지(601)에 대한 레이턴트 코드(604)(레이턴트 )를 생성할 수 있다. 신경망 압축 시스템(600)은 이미지(601)(이미지 )를 인코딩하기 위해 레이턴트 코드(604) 및 레이턴트 프라이어(606)를 사용할 수 있고, 재구성 이미지(620)(재구성 )를 생성하기 위해 수신기에 의해 사용될 수 있는 비트스트림(610)을 생성할 수 있다. 일부 예들에서, 이미지(601)는 스틸 이미지 및/또는 프레임들의 시퀀스(예를 들어, 비디오)와 연관된 비디오 프레임을 나타낼 수 있다.
일부 예들에서, 신경망 압축 시스템(600)은 RDM-AE 손실을 사용하여 미세-튜닝될 수 있다. 신경망 압축 시스템(600)은 레이트-왜곡-모델 레이트(RDM) 손실을 최소화함으로써 훈련될 수 있다. 일부 예들에서, 인코더 측에서, AE 모델은 다음과 같이 RDM 손실을 사용하여 이미지(601) (이미지 )에 대해 미세-튜닝될 수 있다: .
미세-튜닝된 인코더(602)는 레이턴트 코드(604)를 생성하기 위해 이미지(601)()를 인코딩할 수 있다. 일부 경우들에서, 미세-튜닝된 인코더(602)는 다음과 같은 단일 순방향 패스를 사용하여 이미지(601)(이미지 )를 인코딩할 수 있다. 산술 인코더(608)는 레이턴트 코드(604)를 산술 디코더(612)를 위한 비트스트림(610)으로 변환하기 위해 레이턴트 프라이어(606)를 사용할 수 있다. 산술 인코더(608)는 모델 프라이어(616) 하에서 미세-튜닝된 디코더(614) 및 미세-튜닝된 레이턴트 프라이어(606)의 파라미터들을 엔트로피-코딩하고, 미세-튜닝된 디코더(614) 및 미세-튜닝된 레이턴트 프라이어(606)의 압축된 파라미터들을 포함하는 비트스트림(611)을 생성할 수 있다. 일부 예들에서, 비트스트림(611)은 미세-튜닝된 디코더(614) 및 미세-튜닝된 레이턴트 프라이어(606)의 업데이트된 파라미터들을 포함할 수 있다. 업데이트된 파라미터들은, 예를 들어, 미세-튜닝 전에 디코더(614) 및 레이턴트 프라이어(606)과 같은, 베이스라인 디코더 및 레이턴트 프라이어에 대한 파라미터 업데이트들을 포함할 수 있다.
일부 경우들에서, 미세-튜닝된 레이턴트 프라리어(606) 는 다음과 같이 모델 프라이어(616) 하에서 엔트로피 코딩될 수 있고 : , 미세-튜닝된 디코더(614)는 다음과 같이 모델 프라이어(616) 하에서 엔트로피 코딩될 수 있고 : , 레이턴트 코드(604) (레이턴트 )는 다음과 같이 미세-튜닝된 레이턴트 프라리어(606) 하에서 엔트로피 코딩될 수 있다 : . 일부 경우들에서, 디코더 측에서, 미세-튜닝된 레이턴트 프라이어(606)는 다음과 같이 모델 프라이어(616) 하에서 엔트로피 코딩될 수 있고 : , 미세-튜닝된 디코더(614)는 다음과 같이 모델 프라이어(616) 하에서 엔트로피 코딩될 수 있고 : , 레이턴트 코드(604) (레이턴트 zi)는 다음과 같이 미세-튜닝된 레이턴트 프라이어(606) 하에서 엔트로피 코딩될 수 있다 : .
디코더(614)는 레이턴트 코드(604)(레이턴트 )를 근사 재구성 이미지(620)(재구성 )로 디코딩할 수 있다. 일부 예들에서, 디코더(614)는 다음과 같이 미세-튜닝된 디코더의 단일 순방향 패스를 사용하여 레이턴트 코드(604)를 디코딩할 수 있다 :
이전에 설명된 바와 같이, 신경망 압축 시스템(600)은 RDM 손실을 최소화함으로써 훈련될 수 있다. 일부 경우에, 레이트는 비트스트림 b(예를 들어, 비트스트림(610 및/또는 611))의 길이를 반영할 수 있고, 왜곡은 입력 이미지(601)(이미지 )와 재구성 이미지(620)(재구성 ) 사이의 왜곡을 반영할 수 있고, 모델 레이트는 모델 업데이트(예를 들어, 업데이트된 파라미터)를 수신기에(예를 들어, 디코더(614)에) 전송하는 데 사용 및/또는 필요한 비트스트림의 길이를 반영할 수 있다. 파라미터 β는 특정 레이트-왜곡 비율에 대한 모델을 훈련시키는 데 사용될 수 있다.
일부 예들에서, 데이터포인트 x에 대한 손실은 다음과 같이 추론 시간에서 최소화될 수 있다 : . 일부 예들에서, RDM 손실은 다음과 같이 표시될 수 있다 : . 일부 경우들에서, 왜곡 은, 예를 들어, 평균 제곱 에러(MSE)와 같은 손실 함수에 기초하여 결정될 수 있다.
은 왜곡 을 나타내고 및/또는 표시할 수 있다. 항 은 레이턴트 를 발송하기 위한 레이트를 표시 및/또는 나타낼 수 있고, 항 은 미세-튜닝된 모델 업데이트 를 발송하기 위한 레이트를 표시 및/또는 나타낼 수 있다.
일부 경우들에서, 모델 프라이어(616)는 모델 업데이트들을 발송하기 위한 비트레이트 오버헤드의 길이를 반영할 수 있다. 일부 예들에서, 모델 업데이트들을 발송하기 위한 비트레이트는 다음과 같이 설명될 수 있다: . 일부 경우들에서, 모델 프라이어는 업데이트들 없이 모델을 발송하는 것이 저렴하도록, 즉, 비트길이(모델-레이트-손실)가 작도록 선택될 수 있다 : .
일부 경우들에서, RDM 손실 함수를 사용하여, 신경망 압축 시스템(600)은 레이턴트 레이트 또는 왜곡이 적어도 같은 수 만큼의 비트들로 감소한다면 모델 업데이트 에 대해 비트들만을 비트스트림에 추가할 수도 있다. 이는 부스트를 레이트-왜곡(R/D) 성능에 제공할 수 있다. 예를 들어, 신경망 압축 시스템(600)은 또한 적어도 동일한 수의 비트들로 레이트 또는 왜곡을 감소시킬 수 있다면 모델 업데이트들을 발송하기 위해 비트스트림(611) 내의 비트들의 수를 증가시킬 수 있다. 다른 경우들에서, 신경망 압축 시스템(600)은 레이턴트 레이트 또는 왜곡이 적어도 같은 수 만큼의 비트들로 감소하지 않더라도 모델 업데이트 를 위해 비트스트림에 비트들을 추가할 수 있다.
신경망 압축 시스템(600)은 단대단(end-to-end)으로 훈련될 수 있다. 일부 경우에, RDM 손실은 추론 시간(inference time) 단대단(end-to-end)에서 최소화될 수 있다. 일부 예들에서, 특정 양의 계산이 한 번 소비될 수 있고(예를 들어, 모델을 미세-튜닝함), 고 압축비들이 후속하여 수신기 측에 대한 추가 비용 없이 획득될 수 있다. 예를 들어, 콘텐츠 제공자는 많은 수의 수신기들에 제공될 비디오에 대해 신경망 압축 시스템(600)을 더 광범위하게 훈련하고 미세-튜닝하기 위해 많은 양의 계산을 소비할 수 있다. 고도로 훈련되고 미세-튜닝된 신경망 압축 시스템(600)은 해당 비디오에 대한 고 압축 성능을 제공할 수 있다. 많은 양의 계산을 소비했다면, 비디오 제공자는 모델 프라이어의 업데이트된 파라미터들을 저장할 수 있고, 비디오를 압축 해제하기 위해 압축된 비디오의 각각의 수신기에 효율적으로 제공할 수 있다. 비디오 제공자는 모델을 훈련하고, 미세-튜닝하는 초기 계산 비용을 상당히 능가할 수 있는 비디오의 각각의 송신에 따른 압축(및 네트워크 및 계산 자원의 감소)에서 큰 이익을 달성할 수 있다.
비디오 및 이미지들(예를 들어, 고해상도 이미지들)에서의 많은 수의 픽셀들로 인해, 위에서 설명된 훈련/학습 및 미세-조정 접근법들은 비디오 압축 및/또는 고해상도 이미지들에 매우 유리할 수 있다. 일부 경우들에서, 복잡도 및/또는 디코더 계산은 전체 시스템 설계 및/또는 구현에 대한 추가된 고려사항들로서 사용될 수 있다. 예를 들어, 추론을 신속하게 수행하는 매우 작은 네트워크들이 미세-튜닝될 수 있다. 다른 예로서, 비용 항목은 수신기 복잡도에 대해 추가될 수 있으며, 이는 모델이 하나 이상의 계층들을 제거하는 것을 강제하고 및/또는 야기할 수 있다. 일부 예들에서, 훨씬 더 큰 이득들을 달성하기 위해 기계 학습을 사용하여 더 복잡한 모델 프라이어들이 학습될 수 있다.
모델 프라이어 설계는 다양한 속성들을 포함할 수 있다. 일부 예들에서, 구현된 모델 프라이어는 임의의 업데이트들 없이 모델을 발송하기 위해 높은 확률 , 그리고 이어서 낮은 비트레이트 를 할당하는 모델 프라이어를 포함할 수 있다. 일부 경우들에서, 모델 프라이어는, 주위의 값들에 0이 아닌 확률을 할당하는 모델 프라이어를 포함할 수 있어서 미세-튜닝된 모델들의 상이한 인스턴스들이 실제로 인코딩될 수 있다. 일부 경우에, 모델 프라이어는 추론 시간에 양자화되고 엔트로피 코딩을 수행하는 데 사용될 수 있는 모델 프라이어를 포함할 수 있다.
가속화된 연구 개발들에도 불구하고, 이러한 기계 학습 기반 압축 시스템들의 구현은 특정 단점들을 제시한다. 예를 들어, 신경 압축 알고리즘들은 증가된 계산 및/또는 메모리 요건들을 초래할 수 있는 큰 신경망들을 요구한다. 또한, 심층 신경망에서 사용되는 최적의 설정 또는 파라미터(예를 들어, 가중치)는 훈련 데이터 세트에 의존하고 상이한 데이터와 함께 사용될 때 성능이 좋지 않을 수 있다. 예를 들어, 자연 장면들에 대해 훈련되는 신경 비디오 코덱들은 애니메이션된 장면들에 대해 성능이 좋지 않을 수 있다. 또한, 특정 신경망들이 각각의 인스턴스에 기초하여 미세-튜닝될 수 있지만, 업데이트된, 미세-튜닝된 파라미터들의 디코더로의 송신은 파일 크기 및/또는 비트레이트의 실질적인 증가를 야기할 수 있다.
위에서 언급된 바와 같이, 위에서 언급된 문제들을 해결할 수 있는 하나 이상의 기계 학습(ML) 시스템들을 사용하여 콘텐츠의 압축 및 압축 해제를 위한 시스템들 및 기술들이 본 명세서에서 설명된다. 예를 들어, 본 개시의 양태들은 이미지 및/또는 비디오 데이터포인트들과 같은 데이터포인트들의 데이터세트에 대해 평균 레이트-왜곡 손실을 최소화하도록 훈련될 수 있는 기계 학습 시스템 (예를 들어, 레이트-왜곡 오토인코더 (RD-AE) 또는 다른 신경망와 같은 하나 이상의 신경망들) 을 포함한다. 일부 예들에서, 전역 모델 파라미터들(예를 들어, 가중치들)의 세트는 훈련된 기계 학습 시스템과 연관될 수 있다. 일부 경우들에서, 기계 학습 시스템의 훈련은 훈련의 각각의 반복과 연관된 파라미터들(예를 들어, 가중치 벡터)을 식별하는 것을 포함할 수 있다. 예를 들어, 가중치 벡터는 각각의 훈련 반복에 대응할 수 있고, 전역 모델 파라미터들은 훈련된 신경망에 대한 가중치 벡터에 대응할 수 있다.
일부 예들에서, 기계 학습 시스템의 훈련은 전체 파라미터 공간보다 더 작은 치수를 갖는 모델 파라미터들의 서브공간 또는 매니폴드(manifold)를 결정하는 것을 포함할 수 있다. 일부 양태들에서, 모델 파라미터들의 서브공간 또는 매니폴드는 훈련의 각각의 반복과 연관된 가중치 벡터들의 일부를 포함한다. 일부 경우에, 모델 파라미터의 서브공간 또는 매니폴드는 주성분 분석(PCA)을 사용하여 결정될 수 있다. 예를 들어, PCA는 모델 파라미터들이 신경망의 훈련 동안 성능이 좋았던(예를 들어, 손실 함수가 임계 값 미만이었던) 전체 파라미터 공간에서 하나 이상의 방향 및/또는 궤적을 식별하는 데 사용될 수 있다. 일부 양태들에서, 희소(sparse) PCA는 모델 파라미터들의 서브공간의 크기를 감소시키는 데 사용될 수 있다. 일부 예들에서, 모델 파라미터들의 서브공간 또는 매니폴드는 인코딩된 데이터를 디코딩하도록 구성된 신경망과 공유될 수 있다.
일부 예들에서, 기계 학습 시스템은 압축되어 디코더(기계 학습 시스템을 또한 포함할 수 있음)를 포함하는 수신 디바이스로 송신될 입력 데이터에 대해 미세-튜닝(예를 들어, 훈련, 피팅(fitted))될 수 있다. 일부 양태들에서, 기계 학습 시스템을 미세-튜닝하는 것은 모델 파라미터들의 서브공간 또는 매니폴드를 사용하여 수행될 수 있다. 예를 들어, 신경망의 미세-튜닝은 모델 파라미터들의 서브공간 또는 매니폴드의 일부인 가중치 벡터에 대응하는 업데이트된 모델 파라미터들의 세트를 선택하는 것(예를 들어, 인스턴스(instance)에 대한 최적의 가중치 벡터를 선택하는 것)을 포함할 수 있다. 일부 경우들에서, 업데이트된 파라미터들의 세트 (예를 들어, 미세-튜닝 동안 선택된 가중치 벡터) 는 하나 이상의 서브공간 좌표들과 연관될 수 있다. 일 예에서, 하나 이상의 서브공간 좌표들은 전역 파라미터들의 세트에 상대적일 수 있다(예를 들어, 서브공간 좌표들은 전역 파라미터들의 세트에 상대적인 궤적에 대응할 수 있다).
일부 양태들에서, 업데이트된 파라미터들의 세트는 입력 데이터를 인코딩하는데 사용될 수 있다. 일부 예들에서, 기계 학습 시스템은 산술 코더(예를 들어, 산술 인코더, 산술 디코더, 또는 조합된 산술 인코더-디코더를 포함함)를 더 포함할 수 있다. 산술 코더 (예를 들어, 산술 인코더 또는 결합된 산술 인코더-디코더) 는 입력 데이터의 압축된 버전을 포함하는 비트스트림을 생성할 수 있다. 일부 경우들에서, 비트스트림은 또한, 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들의 압축된 버전을 포함할 수 있다. 일부 경우들에서, 수신 디바이스는 비트스트림을 수신할 수 있다. 수신 디바이스의 디코더는 신경망에 대한 업데이트된 모델 파라미터들을 결정하기 위해 하나 이상의 서브공간 좌표들을 사용할 수 있다. 디코더의 기계 학습 시스템(예를 들어, RD-AE 또는 다른 신경망과 같은 신경망)은 압축된 입력 데이터를 디코딩하기 위해 업데이트된 모델 파라미터들을 사용할 수 있다.
일부 양태들에서, 본 명세서에 개시된 시스템들 및 기술들은 각각의 데이터 인스턴스에 신경망을 적응시킴으로써 압축 성능을 개선하기 위해 사용될 수 있다. 일부 예들에서, 본 명세서에 개시된 시스템들 및 기술들은 저차원 서브공간으로부터 미세-튜닝된 가중치 벡터들을 선택함으로써 (예를 들어, 신경망을 미세-튜닝하는) 네트워크 파라미터 업데이트들을 디코더로 발송하기 위한 비트레이트 및/또는 파일 크기를 감소시킬 수 있다.
도 7은 예시적인 신경망 압축 시스템(700)에 의해 구현되는 인스턴스 적응적 (instance-adaptive) 프로세스를 예시하는 다이어그램이다. 일부 양태들에서, 신경망 압축 시스템(700)은 이미지, 비디오, 및/또는 오디오 데이터의 압축 및/또는 압축 해제를 수행하도록 구성될 수 있는 인코더(710) 및 디코더(714)를 포함할 수 있다. 일부 경우들에서, 인코더(710) 및 디코더(714)는 동일한 디바이스의 일부일 수 있다. 다른 경우들에서, 인코더(710) 및 디코더(714)는 상이한 디바이스들의 일부일 수 있다. 일부 예들에서, 인코더(710) 및/또는 디코더(714)는 신경망 압축 시스템(700)과 연관된 공유된 지식(706)의 하나 이상의 양태들을 포함하거나, 결정하거나, 다른 방식으로 이들에 액세스할 수 있다. 일부 경우에, 공유된 지식(706)은 네트워크 아키텍처(예를 들어, 딥러닝 신경망 아키텍처), 전역 모델 파라미터(예를 들어, 네트워크 가중치) 및/또는 서브공간 정의(아래에서 추가로 논의되는 바와 같이)를 포함할 수 있다.
일부 예들에서, 신경망 압축 시스템(700)은 이미지들, 비디오들, 오디오 등(예를 들어, 훈련 데이터(702))을 포함할 수 있는 하나 이상의 훈련 데이터 세트들을 사용하여 훈련될 수 있다. 예를 들어, 네트워크 훈련(704)은 신경망 압축 시스템(700)에 대한 파라미터들(예를 들어, 가중치들, 바이어스(bias)들 등)을 결정하기 위해 훈련 데이터(702)를 사용하여 구현될 수 있다. 일부 경우에, 네트워크 훈련(704)은 (예를 들어, 역전파 훈련 기술을 사용하여) 신경망 압축 시스템(700)을 통한 훈련 데이터(702)의 반복 흐름을 포함할 수 있다. 일부 양태들에서, 훈련된 신경망 압축 시스템(700)에 대한 파라미터들(예를 들어, 가중치들, 바이어스들 등)은 전역 모델 파라미터(global model parameter)들로 지칭될 수 있다.
일부 양태들에서, 네트워크 훈련(704)은 네트워크 파라미터들의 서브공간 또는 매니폴드를 생성, 구성, 결정, 및/또는 다른 방식으로 정의하는 데 사용될 수 있다. 일부 경우들에서, 네트워크 파라미터들의 서브공간 또는 매니폴드는 네트워크 훈련(704)과 연관된 모델 파라미터들의 세트들(예를 들어, 가중치들)에 기초하여 결정될 수 있다. 예를 들어, 네트워크 훈련(704)의 각각의 반복 동안 가중치 벡터(예를 들어, 네트워크 파라미터들의 세트)가 결정될 수 있다. 일부 예들에서, 네트워크 훈련(704) 동안 성능의 임계 레벨과 연관된 가중치 벡터들은 네트워크 파라미터들의 서브공간 또는 매니폴드를 정의하는 데 사용될 수 있다. 하나의 예시적인 예에서, 성능의 임계 레벨은 데이터 레이트 및/또는 왜곡 메트릭 (예를 들어, 레이트-왜곡-모델 레이트 (RDM) 손실)과 연관된 손실 함수에 기초하여 결정될 수 있다. 일부 양태들에서, 네트워크 파라미터들의 서브공간 또는 매니폴드는 네트워크 훈련(704) 동안 'N'개의 최고 수행 가중치 벡터들(예를 들어, 100개의 최고 수행 가중치 벡터들)에 기초하여 정의될 수 있다.
일 예에서, 네트워크 파라미터들의 서브공간 또는 매니폴드는 매트릭스 M 으로서 표현될 수 있고, 아래의 수학식(1)에 의해 주어진 관계에 따라 정의될 수 있으며, 여기서, θ는 주어진 인스턴스(예를 들어, 비디오)에 대한 압축 네트워크의 최적화된 파라미터들에 해당하고; 은 전역 모델 파라미터들(예를 들어, 발신기 및/또는 수신기 디바이스 상에 저장될 수 있는 훈련된 신경망에 대한 가중치들, 바이어스들 등)에 해당하고; M은 서브공간을 정의하는 매트릭스에 해당하고; 그리고 δ은 서브공간 좌표들의 벡터(예를 들어, 각각의 인스턴스에 대해 결정될 수 있는 업데이트들)에 해당한다.
일부 양태들에서, 네트워크 파라미터들의 서브공간 은 기계 학습 방법을 사용하여 결정될 수 있다. 예를 들어, 메타-학습 기계 학습 알고리즘(예를 들어, 모델-애그노스틱 메타-학습(model-agnostic meta-learning; MAML))이 서브공간 을 결정하기 위해 구현될 수 있다. 일부 양태들에서, MAML은 서브공간 M의 정의(예를 들어, 송신된 좌표들 δ을 네트워크 파라미터 공간에 매핑할 수 있는 함수)와 함께 신경망 압축 시스템(700)(예를 들어, 전역 모델)을 훈련하기 위해 사용될 수 있다.
도 10은 신경망 압축 시스템(예를 들어, 시스템(700))을 훈련하고 네트워크 파라미터들의 서브공간을 결정하기 위한 예시적인 프로세스(1000)를 예시하는 다이어그램이다. 블록(1002)에서, 프로세스(1000)는 기계 학습 알고리즘을 초기화하는 것을 포함할 수 있다. 일부 양태들에서, 기계 학습 알고리즘은 모델-애그노스틱 메타-학습(MAML) 알고리즘에 해당할 수 있다. 일부 경우들에서, 기계 학습 알고리즘의 초기화는 하나 이상의 파라미터들, 제약들, 변수들 등을 정의 및/또는 초기화하는 것을 포함할 수 있다. 예를 들어, 기계 학습 알고리즘의 초기화는 x 인스턴스를 갖는 훈련 데이터 세트 를 정의하는 것을 포함할 수 있다. 일부 경우들에서, 기계 학습 알고리즘의 초기화는 가중치 θ를 갖는 압축 모델 를 정의하는 것을 포함할 수 있다. 일부 예들에서, 기계 학습 알고리즘의 초기화는 인스턴스 파라미터들 δ 및 가중치 ψ로 하이퍼네트워크 를 정의하는 것을 포함할 수 있다. 일부 양태들에서, 기계 학습 알고리즘의 초기화는 모델 업데이트 레이트(예를 들어, 레이트-왜곡-모델 손실)를 포함할 수 있는 레이트-왜곡 손실 을 정의하는 것을 포함할 수 있다. 일부 경우들에서, 기계 학습 알고리즘의 초기화는 가중치들(예를 들어, )의 초기화; 훈련 데이터의 배치 크기(batch size) N; 학습률들 ; 및/또는 최적화기 단계들의 수 n를 포함할 수 있다.
블록(1004)에서, 프로세스(1000)는 기울기들을 제로아웃(zero out)하는 것을 포함할 수 있다. 일부 양태들에서, 기울기들을 제로 아웃하는 것은 으로 표현될 수 있다. 블록(1006)에서, 방법(1000)은 인스턴스(예를 들어, 입력 데이터)를 샘플링하는 것을 포함할 수 있다. 일부 경우들에서, 인스턴스를 샘플링하는 것은 하기와 같이 표현될 수 있다 : . 블록(1008)에서, 프로세스(1000)는 인스턴스 미세-튜닝을 수행하는 것을 포함할 수 있다. 일부 양태들에서, 인스턴스 미세-튜닝은 으로 표현될 수 있다. 블록(1010)에서, 프로세스(1000)는 k가 최적화기(optimizer) 단계들의 수 n 이하인지 여부를 결정할 수 있다. 만약 그렇다면, 프로세스(1000)는 인덱스 k에 대한 값을 증가시키고 블록(1008)으로 리턴하여 인스턴스 미세-튜닝을 반복할 수 있다. k가 n보다 크면, 프로세스는 블록(1012)으로 진행하여 하이퍼네트워크 기울기(hypernetwork gradient)들을 축적할 수 있다. 일부 예들에서, 하이퍼네트워크 기울기들을 축적하는 것은 으로 표현될 수 있다.
블록(1014)에서, 프로세스(1000)는 i가 N 배치 크기(batch size) 이하인지 여부를 결정할 수 있다. 만약 그렇다면, 프로세스(1000)는 인덱스 i에 대한 값을 증가시키고, 블록(1006)으로 리턴하여 블록들(1006 내지 1012)의 동작들을 반복할 수 있다. i가 N보다 크면, 프로세스는 블록(1016)으로 진행하여 하이퍼네트워크 업데이트를 수행할 수 있다. 일부 양태들에서, 하이퍼네트워크 업데이트를 수행하는 것은 으로 표현될 수 있다. 블록(1018)에서, 프로세스(1000)는 (예를 들어, 에러 범위 또는 손실 함수에 기초하여) 모델이 수렴되었는지 여부를 결정할 수 있다. 모델이 수렴되지 않으면, 프로세스(1000) 는 블록(1004) (예를 들어, 기울기 제로 아웃)로 리턴하고 블록들(1004 내지 1016)의 동작들을 반복할 수 있다. 모델이 수렴되면, 프로세스(1000)는 프로세스(1000)가 종료될 수 있는 블록(1020)으로 진행할 수 있다.
다시 도 7을 참조하면, 일부 예들에서, 네트워크 훈련(704)은 네트워크 파라미터들의 서브공간 을 결정하는데 사용될 수 있는 주성분 분석(PCA) 알고리즘을 포함할 수 있다. 예를 들어, PCA는 모델 파라미터들이 (예를 들어, 손실 함수에 기초하여) 네트워크 훈련(704) 동안 성능이 좋은 전체 파라미터 공간에서 하나 이상의 방향 및/또는 궤적을 결정하는 데 사용될 수 있다. 일부 예들에서, PCA는 파라미터 공간의 차원을 주성분(principal component)들로 감소시키는 데 사용될 수 있다. 일부 양태들에서, PCA는 k 단계들에 대한 압축 모델을 훈련하고 각각의 단계 이후에 네트워크 파라미터들의 값을 저장함으로써 서브공간 M을 결정하는 데 사용될 수 있다. 일부 예들에서, 대응하는 네트워크 파라미터들은 A로 지칭될 수 있는 매트릭스로 배열될 수 있다. 일부 경우들에서, 특이값 분해(singular value decomposition)가 매트릭스 A에 적용될 수 있다. 일부 양태들에서, 제1 m 고유 벡터(eigenvectro)들은 특이값 분해에 따라 획득될 수 있고 (예를 들어, 감소하는 고유값에 의해 소팅(sort)되고), 매트릭스 으로 배열될 수 있다. 일부 예들에서, 매트릭스는 (예를 들어, 수식 (1)에서 사용되는 바와 같이) 매트릭스 M에 해당할 수 있다. 일부 경우들에서, 매트릭스 성분 는 매트릭스 A의 j번째 고유벡터의 i번째 성분에 대응할 수 있다.
일부 양태들에서, 희소 PCA는 (예를 들어, 희소성 제약을 입력 변수들에 적용함으로써) 네트워크 파라미터들의 서브공간 M의 크기를 감소시키는 데 사용될 수 있다. 하나의 예시적인 예에서, 희소 PCA는 서브공간 매트릭스 M를 결정하기 위해 위에서 언급된 바와 같이 PCA를 먼저 적용함으로써 구현될 수 있다. 일부 양태들에서, 희소 PCA는 가장 큰 절대 값을 갖는 p 성분들을 유지하고 모든 다른 성분들을 0의 값으로 설정함으로써 M의 크기를 감소시키는 것을 포함할 수 있다. 일부 경우에, p는 이도록 선택될 수 있다. 일부 예들에서, 희소 PCA는 0이 아닌 엔트리들을 갖는 크기인 매트릭스를 결정하는 데 사용될 수 있다. 일부 양태들에서, 희소 PCA를 사용하여 결정된 0이 아닌 엔트리들만을 저장함으로써, M에 대한 메모리 요건이 실질적으로 감소될 수 있다.
도 8은 1차원 서브공간(806)의 예를 예시하는 그래프(800)이다. 예시된 바와 같이, 그래프(800)는 다수의 훈련 파라미터 포인트들(804)을 포함한다. 일부 양태들에서, 훈련 파라미터 포인트들(804) 중 각각의 개별 훈련 파라미터 포인트는 네트워크 훈련(704) 동안 사용되거나 방문된 가중치 벡터(예를 들어, 네트워크 파라미터들의 세트)에 해당할 수 있다. 그래프(800)는 또한 완전히 훈련된 신경망 압축 시스템(700)에 대한 전역 모델 파라미터들의 세트에 해당될 수 있는 최적의 파라미터 포인트(802)를 포함한다.
위에서 언급된 바와 같이, 일부 예들에서, PCA는 서브공간(806)을 결정하기 위해 훈련 파라미터 포인트들(804)을 프로세싱하는 데 사용될 수 있다. 예를 들어, 전역 모델의 네트워크 훈련(704) 동안, PCA는 (예를 들어, 훈련 반복들에 대응하는 가중치 벡터들에 기초하여) 최적화기 궤적의 리딩 주성분(leading principal component)들을 찾는 데 사용될 수 있다. 일 예에서, PCA가 실행되는 데이터 세트는 훈련 과정 동안 모델이 어떻게 전개되는지를 살펴봄으로써 구성된다. 예를 들어, 모든 훈련 반복 후에, 모델의 파라미터들의 스냅샷(snapshot)이 결정될 수 있다. 일단 특정 수의 파라미터 스냅샷들(예를 들어, 1000개의 파라미터 세트들, 2000개의 파라미터 세트들 등)이 존재하면, PCA가 훈련 동안 가장 중요한 방향들(리딩 주성분들에 대응함)을 결정하기 위해 실행될 수 있는 해당 수의 데이터포인트들이 존재한다. 일부 양태들에서, 최적화기 궤적의 리딩 주성분들은 서브공간(806)을 정의하는 데 사용될 수 있다. 일부 경우들에서, 서브공간(806)은 최적의 파라미터 포인트(802)로부터의 방향들을 파라미터화하는 매트릭스 (예를 들어, 서브공간 매트릭스 )에 대응할 수 있다. 서브공간(806)은 신경망이 업데이트될 수 있는 값들을 제한하는 데 사용될 수 있다(예를 들어, 신경망의 파라미터들은 서브공간에 포함된 값들로만 업데이트될 수 있다). 신경망의 파라미터 업데이트들을 서브공간 (806)으로 제한함으로써, 레이트는 왜곡에 대한 영향을 최소화하면서 크게 감소될 것이고 (예를 들어, 아래에서 설명되는 바와 같이 서브공간 좌표들의 세트를 발송함으로써, 서브공간을 따라서의 변화들만이 수신기에 송신될 필요가 있기 때문에), 따라서 시스템의 전체 코딩 성능을 개선한다.
일부 경우들에서, 서브공간(806)은 네트워크 훈련(704) 동안 및/또는 네트워크 훈련(704) 후에 정의될 수 있다. 예를 들어, 전역 모델의 매니폴드 인식(manifold-aware) 훈련은 신경망 압축 시스템(700)의 훈련 동안 서브공간(806)를 정의하도록 구현될 수 있다.
서브공간(806)이 1차원 서브공간로 예시되어 있지만, 당업자는 본 기술이 임의의 수의 치수를 갖는 서브공간을 정의하는 데 사용될 수 있다는 것을 인식할 것이다. 하나의 예시적인 예에서, 신경망 압축 시스템(700)은 수백만 개의 가중치들을 포함하는 파라미터 공간과 연관될 수 있고, 서브공간(806)은 수천 개의 차원(dimension)들을 가질 수 있다.
다시 도 7을 참조하면, 신경망 압축 시스템(700)은 인코더(710)를 포함할 수 있다. 일부 예들에서, 인코더(710)는 입력 데이터(708)를 수신, 프로세싱, 압축 및/또는 인코딩하도록 구성될 수 있다. 일부 경우에, 입력 데이터(708)는 이미지 데이터, 비디오 데이터, 및/또는 오디오 데이터를 포함할 수 있다. 일부 양태들에서, 인코더(710)는 서브공간으로부터 파라미터들의 수정된 세트를 선택하고 사용함으로써 입력 데이터(708)에 기초하여 전역 모델 파라미터들을 미세-튜닝할 수 있다.
일부 경우들에서, 전역 모델 파라미터들을 미세-튜닝하는 것은 입력 데이터의 압축된 버전의 비트 크기(예를 들어, 레이트 비용) 및/또는 입력 데이터와 입력 데이터의 압축된 버전으로부터 생성된 재구성된 데이터 사이의 왜곡에 기초할 수 있다. 하나의 예시적인 예에서, 인코더(710)는 네트워크 훈련(704) 동안 정의된 네트워크 파라미터들의 서브공간 또는 매니폴드의 일부인 파라미터들의 세트들을 사용하여 입력 데이터(708)를 반복적으로 인코딩할 수 있다. 일부 양태들에서, 인코더(710)는 손실 함수를 최적화하는 (예를 들어, 네트워크 파라미터들의 서브공간으로부터) 파라미터들의 수정된 세트를 선택할 수 있다.
일부 예들에서, 인코더(710)는 전역 모델 파라미터들과 수정된 파라미터 세트 사이의 차이에 대응하는 모델 업데이트를 결정할 수 있다. 일부 양태들에서, 모델 업데이트는 전역 모델 파라미터들 중 하나 이상에서의 시프트를 나타낼 수 있는 벡터, 좌표들의 세트, 매트릭스, 공식, 및/또는 임의의 다른 적절한 표현에 대응할 수 있다.
도 9는 서브공간(902) 내의 모델 업데이트(906)를 도시하는 그래프(900)이다. 일부 경우들에서, 서브공간(902)은 네트워크 훈련(704) 동안 및/또는 네트워크 훈련(704) 후에 정의된 서브공간(806)에 대응한다. 일부 양태들에서, 인코더(710)는 전역 모델 파라미터들(904)의 세트를 사용하여 동작하도록 구성될 수 있다. 일부 예들에서, 인코더(710)는 입력 데이터(708)(이는 인코딩되는 특정 인스턴스임)에 기초하여 전역 모델 파라미터들의 세트를 미세-튜닝할 수 있다. 일부 양태들에서, 전역 모델 파라미터들의 세트의 미세-튜닝은 서브공간(902) 내로부터 파라미터들의 수정된 세트(908)를 선택하는 것을 포함할 수 있다. 일부 경우에, 서브공간(902) 내로부터의 수정된 파라미터 세트(908)는 손실 함수에 기초하여 선택될 수 있다. 하나의 예시적인 예에서, 손실 함수는 출력되는 모든 정보를 송신하는 데 걸리는 비트레이트 및 정보의 품질을 나타내는 왜곡의 조합을 포함할 수 있다. 일부 양태들에서, 손실 함수는 아래의 수식(2)에 의해 주어진 관계로 표현될 수 있으며, 여기서 제1 항은 원래 데이터 x와 재구성된 데이터 사이의 평균 제곱 에러로서 측정된 왜곡에 해당하고; 제2 항은 하이퍼파라미터 β에 의해 가중된, 레이턴트 코드(latent code) z를 송신하는데 필요한 레이트에 해당하고; 마지막 항은 동일한 인자 β에 의해 가중된, 모델 업데이트 벡터 δ를 송신하는데 필요한 레이트에 해당한다.
일부 양태들에서, 인코더(710)는 전역 모델 파라미터들(904)과 파라미터들의 수정된 세트(908) 사이의 차이를 결정함으로써 모델 업데이트(906)를 결정할 수 있다. 일부 경우들에서, 모델 업데이트(906)는 서브공간 좌표들의 세트를 포함할 수 있다. 예를 들어, 서브공간 좌표의 세트는 서브공간(902)과 모델 업데이트(906) 사이의 델타(delta)를 나타낼 수 있다. 디코더(714)는 수정된 파라미터들의 세트(908)를 결정하기 위해 서브공간 좌표들의 세트를 사용할 수 있다. 예를 들어, 디코더가 이미 서브공간(902)의 정의를 갖고 있기 때문에, 디코더는 서브공간(902)(예를 들어, 서브공간을 정의하는 매트릭스)을 참조하기 위해 서브공간 좌표들의 세트를 사용할 수 있고, 입력 데이터(708)에 대응하는 데이터 인스턴스를 디코딩하기 위해 사용할 새로운 파라미터들(예를 들어, 가중치들, 바이어스들 등)을 결정할 수 있다. 일부 예들에서, 모델 업데이트(906)(예를 들어, 서브공간 좌표들의 세트)는 파라미터들(908)의 수정된 세트를 결정하기 위해 디코더(714)에 의해 사용될 수 있는 서브공간(902)를 정의하는 값들의 매트릭스에 대응하거나 이를 나타낼 수 있다. 하나의 예시적인 예에서, 수정된 파라미터들의 세트(908)는 다음과 같이 결정될 수 있다: 업데이트된 파라미터 포인트 (예를 들어, 908) = (전역 파라미터 포인트 (예를 들어, 904) + 서브공간 매트릭스 (예를 들어, 902)) * 서브공간 업데이트 (예를 들어, 906).
하나의 예시적인 예에서, 3차원 파라미터 공간은 매트릭스 M에 의해 표현될 수 있고, 서브-공간 좌표들은 다음과 같이 δ에 의해 표현될 수 있다:
일부 예들에서, 매트릭스 M의 열(column)들은 서브공간 방향들을 나타낼 수 있다(예를 들어, 제1 열은 제1 및 제2 네트워크 파라미터들 사이를 대각선으로 가리킬 수 있다). 일부 양태들에서, 제1 성분 δ가 0이 아닌 업데이트는 제1 및 제2 신경망 파라미터들의 값을 수정할 수 있다. 일부 경우들에서, 제2 열은 제2 및 제3 네트워크 파라미터들에 대한 변경들을 표현하는 데 사용될 수 있다. 일부 경우들에서, 위에서 예시된 모델 업데이트 δ 는 제1 네트워크 파라미터에 대해 +0.5, 제2 네트워크 파라미터에 대해 0, 및 제3 네트워크 파라미터에 대해 -0.5의 변화에 대응할 수 있다.
다시 도 7을 참조하면, 일부 경우들에서, 인코더(710)는 최적화된 네트워크를 사용하여(예를 들어, 네트워크 파라미터들의 서브공간으로부터의 파라미터들의 수정된 세트를 사용하여) 입력 데이터(708)를 레이턴트 변수(latent variable)들로 인코딩할 수 있다. 일부 예들에서, 신경망 압축 시스템(700)은 또한 레이턴트 변수들을 손실 없이 압축할 수 있는 확률론적 모델(예를 들어, 레이턴트 프라이어(latent prior)(606))를 포함할 수 있다. 일부 경우에, 확률론적 모델은 입력 데이터(708)에 기초하여 인코딩된 데이터를 나타낼 수 있는 레이턴트 변수의 세트에 대한 확률 분포를 생성할 수 있다.
일부 양태들에서, 인코더(710)는 모델 업데이트(예를 들어, 위에서 설명된 서브공간 좌표들의 세트 및/또는 값들의 매트릭스과 같은 모델 업데이트(906))를 (예를 들어, 모델 프라이어 하에서) 레이턴트 변수들로 인코딩할 수 있다. 일부 예들에서, 신경망 압축 시스템(700)은 압축된 모델 업데이트 및/또는 압축된 레이턴트 변수들을 엔트로피 코딩하고 하나 이상의 비트스트림(예를 들어, 비트스트림(712))을 생성할 수 있는 산술 인코더(예를 들어, 산술 인코더(608))를 포함할 수 있다.
일부 양태들에서, 비트스트림(712)은 디코더(714)로 발송 또는 송신될 수 있다. 일부 예들에서, 디코더(714)는 비트스트림(712)을 수신할 수 있고 레이턴트 변수들 및/또는 모델 업데이트 (예를 들어, 서브공간 좌표들의 세트, 값들의 매트릭스 등)를 획득하기 위해 비트스트림(712)을 압축 해제할 수 있다. 일부 경우들에서, 디코더(714)는 모델 업데이트 및 서브공간 정의에 기초하여 (예를 들어, 디코더(714)에 의해 결정된, 인코더(710)로부터 수신된, 공유된 지식(706)으로부터) 파라미터들의 수정된 세트를 결정할 수 있다. 예를 들어, 디코더(714)는 모델 업데이트를 전역 모델 파라미터들에 적용함으로써 수정된 파라미터 세트를 결정할 수 있다. 도 9를 참조하면, 디코더(714)는 모델 업데이트(906)를 전역 모델 파라미터들(904)에 적용함으로써 수정된 파라미터들의 세트(908)를 결정할 수 있다. 예를 들어, 디코더(714)는 전역 모델 파라미터들(904)에 대한 업데이트된 파라미터들: 업데이트된 파라미터 포인트(예를 들어, 908) = (전역 파라미터 포인트(예를 들어, 904) + 서브공간 매트릭스(예를 들어, 902)) * 서브공간 업데이트(예를 들어, 906)를 결정할 수 있다.
일부 예들에서, 디코더(714)는 입력 데이터(708)에 대응하는 레이턴트 변수들을 디코딩하기 위해 수정된 파라미터 세트(예를 들어, 파라미터 서브공간으로부터의 업데이트된 가중치들)를 사용할 수 있다. 일부 양태들에서, 디코더(714)는 수정된 파라미터 세트를 사용하여 재구성 이미지(716)(재구성 )를 생성할 수 있다.
도 11은 인스턴스 적응적(instance-adaptive) 신경 압축을 수행하기 위한 예시적인 프로세스(1100)를 예시하는 다이어그램이다. 블록(1102)에서, 프로세스(1100)는 전역 모델 파라미터(global model parameter)들을 결정하기 위해 신경망을 훈련하는 것을 포함할 수 있다. 예를 들어, 신경망 압축 시스템(700)은 공유된 지식(706)의 일부로서 포함될 수 있는 전역 모델 파라미터들(예를 들어, 네트워크 가중치들)을 결정하기 위해 훈련 데이터(702)를 사용하여 훈련될 수 있다.
블록(1104)에서, 프로세스(1100)는 신경망 파라미터들의 서브공간을 정의하는 것을 포함할 수 있다. 일부 양태들에서, 서브공간은 훈련 단계 동안 구현된 가중치 벡터들에 기초할 수 있다. 예를 들어, 훈련 파라미터 포인트들(804)은 서브공간(806)을 정의하는 데 사용될 수 있다. 일부 경우들에서, 주성분 분석(PCA) 및/또는 희소 PCA가 서브공간을 결정하기 위해 사용될 수 있다. 예를 들어, PCA는 모델 파라미터들이 신경망의 훈련 동안 성능이 좋은 전체 파라미터 공간에서 하나 이상의 방향들 및/또는 궤적들을 결정하는 데 사용될 수 있다.
블록(1106)에서, 프로세스(1100)는 신경망 압축 시스템에 의한 압축을 위한 입력 데이터를 수신하는 것을 포함할 수 있다. 예를 들어, 입력 데이터(708)(예를 들어, 이미지 데이터, 비디오 데이터, 오디오 데이터)는 디코더(714)에 의해 수신될 수 있다. 블록(1108)에서, 프로세스(1100)는 서브공간 내의 신경망 파라미터들을 미세-튜닝하기 위해 입력 데이터를 사용하는 것을 포함할 수 있다. 일부 양태들에서, 인코더(710)는 수정된 파라미터들의 세트(예를 들어, 미세-튜닝된 파라미터들)를 결정하기 위해 서브공간 내의 하나 이상의 가중치 벡터들을 사용할 수 있다. 일부 예들에서, 파라미터들의 수정된 세트는 손실 함수 (예를 들어, 레이트 및/또는 왜곡)에 의해 측정된 인코더의 성능에 기초하여 선택될 수 있다.
블록(1110)에서, 프로세스(1100)는 미세-튜닝된 신경망을 사용하여(예를 들어, 서브공간 내로부터의 수정된 파라미터 세트를 사용하여) 입력 데이터를 압축하는 것을 포함할 수 있다. 블록(1112)에서, 프로세스(1100)는 전역 파라미터 포인트 및 미세-튜닝된 파라미터들에 기초하여 파라미터 업데이트를 결정하는 것을 포함할 수 있다. 도 9를 참조하여, 파라미터 업데이트(906)는 전역 파라미터들(904)로부터 서브공간(902) 내의 미세-튜닝된 파라미터들(908)로의 시프트(shift)에 기초하여 결정될 수 있다.
블록(1114)에서, 프로세스(1100)는 압축된 입력 데이터 및 파라미터 업데이트를 수신기로 발송하는 것을 포함할 수 있다. 예를 들어, 인코더(710)는 압축된 레이턴트 변수들 및 압축된 서브공간 좌표들을 디코더(714)로 발송할 수 있다. 일부 예들에서, 산술 인코더(예를 들어, 산술 인코더(608))는 압축된 서브공간 좌표들 및/또는 압축된 레이턴트 변수들을 엔트로피 코딩하고 하나 이상의 비트스트림(예를 들어, 비트스트림(712))을 생성할 수 있다.
도 12는 인스턴스 적응적 신경 압축 해제를 수행하기 위한 예시적인 프로세스(1200)를 예시하는 다이어그램이다. 블록(1202)에서, 프로세스(1200)는 압축된 입력 데이터 및 신경망 파라미터 업데이트를 수신하는 것을 포함할 수 있다. 예를 들어, 디코더(714)는 압축된 레이턴트 변수 및 압축된 서브공간 좌표를 포함할 수 있는 비트스트림(712)을 수신할 수 있다.
블록(1204)에서, 프로세스(1200)는 서브공간에서의 파라미터 업데이트에 기초하여 업데이트된 신경망 파라미터들을 결정하는 것을 포함할 수 있다. 일부 양태들에서, 디코더(714)는 파라미터 업데이트(예를 들어, 서브공간 좌표들)를 전역 모델 파라미터들에 적용함으로써, 업데이트된 신경망 파라미터들(예를 들어, 입력 데이터를 인코딩하는 데 사용되는 미세-튜닝된 파라미터들)을 결정할 수 있다. 예를 들어, 네트워크 업데이트(906)는 서브공간(902) 내에서 전역 모델 파라미터들(904)을 시프트함으로써 업데이트된 신경망 파라미터들(908)을 결정하는 데 사용될 수 있다.
블록(1206)에서, 프로세스(1200)는 업데이트된 네트워크 파라미터들을 사용하여 입력 데이터를 압축 해제하는 것을 포함할 수 있다. 예를 들어, 업데이트된 신경망 파라미터들(908)은 입력 데이터(708)에 대응하는 압축된 레이턴트 변수들을 압축 해제하는 데 사용될 수 있다. 일부 양태들에서, 디코더(714)는 재구성 이미지(716)를 생성하기 위해 업데이트된 네트워크 파라미터들을 사용할 수 있다.
도 13은 인스턴스 적응적 신경 압축을 수행하기 위한 예시적인 프로세스(1300)를 예시하는 다이어그램이다. 블록(1302)에서, 프로세스(1300)는 신경망 압축 시스템에 의한 압축을 위한 입력 데이터를 수신하는 것을 포함할 수 있다. 일부 양태들에서, 신경망 압축 시스템은 신경망 압축 시스템(600) 및/또는 신경망 압축 시스템(700)에 해당할 수 있다. 일부 경우에, 입력 데이터는 이미지 데이터, 비디오 데이터 및/또는 오디오 데이터(예를 들어, 입력 데이터(708))를 포함할 수 있다.
블록(1304)에서, 프로세스(1300)는 입력 데이터에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하는 것을 포함할 수 있으며, 업데이트된 모델 파라미터들의 세트는 모델 파라미터들의 서브공간으로부터 선택된다. 일부 예들에서, 모델 파라미터들의 서브공간은 복수의 가중치 벡터들의 일부를 포함한다. 예를 들어, 모델 파라미터들(806)의 서브공간은 훈련 파라미터 포인트들(804)의 일부(예를 들어, 가중치 벡터들)를 포함할 수 있다. 일부 양태들에서, 복수의 가중치 벡터들 각각은 신경망 압축 시스템의 훈련 동안 사용되는 가중치 벡터에 대응할 수 있다. 예를 들어, 훈련 파라미터 포인트들(804) 각각은 네트워크 훈련(704) 동안 사용되거나 방문된(visited) 가중치 벡터(예를 들어, 훈련 파라미터들의 세트)에 대응할 수 있다.
일부 경우들에서, 복수의 가중치 벡터들의 부분은 주성분 분석(PCA), 희소 주성분 분석(SPCA), 및 모델-애그노스틱(model-agnostic) 메타-학습(MAML) 중 적어도 하나를 사용하여 결정될 수 있다. 예를 들어, PCA는 서브공간(806)을 결정하기 위해 훈련 파라미터 포인트들(804)을 프로세싱하는데 사용될 수 있다. 일부 경우들에서, SPCA는 가장 큰 절대값을 갖는 성분들을 유지하고 (예를 들어, 서브공간 매트릭스 M에서) 모든 다른 성분들을 0으로 설정함으로써 서브공간(806)의 크기를 감소시키기 위해 사용될 수 있다. 일부 양태들에서, 복수의 가중치 벡터들의 부분은 프로세스(1000)의 동작들에 따라 MAML 알고리즘을 사용하여 결정될 수 있다.
일부 예들에서, 프로세스(1300)는 신경망 압축 시스템을 훈련하는 데 사용되는 훈련 데이터세트에 기초하여 전역 모델 파라미터들의 세트를 생성하는 것을 포함할 수 있으며, 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들은 전역 모델 파라미터들의 세트에 상대적이다. 일부 경우에, 훈련 데이터세트는 훈련 데이터(702)에 대응할 수 있다. 일부 경우들에서, 훈련 데이터(702)는 네트워크 훈련(704)을 수행하고 최적의 파라미터 포인트(802)(예를 들어, 전역 모델 파라미터들의 세트)를 결정하는 데 사용될 수 있다. 일부 예들에서, 업데이트된 파라미터 포인트(908)는 전역 파라미터 포인트(904)에 상대적이다(예를 들어, 서브공간 매트릭스(902) 및 서브공간 업데이트(906)에 기초하여).
일부 예들에서, 프로세스(1300)는 입력 데이터를 사용하여 전역 모델 파라미터들의 세트를 튜닝하는 것을 포함할 수 있으며, 전역 모델 파라미터들의 세트는 입력 데이터의 압축된 버전의 비트 크기 및 입력 데이터와 입력 데이터의 압축된 버전으로부터 생성된 재구성된 데이터 사이의 왜곡에 기초하여 튜닝된다. 일부 양태들에서, 전역 모델 파라미터들의 세트는 입력(708)에 기초하여 튜닝될 수 있는 전역 파라미터 포인트(904)에 대응할 수 있다. 예를 들어, 인코더(710)는 서브공간(예를 들어, 서브공간(902))의 일부인 파라미터들의 세트들을 사용하여 입력 데이터(708)를 반복적으로 인코딩할 수 있다. 일부 예들에서, 전역 파라미터들의 세트(904)를 튜닝하는 것은 손실 함수(예를 들어, 수식 (2)의 손실 함수)에 기초하여 파라미터들의 수정된 세트(908)를 선택하는 것을 포함할 수 있다.
블록(1306)에서, 프로세스(1300)는 입력 데이터의 압축된 버전 및 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들의 압축된 버전을 포함하는 적어도 하나의 비트스트림을 생성하는 것을 포함할 수 있다. 예를 들어, 산술 인코더(예를 들어, 산술 인코더(608))는 압축된 모델 업데이트(예를 들어, 서브공간 업데이트(906)) 및 압축된 레이턴트 변수들을 비트스트림(712)으로 엔트로피 코딩(entropy-code)하는데 사용될 수 있다. 일부 경우들에서, 적어도 하나의 비트스트림은 하나 이상의 서브공간 좌표들을 양자화하기 위해 사용되는 복수의 인코딩된 양자화 파라미터들을 포함할 수 있다. 예를 들어, 비트스트림(712)은 서브공간 업데이트(906)를 양자화하기 위해 사용되는 양자화 파라미터들을 포함할 수 있다. 일부 양태들에서, 적어도 하나의 비트스트림을 생성하는 것은 모델 프라이어(model prior)를 사용하여 하나 이상의 서브공간 좌표들을 엔트로피 인코딩하는 것을 포함할 수 있다. 예를 들어, 모델 프라이어(616)는 하나 이상의 서브공간 좌표(예를 들어, 서브공간 업데이트(906))를 엔트로피 코딩하기 위해 산술 인코더(608)에 의해 사용될 수 있다.
블록(1308)에서, 프로세스(1300)는 수신기로의 송신을 위해 적어도 하나의 비트스트림을 출력하는 것을 포함할 수 있다. 예를 들어, 비트스트림(712)은 디코더(714)로의 송신을 위해 출력될 수 있다. 일부 예들에서, 프로세스(1300)는 모델 파라미터들의 서브공간을 수신기에 발송하는 것을 포함할 수 있다. 예를 들어, 서브공간(808)은 비트스트림(712)의 일부로서 인코딩되어 디코더(714)로 전송될 수 있다.
도 14는 인스턴스 적응적 신경 압축 해제를 수행하기 위한 예시적인 프로세스(1400)를 예시하는 다이어그램이다. 블록(1402)에서, 프로세스(1400)는 입력 데이터의 압축된 버전 및 하나 이상의 서브공간 좌표의 압축된 버전을 수신하는 것을 포함할 수 있다. 예를 들어, 디코더(714)는 입력(708)의 압축된 버전 및 모델 업데이트(906)의 압축된 버전을 포함할 수 있는 비트스트림(712)을 수신할 수 있다.
블록(1404)에서, 프로세스(1400)는 하나 이상의 서브공간 좌표들에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하는 것을 포함할 수 있다. 예를 들어, 업데이트된 모델 파라미터들의 세트는 업데이트된 서브공간(906)에 기초하여 결정되는 업데이트된 파라미터 포인트(908)에 대응할 수 있다. 일부 양태들에서, 업데이트된 모델 파라미터들의 세트를 결정하는 것은, 모델 파라미터들의 서브공간 및 하나 이상의 서브공간 좌표들에 기초하여, 전역 모델 파라미터들의 세트로부터의 시프트(shift)를 결정하는 것을 포함할 수 있다. 일부 예들에서, 업데이트된 모델 파라미터들의 세트는 전역 파라미터 포인트(904) + (서브공간 매트릭스(902) * 서브공간 업데이트(906))와 동등할 수 있는 업데이트된 파라미터 포인트(908)에 대응할 수 있다.
일부 양태들에서, 모델 파라미터들의 서브공간은 복수의 가중치 벡터들의 일부를 포함할 수 있으며, 복수의 가중치 벡터들 각각은 신경망 압축 시스템의 훈련 동안 사용되는 가중치 벡터에 대응한다. 예를 들어, 서브공간(806)은 신경망 압축 시스템(700)의 훈련 동안 사용되는 훈련 파라미터 포인트들에 대응할 수 있는 훈련 파라미터 포인트들(804)의 일부를 포함할 수 있다.
블록(1406)에서, 프로세스(1400)는 입력 데이터의 재구성된 버전을 산출하기 위해 업데이트된 모델 파라미터들의 세트를 사용하여 입력 데이터를 프로세싱하는 것을 포함할 수 있다. 예를 들어, (예를 들어, 비트스트림(712)에서 압축된) 입력 데이터(708)는 재구성된 이미지(716)를 산출하기 위해 업데이트된 파라미터 포인트(908)를 사용하여 프로세싱될 수 있다.
일부 예들에서, 프로세스(1400)는 모델 파라미터들의 서브공간을 수신하는 것을 포함할 수 있다. 예를 들어, 서브공간(902)는 비트스트림(712)의 일부로서 인코딩되어 디코더(714)로 발송될 수 있다.
일부 예들에서, 본원에 설명된 프로세스들(예를 들어, 프로세스(1000), 프로세스(1100), 프로세스(1200), 프로세스(1300), 프로세스(1400) 및/또는 본원에 설명된 다른 프로세스)은 컴퓨팅 디바이스 또는 장치에 의해 수행될 수 있다. 일 예에서, 프로세스(1300 및/또는 1400)는 도 4에 예시된 시스템(400)의 송신 디바이스(410)에 의해 수행될 수 있다. 다른 예에서, 프로세스(1300 및/또는 1400)는 도 4에 도시된 시스템(400) 또는 도 15에 도시된 컴퓨팅 시스템(1500)에 따른 컴퓨팅 디바이스에 의해 수행될 수 있다.
컴퓨팅 디바이스는 모바일 디바이스(예를 들어, 모바일 폰), 데스크탑 컴퓨팅 디바이스, 태블릿 컴퓨팅 디바이스, 웨어러블 디바이스(예를 들어, VR 헤드셋, AR 헤드셋, AR 안경, 네트워크 연결 시계 또는 스마트워치, 또는 다른 웨어러블 디바이스), 서버 컴퓨터, 자율 주행 차량 또는 자율 주행 차량의 컴퓨팅 디바이스, 로봇 디바이스, 텔레비전, 및/또는 본원에 설명된 프로세스(1100), 프로세스(1200), 및/또는 다른 프로세스를 포함하는, 본원에 설명된 프로세스들을 수행하기 위한 자원 능력들을 갖는 임의의 다른 컴퓨팅 디바이스와 같은 임의의 적절한 디바이스를 포함할 수 있다. 일부 경우들에서, 컴퓨팅 디바이스 또는 장치는 본원에 설명된 프로세스들의 단계들을 수행하도록 구성되는 하나 이상의 입력 디바이스들, 하나 이상의 출력 디바이스들, 하나 이상의 프로세서들, 하나 이상의 마이크로프로세서들, 하나 이상의 마이크로컴퓨터들, 하나 이상의 카메라들, 하나 이상의 센서들, 및/또는 다른 컴포넌트(들)와 같은 다양한 컴포넌트들을 포함할 수 있다. 일부 예들에서, 컴퓨팅 디바이스는 디스플레이, 데이터를 통신 및/또는 수신하도록 구성된 네트워크 인터페이스, 이들의 임의의 조합, 및/또는 다른 컴포넌트(들)를 포함할 수 있다. 네트워크 인터페이스는 인터넷 프로토콜(IP) 기반 데이터 또는 다른 유형의 데이터를 통신 및/또는 수신하도록 구성될 수 있다.
컴퓨팅 디바이스의 컴포넌트들은 회로부에 구현될 수 있다. 예를 들어, 컴포넌트들은 본원에 설명된 다양한 동작들을 수행하기 위해, 하나 이상의 프로그래밍가능 전자 회로들(예를 들어, 마이크로프로세서들, 그래픽 프로세싱 유닛들(GPU들), 디지털 신호 프로세서들(DSP들), 중앙 프로세싱 유닛들(CPU들), 및/또는 다른 적합한 전자 회로들)을 포함할 수 있는 전자 회로들 또는 다른 전자 하드웨어를 포함할 수 있고 및/또는 이를 사용하여 구현될 수 있고, 및/또는 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함하고 및/또는 이를 사용하여 구현될 수 있다.
프로세스들(1300 및 1400)은 논리적 흐름도들로서 예시되며, 이의 동작은 하드웨어, 컴퓨터 명령들, 또는 이들의 조합으로 구현될 수 있는 동작들의 시퀀스를 나타낸다. 컴퓨터 명령들의 맥락에서, 동작들은, 하나 이상의 프로세서에 의해 실행될 때, 인용된 동작들을 수행하는 하나 이상의 컴퓨터 판독가능 저장 매체 상에 저장된 컴퓨터 실행가능 명령들을 나타낸다. 일반적으로, 컴퓨터 실행가능 명령들은 특정 기능들을 수행하거나 특정 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한으로서 해석되도록 의도되지 않으며, 임의의 수의 설명된 동작들이 프로세스들을 구현하기 위해 임의의 순서로 및/또는 병렬로 조합될 수 있다.
추가적으로, 본원에 설명된 프로세스들(1300, 1400), 및/또는 다른 프로세스는 실행가능 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에서 수행될 수 있고, 하나 이상의 프로세서들 상에서, 하드웨어에 의해, 또는 이들의 조합들로 집합적으로 실행되는 코드 (예를 들어, 실행가능 명령들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 애플리케이션들)로서 구현될 수 있다. 상기에서 언급된 바와 같이, 코드는, 예를 들어, 하나 이상의 프로세서들에 의해 실행가능한 복수의 명령들을 포함하는 컴퓨터 프로그램의 형태로, 컴퓨터 판독가능 또는 기계 판독가능 저장 매체 상에 저장될 수 있다. 컴퓨터 판독가능 또는 기계 판독가능 저장 매체는 비일시적일 수 있다.
도 15는 본 기술의 특정 양태들을 구현하기 위한 시스템의 예를 예시하는 다이어그램이다. 특히, 도 15는 예를 들어, 내부 컴퓨팅 시스템, 원격 컴퓨팅 시스템, 카메라, 또는 이들의 임의의 컴포넌트를 구성하는 임의의 컴퓨팅 디바이스일 수 있는 컴퓨팅 시스템(1500)의 예를 예시하고 여기서 시스템의 컴포넌트들은 연결부(1505)를 사용하여 서로 통신한다. 연결부(1505)는 버스를 사용하는 물리적 연결부, 또는 칩셋 아키텍처에서와 같이 프로세서(1510)로의 직접 연결부일 수 있다. 연결부(1505)는 또한 가상 연결부, 네트워크화된 연결부, 또는 논리적 연결부일 수 있다.
일부 실시예들에서, 컴퓨팅 시스템(1500)은 본 개시에서 설명된 기능들이 데이터 센터, 다수의 데이터 센터들, 피어 네트워크 등 내에서 분산될 수 있는 분산 시스템이다. 일부 실시예들에서, 설명된 시스템 컴포넌트들 중 하나 이상은 컴포넌트가 설명되는 기능의 일부 또는 전부를 각각 수행하는 많은 그러한 컴포넌트들을 나타낸다. 일부 실시예들에서, 컴포넌트들은 물리적 또는 가상 디바이스들일 수 있다.
예시적인 시스템(1500)은 적어도 하나의 프로세싱 유닛(CPU 또는 프로세서)(1510) 및 판독 전용 메모리(ROM)(1520) 및 랜덤 액세스 메모리(RAM)(1525)와 같은 시스템 메모리(1515)를 포함하는 다양한 시스템 컴포넌트들을 프로세서(1510)에 결합하는 연결부(1505)를 포함한다. 컴퓨팅 시스템(1500)은 프로세서(1510)와 직접 연결되거나, 그에 근접하거나, 또는 그의 일부로서 통합된 고속 메모리의 캐시(1512)를 포함할 수 있다.
프로세서(1510)는 임의의 범용 프로세서 및 프로세서(1510)를 제어하도록 구성된 스토리지 디바이스(1530)에 저장된 서비스들(1532, 1534 및 1536)과 같은 하드웨어 서비스 또는 소프트웨어 서비스뿐만 아니라 소프트웨어 명령들이 실제 프로세서 설계에 통합되는 특수 목적 프로세서를 포함할 수 있다. 프로세서(1510)는 본질적으로 다수의 코어들 또는 프로세서들, 버스, 메모리 제어기, 캐시 등을 포함하는 완전히 자립적인 컴퓨팅 시스템일 수 있다. 멀티-코어 프로세서는 대칭 또는 비대칭일 수 있다.
사용자 상호작용을 가능하게 하기 위해, 컴퓨팅 시스템(1500)은 음성을 위한 마이크로폰, 제스처 또는 그래픽 입력을 위한 터치 감지 스크린, 키보드, 마우스, 모션 입력, 음성 등과 같은 임의의 수의 입력 메커니즘을 나타낼 수 있는 입력 디바이스(1545)를 포함한다. 컴퓨팅 시스템(1500)은 또한 다수의 출력 메커니즘들 중 하나 이상일 수 있는 출력 디바이스(1535)를 포함할 수 있다. 일부 경우들에서, 멀티모달(multimodal) 시스템들은 사용자가 컴퓨팅 시스템(1500)과 통신하기 위해 다수의 유형들의 입력/출력을 제공하는 것을 가능하게 할 수 있다. 컴퓨팅 시스템(1500)은 전반적으로 사용자 입력 및 시스템 출력을 통제하고 관리할 수 있는 통신 인터페이스(1540)를 포함할 수 있다.
통신 인터페이스는, 오디오 잭/플러그, 마이크로폰 잭/플러그, 범용 직렬 버스(USB) 포트/플러그, Apple® Lightning® 포트/플러그, 이더넷 포트/플러그, 광섬유 포트/플러그, 독점 유선 포트/플러그, BLUETOOTH® 무선 신호 전송, BLUETOOTH® 저 에너지(BLE) 무선 신호 전송, IBACON® 무선 신호 전송, 무선 주파수 식별(RFID) 무선 신호 전송, 근거리 통신(NFC) 무선 신호 전송, 전용 단거리 통신(DSRC) 무선 신호 전송, 802.11 Wi-Fi 무선 신호 전송, 무선 근거리 통신망(WLAN) 신호 전송, 가시광 통신(VLC), 마이크로파 액세스를 위한 전세계 상호 운용(WiMAX), 적외선(IR) 통신 무선 신호 전송, 공중 교환 전화망(PSTN) 신호 전송, 통합 서비스 디지털 네트워크(ISDN) 신호 전송, 3G/4G/5G/LTE 셀룰러 네트워크 무선 신호 전송, 애드-혹(ad-hoc) 신호 전송, 라디오파 신호 전송, 마이크로파 신호 전송, 적외선 신호 전송, 가시 광 신호 전송, 자외선 광 신호 전송, 전자기 스펙트럼을 따른 무선 신호 전송, 또는 이들의 일부 조합을 사용하는 것을 포함하는, 유선 및/또는 무선 트랜시버를 사용하여 수신 및/또는 송신 유선 또는 무선 통신을 수행하거나 용이하게 할 수 있다.
통신 인터페이스(1540)는 또한, 하나 이상의 GNSS(Global Navigation Satellite System) 시스템들과 연관된 하나 이상의 위성들로부터의 하나 이상의 신호들의 수신에 기초하여 컴퓨팅 시스템(1500)의 위치를 결정하는 데 사용되는 하나 이상의 GNSS 수신기들 또는 트랜시버들을 포함할 수 있다. GNSS 시스템은 미국 기반 GPS(Global Positioning System), 러시아 기반 GLONASS(Global Navigation Satellite System), 중국 기반 BDS(BeiDou Navigation Satellite System) 및 유럽 기반 Galileo GNSS를 포함하지만, 이에 한정되지 않는다. 임의의 특정 하드웨어 배열에 대해 동작하는 것에 제한이 없고, 따라서 본원의 기본 특징들은 이들이 개발됨에 따라 개선된 하드웨어 또는 펌웨어 배열들을 쉽게 대체할 수 있다.
스토리지 디바이스(1530)는 비휘발성 및/또는 비일시적 및/또는 컴퓨터 판독가능 메모리 디바이스일 수 있고, 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 하드 디스크 또는 다른 유형의 컴퓨터 판독가능 매체, 예컨대, 자기 카세트, 플래시 메모리 카드, 솔리드 스테이트 메모리 디바이스, 디지털 다기능 디스크, 카트리지, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 자기 스트립/스트라이프, 임의의 다른 자기 스토리지 매체, 플래시 메모리, 메모리 스토리지, 임의의 다른 솔리드 스테이트 메모리, 콤팩트 디스크 판독 전용 메모리(CD-ROM) 광학 디스크, 재기록가능 콤팩트 디스크(CD) 광학 디스크, 디지털 비디오 디스크(DVD) 광학 디스크, 블루-레이 디스크(BDD) 광학 디스크, 홀로그래픽 광학 디스크, 다른 광학 매체, 보안 디지털(SD) 카드, 마이크로 보안 디지털(microSD) 카드, 메모리 스틱® 카드, 스마트카드, EMV 칩, 가입자 식별 모듈(SIM) 카드, 미니/마이크로/나노/피코 SIM 카드, 다른 집적 회로(IC) 칩/카드, 랜덤 액세스 메모리(RAM), 정적 RAM(SRAM), 동적 DRAM(DRAM), 판독 전용 메모리(ROM), PROM(erasable programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 플래시 EPROM(flash EPROM), 캐시 메모리(L1/L2/L3/L4/L5/L#), 저항성 랜덤 액세스 메모리(RRAM/ReRAM), 상 변화 메모리(PCM), 스핀 전달 토크 RAM(STT-RAM), 다른 메모리 칩 또는 카트리지, 및/또는 이들의 조합일 수 있다.
스토리지 디바이스(1530)는 이러한 소프트웨어를 정의하는 코드가 프로세서(1510)에 의해 실행될 때 시스템으로 하여금 기능을 수행하게 하는 소프트웨어 서비스, 서버, 서비스 등을 포함할 수 있다. 일부 실시예들에서, 특정 기능을 수행하는 하드웨어 서비스는 기능을 수행하기 위해 프로세서(1510), 연결부(1505), 출력 디바이스(1535) 등과 같은 필요한 하드웨어 컴포넌트들과 관련하여 컴퓨터 판독가능 매체에 저장된 소프트웨어 컴포넌트를 포함할 수 있다. 용어 "컴퓨터 판독가능 매체"는 명령(들) 및/또는 데이터를 저장, 함유, 또는 운반할 수 있는 휴대용 또는 비-휴대용 스토리지 디바이스들, 광학 스토리지 디바이스들, 및 다양한 다른 매체들을 포함하지만, 이들에 제한되지 않는다. 컴퓨터 판독가능 매체는 데이터가 저장될 수 있고 무선으로 또는 유선 연결들을 통해 전파하는 반송파들 및/또는 일시적 전자 신호들을 포함하지 않는 비일시적 매체를 포함할 수 있다. 비일시적 매체의 예들은 자기 디스크 또는 테이프, CD(compact disk) 또는 DVD(digital versatile disk)와 같은 광학 저장 매체, 플래시 메모리, 메모리 또는 메모리 디바이스들을 포함할 수 있지만, 이에 제한되지 않는다. 컴퓨터 판독가능 매체는 프로시저, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 스테이트먼트들의 임의의 조합을 나타낼 수 있는 코드 및/또는 기계 실행가능 명령들을 저장할 수 있다. 코드 세그먼트는 정보, 데이터, 인수, 파라미터 또는 메모리 콘텐츠를 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 결합될 수 있다. 정보, 인수들, 파라미터들, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적절한 수단을 통해 전달, 포워딩, 또는 송신될 수 있다.
일부 실시예들에서, 컴퓨터 판독가능 저장 디바이스들, 매체들, 및 메모리들은 비트 스트림 등을 포함하는 케이블 또는 무선 신호를 포함할 수 있다. 그러나, 언급될 때, 비일시적 컴퓨터 판독가능 저장 매체는 에너지, 반송파 신호, 전자기파, 및 신호 그 자체와 같은 매체를 명시적으로 배제한다.
본 명세서에 제공된 실시예들 및 예들의 완전한 이해를 제공하기 위해 특정 세부사항들이 상기 설명에서 제공된다. 그러나, 실시예들은 이러한 특정 세부사항들 없이 실시될 수 있다는 것이 당업자에 의해 이해될 것이다. 설명의 명확성을 위해, 일부 경우들에서, 본 기술은 소프트웨어로 구현된 방법의 디바이스들, 디바이스 컴포넌트들, 단계들 또는 루틴들, 또는 하드웨어와 소프트웨어의 조합들을 포함하는 개별 기능 블록들을 포함하는 것으로서 제시될 수 있다. 도면들에 도시되고/되거나 본원에 설명된 것들 이외의 추가적인 컴포넌트들이 사용될 수 있다. 예를 들어, 회로들, 시스템들, 네트워크들, 프로세스들, 및 다른 컴포넌트들은 실시예들을 불필요한 세부사항으로 모호하게 하지 않기 위해 블록도 형태의 컴포넌트들로서 도시될 수 있다. 다른 경우들에서, 잘 알려진 회로들, 프로세스들, 알고리즘들, 구조들, 및 기술들은 실시예들을 모호하게 하는 것을 피하기 위해 불필요한 세부사항 없이 도시될 수 있다.
개별 실시예들은 흐름도, 흐름도, 흐름 다이어그램, 데이터 흐름도, 구조도, 또는 블록도로서 도시되는 프로세스 또는 방법으로서 상기에서 설명될 수 있다. 흐름도가 동작들을 순차적 프로세스로서 설명할 수 있지만, 동작들 중 다수는 병렬로 또는 동시에 수행될 수 있다. 또한, 동작들의 순서는 재배열될 수 있다. 프로세스는 작업이 완료되면 종료되지만 도면에 포함되지 않은 추가 단계가 있을 수 있다. 프로세스는 방법, 기능, 절차, 서브루틴, 서브프로그램 등에 대응할 수 있다. 프로세스가 함수에 대응할 때, 그 종료는 호출 함수 또는 메인 함수로의 함수의 복귀에 대응할 수 있다.
전술한 예들에 따른 프로세스들 및 방법들은 저장되거나 그렇지 않으면 컴퓨터 판독가능 매체로부터 이용가능한 컴퓨터 실행가능 명령들을 사용하여 구현될 수 있다. 이러한 명령들은, 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 프로세싱 디바이스로 하여금 특정 기능 또는 기능들의 그룹을 수행하게 하거나 다른 방식으로 구성하는 명령들 및 데이터를 포함할 수 있다. 사용되는 컴퓨터 자원의 일부는 네트워크를 통해 액세스 가능할 수 있다. 컴퓨터 실행가능 명령들은, 예를 들어, 바이너리들, 어셈블리 언어, 펌웨어, 소스 코드와 같은 중간 포맷 명령들일 수 있다. 설명된 예들에 따른 방법들 동안 생성된 명령들, 사용된 정보, 및/또는 정보를 저장하기 위해 사용될 수 있는 컴퓨터 판독가능 매체들의 예들은 자기 또는 광학 디스크들, 플래시 메모리, 비휘발성 메모리가 제공된 USB 디바이스들, 네트워크화된 저장 디바이스들 등을 포함한다.
이들 개시에 따른 프로세스들 및 방법들을 구현하는 디바이스들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어들, 또는 이들의 임의의 조합을 포함할 수 있고, 다양한 폼 팩터들 중 임의의 것을 취할 수 있다. 소프트웨어, 펌웨어, 미들웨어, 또는 마이크로코드에 구현될 때, 필요한 태스크들(예를 들어, 컴퓨터-프로그램 제품)을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들은 컴퓨터-판독가능 또는 기계-판독가능 매체에 저장될 수 있다. 프로세서(들)는 필요한 태스크들을 수행할 수 있다. 폼 팩터들의 전형적인 예들은 랩톱들, 스마트 폰들, 모바일 폰들, 태블릿 디바이스들 또는 다른 소형 폼 팩터 개인용 컴퓨터들, 개인용 디지털 보조기들, 랙마운트(rackmount) 디바이스들, 독립형 디바이스들 등을 포함한다. 본원에 설명된 기능은 또한 주변기기 또는 추가 카드(add-in card)에 구현될 수 있다. 이러한 기능은 또한 추가의 예로서, 단일 디바이스에서 실행되는 상이한 칩들 또는 상이한 프로세스들 사이의 회로 보드 상에 구현될 수 있다.
명령들, 이러한 명령들을 전달하기 위한 매체들, 이들을 실행하기 위한 컴퓨팅 자원들, 및 이러한 컴퓨팅 자원들을 지원하기 위한 다른 구조들은 본 개시에서 설명된 기능들을 제공하기 위한 예시적인 수단이다.
전술한 설명에서, 본 출원의 양태는 그의 특정 실시예를 참조하여 설명되었으나, 당업자는 본 출원이 이에 제한되지 않는다는 것을 인식할 것이다. 따라서, 본 출원의 예시적인 실시예들이 본원에서 상세히 설명되었지만, 본 발명의 개념들은 달리 다양하게 구현되고 채용될 수 있고, 첨부된 청구항들은 종래 기술에 의해 제한되는 것을 제외하고는 이러한 변형들을 포함하는 것으로 해석되도록 의도되는 것으로 이해되어야 한다. 위에서 설명한 애플리케이션의 다양한 특징과 양태는 개별적으로 또는 공동으로 사용될 수 있다. 또한, 실시예들은 본 명세서의 더 넓은 범위를 벗어나지 않고 본원에 설명된 것들을 넘어서는 임의의 수의 환경들 및 애플리케이션들에서 이용될 수 있다. 따라서, 명세서 및 도면은 제한적이기보다는 예시적인 것으로 간주되어야 한다. 예시의 목적을 위해, 방법들은 특정 순서로 설명되었다. 대안적인 실시예들에서, 방법들은 설명된 것과 상이한 순서로 수행될 수 있다는 것이 이해되어야 한다.
당업자는 본 설명의 범위를 벗어나지 않고 본원에서 사용되는 미만("<") 및 초과(">") 심볼들 또는 용어는 각각 이하("≤") 및 이상("≥") 심볼들로 대체될 수 있음을 이해할 것이다.
컴포넌트들이 특정 동작들을 수행하도록 "구성되는" 것으로 설명되는 경우, 이러한 구성은 예를 들어, 동작을 수행하기 위해 전자 회로들 또는 다른 하드웨어를 설계함으로써, 동작을 수행하기 위해 프로그래밍 가능한 전자 회로들(예를 들어, 마이크로프로세서들, 또는 다른 적합한 전자 회로들)을 프로그래밍함으로써, 또는 이들의 임의의 조합에 의해 달성될 수 있다.
어구 "결합된"은 직접 또는 간접적으로 다른 컴포넌트에 물리적으로 연결되는 임의의 컴포넌트, 및/또는 직접 또는 간접적으로 다른 컴포넌트와 통신하는 (예를 들어, 유선 또는 무선 연결, 및/또는 다른 적절한 통신 인터페이스를 통해 다른 컴포넌트에 연결되는) 임의의 컴포넌트를 지칭한다.
청구항 언어 또는 세트의 "중 적어도 하나" 및/또는 세트의 "하나 이상"을 인용하는 다른 언어는 세트의 하나의 멤버 또는 세트의 다수의 멤버들(임의의 조합으로)이 청구항을 만족시킨다는 것을 나타낸다. 예를 들어, 청구항 언어에서 "A 및 B 중 적어도 하나" 또는 "A 또는 B 중 적어도 하나"를 인용하는 것은 A, B, 또는 A 및 B를 의미한다.다른 예에서, "A, B 및 C 중 적어도 하나" 또는 "A, B 또는 C 중 적어도 하나"를 인용하는 청구항은 A, B, C 또는 A와 B, 또는 A와 C, 또는 B와 C, 또는 A와 B와 C를 의미한다. 세트의 언어 "중 적어도 하나" 및/또는 세트의 "하나 이상"은 세트를 세트에 나열된 항목들로 제한하지 않는다. 예를 들어, "A 및 B 중 적어도 하나" 또는 "A 또는 B 중 적어도 하나"를 인용하는 청구항 언어는 A, B, 또는 A 및 B를 의미할 수 있고, A 및 B의 세트에 열거되지 않은 항목들을 추가로 포함할 수 있다.
본원에 개시된 예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 조합들로서 구현될 수 있다. 하드웨어와 소프트웨어의 이러한 상호교환성을 명확하게 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 일반적으로 그들의 기능의 관점에서 위에서 설명되었다. 이러한 기능이 하드웨어로 구현되는지 또는 소프트웨어로 구현되는지는 특정 애플리케이션 및 전체 시스템에 부과된 설계 제약들에 의존한다. 당업자는 각각의 특정 애플리케이션에 대해 다양한 방식으로 설명된 기능을 구현할 수 있지만, 이러한 구현 결정은 본 출원의 범위를 벗어나는 것으로 해석되어서는 안 된다.
본원에 설명된 기술들은 또한 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 이러한 기술들은 범용 컴퓨터들, 무선 통신 디바이스 핸드셋들, 또는 무선 통신 디바이스 핸드셋들 및 다른 디바이스들에서의 애플리케이션을 포함하는 다수의 용도들을 갖는 집적 회로 디바이스들과 같은 다양한 디바이스들 중 임의의 디바이스에서 구현될 수 있다. 모듈들 또는 컴포넌트들로서 설명된 임의의 특징들은 집적 로직 디바이스에서 함께 또는 개별적이지만 상호운용 가능한 로직 디바이스들로서 개별적으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기술들은, 실행될 때, 위에서 설명된 방법들, 알고리즘들, 및/또는 동작들 중 하나 이상을 수행하는 명령들을 포함하는 프로그램 코드를 포함하는 컴퓨터 판독가능 데이터 저장 매체에 의해 적어도 부분적으로 실현될 수 있다. 컴퓨터 판독가능 데이터 저장 매체는 패키징 재료들을 포함할 수 있는 컴퓨터 프로그램 제품의 일부를 형성할 수 있다. 컴퓨터 판독 가능 매체는 메모리 또는 데이터 저장 매체, 예컨대, 동기식 동적 랜덤 액세스 메모리(SDRAM)와 같은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 비휘발성 랜덤 액세스 메모리(NVRAM), 전기적으로 소거 가능한 프로그래밍 가능 판독 전용 메모리(EEPROM), 플래시 메모리, 자기 또는 광학 데이터 저장 매체 등을 포함할 수 있다. 부가적으로 또는 대안적으로, 기술들은, 명령들 또는 데이터 구조들의 형태로 프로그램 코드를 반송 또는 통신하고, 전파된 신호들 또는 파(wave)들과 같은, 컴퓨터에 의해 액세스, 판독, 및/또는 실행될 수 있는 컴퓨터 판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수 있다.
프로그램 코드는 프로세서에 의해 실행될 수 있으며, 이는 하나 이상의 프로세서, 예컨대 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로프로세서, 주문형 집적 회로(ASIC), 필드 프로그램가능 로직 어레이(FPGA), 또는 다른 등가의 집적 또는 이산 로직 회로부를 포함할 수 있다. 이러한 프로세서는 본 개시에 설명된 기술들 중 임의의 기술을 수행하도록 구성될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 기계일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다. 따라서, 본원에서 사용되는 용어 "프로세서"는 전술한 구조 중 임의의 것, 전술한 구조의 임의의 조합, 또는 본원에 설명된 기술들의 구현에 적합한 임의의 다른 구조 또는 장치를 지칭할 수 있다.
본 개시의 예시적인 예들은 다음을 포함한다:
양태 1: 적어도 하나의 메모리 및 상기 적어도 하나의 메모리에 결합된 적어도 하나의 프로세서를 포함하는 장치. 적어도 하나의 프로세서는: 신경망 압축 시스템에 의한 압축을 위해 입력 데이터를 수신하고; 입력 데이터에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하는 것으로서, 업데이트된 모델 파라미터들의 세트는 모델 파라미터들의 서브공간으로부터 선택되는, 상기 업데이트된 모델 파라미터들의 세트를 결정하고; 입력 데이터의 압축된 버전 및 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들의 압축된 버전을 포함하는 적어도 하나의 비트스트림을 생성하고; 및 수신기로의 송신을 위해 적어도 하나의 비트스트림을 출력하도록 구성된다.
양태 2: 양태 1에 있어서, 모델 파라미터들의 서브공간은 복수의 가중치 벡터들의 일부를 포함하는, 장치.
양태 3: 양태 2에 있어서, 복수의 가중치 벡터들 각각은 신경망 압축 시스템의 훈련 동안 사용되는 가중치 벡터에 대응하는, 장치.
양태 4: 양태 2 내지 양태 3 중 어느 하나에 있어서, 복수의 가중치 벡터들 중 일부는 PCA(principal component analysis), SPCA(sparse principal component analysis), 및 MAML(model-agnostic meta-learning) 중 적어도 하나를 이용하여 결정되는, 장치.
양태 5: 양태 1 내지 양태 4 중 어느 하나에 있어서, 적어도 하나의 프로세서는, 신경망 압축 시스템을 훈련하기 위해 사용되는 훈련 데이터세트에 기초하여 전역 모델 파라미터(global model parameter)들의 세트를 생성하도록 추가로 구성되고, 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들은 전역 모델 파라미터들의 세트에 상대적인, 장치.
양태 6: 양태 5에 있어서, 모델 파라미터들의 서브공간으로부터 업데이트된 모델 파라미터들의 세트를 결정하기 위해, 적어도 하나의 프로세서는, 입력 데이터를 사용하여 전역 모델 파라미터들의 세트를 튜닝하도록 추가로 구성되고, 전역 모델 파라미터들의 세트는 입력 데이터의 압축된 버전의 비트 크기, 및 입력 데이터와 입력 데이터의 압축된 버전으로부터 생성된 재구성된 데이터 사이의 왜곡에 기초하여 튜닝되는, 장치.
양태 7: 양태 1 내지 양태 6 중 어느 하나에 있어서, 적어도 하나의 프로세서는, 하나 이상의 양자화된 서브공간 좌표들을 산출하기 위해 하나 이상의 서브공간 좌표들을 양자화하도록 추가로 구성되고, 적어도 하나의 비트스트림은 하나 이상의 양자화된 서브공간 좌표들의 압축된 버전을 포함하는, 장치.
양태 8: 양태 7에 있어서, 적어도 하나의 비트스트림은 하나 이상의 서브공간 좌표들을 양자화하기 위해 사용되는 복수의 인코딩된 양자화 파라미터들을 포함하는, 장치.
양태 9: 양태 1 내지 양태 8 중 어느 하나에 있어서서, 적어도 하나의 비트스트림을 생성하기 위해, 적어도 하나의 프로세서는, 모델 프라이어(model prior)을 사용하여 하나 이상의 서브공간 좌표들을 엔트로피 인코딩(entropy encode)하도록 추가로 구성된, 장치.
양태 10: 양태 1 내지 양태 9 중 어느 하나에 있어서, 적어도 하나의 프로세서는 모델 파라미터들의 서브공간을 수신기에 발송하도록 추가로 구성된, 장치.
양태 11: 양태 1 내지 10의 동작들 중 임의의 것을 수행하는 방법.
양태 12: 명령들이 실행될 때, 하나 이상의 프로세서로 하여금 양태 1 내지 10의 동작들 중 임의의 것을 수행하게 하는 명령들을 저장하는 컴퓨터 판독가능 저장 매체.
양태 13: 양태 1 내지 10의 동작들 중 임의의 것을 수행하기 위한 수단을 포함하는 장치.
양태 14: 적어도 하나의 메모리 및 상기 적어도 하나의 메모리에 결합된 적어도 하나의 프로세서를 포함하는 장치. 적어도 하나의 프로세서는, 입력 데이터의 압축된 버전 및 하나 이상의 서브공간 좌표들의 압축된 버전을 수신하고; 하나 이상의 서브공간 좌표들에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하고; 및 입력 데이터의 재구성된 버전을 산출하기 위해 업데이트된 모델 파라미터들의 세트를 사용하여 입력 데이터를 프로세싱하도록 구성된다.
양태 15: 양태 14에 있어서, 업데이트된 모델 파라미터들의 세트를 결정하기 위해, 적어도 하나의 프로세서는, 모델 파라미터들의 서브공간 및 하나 이상의 서브공간 좌표들에 기초하여, 전역 모델 파라미터들의 세트로부터의 시프트를 결정하도록 추가로 구성되는, 장치.
양태 16: 양태 15에 있어서, 모델 파라미터들의 서브공간은 복수의 가중치 벡터들 중 일부를 포함하고, 복수의 가중치 벡터들 각각은 신경망 압축 시스템의 훈련 동안 사용되는 가중치 벡터에 대응하는, 장치.
양태 17: 양태 16에 있어서, 복수의 가중치 벡터들의 부분은 주성분 분석(PCA)을 사용하여 결정되는, 장치.
양태 18: 양태 15 내지 17 중 어느 하나에 있어서, 적어도 하나의 프로세서는 모델 파라미터들의 서브공간을 수신하도록 추가로 구성되는, 장치.
양태 19: 양태 14 내지 18의 동작들 중 임의의 것을 수행하는 방법.
양태 20: 명령들이 실행될 때, 하나 이상의 프로세서로 하여금 양태 14 내지 18의 동작들 중 임의의 것을 수행하게 하는 명령들을 저장하는 컴퓨터 판독가능 저장 매체.
양태 21: 양태 14 내지 18의 동작들 중 임의의 것을 수행하기 위한 수단을 포함하는 장치.

Claims (30)

  1. 이미지 데이터를 프로세싱하는 방법에 있어서,
    신경망 압축 시스템에 의한 압축을 위해 입력 데이터를 수신하는 단계;
    상기 입력 데이터에 기초하여, 상기 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하는 단계로서, 상기 업데이트된 모델 파라미터들의 세트는 모델 파라미터들의 서브공간으로부터 선택되는, 상기 업데이트된 모델 파라미터들의 세트를 결정하는 단계;
    상기 입력 데이터의 압축된 버전 및 상기 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들의 압축된 버전을 포함하는 적어도 하나의 비트스트림을 생성하는 단계; 및
    수신기로의 송신을 위해 상기 적어도 하나의 비트스트림을 출력하는 단계를 포함하는, 이미지 데이터를 프로세싱하는 방법.
  2. 제1항에 있어서, 상기 모델 파라미터들의 서브공간은 복수의 가중치 벡터들 중 일부를 포함하는, 이미지 데이터를 프로세싱하는 방법.
  3. 제2항에 있어서, 상기 복수의 가중치 벡터들 각각은 상기 신경망 압축 시스템의 학습 동안 사용되는 가중치 벡터에 대응하는, 이미지 데이터를 프로세싱하는 방법.
  4. 제2항에 있어서, 상기 복수의 가중치 벡터들 중 일부는 PCA(Principal Component Analysis), SPCA(Sparse Principal Component Analysis), 및 MAML(Model-Agnostic Meta-Learning) 중 적어도 하나를 이용하여 결정되는, 이미지 데이터를 프로세싱하는 방법.
  5. 제1항에 있어서,
    상기 신경망 압축 시스템을 훈련하는 데 사용되는 훈련 데이터세트에 기초하여 전역 모델 파라미터들의 세트를 생성하는 단계를 더 포함하고, 상기 업데이트된 모델 파라미터들의 세트에 대응하는 상기 하나 이상의 서브공간 좌표들은 상기 전역 모델 파라미터들의 세트에 상대적인, 이미지 데이터를 프로세싱하는 방법.
  6. 제5항에 있어서, 상기 모델 파라미터들의 서브공간으로부터 상기 업데이트된 모델 파라미터들의 세트를 결정하는 단계는,
    상기 입력 데이터를 사용하여 상기 전역 모델 파라미터들의 세트를 튜닝하는 단계를 포함하고, 상기 전역 모델 파라미터들의 세트는 상기 입력 데이터의 압축된 버전의 비트 크기 및 상기 입력 데이터와 상기 입력 데이터의 압축된 버전으로부터 생성된 재구성된 데이터 사이의 왜곡(distortion)에 기초하여 튜닝되는, 이미지 데이터를 프로세싱하는 방법.
  7. 제1항에 있어서,
    하나 이상의 양자화된 서브공간 좌표들을 산출하기 위해 상기 하나 이상의 서브공간 좌표들을 양자화하는 단계를 더 포함하고, 상기 적어도 하나의 비트스트림은 상기 하나 이상의 양자화된 서브공간 좌표들의 압축된 버전을 포함하는, 이미지 데이터를 프로세싱하는 방법.
  8. 제7항에 있어서, 상기 적어도 하나의 비트스트림은 상기 하나 이상의 서브공간 좌표들을 양자화하기 위해 사용되는 복수의 인코딩된 양자화 파라미터들을 포함하는, 이미지 데이터를 프로세싱하는 방법.
  9. 제1항에 있어서, 상기 적어도 하나의 비트스트림을 생성하는 단계는,
    모델 프라이어를 사용하여 상기 하나 이상의 서브공간 좌표들을 엔트로피 인코딩하는 것을 포함하는, 이미지 데이터를 프로세싱하는 방법.
  10. 제1항에 있어서,
    상기 모델 파라미터들의 서브공간을 상기 수신기로 발송하는 단계를 더 포함하는, 이미지 데이터를 프로세싱하는 방법.
  11. 장치로서,
    적어도 하나의 메모리; 및
    상기 적어도 하나의 메모리에 결합된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는,
    신경망 압축 시스템에 의한 압축을 위해 입력 데이터를 수신하고;
    상기 입력 데이터에 기초하여, 상기 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하는 것으로서, 상기 업데이트된 모델 파라미터들의 세트는 모델 파라미터들의 서브공간으로부터 선택되는, 상기 업데이트된 모델 파라미터들의 세트를 결정하고;
    상기 입력 데이터의 압축된 버전 및 상기 업데이트된 모델 파라미터들의 세트에 대응하는 하나 이상의 서브공간 좌표들의 압축된 버전을 포함하는 적어도 하나의 비트스트림을 생성하고;
    수신기로의 송신을 위해 상기 적어도 하나의 비트스트림을 출력하도록 구성된, 장치.
  12. 제11항에 있어서, 상기 모델 파라미터들의 서브공간은 복수의 가중치 벡터들 중 일부를 포함하는, 장치.
  13. 제12항에 있어서, 상기 복수의 가중치 벡터들 각각은 상기 신경망 압축 시스템의 훈련 동안 사용되는 가중치 벡터에 대응하는, 장치.
  14. 제12항에 있어서, 상기 복수의 가중치 벡터들 중 일부는 PCA(principal component analysis), SPCA(sparse principal component analysis), 및 MAML(model-agnostic meta-learning) 중 적어도 하나를 이용하여 결정되는, 장치.
  15. 제11항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 신경망 압축 시스템을 훈련하는 데 사용되는 훈련 데이터세트에 기초하여 전역 모델 파라미터들의 세트를 생성하도록 추가로 구성되고, 상기 업데이트된 모델 파라미터들의 세트에 대응하는 상기 하나 이상의 서브공간 좌표들은 상기 전역 모델 파라미터들의 세트에 상대적인, 장치.
  16. 제15항에 있어서, 상기 모델 파라미터들의 서브공간으로부터 상기 업데이트된 모델 파라미터들의 세트를 결정하기 위해, 상기 적어도 하나의 프로세서는,
    상기 입력 데이터를 사용하여 상기 전역 모델 파라미터들의 세트를 튜닝하도록 추가로 구성되고, 상기 전역 모델 파라미터들의 세트는 상기 입력 데이터의 압축된 버전의 비트 크기, 및 상기 입력 데이터와 상기 입력 데이터의 압축된 버전으로부터 생성된 재구성된 데이터 사이의 왜곡에 기초하여 튜닝되는, 장치.
  17. 제11항에 있어서, 상기 적어도 하나의 프로세서는,
    하나 이상의 양자화된 서브공간 좌표들을 산출하기 위해 상기 하나 이상의 서브공간 좌표들을 양자화하도록 추가로 구성되고, 상기 적어도 하나의 비트스트림은 상기 하나 이상의 양자화된 서브공간 좌표들의 압축된 버전을 포함하는, 장치.
  18. 제17항에 있어서, 상기 적어도 하나의 비트스트림은 상기 하나 이상의 서브공간 좌표들을 양자화하기 위해 사용되는 복수의 인코딩된 양자화 파라미터들을 포함하는, 장치.
  19. 제11항에 있어서, 상기 적어도 하나의 비트스트림을 생성하기 위해, 상기 적어도 하나의 프로세서는,
    모델 프라이어를 사용하여 상기 하나 이상의 서브공간 좌표들을 엔트로피 인코딩하도록 추가로 구성된, 장치.
  20. 제11항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 모델 파라미터들의 서브공간을 상기 수신기로 발송하도록 추가로 구성된, 장치.
  21. 이미지 데이터를 프로세싱하는 방법에 있어서,
    입력 데이터의 압축된 버전 및 하나 이상의 서브공간 좌표들의 압축된 버전을 수신하는 단계;
    상기 하나 이상의 서브공간 좌표들에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하는 단계; 및
    상기 입력 데이터의 재구성된 버전을 산출하기 위해 상기 업데이트된 모델 파라미터들의 세트를 사용하여 상기 입력 데이터를 프로세싱하는 단계를 포함하는, 이미지 데이터를 프로세싱하는 방법.
  22. 제21항에 있어서, 상기 업데이트된 모델 파라미터들의 세트를 결정하는 단계는,
    모델 파라미터들의 서브공간 및 상기 하나 이상의 서브공간 좌표들에 기초하여, 전역 모델 파라미터들의 세트로부터의 시프트를 결정하는 단계를 포함하는, 이미지 데이터를 프로세싱하는 방법.
  23. 제22항에 있어서, 상기 모델 파라미터들의 서브공간은 복수의 가중치 벡터들 중 일부를 포함하고, 상기 복수의 가중치 벡터들 각각은 상기 신경망 압축 시스템의 훈련 동안 사용되는 가중치 벡터에 대응하는, 이미지 데이터를 프로세싱하는 방법.
  24. 제23항에 있어서, 상기 복수의 가중치 벡터의 일부는 주성분 분석(PCA)을 사용하여 결정되는, 이미지 데이터를 프로세싱하는 방법.
  25. 제22항에 있어서,
    상기 모델 파라미터들의 서브공간을 수신하는 단계를 더 포함하는, 이미지 데이터를 프로세싱하는 방법.
  26. 장치로서,
    적어도 하나의 메모리; 및
    상기 적어도 하나의 메모리에 결합된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는,
    입력 데이터의 압축된 버전 및 하나 이상의 서브공간 좌표들의 압축된 버전을 수신하고;
    상기 하나 이상의 서브공간 좌표들에 기초하여, 신경망 압축 시스템에 대한 업데이트된 모델 파라미터들의 세트를 결정하고; 및
    상기 입력 데이터의 재구성된 버전을 산출하기 위해 상기 업데이트된 모델 파라미터들의 세트를 사용하여 상기 입력 데이터를 프로세싱하도록 구성된, 장치.
  27. 제26항에 있어서, 상기 업데이트된 모델 파라미터들의 세트를 결정하기 위해, 상기 적어도 하나의 프로세서는,
    모델 파라미터들의 서브공간 및 상기 하나 이상의 서브공간 좌표들에 기초하여, 전역 모델 파라미터들의 세트로부터의 시프트를 결정하도록 추가로 구성된, 장치.
  28. 제27항에 있어서, 상기 모델 파라미터들의 서브공간은 복수의 가중치 벡터들 중 일부를 포함하고, 상기 복수의 가중치 벡터들 각각은 상기 신경망 압축 시스템의 훈련 동안 사용되는 가중치 벡터에 대응하는, 장치.
  29. 제28항에 있어서, 상기 복수의 가중치 벡터들의 일부는 주성분 분석(PCA)을 사용하여 결정되는, 장치.
  30. 제27항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 모델 파라미터들의 서브공간을 수신하도록 추가로 구성된, 장치.
KR1020247005499A 2021-08-25 2022-08-02 기계 학습 시스템들을 사용하여 네트워크 파라미터 서브공간에서의 인스턴스 적응적 이미지 및 비디오 압축 KR20240054975A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/411,936 2021-08-25
US17/411,936 US20230074979A1 (en) 2021-08-25 2021-08-25 Instance-adaptive image and video compression in a network parameter subspace using machine learning systems
PCT/US2022/074440 WO2023028411A1 (en) 2021-08-25 2022-08-02 Instance-adaptive image and video compression in a network parameter subspace using machine learning systems

Publications (1)

Publication Number Publication Date
KR20240054975A true KR20240054975A (ko) 2024-04-26

Family

ID=83151964

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247005499A KR20240054975A (ko) 2021-08-25 2022-08-02 기계 학습 시스템들을 사용하여 네트워크 파라미터 서브공간에서의 인스턴스 적응적 이미지 및 비디오 압축

Country Status (6)

Country Link
US (1) US20230074979A1 (ko)
EP (1) EP4393155A1 (ko)
KR (1) KR20240054975A (ko)
CN (1) CN117882376A (ko)
TW (1) TW202312031A (ko)
WO (1) WO2023028411A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3965102A1 (en) * 2020-08-23 2022-03-09 Tata Consultancy Services Limited Method and system for generating 2d animated lip images synchronizing to an audio signal
US11915457B2 (en) * 2021-01-19 2024-02-27 Tencent America LLC Method and apparatus for adaptive neural image compression with rate control by meta-learning
US20220335655A1 (en) * 2021-04-19 2022-10-20 Tencent America LLC Substitutional input optimization for adaptive neural image compression with smooth quality control
GB202115399D0 (en) * 2021-10-26 2021-12-08 Deep Render Ltd DR big book 6
US11842521B1 (en) * 2023-05-31 2023-12-12 Illuscio, Inc. Systems and methods for compressing three-dimensional image data

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11556796B2 (en) * 2019-03-25 2023-01-17 Nokia Technologies Oy Compressing weight updates for decoder-side neural networks

Also Published As

Publication number Publication date
US20230074979A1 (en) 2023-03-09
WO2023028411A1 (en) 2023-03-02
CN117882376A (zh) 2024-04-12
TW202312031A (zh) 2023-03-16
EP4393155A1 (en) 2024-07-03

Similar Documents

Publication Publication Date Title
US11924445B2 (en) Instance-adaptive image and video compression using machine learning systems
US11991368B2 (en) Video compression using deep generative models
US20220385907A1 (en) Implicit image and video compression using machine learning systems
US11729406B2 (en) Video compression using deep generative models
US11405626B2 (en) Video compression using recurrent-based machine learning systems
US20230074979A1 (en) Instance-adaptive image and video compression in a network parameter subspace using machine learning systems
CN116746147B (zh) 用于并行熵译码中的比特流索引的压缩
CN117980916A (zh) 用于媒体的变换译码的基于变换器的架构
US20240121398A1 (en) Diffusion-based data compression
US20240214578A1 (en) Regularizing neural networks with data quantization using exponential family priors
CN117716687A (zh) 使用机器学习系统的隐式图像和视频压缩
KR20230150274A (ko) 비디오 코딩을 위한 기계 학습 기반 플로우 결정