KR20240012374A - 기계 학습 시스템들을 사용한 암시적 이미지 및 비디오 압축 - Google Patents

기계 학습 시스템들을 사용한 암시적 이미지 및 비디오 압축 Download PDF

Info

Publication number
KR20240012374A
KR20240012374A KR1020237039057A KR20237039057A KR20240012374A KR 20240012374 A KR20240012374 A KR 20240012374A KR 1020237039057 A KR1020237039057 A KR 1020237039057A KR 20237039057 A KR20237039057 A KR 20237039057A KR 20240012374 A KR20240012374 A KR 20240012374A
Authority
KR
South Korea
Prior art keywords
model
image
neural network
weight values
bitstream
Prior art date
Application number
KR1020237039057A
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 KR20240012374A publication Critical patent/KR20240012374A/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/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
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • 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/103Selection of coding mode or of prediction mode
    • 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/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
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • 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
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]

Landscapes

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

Abstract

기계 학습 시스템들을 사용하여 데이터를 압축 및 압축해제하기 위한 기법들이 설명된다. 예시적인 프로세스는 신경망 압축 시스템에 의한 압축을 위해 복수의 이미지들을 수신하는 것을 포함할 수 있다. 프로세스는 복수의 이미지들로부터의 제1 이미지에 기초하여, 신경망 압축 시스템의 제1 모델과 연관된 제1 복수의 가중 값들을 결정하는 것을 포함할 수 있다. 프로세스는 제1 복수의 가중 값들의 압축된 버전을 포함하는 제1 비트스트림을 생성하는 것을 포함할 수 있다. 프로세스는 수신기로의 송신을 위해 제1 비트스트림을 출력하는 것을 포함할 수 있다.

Description

기계 학습 시스템들을 사용한 암시적 이미지 및 비디오 압축
[0001] 본 개시내용은 일반적으로 데이터(data) 압축에 관한 것이다. 예를 들어, 본 개시내용의 양상들은 이미지(image) 및/또는 비디오 콘텐츠(video content)를 압축하기 위해 기계 학습 시스템(system)들을 사용하는 것을 포함한다.
[0002] 많은 디바이스(device)들 및 시스템들은 소비를 위해 미디어(media) 데이터(예컨대, 이미지 데이터, 비디오 데이터, 오디오(audio) 데이터 등)가 프로세싱(process) 및 출력될 수 있게 한다. 미디어 데이터는 이미지/비디오/오디오 품질, 성능 및 특징들에서 증가하는 요구들을 충족시키기 위해 대량의 데이터를 포함한다. 예를 들어, 비디오 데이터의 소비자들은 통상적으로, 고충실도, 해상도들, 프레임 레이트(frame rate)들 등을 갖는 고품질 비디오들을 원한다. 이러한 요구들을 충족시키기 위해 종종 필요한 많은 양의 비디오 데이터는 비디오 데이터를 프로세싱 및 저장하는 통신 네트워크(network)들 및 디바이스들에 상당한 부담을 준다. 비디오 데이터를 압축하기 위해 다양한 비디오 코딩(coding) 기법들이 사용될 수 있다. 비디오 코딩의 하나의 예시적인 목표는 비디오 품질의 열화들을 피하거나 최소화하면서 더 낮은 비트(bit) 레이트를 사용하는 형태로 비디오 데이터를 압축하는 것이다. 끊임없이 진화하는 비디오 서비스(service)들이 이용 가능하게 되고 대량의 비디오 데이터에 대한 요구들이 증가함에 따라, 더 양호한 성능 및 효율을 갖는 코딩 기법들이 필요하다.
[0003] 일부 예들에서, 하나 이상의 기계 학습 시스템들을 사용하는 데이터 압축 및/또는 압축해제를 위한 시스템들 및 기법들이 설명된다. 일부 예들에서, 미디어 데이터(예컨대, 비디오 데이터, 이미지 데이터, 오디오 데이터 등)를 압축 및/또는 압축해제하기 위한 (예컨대, 하나 이상의 신경망 시스템들을 사용하는) 기계 학습 시스템들이 제공된다. 적어도 하나의 예시적인 예에 따르면, 이미지 데이터를 프로세싱하는 방법이 제공된다. 이 방법은, 신경망 압축 시스템에 의한 압축을 위해 복수의 이미지들을 수신하는 단계; 복수의 이미지들로부터의 제1 이미지에 기초하여, 신경망 압축 시스템의 제1 모델(model)과 연관된 제1 복수의 가중 값들을 결정하는 단계; 제1 복수의 가중 값들의 압축된 버전(version)을 포함하는 제1 비트스트림(bitstream)을 생성하는 단계; 및 수신기로의 송신을 위해 제1 비트스트림을 출력하는 단계를 포함한다.
[0004] 다른 예에서, 적어도 하나의 메모리 및 적어도 하나의 메모리에 통신 가능하게 결합된 (예컨대, 회로에 구성된) 적어도 하나의 프로세서를 포함하는, 미디어 데이터를 프로세싱하기 위한 장치가 제공된다. 적어도 하나의 프로세서는, 신경망 압축 시스템에 의한 압축을 위해 복수의 이미지들을 수신하고; 복수의 이미지들로부터의 제1 이미지에 기초하여, 신경망 압축 시스템의 제1 모델과 연관된 제1 복수의 가중 값들을 결정하고; 제1 복수의 가중 값들의 압축된 버전을 포함하는 제1 비트스트림을 생성하고; 그리고 수신기로의 송신을 위해 제1 비트스트림을 출력하도록 구성될 수 있다.
[0005] 다른 예에서, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 신경망 압축 시스템에 의한 압축을 위해 복수의 이미지들을 수신하게 하고; 복수의 이미지들로부터의 제1 이미지에 기초하여, 신경망 압축 시스템의 제1 모델과 연관된 제1 복수의 가중 값들을 결정하게 하고; 제1 복수의 가중 값들의 압축된 버전을 포함하는 제1 비트스트림을 생성하게 하고; 그리고 수신기로의 송신을 위해 제1 비트스트림을 출력하게 하는 적어도 하나의 명령이 저장된 비-일시적 컴퓨터 판독 가능 매체(computer-readable medium)가 제공된다.
[0006] 다른 예에서, 이미지 데이터를 프로세싱하기 위한 장치가 제공된다. 이 장치는, 신경망 압축 시스템에 의한 압축을 위한 입력 데이터를 수신하기 위한 수단; 신경망 압축 시스템에 의한 압축을 위해 복수의 이미지들을 수신하기 위한 수단; 복수의 이미지들로부터의 제1 이미지에 기초하여, 신경망 압축 시스템의 제1 모델과 연관된 제1 복수의 가중 값들을 결정하기 위한 수단; 제1 복수의 가중 값들의 압축된 버전을 포함하는 제1 비트스트림을 생성하기 위한 수단; 및 수신기로의 송신을 위해 제1 비트스트림을 출력하기 위한 수단을 포함할 수 있다.
[0007] 다른 예에서, 미디어 데이터를 프로세싱하기 위한 방법이 제공된다. 이 방법은, 복수의 이미지들로부터 제1 이미지와 연관된 제1 복수의 신경망 가중 값들의 압축된 버전을 수신하는 단계; 제1 복수의 신경망 가중 값들을 압축해제하는 단계; 및 제1 신경망 모델을 사용하여, 제1 이미지를 산출하기 위해 제1 복수의 신경망 가중 값들을 프로세싱하는 단계를 포함할 수 있다.
[0008] 다른 예에서, 적어도 하나의 메모리 및 적어도 하나의 메모리에 통신 가능하게 결합된 (예컨대, 회로에 구성된) 적어도 하나의 프로세서를 포함하는, 이미지 데이터를 프로세싱하기 위한 장치가 제공된다. 적어도 하나의 프로세서는, 복수의 이미지들로부터 제1 이미지와 연관된 제1 복수의 신경망 가중 값들의 압축된 버전을 수신하고; 제1 복수의 신경망 가중 값들을 압축해제하고; 그리고 제1 신경망 모델을 사용하여, 제1 이미지를 산출하기 위해 제1 복수의 신경망 가중 값들을 프로세싱하도록 구성될 수 있다.
[0009] 다른 예에서, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 복수의 이미지들로부터 제1 이미지와 연관된 제1 복수의 신경망 가중 값들의 압축된 버전을 수신하게 하고; 제1 복수의 신경망 가중 값들을 압축해제하게 하고; 그리고 제1 신경망 모델을 사용하여, 제1 이미지를 산출하기 위해 제1 복수의 신경망 가중 값들을 프로세싱하게 하는 적어도 하나의 명령이 저장된 비-일시적 컴퓨터 판독 가능 매체가 제공된다.
[0010] 다른 예에서, 이미지 데이터를 프로세싱하기 위한 장치가 제공된다. 이 장치는, 복수의 이미지들로부터 제1 이미지와 연관된 제1 복수의 신경망 가중 값들의 압축된 버전을 수신하기 위한 수단; 제1 복수의 신경망 가중 값들을 압축해제하기 위한 수단; 및 제1 신경망 모델을 사용하여, 제1 이미지를 산출하기 위해 제1 복수의 신경망 가중 값들을 프로세싱하기 위한 수단을 포함할 수 있다.
[0011] 일부 양상들에서, 장치는 카메라(camera)(예컨대, IP 카메라), 모바일(mobile) 디바이스(예컨대, 휴대 전화 또는 소위 "스마트폰(smartphone)" 또는 다른 모바일 디바이스), 스마트 웨어러블(smart wearable) 디바이스, 확장 현실 디바이스(예컨대, VR(virtual reality) 디바이스, AR(augmented reality) 디바이스 또는 MR(mixed reality) 디바이스), 개인용 컴퓨터, 랩톱(laptop) 컴퓨터, 서버(server) 컴퓨터, 3D 스캐너(scanner), 다중 카메라 시스템 또는 다른 디바이스일 수 있거나 이들의 일부일 수 있다. 일부 양상들에서, 장치는 하나 이상의 이미지들을 캡처(capture)하기 위한 카메라 또는 다수의 카메라들을 포함한다. 일부 양상들에서, 장치는 하나 이상의 이미지들, 통지들 및/또는 다른 디스플레이 가능(displayable) 데이터를 디스플레이 하기 위한 디스플레이를 더 포함한다. 일부 양상들에서, 위에서 설명된 장치들은 하나 이상의 센서(sensor)들을 포함할 수 있다.
[0012] 이 발명의 내용은 청구 대상의 핵심적인 또는 본질적인 특징들을 확인하는 것으로 의도되는 것도, 청구 대상의 범위를 결정하기 위해 별개로 사용되는 것으로 의도되는 것도 아니다. 청구 대상은 본 특허의 전체 명세서의 적절한 부분들, 임의의 또는 모든 도면들, 및 각각의 청구항에 대한 참조에 의해 이해되어야 한다.
[0013] 전술한 내용은 다른 특징들 및 실시예들과 함께, 다음의 명세서, 청구항들 및 첨부 도면들을 참조할 때 보다 명백해질 것이다.
[0014] 본 출원의 예시적인 실시예들은 다음의 작성 도면들을 참조하여 아래에서 상세히 설명된다:
[0015] 도 1은 본 개시내용의 일부 예들에 따른 이미지 프로세싱 시스템의 일례를 예시하는 도면이다.
[0016] 도 2a는 본 개시내용의 일부 예들에 따른 완전히 연결된 신경망의 일례를 예시하는 도면이다.
[0017] 도 2b는 본 개시내용의 일부 예들에 따른, 국소적으로 연결된 신경망의 일례를 예시하는 도면이다.
[0018] 도 2c는 본 개시내용의 일부 예들에 따른, 컨볼루션(convolutional) 신경망의 일례를 예시하는 도면이다.
[0019] 도 2d는 본 개시내용의 일부 예들에 따라, 이미지로부터 시각적 특징들을 인식하기 위한 DCN(deep convolutional network)의 일례를 예시하는 도면이다.
[0020] 도 3은 본 개시내용의 일부 예들에 따른 예시적인 DCN(deep convolutional network)을 예시하는 블록도(block diagram)이다.
[0021] 도 4는 본 개시내용의 일부 예들에 따라, 비디오 콘텐츠를 압축하기 위한 송신 디바이스 및 수신된 비트스트림을 비디오 콘텐츠로 압축해제하기 위한 수신 디바이스를 포함하는 시스템의 일례를 예시하는 도면이다.
[0022] 도 5a 및 도 5b는 본 개시내용의 일부 예들에 따른 예시적인 레이트 왜곡 자동 인코더(autoencoder) 시스템들을 예시하는 도면들이다.
[0023] 도 6은 본 개시내용의 일부 예들에 따라, 모델 사전 분포(model prior)를 사용하여 미세 튜닝된 예시적인 신경망 압축 시스템에 의해 구현되는 예시적인 추론 프로세스(process)를 예시하는 도면이다.
[0024] 도 7a는 본 개시내용의 일부 예들에 따른, 암시적 신경 표현들에 기반한 예시적인 이미지 압축 코덱(codec)을 예시하는 도면이다.
[0025] 도 7b는 본 개시내용의 일부 예들에 따른, 암시적 신경 표현들에 기반한 다른 예시적인 이미지 압축 코덱을 예시하는 도면이다.
[0026] 도 8a는 본 개시내용의 일부 예들에 따른, 암시적 신경 표현들을 사용하는 픽처(picture)들의 그룹(group)에 대한 압축 파이프라인(pipeline)의 일례를 예시하는 도면이다.
[0027] 도 8b는 본 개시내용의 일부 예들에 따른, 암시적 신경 표현들을 사용하는 픽처들의 그룹에 대한 압축 파이프라인의 다른 예를 예시하는 도면이다.
[0028] 도 8c는 본 개시내용의 일부 예들에 따른, 암시적 신경 표현들을 사용하는 픽처들의 그룹에 대한 압축 파이프라인의 다른 예를 예시하는 도면이다.
[0029] 도 9는 본 개시내용의 일부 예들에 따른 비디오 프레임 인코딩(encoding) 순서를 예시하는 도면이다.
[0030] 도 10은 본 개시내용의 일부 예들에 따른, 암시적 신경 압축을 수행하기 위한 예시적인 프로세스를 예시하는 도면이다.
[0031] 도 11은 본 개시내용의 일부 예들에 따른, 암시적 신경 표현들에 기반하여 이미지 데이터를 압축하기 위한 프로세스의 일례를 예시하는 흐름도이다.
[0032] 도 12는 본 개시내용의 일부 예들에 따른, 암시적 신경 표현들에 기반하여 이미지 데이터를 압축하기 위한 프로세스의 다른 예를 예시하는 흐름도이다.
[0033] 도 13은 본 개시내용의 일부 예들에 따른, 암시적 신경 표현들에 기반하여 이미지 데이터를 압축해제하기 위한 프로세스의 일례를 예시하는 흐름도이다.
[0034] 도 14는 본 개시내용의 일부 예들에 따른, 암시적 신경 표현들에 기반하여 이미지 데이터를 압축하기 위한 프로세스의 일례를 예시하는 흐름도이다.
[0035] 도 15는 본 개시내용의 일부 예들에 따른, 암시적 신경 표현들에 기반하여 이미지 데이터를 압축해제하기 위한 프로세스의 일례를 예시하는 흐름도이다.
[0036] 도 16은 본 개시내용의 일부 예들에 따른 예시적인 컴퓨팅(computing) 시스템을 예시한다.
[0037] 본 개시내용의 특정 양상들 및 실시예들이 아래에서 제공된다. 이러한 양상들 및 실시예들 중 일부는 독립적으로 적용될 수 있고, 이들 중 일부는 당해 기술분야에서 통상의 지식을 가진 자들에게 명백하듯이, 조합하여 적용될 수 있다. 다음의 설명에서는, 설명의 목적으로, 본 출원의 실시예들의 전반적인 이해를 제공하기 위해 특정 세부사항들이 제시된다. 그러나 다양한 실시예들은 이러한 특정 세부사항들 없이 실시될 수 있음이 명백할 것이다. 도면들 및 설명은 제한적인 것으로 의도되지 않는다.
[0038] 이어지는 설명은 예시적인 실시예들만을 제공하며, 본 개시내용의 범위, 적용 가능성 또는 구성을 제한하는 것으로 의도되지 않는다. 오히려, 예시적인 실시예들의 이어지는 설명은 예시적인 실시예를 구현하기 위한 가능한 설명을 당해 기술분야에서 통상의 지식을 가진 자들에게 제공할 것이다. 첨부된 청구항들에 제시된 바와 같이 본 출원의 사상 및 범위를 벗어나지 않으면서 엘리먼트(element)들의 기능 및 어레인지먼트(arrangement)에 다양한 변경들이 이루어질 수 있다고 이해되어야 한다.
[0039] 위에서 언급된 바와 같이, 특히 고품질 비디오 데이터에 대한 요구가 계속 성장함에 따라, 미디어 데이터(예컨대, 이미지 데이터, 비디오 데이터 및/또는 오디오 데이터)는 많은 양의 데이터를 포함할 수 있다. 예를 들어, 이미지, 오디오 및 비디오 데이터의 소비자들은 통상적으로 고충실도, 해상도, 프레임 레이트들 등과 같은 점점 더 높은 품질 레벨(level)들을 원한다. 그러나 이러한 요구들을 충족시키는 데 필요한 많은 양의 데이터는 통신 네트워크들, 이를테면 높은 대역폭 및 네트워크 자원 요건들에, 그리고 비디오 데이터를 프로세싱 및 저장하는 디바이스들에 상당한 부담을 줄 수 있다. 따라서 이미지 및 비디오 데이터의 저장 및/또는 송신을 위해 필요한 데이터의 양을 감소시키기 위한 (코딩 알고리즘(algorithm)들 또는 툴(tool)들로도 또한 지칭되는) 압축 알고리즘들이 유리하다.
[0040] 미디어 데이터를 압축하기 위해 다양한 기법들이 사용될 수 있다. 이미지 데이터의 압축은 특히, JPEG(Joint Photographic Experts Group), BPG(Better Portable Graphics)와 같은 알고리즘들을 사용하여 달성되었다. 최근에, 신경망 기반 압축 방법들은 이미지 데이터를 압축하는 데 상당한 가능성을 보였다. 비디오 코딩은 특정 비디오 코딩 표준에 따라 수행될 수 있다. 예시적인 비디오 코딩 표준들은 HEVC(high-efficiency video coding), EVC(essential video coding), AVC(advanced video coding), MPEG(moving picture Experts group) 코딩, 및 VVC(versatility video coding)를 포함한다. 그러나 이러한 종래의 이미지 및 비디오 코딩 기법들은 디코딩(decoding)이 수행된 후 재구성된 이미지에서 아티팩트(artifact)들을 야기할 수 있다.
[0041] 일부 양상들에서, 하나 이상의 기계 학습 시스템들을 사용하여 (또한 인코딩 및 디코딩으로 지칭되고, 집합적으로 코딩으로 지칭되는) 데이터(예컨대, 이미지, 비디오, 오디오 등) 압축 및 압축해제를 수행하기 위한 (본 명세서에서는 집합적으로 "시스템들 및 기법들"로 지칭되는) 시스템들, 장치들, (방법들로도 또한 지칭되는) 프로세스들 및 컴퓨터 판독 가능 매체들이 본 명세서에서 설명된다. 예를 들어, 시스템들 및 기법들은 암시적 신경 모델을 사용하여 구현될 수 있다. 암시적 신경 모델은 INR(implicit neural representations)에 기반할 수 있다. 본 명세서에서 설명되는 바와 같이, 암시적 신경 모델은 좌표 포지션(position)들(예컨대, 이미지 또는 비디오 프레임 내의 좌표들)을 입력으로 취할 수 있고, 픽셀(pixel) 값들(예컨대, 이미지 또는 비디오 프레임에 대한 컬러(color) 값들, 각각의 좌표 포지션 또는 픽셀에 대한 이러한 컬러 값들)을 출력할 수 있다. 일부 경우들에서, 암시적 신경 모델은 또한 IPB 프레임 방식에 기반할 수 있다. 일부 예들에서, 암시적 신경 모델은 광 흐름을 모델링하도록 입력 데이터를 수정할 수 있다.
[0042] 일부 예들에서, 암시적 신경 모델은 로컬 해석(local translation)들이 엘리먼트별 가산에 이를 수 있는 암시적 신경 표현들로 광 흐름을 모델링할 수 있다. 일부 경우들에서, 암시적 모델은 대응하는 출력 픽셀 값들을 산출하도록 입력 좌표 포지션들을 조정함으로써 광 흐름을 모델링할 수 있다. 예컨대, 입력들의 엘리먼트별 가산은 출력에서 로컬 해석으로 이어질 수 있으며, 이는 픽셀 움직임의 필요성 및 연관된 계산적 복잡성을 제거할 수 있다.
[0043] 하나 이상의 기계 학습 시스템들은 본 명세서에 설명되는 바와 같이 훈련될 수 있고, 데이터 압축 및/또는 압축해제, 이를테면 이미지, 비디오 및/또는 오디오 압축 및 압축해제를 수행하기 위해 사용될 수 있다. 본 명세서에서 설명되는 기계 학습 시스템들은 고품질 데이터 출력들을 생성하는 압축/압축해제 기법들을 수행하도록 훈련될 수 있다. 본 명세서에서 설명되는 시스템들 및 기법들은 임의의 타입(type)의 데이터의 압축 및/또는 압축해제를 수행할 수 있다. 예를 들어, 일부 경우들에서, 본 명세서에 설명되는 시스템들 및 기법들은 이미지 데이터의 압축 및/또는 압축해제를 수행할 수 있다. 다른 예로서, 일부 경우들에서, 본 명세서에 설명되는 시스템들 및 기법들은 비디오 데이터의 압축 및/또는 압축해제를 수행할 수 있다. 본 명세서에서 사용되는 바와 같이, "이미지" 및 "프레임"이라는 용어는 상호 교환 가능하게 사용되며, 독립형 이미지 또는 프레임(예컨대, 사진) 또는 (예컨대, 이미지들/프레임들의 비디오 또는 다른 시퀀스(sequence)를 구성하는) 이미지들 또는 프레임들의 그룹 또는 시퀀스를 의미한다. 다른 예로서, 일부 경우들에서, 본 명세서에 설명되는 시스템들 및 기법들은 오디오 데이터의 압축 및/또는 압축해제를 수행할 수 있다. 간략하게 하기 위해, 예시 및 설명 목적들로, 본 명세서에 설명되는 시스템들 및 기법들은 이미지 데이터(예컨대, 이미지들 또는 프레임들, 비디오들 등)의 압축 및/또는 압축해제를 참조하여 논의된다. 그러나 위에서 언급된 바와 같이, 본 명세서에 설명되는 개념들은 또한 다른 양식들, 이를테면 오디오 데이터 및 임의의 다른 타입의 데이터에 적용될 수 있다.
[0044] 인코더 및/또는 디코더(decoder)에 의해 사용되는 압축 모델은 상이한 타입들의 데이터로 일반화될 수 있다. 더욱이, 본 명세서에서 설명되는 다양한 특징들을 갖는 암시적 신경 모델을 이용함으로써, 기계 학습 시스템은 특정 세트(set)의 데이터에 대한 압축 및/또는 압축해제 성능, 비트 레이트, 품질 및/또는 효율을 증가시킬 수 있다. 예컨대, 암시적 신경 모델 기반 기계 학습 시스템은 수신기 측(그리고 일부 경우들에서는 송신기 측)에서 사전 훈련된 신경망을 저장할 필요성을 제거할 수 있다. 송신기 및 수신기 측의 신경망은 경량 프레임워크(framework)로 구현될 수 있다. 그러한 기계 학습 시스템의 다른 장점은 실제 기계 학습 시스템(예컨대, 신경망)에 의한 흐름 동작들의 부재이며, 이는 일부 경우들에서(예컨대, 하드웨어(hardware)에서) 구현하기 어려울 수 있다. 추가로, 디코딩 기능은 표준 기계 학습 기반 코덱(coder-decoder)들에서보다 더 빠를 수 있다. 일부 경우들에서, 본 명세서에서 설명되는 암시적 신경 모델 기반 기계 학습 시스템은, 인코딩될 데이터(예컨대, 이미지, 비디오 프레임, 비디오 등의 현재 인스턴스(instance) 및 좌표 그리드(grid))를 사용하여 암시적으로 훈련될 수 있기 때문에, 별개의 훈련 데이터세트(dataset)를 요구하지 않는다. 본 명세서에서 설명되는 암시적 신경 모델의 구성은 또한, 잠재적인 프라이버시(privacy) 우려들의 회피로 이어질 수 있다. 시스템은 또한, 어떠한 적절한 훈련 데이터도 이용 가능하지 않은 것들을 포함하여 상이한 도메인(domain)들로부터의 데이터에 대해 잘 수행한다.
[0045] 일부 예들에서, 기계 학습 시스템은 하나 이상의 신경망들을 포함할 수 있다. ML(machine learning)은 AI(artificial intelligence)의 서브세트이다. ML 시스템들은 명시적 명령들의 사용 없이, 컴퓨터 시스템들이 패턴(pattern)들 및 추론에 의존함으로써 다양한 작업들을 수행하는 데 사용할 수 있는 알고리즘들 및 통계 모델들을 포함한다. ML 시스템의 일례는 인공 뉴런(neuron)들(예컨대, 뉴런 모델들)의 상호 연결된 그룹으로 구성될 수 있는 (인공 신경망으로도 또한 지칭되는) 신경망이다. 신경망들은 다양한 애플리케이션(application)들 및/또는 디바이스들, 이를테면 특히, 이미지 분석 및/또는 컴퓨터 비전(vision) 애플리케이션들, IP(Internet Protocol) 카메라들, IoT(Internet of Things) 디바이스들, 자율 주행 차량들, 서비스 로봇(robot)들에 사용될 수 있다.
[0046] 신경망 내의 개별 노드(node)들은 입력 데이터를 취하고 데이터에 대해 간단한 연산들을 수행함으로써 생물학적 뉴런들을 모방할 수 있다. 입력 데이터에 대해 수행된 간단한 연산들의 결과들은 다른 뉴런들에 선택적으로 전달된다. 가중 값들은 네트워크의 각각의 벡터 및 노드와 연관되고, 이러한 값들은 입력 데이터가 출력 데이터에 어떻게 관련되는지를 제한한다. 예를 들어, 각각의 노드의 입력 데이터는 대응하는 가중 값과 곱해질 수 있고, 곱들은 합산될 수 있다. 곱들의 합은 선택적인 바이어스(bias)에 의해 조정될 수 있고, 활성화 함수가 결과에 적용될 수 있어, 노드의 출력 신호 또는 "출력 활성화"(때때로 활성화 맵(map) 또는 특징 맵으로 지칭됨)를 산출할 수 있다. 가중 값들은 초기에 네트워크를 통한 훈련 데이터의 반복적인 흐름에 의해 결정될 수 있다(예컨대, 가중 값들은, 네트워크가 특정 클래스(class)들의 통상적인 입력 데이터 특징들에 의해 특정 클래스들을 어떻게 식별하는지를 학습하는 훈련 단계 동안 설정됨).
[0047] 특히, 심층 생성 신경망 모델들(예컨대, GAN(generative adversarial network)들), RNN(recurrent neural network) 모델들, MLP(multilayer perceptron) 신경망 모델들, CNN(convolutional neural network) 모델들, AE(autoencoder)들과 같은 상이한 타입들의 신경망들이 존재한다. 예를 들어, GAN은, 신경망 모델이 합리적으로는 원래의 데이터세트에서 나왔을 수 있는 새로운 합성 출력들을 생성할 수 있도록, 입력 데이터의 패턴들을 학습할 수 있는 생성 신경망의 형태이다. GAN은 함께 동작하는 2개의 신경망들을 포함할 수 있다. (G(z)로 표시된 생성 신경망 또는 생성기로 지칭되는) 신경망들 중 하나는 합성된 출력을 생성하고, (D(X)로 표시된 판별 신경망 또는 판별기로 지칭되는) 다른 신경망은 진본성에 대해 출력을 평가한다(출력이 원래의 데이터세트, 이를테면 훈련 데이터세트로부터 나오는지 또는 생성기에 의해 생성되는지). 훈련 입력 및 출력은 예시적인 예로서 이미지들을 포함할 수 있다. 생성기는, 생성기에 의해 생성된 합성된 이미지가 데이터세트로부터의 실제 이미지임을 결정하도록 판별기를 속이려고 시도하도록 훈련된다. 훈련 프로세스는 계속되고, 생성기는 실제 이미지들처럼 보이는 합성 이미지들을 생성하는 데 더 우수해진다. 판별기는 합성된 이미지들에서 결함들을 계속 발견하고, 생성기는 이미지들의 결함들을 결정하기 위해 판별기가 무엇을 보고 있는지를 파악한다. 일단 네트워크가 훈련되면, 생성기는, 판별기가 실제 이미지들로부터 구별할 수 없는 사실적으로 보이는 이미지들을 생성할 수 있다.
[0048] RNN들은 계층의 출력을 저장하고 이 출력을 입력에 다시 공급하여 계층의 결과를 예측하는 것을 돕는 원리에 따라 작동한다. MLP 신경망들에서, 데이터는 입력 계층에 공급될 수 있고, 하나 이상의 은닉 계층들은 데이터에 대한 추상화 레벨들을 제공한다. 런 다음, 추상화된 데이터에 기반하여 출력 계층에 대해 예측들이 이루어질 수 있다. MLP들은 입력들에 클래스 또는 라벨(label)이 할당되는 분류 예측 문제들에 특히 적합할 수 있다. CNN(convolutional neural network)들은 피드-포워드(feed-forward) 인공 신경망의 타입이다. CNN들은, 각각이 수용 필드(receptive field)(예컨대, 입력 공간의 공간적으로 로컬화(localize)된 구역)를 갖고 입력 공간을 집합적으로 타일링(tile)하는 인공 뉴런들의 집합들을 포함할 수 있다. CNN들은 패턴 인식 및 분류를 포함하는 다수의 애플리케이션들을 갖는다.
[0049] (다수의 은닉 층들이 존재하는 경우 심층 신경망들로 지칭되는) 계층화된 신경망 아키텍처(architecture)들에서, 인공 뉴런들의 제1 층의 출력은 인공 뉴런들의 제2 층에 대한 입력이 되고, 인공 뉴런들의 제2 층의 출력은 인공 뉴런들의 제3 층에 대한 입력이 되는 식이다. 컨볼루션 신경망들은 특징들의 계층 구조를 인식하도록 훈련될 수 있다. 컨볼루션 신경망 아키텍처들에서의 계산은 하나 이상의 계산 체인(chain)들로 구성될 수 있는 프로세싱 노드들의 집단에 걸쳐 분산될 수 있다. 이러한 다층 아키텍처들은 한 번에 하나의 층으로 훈련될 수 있고, 역전파를 사용하여 미세 튜닝될 수 있다.
[0050] AE(autoencoder)는 비지도(unsupervised) 방식으로 효율적인 데이터 코딩들을 학습할 수 있다. 일부 예들에서, AE는 신호 잡음을 무시하도록 네트워크를 훈련함으로써 한 세트의 데이터에 대한 표현(예컨대, 데이터 코딩)을 학습할 수 있다. AE는 인코더 및 디코더를 포함할 수 있다. 인코더는 입력 데이터를 코드(code)에 매핑할 수 있고, 디코더는 코드를 입력 데이터의 재구성에 매핑할 수 있다. 일부 예들에서, RD-AE(rate-distortion autoencoder)는 이미지 및/또는 비디오 데이터포인트(datapoint)들과 같은 데이터포인트들의 데이터세트에 걸쳐 평균 레이트 왜곡 손실을 최소화하도록 훈련될 수 있다. 일부 경우들에서, RD-AE는 새로운 데이터포인트를 인코딩하기 위해 추론 시점에 포워드 패스(forward pass)를 수행할 수 있다.
[0051] 일부 예들에서, 데이터 압축 및/또는 압축해제를 위한 기계 학습 시스템은 암시적으로(예컨대, 압축될 이미지 데이터를 사용하여) 훈련되는 신경망을 포함할 수 있다. 일부 경우들에서, INR(implicit neural representation)에 기반하는 데이터 압축 및/또는 압축해제는 컨볼루션 기반 아키텍처를 사용하여 구현될 수 있다. 일부 양상들에서, 이미지 데이터를 인코딩하는 것은 신경망 아키텍처를 선택하는 것 그리고 이미지 데이터에 대해 네트워크 가중치들을 과적합(overfit)시키는 것을 포함할 수 있다. 일부 예들에서, 디코더는 신경망 아키텍처를 포함하고 인코더로부터 네트워크 가중치들을 수신할 수 있다. 다른 예들에서, 디코더는 인코더로부터 신경망 아키텍처를 수신할 수 있다.
[0052] 일부 경우들에서, 신경망 가중치들은 클 수 있고, 이는 가중치들을 디코더에 전송하는 데 필요한 비트 레이트 및/또는 계산 오버헤드(overhead)를 증가시킬 수 있다. 일부 예들에서, 가중치들은 전체 크기를 감소시키도록 양자화될 수 있다. 일부 양상들에서, 양자화된 가중치들은 가중치 사전 분포(weight prior)를 사용하여 압축될 수 있다. 가중치 사전 분포는 디코더에 전송되는 데이터의 양을 감소시킬 수 있다. 일부 경우들에서, 가중치 사전 분포는 모델 가중치들을 송신하기 위한 비용을 감소시키도록 설계될 수 있다. 예를 들어, 가중치 사전 분포는 가중치들의 비트 레이트 오버헤드를 감소 및/또는 제한하는 데 사용될 수 있다.
[0053] 일부 경우들에서, 가중치 사전 분포의 설계는 본 명세서에서 추가로 설명되는 바와 같이 개선될 수 있다. 일부 예시적인 예들에서, 가중치 사전 분포 설계는 독립적인 가우시안(Gaussian) 가중치 사전 분포를 포함할 수 있다. 다른 예시적인 예들에서, 가중치 사전 분포 설계는 독립적인 라플라스(Laplace) 가중치 사전 분포를 포함할 수 있다. 다른 예시적인 예들에서, 가중치 사전 분포 설계는 독립적인 스파이크(Spike) 및 슬래브(Slab) 사전 분포를 포함할 수 있다. 일부 예시적인 예들에서, 가중치 사전 분포는 신경망에 의해 학습되는 복잡한 의존성들을 포함할 수 있다.
[0054] 도 1은 본 개시내용의 일부 예들에 따른 이미지 프로세싱 시스템(100)의 일례를 예시하는 도면이다. 일부 경우들에서, 이미지 프로세싱 시스템(100)은 본 명세서에서 설명되는 기능들 중 하나 이상을 수행하도록 구성된 CPU(central processing unit)(102) 또는 다중 코어(multi-core) CPU를 포함할 수 있다. 다른 정보 중에서도, 변수들(예컨대, 신경 신호들 및 시냅스(synaptic) 가중치들), 계산 디바이스와 연관된 시스템 파라미터(parameter)들(예컨대, 가중치들을 갖는 신경망), 지연들, 주파수 빈(bin) 정보, 작업 정보가 NPU(neural processing unit)(108)와 연관된 메모리 블록에, CPU(102)와 연관된 메모리 블록에, GPU(graphics processing unit)(104)와 연관된 메모리 블록에, DSP(digital signal processor)(106)와 연관된 메모리 블록에, 메모리 블록(118)에 저장될 수 있거나, 또는 다수의 블록들에 걸쳐 분산될 수 있다. CPU(102)에서 실행되는 명령들은 CPU(102) 및/또는 메모리 블록(118)과 연관된 프로그램 메모리로부터 로딩(load)될 수 있다.
[0055] 이미지 프로세싱 시스템(100)은 특정 기능들에 맞춤화된 추가 프로세싱 블록들, 이를테면 GPU(104); DSP(106); 5G(fifth generation) 접속, 4G LTE(fourth generation long term evolution) 접속, Wi-Fi 접속, USB 접속, 블루투스(Bluetooth) 접속 등을 포함할 수 있는 접속 블록(110); 및/또는 예를 들어, 특징들을 검출 및 인식할 수 있는 멀티미디어(multimedia) 프로세서(112)를 포함할 수 있다. 일 구현에서, NPU(108)는 CPU(102), DSP(106) 및/또는 GPU(104)에 구현된다. 이미지 프로세싱 시스템(100)은 또한 센서 프로세서(114), 하나 이상의 ISP(image signal processor)들(116) 및/또는 저장소(120)를 포함할 수 있다. 일부 예들에서, 이미지 프로세싱 시스템(100)은 ARM 명령 세트에 기초할 수 있다.
[0056] 이미지 프로세싱 시스템(100)은 다수의 컴퓨팅 디바이스들 또는 컴퓨팅 디바이스의 일부일 수 있다. 일부 예들에서, 이미지 프로세싱 시스템(100)은 전자 디바이스(또는 디바이스들), 이를테면 카메라 시스템(예컨대, 디지털(digital) 카메라, IP 카메라, 비디오 카메라, 보안 카메라 등), 전화 시스템(예컨대, 스마트폰, 셀룰러(cellular) 전화, 회의 시스템 등), 데스크톱(desktop) 컴퓨터, XR 디바이스(예컨대, 머리 장착 디스플레이 등), 스마트 웨어러블 디바이스(예컨대, 스마트 워치(smart watch), 스마트 안경 등), 랩톱 또는 노트북(notebook) 컴퓨터, 태블릿(tablet) 컴퓨터, 셋톱 박스(set-top box), 텔레비전(television), 디스플레이 디바이스, 디지털 미디어 플레이어(player), 게이밍 콘솔(gaming console), 비디오 스트리밍(streaming) 디바이스, 드론(drone), 자동차 내 컴퓨터, SOC(system-on-chip), IoT(Internet-of-Things) 디바이스, 또는 임의의 다른 적절한 전자 디바이스(들)의 일부일 수 있다.
[0057] 이미지 프로세싱 시스템(100)이 특정 컴포넌트(component)들을 포함하는 것으로 도시되지만, 당해 기술분야에서 통상의 지식을 가진 자는 이미지 프로세싱 시스템(100)이 도 1에 도시된 컴포넌트들보다 더 많은 또는 더 적은 컴포넌트들을 포함할 수 있다고 인식할 것이다. 예를 들어, 이미지 프로세싱 시스템(100)은 또한 일부 경우들에서, 하나 이상의 메모리 디바이스들(예컨대, RAM, ROM, 캐시(cache) 등), 하나 이상의 네트워킹 인터페이스(networking interface)들(예컨대, 유선 및/또는 무선 통신 인터페이스들 등), 하나 이상의 디스플레이 디바이스들, 및/또는 도 1에 도시되지 않은 다른 하드웨어 또는 프로세싱 디바이스들을 포함할 수 있다. 이미지 프로세싱 시스템(100)으로 구현될 수 있는 컴퓨팅 디바이스 및 하드웨어 컴포넌트들의 예시적인 예는 아래에서 도 16과 관련하여 설명된다.
[0058] 이미지 프로세싱 시스템(100) 및/또는 이미지 프로세싱 시스템(100)의 컴포넌트들은 본 명세서에서 설명되는 기계 학습 시스템들 및 기법들을 사용하여 (인코딩 및/또는 디코딩으로도 또한 지칭되며, 집합적으로 이미지 코딩으로 지칭되는) 압축 및/또는 압축해제를 수행하도록 구성될 수 있다. 일부 경우들에서, 이미지 프로세싱 시스템(100) 및/또는 이미지 프로세싱 시스템(100)의 컴포넌트들은 본 명세서에서 설명되는 기법들을 사용하여 이미지 또는 비디오 압축 및/또는 압축해제를 수행하도록 구성될 수 있다. 일부 예들에서, 기계 학습 시스템들은 심층 학습 신경망 아키텍처들을 이용하여 이미지, 비디오 및/또는 오디오 데이터의 압축 및/또는 압축해제를 수행할 수 있다. 심층 학습 신경망 아키텍처들을 사용함으로써, 기계 학습 시스템들은 디바이스 상의 콘텐츠의 압축 및/또는 압축해제의 효율 및 속도를 높일 수 있다. 예를 들어, 설명되는 압축 및/또는 압축해제 기법들을 사용하는 디바이스는 기계 학습 기반 기법들을 사용하여 하나 이상의 이미지들을 효율적으로 압축할 수 있고, 압축된 하나 이상의 이미지들을 수신 디바이스에 송신할 수 있으며, 수신 디바이스는 본 명세서에서 설명되는 기계 학습 기반 기법들을 사용하여 하나 이상의 이미지들을 효율적으로 압축해제할 수 있다. 본 명세서에서 사용되는 바와 같이, 이미지는 프레임들의 시퀀스(예컨대, 비디오)와 연관된 정지 이미지 및/또는 비디오 프레임을 의미할 수 있다.
[0059] 위에서 언급된 바와 같이, 신경망은 기계 학습 시스템의 일례이다. 신경망은 입력 계층, 하나 이상의 은닉 계층들 및 출력 계층을 포함할 수 있다. 입력 계층의 입력 노드들로부터 데이터가 제공되며, 하나 이상의 은닉 계층들의 은닉 노드들에 의해 프로세싱이 수행되며, 출력 계층의 출력 노드들을 통해 출력이 생성된다. 심층 학습 네트워크들은 통상적으로 다수의 은닉 계층들을 포함한다. 신경망의 각각의 계층은 인공 뉴런들(또는 노드들)을 포함할 수 있는 특징 맵들 또는 활성화 맵들을 포함할 수 있다. 특징 맵은 필터(filter), 커널(kernel) 등을 포함할 수 있다. 노드들은 계층들 중 하나 이상의 계층들의 노드들의 중요도를 표시하기 위해 사용되는 하나 이상의 가중치들을 포함할 수 있다. 일부 경우들에서, 심층 학습 네트워크는 일련의 많은 은닉 계층들을 가질 수 있으며, 초기 계층들은 입력의 단순하고 낮은 레벨의 특징들을 결정하는 데 사용되고, 나중의 계층들은 더 복잡하고 추상적인 특징들의 계층 구조를 구축한다.
[0060] 심층 학습 아키텍처는 특징들의 계층을 학습할 수 있다. 예를 들어, 시각 데이터가 제시된다면, 제1 계층은 입력 스트림에서 에지(edge)들과 같은 비교적 단순한 특징들을 인식하도록 학습할 수 있다. 다른 예에서, 청각 데이터가 제시된다면, 제1 계층은 특정 주파수들에서 스펙트럼 전력을 인식하도록 학습할 수 있다. 제2 계층은, 제1 계층의 출력을 입력으로 하여, 특징들의 조합들, 이를테면 시각 데이터에 대한 단순한 형상들 또는 청각 데이터에 대한 사운드들의 조합들을 인식하도록 학습할 수 있다. 예를 들면, 상위 계층들은 시각 데이터로 복잡한 형상들을 또는 청각 데이터로 단어들을 표현하도록 학습할 수 있다. 더 상위 계층들은 일반적인 시각 객체들 또는 발화된 어구(spoken phrase)들을 인식하도록 학습할 수 있다.
[0061] 심층 학습 아키텍처들은 자연스러운 계층 구조를 갖는 문제들에 적용될 때 특히 잘 수행할 수 있다. 예를 들어, 모터 구동 차량들의 분류는 바퀴들, 앞유리들 및 다른 특징들을 인식하도록 첫 번째 학습으로부터 이익을 얻을 수 있다. 이러한 특징들은 자동차들, 트럭들 및 비행기들을 인식하기 위해 상이한 방식들로 상위 계층들에서 조합될 수 있다.
[0062] 신경망들은 다양한 연결 패턴들로 설계될 수 있다. 피드-포워드 네트워크들에서, 정보는 하위 계층에서 상위 계층으로 전달되며, 주어진 계층의 각각의 뉴런은 상위 계층들의 뉴런들과 통신한다. 위에서 설명된 바와 같이, 계층적 표현은 피드-포워드 네트워크의 연속적인 계층들에 구축될 수 있다. 신경망들은 또한 재귀 또는 피드백(feedback)(하향식으로도 또한 불림) 연결들을 가질 수 있다. 재귀 연결에서, 주어진 계층의 뉴런으로부터의 출력은 동일 계층의 다른 뉴런으로 통신될 수 있다. 재귀 아키텍처는 순차적으로 신경망에 전달되는 입력 데이터 청크들 중 하나 초과의 입력 데이터 청크들에 걸쳐 있는 패턴들을 인식하는 데 도움이 될 수 있다. 주어진 계층의 뉴런으로부터 하위 계층의 뉴런으로의 연결은 피드백(또는 하향식) 연결로 불린다. 많은 피드백 연결들을 갖는 네트워크는 상위 레벨 개념의 인식이 입력의 특정 하위 레벨 특징들을 구별하는 것을 도울 때 도움이 될 수 있다.
[0063] 신경망의 계층들 간의 연결들은 완전히 연결되거나 국소적으로 연결될 수 있다. 도 2a는 완전히 연결된 신경망(202)의 일례를 예시한다. 완전히 연결된 신경망(202)에서, 제1 계층의 뉴런이 제2 계층의 모든 각각의 뉴런에 자신의 출력을 통신할 수 있어, 제2 계층의 각각의 뉴런이 제1 계층의 모든 각각의 뉴런으로부터 입력을 수신할 것이다. 도 2b는 국소적으로 연결된 신경망(204)의 일례를 예시한다. 국소적으로 연결된 신경망(204)에서, 제1 계층의 뉴런은 제2 계층의 제한된 수의 뉴런들에 연결될 수 있다. 보다 일반적으로, 국소적으로 연결된 신경망(204)의 국소적으로 연결된 계층은, 계층의 각각의 뉴런이 동일하거나 유사한 연결 패턴을 갖지만, 상이한 값들(예컨대, 210, 212, 214, 216)을 가질 수 있는 연결 강도들을 갖도록 구성될 수 있다. 국소적으로 연결된 연결 패턴은 상위 계층에서 공간적으로 별개인 수용 필드들을 발생시킬 수 있는데, 이는 주어진 구역의 상위 계층 뉴런들이 네트워크에 대한 전체 입력의 제한된 부분의 특성들에 대한 훈련을 통해 튜닝되는 입력들을 수신할 수 있기 때문이다.
[0064] 국소적으로 연결된 신경망의 일례는 컨볼루션 신경망이다. 도 2c는 컨볼루션 신경망(206)의 일례를 예시한다. 컨볼루션 신경망(206)은 제2 계층의 각각의 뉴런에 대한 입력들과 연관된 연결 강도들이 공유되도록(예컨대, 208) 구성될 수 있다. 컨볼루션 신경망들은 입력들의 공간적 위치가 의미 있는 문제들에 매우 적합할 수 있다. 컨볼루션 신경망(206)은 본 개시내용의 양상들에 따라, 비디오 압축 및/또는 압축해제의 하나 이상의 양상들을 수행하기 위해 사용될 수 있다.
[0065] 컨볼루션 신경망의 하나의 타입은 DCN(deep convolutional network)이다. 도 2d는 자동차 장착 카메라와 같은 이미지 캡처 디바이스(230)로부터 입력된 이미지(226)로부터 시각적 특징들을 인식하도록 설계된 DCN(200)의 상세한 예를 예시한다. 현재 예의 DCN(200)은 교통 표지판들 및 교통 표지판에 제공된 숫자를 식별하도록 훈련될 수 있다. 물론, DCN(200)은 차선 표시들을 식별하거나 신호등들을 식별하는 것과 같은 다른 작업들을 위해 훈련될 수 있다.
[0066] DCN(200)은 지도 학습으로 훈련될 수 있다. 훈련 동안, DCN(200)에는 속도 제한 표지판의 이미지(226)와 같은 이미지가 제시될 수 있고, 이어서 전방 경로(forward pass)가 컴퓨팅되어 출력(222)을 생성할 수 있다. DCN(200)은 특징 추출 섹션(section) 및 분류 섹션을 포함할 수 있다. 이미지(226)를 수신할 때, 컨볼루션 계층(232)은 이미지(226)에 (도시되지 않은) 컨볼루션 커널들을 적용하여 제1 세트의 특징 맵들(218)을 생성할 수 있다. 예로서, 컨볼루션 계층(232)에 대한 컨볼루션 커널은 28×28 특징 맵들을 생성하는 5×5 커널일 수 있다. 본 예에서, 제1 세트의 특징 맵들(218)에서 4개의 상이한 특징 맵들이 생성되기 때문에, 4개의 상이한 컨볼루션 커널이 컨볼루션 계층(232)에서 이미지(226)에 적용되었다. 컨볼루션 커널들은 또한 필터들 또는 컨볼루션 필터들로 지칭될 수 있다.
[0067] 제1 세트의 특징 맵들(218)은 (도시되지 않은) 최대 풀링(pooling) 계층에 의해 서브샘플링(subsample)되어 제2 세트의 특징 맵들(220)을 생성할 수 있다. 최대 풀링 계층은 제1 세트의 특징 맵들(218)의 크기를 감소시킨다. 즉, 14×14와 같은 제2 세트의 특징 맵(220)의 크기는 28×28과 같은 제1 세트의 특징 맵들(218)의 크기보다 더 작다. 감소된 크기는 메모리 소비를 줄이면서 후속 계층에 유사한 정보를 제공한다. 제2 세트의 특징 맵들(220)은 (도시되지 않은) 하나 이상의 후속 컨볼루션 계층들을 통해 추가로 컨볼브(convolve)되어 (도시되지 않은) 하나 이상의 후속 세트들의 특징 맵들을 생성할 수 있다.
[0068] 도 2d의 예에서, 제2 세트의 특징 맵들(220)은 컨볼브되어 제1 특징 벡터(224)를 생성한다. 더욱이, 제1 특징 벡터(224)는 추가로 컨볼브되어 제2 특징 벡터(228)를 생성한다. 제2 특징 벡터(228)의 각각의 특징은 이미지(226)의 가능한 특징에 대응하는 숫자, 이를테면 "표지판", "60" 및 "100"을 포함할 수 있다. (도시되지 않은) 소프트맥스(softmax) 함수가 제2 특징 벡터(228)의 숫자들을 확률로 변환할 수 있다. 이에 따라, DCN(200)의 출력(222)은 이미지(226)가 하나 이상의 특징들을 포함할 확률이다.
[0069] 본 예에서, 출력(222)에서 "표지판" 및 "60"에 대한 확률들은 출력(222)의 다른 것들, 이를테면 "30," "40," "50," "70," "80," "90" 및 "100"의 확률들보다 더 높다. 훈련 전에는, DCN(200)에 의해 생성되는 출력(222)은 부정확할 가능성이 있다. 따라서 출력(222)과 목표 출력 간의 오차가 계산될 수 있다. 목표 출력은 이미지(226)의 지상 실측 정보(ground truth)(예컨대, "표지판" 및 "60")이다. 이어서, DCN(200)의 가중치들은 DCN(200)의 출력(222)이 목표 출력과 보다 근접하게 정렬되도록 조정될 수 있다.
[0070] 가중치들을 조정하기 위해, 학습 알고리즘은 가중치들에 대한 기울기 벡터를 컴퓨팅할 수 있다. 기울기는 가중치가 조정된다면 오차가 증가 또는 감소할 양을 표시할 수 있다. 최상위 계층에서, 기울기는 끝에서 두 번째 계층의 활성화된 뉴런과 출력 계층의 뉴런을 연결하는 가중치의 값에 직접 대응할 수 있다. 하위 계층에서, 기울기는 가중치들의 값 및 상위 계층들의 컴퓨팅된 오차 기울기들에 좌우될 수 있다. 이어서, 오차를 줄이기 위해 가중치들이 조정될 수 있다. 가중치들을 조정하는 이러한 방식은 신경망을 통한 "백워드 패스(backward pass)"를 수반하므로 "역전파"로 지칭될 수 있다.
[0071] 실제로, 가중치들의 오차 기울기가 적은 수의 예들에 걸쳐 계산될 수 있어, 계산된 기울기는 실제 오차 기울기에 근사한다. 이러한 근사화 방법은 확률적 기울기 강하(stochastic gradient descent)로 지칭될 수 있다. 확률적 기울기 강하는, 전체 시스템의 달성 가능한 오차율이 감소하는 것을 중단할 때까지 또는 오차율이 목표 레벨에 도달할 때까지 반복될 수 있다. 학습 후에는, DCN에 새로운 이미지가 제시될 수 있고, 네트워크를 통한 전방 경로가 DCN의 추론 또는 예측으로 간주될 수 있는 출력(222)을 산출할 수 있다.
[0072] DBN(deep belief network)들은 은닉 노드들의 다수의 계층들을 포함하는 확률 모델들이다. DBN들은 훈련 데이터 세트들의 계층적 표현을 추출하는 데 사용될 수 있다. DBN은 RBM(Restricted Boltzmann Machine)들의 계층들을 적층함으로써 획득될 수 있다. RBM은 한 세트의 입력들에 대한 확률 분포를 학습할 수 있는 하나의 타입의 인공 신경망이다. RBM들은 각각의 입력이 카테고리화(categorize)되어야 하는 클래스에 관한 정보가 없을 때 확률 분포를 학습할 수 있기 때문에, RBM들은 종종 비지도 학습에 사용된다. 하이브리드(hybrid) 비지도 및 지도 패러다임(paradigm)을 사용하면, DBN의 최하위 RBM들은 비지도 방식으로 훈련될 수 있고 특징 추출기들로서 기능할 수 있으며, 최상위 RBM은 (목표 클래스들 및 이전 계층으로부터의 입력들의 공동 분포에 대해) 지도 방식으로 훈련될 수 있고 분류기로서 기능할 수 있다.
[0073] DCN(deep convolutional network)은 컨볼루션 네트워크들 중 추가 풀링 및 정규화 계층들로 구성된 네트워크들이다. DCN들은 많은 작업들에 대해 최첨단 성능을 달성하였다. DCN들은 지도 학습을 사용하여 훈련될 수 있는데, 지도 학습에서는 많은 표본들에 대한 입력 및 출력 목표들 모두가 알려져 있고 기울기 강하법들의 사용에 의해 네트워크의 가중치들을 수정하는 데 사용된다.
[0074] DCN들은 피드-포워드 네트워크들일 수 있다. 추가로, 위에서 설명된 바와 같이, DCN의 제1 계층의 뉴런으로부터 다음 상위 계층의 뉴런들의 그룹으로의 연결들은 제1 계층의 뉴런들 간에 공유된다. DCN들의 피드-포워드 및 공유 연결들은 빠른 프로세싱을 위해 활용될 수 있다. DCN의 계산 부담은 예를 들어, 재귀 또는 피드백 연결들을 포함하는 유사한 크기의 신경망의 계산 부담보다 훨씬 더 적을 수 있다.
[0075] 컨볼루션 네트워크의 각각의 계층의 프로세싱은 공간적으로 불변 템플릿 또는 기저 투사(basis projection)로 간주될 수 있다. 입력이 컬러 이미지의 적색, 녹색 및 청색 채널(channel)들과 같은 다수의 채널들로 먼저 분해된다면, 그 입력에 대해 훈련된 컨볼루션 네트워크는 이미지의 축들을 따라 2개의 공간 차원들 및 컬러 정보를 캡처하는 제3 차원을 갖는 3차원으로 간주될 수 있다. 컨볼루션 연결들의 출력들이 후속 계층들에서 특징 맵을 형성하는 것으로 고려될 수 있는데, 특징 맵(예컨대, 220)의 각각의 엘리먼트는 이전 계층(예컨대, 특징 맵들(218))의 다양한 뉴런들로부터 그리고 다수의 채널들 각각으로부터 입력을 수신한다. 특징 맵의 값들은 비-선형성, 이를테면 max(0, x)인 교정(rectification)을 통해 추가로 프로세싱될 수 있다. 인접한 뉴런들로부터의 값들은 추가로 풀링될 수 있는데, 이는 다운샘플링(down sampling)에 대응하고, 이러한 값들은 추가 국소 불변성 및 차원 감소를 제공할 수 있다.
[0076] 도 3은 심층 컨볼루션 네트워크(350)의 일례를 예시하는 블록도이다. 심층 컨볼루션 네트워크(350)는 연결 및 가중치 공유에 기반하여 다수의 상이한 타입들의 계층들을 포함할 수 있다. 도 3에 도시된 바와 같이, 심층 컨볼루션 네트워크(350)는 컨볼루션 블록들(354A, 354B)을 포함한다. 컨볼루션 블록들(354A, 354B) 각각은 컨볼루션 계층(CONV)(356), 정규화 계층(LNorm)(358) 및 최대 풀링 계층(MAX POOL)(360)으로 구성될 수 있다.
[0077] 컨볼루션 계층(356)은 입력 데이터(352)에 적용되어 특징 맵을 생성할 수 있는 하나 이상의 컨볼루션 필터들을 포함할 수 있다. 2개의 컨볼루션 블록들(354A, 354B)만이 도시되지만, 본 개시내용은 그렇게 제한되지 않으며, 대신에 설계 선호도에 따라 임의의 수의 컨볼루션 블록들(예컨대, 블록들(354A, 354B))이 심층 컨볼루션 네트워크(350)에 포함될 수 있다. 정규화 계층(358)은 컨볼루션 필터들의 출력을 정규화할 수 있다. 예를 들어, 정규화 계층(358)은 백색화 또는 측면 억제를 제공할 수 있다. 최대 풀링 계층(360)은 국소 불변성 및 차원 감소를 위해 공간에 대한 다운샘플링 집성을 제공할 수 있다.
[0078] 예를 들어, 심층 컨볼루션 네트워크의 병렬 필터 뱅크(bank)들은 이미지 프로세싱 시스템(100)의 CPU(102) 또는 GPU(104)에 로딩되어 높은 성능 및 낮은 전력 소비를 달성할 수 있다. 대안적인 실시예들에서, 병렬 필터 뱅크들은 이미지 프로세싱 시스템(100)의 DSP(106) 또는 ISP(116) 상에 로딩될 수 있다. 추가로, 심층 컨볼루션 네트워크(350)는 이미지 프로세싱 시스템의(100) 상에 존재할 수 있는 다른 프로세싱 블록들, 이를테면 센서 프로세서(114)에 액세스할 수 있다.
[0079] 심층 컨볼루션 네트워크(350)는 또한 하나 이상의 완전히 연결된 층들, 이를테면 ("FC1"로 라벨링된) 계층들(362A) 및 ("FC2"로 라벨링된) 계층(362B)을 포함할 수 있다. 심층 컨볼루션 네트워크(350)는 LR(logistic regression) 계층(364)을 더 포함할 수 있다. 심층 컨볼루션 네트워크(350)의 각각의 계층(356, 358, 360, 362, 364) 간에는 업데이트(update)될 (도시되지 않은) 가중치들이 있다. 계층들(예컨대, 356, 358, 360, 362, 364) 각각의 출력은 컨볼루션 블록들 중 첫 번째 컨볼루션 블록(354A)에서 공급되는 입력 데이터(352)(예컨대, 이미지들, 오디오, 비디오, 센서 데이터 및/또는 다른 입력 데이터)로부터의 계층적 특징 표현들을 학습하기 위해 심층 컨볼루션 네트워크(350)의 계층들(예컨대, 356, 358, 360, 362, 364) 중 후속 계층의 입력으로서 기능할 수 있다. 심층 컨볼루션 네트워크(350)의 출력은 입력 데이터(352)에 대한 분류 스코어(score)(366)이다. 분류 스코어(366)는 한 세트의 확률들일 수 있으며, 여기서 각각의 확률은 입력 데이터가 한 세트의 특징들로부터의 특징을 포함할 확률이다.
[0080] 이미지, 오디오 및 비디오 콘텐츠는 저장될 수 있고 그리고/또는 디바이스들 사이에서 공유될 수 있다. 예컨대, 이미지, 오디오 및 비디오 콘텐츠는 미디어 호스팅(hosting) 서비스들 및 공유 플랫폼(platform)들에 업로드(upload)될 수 있고, 다양한 디바이스들에 송신될 수 있다. 압축되지 않은 이미지, 오디오 및 비디오 콘텐츠를 레코딩(record)하는 것은 일반적으로, 이미지 오디오 및 비디오 콘텐츠의 해상도가 증가함에 따라 크게 증가하는 큰 파일(file) 크기들을 야기한다. 예를 들어, 1080p/24로 레코딩된 채널당 16-비트의 비압축 비디오(예컨대, 초당 24개의 프레임들로 캡처된, 폭 1920개 픽셀들 및 높이 1080개 픽셀의 해상도)는 프레임당 12.4 메가바이트(megabytes), 또는 초당 297.6 메가바이트를 점유할 수 있다. 초당 24개의 프레임으로 4K 해상도로 레코딩된 채널당 16-비트의 비압축 비디오는 프레임당 49.8 메가바이트, 또는 초당 1195.2 메가바이트를 점유할 수 있다.
[0081] 압축되지 않은 이미지, 오디오 및 비디오 콘텐츠는, 물리적 저장을 위한 상당한 메모리 및 송신을 위한 상당한 대역폭을 수반할 수 있는 큰 파일들이 될 수 있기 때문에, 이러한 비디오 콘텐츠를 압축하기 위해 기법들이 이용될 수 있다. 예컨대, 이미지 콘텐츠의 크기를 감소시키고 이에 따라 이미지 콘텐츠를 저장하는 데 수반되는 저장소의 양 및 비디오 콘텐츠를 전달하는 데 수반되는 대역폭의 양을 감소시키기 위해, 다양한 압축 알고리즘들이 이미지, 오디오 및 비디오 콘텐츠에 적용될 수 있다.
[0082] 일부 경우들에서, 이미지 콘텐츠는 특히, JPEG(Joint Photographic Experts Group), BPG(Better Portable Graphics)와 같은 선험적으로 정의된 압축 알고리즘들을 사용하여 압축될 수 있다. 예를 들어, JPEG은 DCT(discrete cosine transform)에 기반하는 손실 형태의 압축이다. 예컨대, 이미지의 JPEG 압축을 수행하는 디바이스는 이미지를 최적의 색공간(예컨대, 휘도(Y), 색차-청색(Cb), 색차-적색(Cr)을 포함하는 YCbCr 색공간)으로 변환할 수 있으며, 픽셀들의 그룹들을 함께 평균함으로써 색차 성분들을 다운샘플링할 수 있고, 픽셀들의 블록들에 DCT 함수를 적용하여 중복 이미지 데이터를 제거하고 이에 따라 이미지 데이터를 압축할 수 있다. 압축은 이미지 내부의 유사한 구역들의 식별 및 (DCT 함수에 기반하여) 구역들을 동일한 컬러 코드로 변환하는 것에 기반한다. 비디오 콘텐츠는 또한, 선험적으로 정의된 압축 알고리즘들, 이를테면 MPEG(Motion Picture Experts Group) 알고리즘들, H.264 또는 고효율 비디오 코딩 알고리즘을 사용하여 압축될 수 있다.
[0083] 이러한 선험적으로 정의된 압축 알고리즘들은 원시 이미지 및 비디오 콘텐츠에서 대부분의 정보를 보유할 수 있고, 신호 프로세싱 및 정보 이론 아이디어(idea)들에 기반하여 선험적으로 정의될 수 있다. 그러나 이러한 미리 정의된 압축 알고리즘들은 일반적으로 (예컨대, 임의의 타입의 이미지/비디오 콘텐츠에) 적용 가능할 수 있지만, 압축 알고리즘들은 콘텐츠에서의 유사성들, 비디오 캡처 및 전달을 위한 새로운 해상도들 또는 프레임 레이트들, 자연스럽지 않은 이미저리(imagery)(예컨대, 레이더(radar) 이미저리 또는 다양한 센서들을 통해 캡처된 다른 이미저리) 등을 고려하지 않을 수 있다.
[0084] 선험적으로 정의된 압축 알고리즘들은 손실 압축 알고리즘들로 간주된다. 입력 이미지(또는 비디오 프레임)의 손실 압축에서, 입력 이미지는 정확한 입력 이미지가 재구성되도록 코딩된 다음 디코딩/재구성될 수 없다. 오히려, 손실 압축에서, 압축된 입력 이미지의 디코딩/재구성 후에 입력 이미지의 근사 버전이 생성된다. 손실 압축은 왜곡의 희생으로 비트 레이트를 감소시키는데, 이는 재구성된 이미지에 아티팩트들이 존재하게 한다. 따라서 손실 압축 시스템들에서는 레이트 왜곡 절충이 존재한다. 특정 압축 방법들(예컨대, 특히, JPEG, BPG)의 경우, 왜곡 기반 아티팩트들은 차단 또는 다른 아티팩트들의 형태를 취할 수 있다. 일부 경우들에서, 신경망 기반 압축이 사용될 수 있고, 이미지 데이터 및 비디오 데이터의 고품질 압축을 야기할 수 있다. 일부 경우들에서, 블러링(blurring) 및 컬러 시프트(shift)가 아티팩트들의 예들이다.
[0085] 비트 레이트가 입력 데이터의 실제 엔트로피(entropy) 미만으로 떨어질 때마다, 정확한 입력 데이터를 재구성하는 것이 어렵거나 불가능할 수 있다. 그러나 데이터의 압축/압축해제로부터 실현되는 왜곡/손실이 존재한다는 사실은 재구성된 이미지 또는 프레임이 아티팩트들을 가질 필요가 없다는 것을 의미하지는 않는다. 실제로, 압축된 이미지를 높은 시각적 품질을 갖는 다른 유사하지만 상이한 이미지로 재구성하는 것이 가능할 수 있다.
[0086] 일부 경우들에서, 압축 및 압축해제는 하나 이상의 ML(machine learning) 시스템들을 사용하여 수행될 수 있다. 일부 예들에서, 이러한 ML 기반 시스템들은 고품질 시각적 출력들을 생성하는 이미지 및/또는 비디오 압축을 제공할 수 있다. 일부 예들에서, 이러한 시스템들은 RD-AE(rate-distortion autoencoder)와 같은 심층 신경망(들)을 사용하여 콘텐츠(예컨대, 이미지 콘텐츠, 비디오 콘텐츠, 오디오 콘텐츠 등)의 압축 및 압축해제를 수행할 수 있다. 심층 신경망은 이미지들을 (예컨대, 한 세트의 코드들(z)을 포함하는) 잠재 코드 공간에 매핑하는 AE(autoencoder)를 포함할 수 있다. 잠재 코드 공간은 인코더 및 디코더에 의해 사용되며 콘텐츠가 코드들(z)로 인코딩된 코드 공간을 포함할 수 있다. 코드들(예컨대, 코드들(z))은 또한 잠재성들, 잠재 변수들 또는 잠재성 표현들로 지칭될 수 있다. 심층 신경망은 잠재 코드 공간으로부터 코드들(z)을 무손실 압축할 수 있는 (사전 또는 코드 모델로도 또한 지칭되는) 확률 모델을 포함할 수 있다. 확률 모델은 입력 데이터에 기초하여 인코딩된 데이터를 표현할 수 있는 한 세트의 코드들(z)에 걸쳐 확률 분포를 생성할 수 있다. 일부 경우들에서, 확률 분포는 (P(z))로서 표시될 수 있다.
[0087] 일부 예들에서, 심층 신경망은 확률 분포 P(z) 및/또는 한 세트의 코드들(z)에 기초하여 출력될 압축된 데이터를 포함하는 비트스트림을 생성하는 산술 코더(coder)를 포함할 수 있다. 압축된 데이터를 포함하는 비트스트림은 저장될 수 있고 그리고/또는 수신 디바이스에 송신될 수 있다. 수신 디바이스는 예를 들어, 산술 디코더, 확률(또는 코드) 모델, 및 AE의 디코더를 사용하여 비트스트림을 디코딩 또는 압축해제하기 위해 역 프로세스를 수행할 수 있다. 압축된 데이터를 포함하는 비트스트림을 생성한 디바이스는 또한, 압축된 데이터를 저장소로부터 리트리브할 때, 유사한 디코딩/압축해제 프로세스를 수행할 수 있다. 업데이트된 모델 파라미터들을 압축/인코딩하고 압축해제/디코딩하기 위해 유사한 기법이 수행될 수 있다.
[0088] 일부 예들에서, RD-AE는 (고속 및 저속 동작들을 포함하는) 다중 레이트(multi-rate) AE로서 수행하도록 훈련 및 동작될 수 있다. 예를 들어, 다중 레이트 AE의 인코더에 의해 생성된 잠재 코드 공간은 2개 이상의 청크(chunk)들로 분할될 수 있다(예컨대, 코드들(z)이 청크들(z1, z2)로 분할됨). 고속 동작에서, 다중 레이트 AE는 RD-AE에 대해 위에서 설명된 동작들과 유사하게, 데이터를 압축해제하기 위해 수신 디바이스에 의해 사용될 수 있는 전체 잠재 공간(예컨대, z1, z2 등을 포함하는 코드들(z))에 기반하는 비트스트림을 전송할 수 있다. 저속 동작에서, 수신 디바이스에 전송되는 비트스트림은 잠재 공간의 서브세트(예컨대, 청크 z2가 아닌 z1)에 기초한다. 수신 디바이스는 전송된 서브세트에 기초하여 잠재 공간의 나머지 부분을 추론할 수 있고, 잠재 공간의 서브세트 및 잠재 공간의 추론된 나머지 부분을 사용하여 재구성된 데이터를 생성할 수 있다.
[0089] RD-AE 또는 다중 레이트 AE를 사용하여 콘텐츠를 압축(및 압축해제)함으로써, 인코딩 및 디코딩 메커니즘들은 다양한 사용 사례들에 적응 가능할 수 있다. 기계 학습 기반 압축 기법들은 고품질 및/또는 감소된 비트 레이트를 갖는 압축된 콘텐츠를 생성할 수 있다. 일부 예들에서, RD-AE는 이미지 및/또는 비디오 데이터포인트들과 같은 데이터포인트들의 데이터세트에 걸쳐 평균 레이트 왜곡 손실을 최소화하도록 훈련될 수 있다. 일부 경우들에서, RD-AE는 또한 특정 데이터포인트가 수신기에 전송되어 수신기에 의해 디코딩되도록 미세 튜닝될 수 있다. 일부 예들에서, 데이터포인트에 대해 RD-AE를 미세 튜닝함으로써, RD-AE는 높은 압축(레이트/왜곡) 성능을 획득할 수 있다. RD-AE와 연관된 인코더는 비트스트림을 디코딩하기 위해 AE 모델 또는 AE 모델의 일부를 수신기(예컨대, 디코더)에 전송할 수 있다.
[0090] 일부 경우들에서, 신경망 압축 시스템은 (양자화된) 잠재 표현으로부터 입력 인스턴스(예컨대, 입력 이미지, 비디오, 오디오 등)를 재구성할 수 있다. 신경망 압축 시스템은 또한 잠재 표현을 무손실 압축하기 전에 사용할 수 있다. 일부 경우들에서, 신경망 압축 시스템은 테스트 시간(test-time) 데이터 분포가 알려져 있고 비교적 낮은 엔트로피(예컨대, 정적 장면을 보는 카메라, 자율 주행 자동차의 대시 캠(dash cam) 등)를 결정할 수 있으며, 미세 튜닝되거나 그러한 분포에 적응될 수 있다. 미세 튜닝 또는 적응은 개선된 RD(rate/distortion) 성능으로 이어질 수 있다. 일부 예들에서, 신경망 압축 시스템의 모델은 압축될 단일 입력 인스턴스에 적응될 수 있다. 신경망 압축 시스템은 모델 업데이트들을 제공할 수 있으며, 모델 업데이트들은 일부 예들에서, 잠재 표현과 함께 파라미터 공간 사전 분포(parameter-space prior)를 사용하여 양자화 및 압축될 수 있다.
[0091] 미세 튜닝은 모델 업데이트들을 전송함으로써 발생되는 추가 비용들 및 모델 양자화의 효과를 고려할 수 있다. 일부 예들에서, 신경망 압축 시스템은 RD 손실뿐만 아니라 모델 사전 분포 하에서 모델 업데이트들을 전송하는 데 필요한 비트들의 수를 측정하는 추가 모델 레이트 항()을 사용하여 미세 튜닝되어, 조합된 RDM 손실을 야기할 수 있다.
[0092] 도 4는 본 개시내용의 일부 예들에 따른, 송신 디바이스(410) 및 수신 디바이스(420)를 포함하는 시스템(400)을 예시하는 도면이다. 송신 디바이스(410) 및 수신 디바이스(420)는 각각, 일부 경우들에서 RD-AE로 지칭될 수 있다. 송신 디바이스(410)는 이미지 콘텐츠를 압축할 수 있고, 압축된 이미지 콘텐츠를 저장할 수 있고 그리고/또는 압축해제를 위해 압축된 이미지 콘텐츠를 수신 디바이스(420)에 송신할 수 있다. 수신 디바이스(420)는 압축된 이미지 콘텐츠를 압축해제할 수 있고, 압축해제된 이미지 콘텐츠를 (예컨대, 디스플레이, 편집 등을 위해) 수신 디바이스(420) 상에 출력할 수 있고 그리고/또는 압축해제된 이미지 콘텐츠를 수신 디바이스(420)에 접속된 다른 디바이스들(예컨대, 텔레비전, 모바일 디바이스 또는 다른 디바이스)에 출력할 수 있다. 일부 경우들에서, 수신 디바이스(420)는 (인코더(422)를 사용하여) 이미지 콘텐츠를 압축하고 압축된 이미지 콘텐츠를 저장하고 그리고/또는 다른 디바이스, 이를테면 송신 디바이스(410)에 송신함으로써 송신 디바이스가 될 수 있다(이 경우 송신 디바이스(410)가 수신 디바이스가 될 것임). 시스템(400)은 본 명세서에서 이미지 압축 및 압축해제와 관련하여 설명되지만, 당해 기술분야에서 통상의 지식을 가진 자는, 시스템(400)이 비디오 콘텐츠를 압축 및 압축해제하기 위해 본 명세서에서 설명되는 기법들을 사용할 수 있다고 인식할 것이다.
[0093] 도 4에 예시된 바와 같이, 송신 디바이스(410)는 이미지 압축 파이프라인을 포함하고, 수신 디바이스(420)는 이미지 비트스트림 압축해제 파이프라인을 포함한다. 송신 디바이스(410)에서의 이미지 압축 파이프라인 및 수신 디바이스(420)에서의 비트스트림 압축해제 파이프라인은 일반적으로, 본 개시내용의 양상들에 따라, 하나 이상의 인공 신경망들을 사용하여 이미지 콘텐츠를 압축하고 그리고/또는 수신된 비트스트림을 이미지 콘텐츠로 압축해제한다. 송신 디바이스(410)의 이미지 압축 파이프라인은 자동 인코더(401), 코드 모델(404) 및 산술 코더(406)를 포함한다. 일부 구현들에서, 산술 코더(406)는 선택적이며, 일부 경우들에는 생략될 수 있다. 수신 디바이스(420) 내의 이미지 압축해제 파이프라인은 자동 인코더(421), 코드 모델(424) 및 산술 디코더(426)를 포함한다. 일부 구현들에서, 산술 디코더(426)는 선택적이며, 일부 경우들에는 생략될 수 있다. 송신 디바이스(410)의 자동 인코더(401) 및 코드 모델(404)은 이전에 훈련되었고 이에 따라 훈련된 기계 학습 시스템의 동작 또는 추론 동안 동작들을 수행하도록 구성된 기계 학습 시스템으로서 도 4에 예시된다. 자동 인코더(421) 및 코드 모델(424)은 또한 이전에 훈련된 기계 학습 시스템으로서 예시된다.
[0094] 자동 인코더(401)는 인코더(402) 및 디코더(403)를 포함한다. 인코더(402)는 수신된 비압축 이미지 콘텐츠의 하나 이상의 이미지들의 픽셀들을 (코드들(z)을 포함하는) 잠재 코드 공간에 매핑함으로써 비압축 이미지 콘텐츠에 대해 손실 압축을 수행할 수 있다. 일반적으로, 인코더(402)는 압축된(또는 인코딩된) 이미지를 표현하는 코드들(z)이 이산 또는 이진이 되도록 구성될 수 있다. 이러한 코드들은 확률적 섭동 기법들, 소프트 벡터(soft vector) 양자화, 또는 별개의 코드들을 생성할 수 있는 다른 기법들에 기초하여 생성될 수 있다. 일부 양상들에서, 자동 인코더(401)는 압축되지 않은 이미지들을 압축 가능한(낮은 엔트로피) 분포를 갖는 코드들에 매핑할 수 있다. 이러한 코드들은 미리 정의된 또는 학습된 사전 분포에 대한 크로스 엔트로피(cross-entropy)에 가까울 수 있다.
[0095] 일부 예들에서, 자동 인코더(401)는 컨볼루션 아키텍처를 사용하여 구현될 수 있다. 예컨대, 일부 경우들에서, 자동 인코더(401)는, 자동 인코더(401)가 이미지 콘텐츠를 잠재 코드 공간에 매핑하기 위한 공간 필터들을 학습하도록 2차원 CNN(convolutional neural network)으로서 구성될 수 있다. 시스템(400)이 비디오 데이터를 코딩하기 위해 사용되는 예들에서, 자동 인코더(401)는, 자동 인코더(401)가 비디오를 잠재 코드 공간에 매핑하기 위한 시공간 필터들을 학습하도록 3차원 CNN으로서 구성될 수 있다. 이러한 네트워크에서, 자동 인코더(401)는 키(key) 프레임(예컨대, 프레임들의 시퀀스의 시작을 표시하는 초기 프레임, 여기서 시퀀스 내의 후속 프레임들은 시퀀스의 초기 프레임에 대한 차이로서 설명됨), 키 프레임과 비디오의 다른 프레임들 사이의 워핑(warping)(또는 차이들), 및 잔차 팩터(factor)의 관점에서 비디오를 인코딩할 수 있다. 다른 양상들에서, 자동 인코더(401)는 이전 프레임들, 프레임들 사이의 잔차 팩터, 및 채널들을 적층하거나 반복 계층들을 포함하는 것을 통해 컨디셔닝(condition)하는 것을 통해 컨디셔닝된 2차원 신경망으로서 구현될 수 있다.
[0096] 자동 인코더(401)의 인코더(402)는 (도 4에서 이미지(x)로 표기된) 제1 이미지를 입력으로서 수신할 수 있고, 제1 이미지(x)를 잠재 코드 공간의 코드(z)에 매핑할 수 있다. 위에서 언급된 바와 같이, 인코더(402)는 잠재 코드 공간이 각각의 (x, y) 포지션에, 그 포지션을 중심으로 하는 이미지(x)의 블록을 설명하는 벡터를 갖는 2차원 컨볼루션 네트워크로서 구현될 수 있다. x 좌표는 이미지(x)의 블록에서 수평 픽셀 위치를 나타낼 수 있고, y 좌표는 이미지(x)의 블록에서 수직 픽셀 위치를 나타낼 수 있다. 비디오 데이터를 코딩할 때, 잠재 코드 공간은 t 변수 또는 포지션을 가질 수 있으며, t 변수는 (공간 x 좌표 및 y 좌표에 추가하여) 비디오 데이터의 블록에서 타임스탬프(timestamp)를 표현한다. 수평 및 수직 픽셀 포지션들의 2개의 차원들을 사용함으로써, 벡터는 이미지(x)에서 이미지 패치(patch)를 설명할 수 있다.
[0097] 그 다음, 자동 인코더(401)의 디코더(403)는 코드(z)를 압축해제하여 제1 이미지(x)의 재구성()을 획득할 수 있다. 일반적으로, 재구성()은 압축되지 않은 제1 이미지()의 근사치일 수 있고, 제1 이미지()의 정확한 사본일 필요는 없다. 일부 경우들에서, 재구성된 이미지()는 송신 디바이스에서의 저장을 위해 압축된 이미지 파일로서 출력될 수 있다.
[0098] 코드 모델(404)은 인코딩된 이미지 또는 인코딩된 이미지의 일부를 나타내는 코드(z)를 수신하고, 코드(z)를 표현하는 데 사용될 수 있는 한 세트의 압축된 코드워드(codeword)들에 걸쳐 확률 분포 P(z)를 생성한다. 일부 예들에서, 코드 모델(404)은 확률적 자동 회귀 생성 모델을 포함할 수 있다. 일부 경우들에서, 확률 분포가 생성될 수 있는 코드들은 산술 코더(406)에 기초하여 비트 할당을 제어하는 학습된 분포를 포함한다. 예를 들어, 산술 코더(406)를 사용하여, 제1 코드(z)에 대한 압축 코드가 독립적으로 예측될 수 있고; 제2 코드(z)에 대한 압축 코드는 제1 코드(z)에 대한 압축 코드에 기반하여 예측될 수 있으며; 제3 코드(z)에 대한 압축 코드는 제1 코드(z) 및 제2 코드(z)에 대한 압축 코드들에 기반하여 예측될 수 있는 식이다. 압축 코드들은 일반적으로, 압축될 주어진 이미지의 상이한 시공간 청크들을 표현한다.
[0099] 일부 양상들에서, z는 3차원 텐서(tensor)로서 표현될 수 있다. 텐서의 3개의 차원들은 특징 채널 차원, 및 (예컨대, 코드()로 표시되는) 높이 및 폭 공간 차원들을 포함할 수 있다. (수평 및 수직 포지션 및 채널로 인덱싱(index)된 코드를 나타내는) 각각의 코드()는 이전 코드를 기초로 예측될 수 있으며, 이 코드는 코드들의 고정된 그리고 이론상 임의의 순서일 수 있다. 일부 예들에서, 코드들은 주어진 이미지 파일을 처음부터 끝까지 분석하고 래스터 스캔(raster scan) 순서로 이미지의 각각의 블록을 분석함으로써 생성될 수 있다.
[0100] 코드 모델(404)은 확률적 자동 회귀 모델을 사용하여 입력 코드(z)에 대한 확률 분포를 학습할 수 있다. 확률 분포는 (위에서 설명된 바와 같이) 자신의 이전 값들에 따라 컨디셔닝될 수 있다. 일부 예들에서, 확률 분포는 다음 식으로 표현될 수 있으며:
여기서 c는 모든 이미지 채널들(C)(예컨대, R, G 및 B 채널들, Y, Cb 및 Cr 채널들, 또는 다른 채널들)에 대한 채널 인덱스이고, w는 총 이미지 프레임 폭(W)에 대한 폭 인덱스이고, h는 총 이미지 프레임 높이(H)에 대한 높이 인덱스이다.
[0101] 일부 예들에서, 확률 분포 P(z)는 인과적 컨볼루션들의 완전한 컨볼루션 신경망에 의해 예측될 수 있다. 일부 양상들에서, 컨볼루션 신경망의 각각의 계층의 커널들은 컨볼루션 네트워크가 이전 값들()을 인지하고 확률 분포의 계산에서 다른 값들을 인지하지 못할 수 있도록 마스킹(mask)될 수 있다. 일부 양상들에서, 컨볼루션 네트워크의 최종 계층은, 잠재 공간 내의 코드가 입력 값에 대해 적용 가능할 확률(예컨대, 주어진 코드가 주어진 입력을 압축하기 위해 사용될 수 있는 가능성)을 결정하는 소프트맥스 함수를 포함할 수 있다.
[0102] 산술 코더(406)는 코드 모델(404)에 의해 생성된 확률 분포 P(z)를 사용하여, 코드(z)의 예측에 대응하는 (도 4에서 "0010011…"로 도시된) 비트스트림(415)을 생성한다. 코드(z)의 예측은, 한 세트의 가능한 코드들에 걸쳐 생성된 확률 분포 P(z)에서 가장 높은 확률 스코어를 갖는 코드로서 표현될 수 있다. 일부 양상들에서, 산술 코더(406)는 코드(z)의 예측의 정확도 및 자동 인코더(401)에 의해 생성된 실제 코드(z)를 기초로 가변 길이의 비트스트림을 출력할 수 있다. 예를 들어, 비트스트림(415)은 예측이 정확하다면 짧은 코드워드에 대응할 수 있는 반면, 비트스트림(415)은 코드(z)와 코드(z)의 예측 간의 차이의 크기가 증가함에 따라 더 긴 코드워드들에 대응할 수 있다.
[0103] 일부 경우들에서, 비트스트림(415)은 압축된 이미지 파일로의 저장을 위해 산술 코더(406)에 의해 출력될 수 있다. 비트스트림(415)은 또한 요청 디바이스(예컨대, 도 4에 예시된 바와 같은 수신 디바이스(420))로의 송신을 위해 출력될 수 있다. 일반적으로, 산술 코더(406)에 의해 출력된 비트스트림(415)은 압축된 이미지 파일에 적용된 압축해제 프로세스들 동안 z가 정확하게 복구될 수 있도록 z를 무손실 인코딩할 수 있다.
[0104] 산술 코더(406)에 의해 생성되고 송신 디바이스(410)로부터 송신되는 비트스트림(415)은 수신 디바이스(420)에 의해 수신될 수 있다. 송신 디바이스(410)와 수신 디바이스(420) 간의 송신은 다양한 적합한 유선 또는 무선 통신 기술들 중 임의의 기술을 사용하여 발생할 수 있다. 송신 디바이스(410)와 수신 디바이스(420) 간의 통신은 직접적일 수 있거나 또는 하나 이상의 네트워크 인프라구조(infrastructure) 컴포넌트들(예컨대, 기지국들, 중계국들, 이동국들, 네트워크 허브(hub)들, 라우터(router)들 및/또는 다른 네트워크 인프라구조 컴포넌트들)을 통해 수행될 수 있다.
[0105] 예시된 바와 같이, 수신 디바이스(420)는 산술 디코더(426), 코드 모델(424) 및 자동 인코더(421)를 포함할 수 있다. 자동 인코더(421)는 인코더(422) 및 디코더(423)를 포함한다. 디코더(423)는 주어진 입력에 대해, 디코더(403)와 동일한 또는 유사한 출력을 생성할 수 있다. 자동 인코더(421)는 인코더(422)를 포함하는 것으로 예시되지만, 인코더(422)는 송신 디바이스(410)로부터 수신된 코드(z)로부터 (예컨대, 송신 디바이스(410)에서 압축된 원본 이미지(x)의 근사치)를 획득하기 위해 디코딩 프로세스 동안 사용될 필요가 없다.
[0106] 수신된 비트스트림(415)은 산술 디코더(426)에 입력되어 비트스트림으로부터 하나 이상의 코드들(z)을 획득할 수 있다. 산술 디코더(426)는 한 세트의 가능한 코드들 및 각각의 생성된 코드(z)를 비트스트림과 연관시키는 정보에 대해 코드 모델(424)에 의해 생성된 확률 분포 P(z)를 기초로, 압축해제된 코드(z)를 추출할 수 있다. 비트스트림의 수신된 부분 및 다음 코드(z)의 확률적 예측이 주어지면, 산술 디코더(426)는 송신 디바이스(410)에서 산술 코더(406)에 의해 인코딩된 새로운 코드(z)를 생성할 수 있다. 새로운 코드(z)를 사용하여, 산술 디코더(426)는 연속적인 코드(z)에 대한 확률론적 예측을 수행하고, 비트스트림의 추가 부분을 판독할 수 있으며, 전체 수신된 비트스트림이 디코딩될 때까지 연속적인 코드(z)를 디코딩할 수 있다. 압축해제된 코드(z)는 자동 인코더(421)의 디코더(423)에 제공될 수 있다. 디코더(423)는 코드(z)를 압축해제하고 이미지 콘텐츠(x)의 (재구성된 또는 디코딩된 이미지로 지칭될 수 있는) 근사치()를 출력한다. 일부 경우들에서, 콘텐츠(x)의 근사치()는 추후의 리트리브(retrieval)를 위해 저장될 수 있다. 일부 경우들에서, 콘텐츠(x)의 근사치()는 수신 디바이스(420)에 의해 복구될 수 있고 수신 디바이스(420)에 통신 가능하게 결합되거나 수신 디바이스(420)와 통합된 스크린 상에 디스플레이될 수 있다.
[0107] 위에서 언급된 바와 같이, 송신 디바이스(410)의 자동 인코더(401) 및 코드 모델(404)은 이전에 훈련된 기계 학습 시스템으로서 도 4에 예시된다. 일부 양상들에서, 자동 인코더(401) 및 코드 모델(404)은 이미지 데이터를 사용하여 함께 훈련될 수 있다. 예컨대, 자동 인코더(401)의 인코더(402)는 입력으로서 제1 훈련 이미지(n)를 수신할 수 있고, 제1 훈련 이미지(n)를 잠재 코드 공간의 코드(z)에 매핑할 수 있다. 코드 모델(404)은 (위에서 설명된 기법들과 유사한) 확률적 자동 회귀 모델을 사용하여 코드(z)에 대한 확률 분포 를 학습할 수 있다. 산술 코더(406)는 코드 모델(404)에 의해 생성된 확률 분포 를 사용하여 이미지 비트스트림을 생성할 수 있다. 코드 모델(404)로부터의 비트스트림 및 확률 분포 를 사용하여, 산술 코더(406)는 코드(z)를 사용할 수 있고, 코드(z)를 자동 인코더(401)의 디코더(403)에 출력할 수 있다. 그 다음, 디코더(403)는 코드(z)를 압축해제하여 제1 훈련 이미지(n)의 재구성()을 획득할 수 있다(재구성()은 압축되지 않은 제1 훈련 이미지(n)의 근사치이다).
[0108] 일부 경우들에서, 송신 디바이스(410)의 훈련 동안 사용되는 역전파 엔진(engine)은 하나 이상의 손실 함수들에 기초하여 자동 인코더(401) 및 코드 모델(404)의 신경망의 파라미터들(예컨대, 가중치들, 바이어스들 등)을 튜닝하도록 역전파 프로세스를 수행할 수 있다. 일부 경우들에서, 역전파 프로세스는 확률적 기울기 하강 기법들에 기반할 수 있다. 역전파는 포워드 패스, 하나 이상의 손실 함수들, 백워드 패스 및 가중치(및/또는 다른 파라미터(들)) 업데이트를 포함할 수 있다. 포워드 패스, 손실 함수, 백워드 패스 및 파라미터 업데이트가 하나의 훈련 반복에 대해 수행될 수 있다. 프로세스는 신경망의 가중치들 및/또는 다른 파라미터들이 정확하게 튜닝될 때까지 훈련 데이터의 각각의 세트에 대해 특정 횟수의 반복들 동안 반복될 수 있다.
[0109] 예를 들어, 자동 인코더(401)는 n을 비교하여 제1 훈련 이미지(n)와 재구성된 제1 훈련 이미지() 간의 (예컨대, 거리 벡터 또는 다른 차이 값으로 표현된) 손실을 결정할 수 있다. 손실 함수는 출력의 에러를 분석하는 데 사용될 수 있다. 일부 예들에서, 손실은 최대 가능성에 기반할 수 있다. 비압축 이미지(n)를 입력으로서 그리고 재구성된 이미지()를 출력으로서 사용하는 하나의 예시적인 예에서, 손실 함수(Loss = D + beta * R)는 자동 인코더(401) 및 코드 모델(404)의 신경망 시스템을 훈련시키는 데 사용될 수 있으며, 여기서 R은 레이트이고, D는 왜곡이고, *는 곱셈 함수를 나타내며, beta는 비트 레이트를 정의하는 값으로 설정되는 절충 파라미터이다. 다른 예에서, 손실 함수 은 자동 인코더(401) 및 코드 모델(404)의 신경망 시스템을 훈련시키는 데 사용될 수 있다. 일부 경우들에서, 이를테면 다른 훈련 데이터가 사용될 때, 다른 손실 함수들이 사용될 수 있다. 다른 손실 함수의 일례는 으로서 정의되는 MSE(mean squared error)를 포함한다. MSE는 1/2*(실제 해답 - 예측(출력) 해답)2의 합을 계산한다.
[0110] 결정된 손실(예컨대, 거리 벡터 또는 다른 차이 값)에 기반하여 그리고 역전파 프로세스를 사용하여, 자동 인코더(401) 및 코드 모델(404)의 신경망 시스템의 파라미터들(예컨대, 가중치들, 바이어스들 등)이 입력된 비압축 이미지들과 자동 인코더(401)에 의해 출력으로서 생성된 압축된 이미지 콘텐츠 사이의 손실을 감소시키도록 조정될 수 있다(수신된 이미지 콘텐츠와 잠재 코드 공간 사이의 매핑들을 효과적으로 조정함).
[0111] 제1 훈련 이미지들에 대해 손실(또는 에러)은 높을 수 있는데, 이는 실제 출력 값들(재구성된 이미지)이 입력 이미지와 매우 상이할 수 있기 때문이다. 훈련의 목표는 예측된 출력에 대한 손실의 양을 최소화하는 것이다. 신경망은 (대응하는 가중치들을 갖는) 신경망의 어느 노드들이 신경망의 손실에 가장 많이 기여했는지를 결정함으로써 백워드 패스를 수행할 수 있고, 손실이 감소하고 결국 최소화되도록 가중치들(및/또는 다른 파라미터들)을 조정할 수 있다. 가중치들에 대한 손실의 도함수(, 여기서 는 특정 계층에서의 가중치들임)가 컴퓨팅되어, 신경망의 손실에 가장 많이 기여한 가중치들을 결정할 수 있다. 예를 들어, 가중치들이 기울기의 반대 방향으로 변하도록 가중치들이 업데이트될 수 있다. 가중치 업데이트는 로서 표기될 수 있으며, 여기서 는 가중치를 표기하고, 는 초기 가중치를 표기하며,
Figure pct00029
는 학습 레이트를 표기한다. 학습 레이트는 임의의 적절한 값으로 설정될 수 있으며, 높은 학습 레이트는 더 큰 가중치 업데이트들을 포함하고, 더 낮은 값은 더 작은 가중치 업데이트들을 표시한다.
[0112] 자동 인코더(401) 및 코드 모델(404)의 신경망 시스템은 원하는 출력이 달성될 때까지 그러한 방식으로 계속 훈련될 수 있다. 예를 들어, 자동 인코더(401) 및 코드 모델(404)은 역전파 프로세스를 반복하여, 입력 이미지(n)와 생성된 코드(z)의 압축해제로부터 야기된 재구성된 이미지() 간의 차이를 최소화하거나 아니면 감소시킬 수 있다.
[0113] 자동 인코더(421) 및 코드 모델(424)은, 송신 디바이스(410)의 자동 인코더(401) 및 코드 모델(404)을 훈련시키기 위해 위에서 설명된 것과 유사한 기법들을 사용하여 훈련될 수 있다. 일부 경우들에서, 자동 인코더(421) 및 코드 모델(424)은 송신 디바이스(410)의 자동 인코더(401) 및 코드 모델(404)을 훈련하는 데 사용된 동일한 또는 상이한 훈련 데이터세트를 사용하여 훈련될 수 있다.
[0114] 도 4에 도시된 예에서, 레이트 왜곡 자동 인코더들(송신 디바이스(410) 및 수신 디바이스(420))은 비트 레이트에 따른 추론에서 훈련 및 실행된다. 레이트 왜곡 자동 인코더는 잠재 코드들(z)에서 다양한 양의 정보가 제공될 때 (예컨대, 입력 이미지에 대한 왜곡으로 인한 제한된 아티팩트들 없이 또는 이러한 아티팩트들과 함께) 고품질의 재구성된 이미지들 또는 비디오 프레임들의 생성 및 출력을 가능하게 하도록 다수의 비트 레이트들로 훈련될 수 있다.
[0115] 일부 구현들에서, 잠재 코드들(z)은 적어도 2개의 청크들(z1, z2)로 분할될 수 있다. RD-AE 모델이 고속 설정에서 사용될 때, 두 청크들 모두가 디코딩을 위해 디바이스에 송신된다. 레이트 왜곡 자동 인코더 모델이 저속 설정에서 사용될 때는, 청크 z1만이 송신되고, 청크 z2는 디코더 측에서 z1로부터 추론된다. 아래에서 더 상세히 설명되는 바와 같이, z1로부터의 z2의 추론은 다양한 기법들을 사용하여 수행될 수 있다.
[0116] 일부 구현들에서, (예컨대, 많은 양의 정보를 전달할 수 있는) 연속 잠재성들 및 (예컨대, 더 적은 정보를 포함하는) 대응하는 양자화된 이산 잠재성들의 세트가 사용될 수 있다. RD-AE 모델을 훈련한 후에, 보조 역양자화 모델이 훈련될 수 있다. 일부 경우들에서, RD-AE를 사용할 때, 이산 잠재성들만이 송신되고, 이산 잠재성들로부터 연속 잠재성들을 추론하기 위해 디코더 측에서 보조 역양자화 모델이 사용된다.
[0117] 시스템(400)이 특정 컴포넌트들을 포함하는 것으로 도시되지만, 당해 기술분야에서 통상의 지식을 가진 자는 시스템(400)이 도 4에 도시된 컴포넌트들보다 더 많은 또는 더 적은 컴포넌트들을 포함할 수 있다고 인식할 것이다. 예를 들어, 시스템(400)의 송신 디바이스(410) 및/또는 수신 디바이스(420)는 또한 일부 경우들에서, 하나 이상의 메모리 디바이스들(예컨대, RAM, ROM, 캐시 등), 하나 이상의 네트워킹 인터페이스들(예컨대, 유선 및/또는 무선 통신 인터페이스들 등), 하나 이상의 디스플레이 디바이스들, 및/또는 도 4에 도시되지 않은 다른 하드웨어 또는 프로세싱 디바이스들을 포함할 수 있다. 도 4에 도시된 컴포넌트들 및/또는 시스템(400)의 다른 컴포넌트들은 하나 이상의 컴퓨팅 또는 프로세싱 컴포넌트들을 사용하여 구현될 수 있다. 하나 이상의 컴퓨팅 컴포넌트들은 CPU(central processing unit), GPU(graphics processing unit), DSP(digital signal processor) 및/또는 ISP(image signal processor)를 포함할 수 있다. 시스템(1600)으로 구현될 수 있는 컴퓨팅 디바이스 및 하드웨어 컴포넌트들의 예시적인 예는 아래에서 도 16과 관련하여 설명된다.
[0118] 시스템(400)은 컴퓨팅 디바이스 또는 다수의 컴퓨팅 디바이스들의 일부이거나 또는 컴퓨팅 디바이스 또는 다수의 컴퓨팅 디바이스들에 의해 구현될 수 있다. 일부 예들에서, 송신 디바이스(410)는 제1 디바이스의 일부일 수 있고, 수신 디바이스(420)는 제2 컴퓨팅 디바이스의 일부일 수 있다. 일부 예들에서, 송신 디바이스(410) 및/또는 수신 디바이스(420)는 전자 디바이스(또는 디바이스들), 이를테면 전화 시스템(예컨대, 스마트폰, 셀룰러 전화, 회의 시스템 등), 데스크톱 컴퓨터, 랩톱 또는 노트북 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 스마트 텔레비전, 디스플레이 디바이스, 게이밍 콘솔, 비디오 스트리밍 디바이스, SOC, IoT(Internet-of-Things) 디바이스, 스마트 웨어러블 디바이스(예컨대, HMD(head-mounted display), 스마트 안경 등), 카메라 시스템(예컨대, 디지털 카메라, IP 카메라, 비디오 카메라, 보안 카메라 등), 또는 임의의 다른 적절한 전자 디바이스(들)의 일부로서 포함될 수 있다. 일부 경우들에서, 시스템(400)은 도 1에 도시된 이미지 프로세싱 시스템(100)에 의해 구현될 수 있다. 다른 경우들에서, 시스템(400)은 하나 이상의 다른 시스템들 또는 디바이스들에 의해 구현될 수 있다.
[0119] 도 5a는 예시적인 신경망 압축 시스템(500)을 예시하는 도면이다. 일부 예들에서, 신경망 압축 시스템(500)은 RD-AE 시스템을 포함할 수 있다. 도 5a에서, 신경망 압축 시스템(500)은 인코더(502), 산술 인코더(508), 산술 디코더(512) 및 디코더(514)를 포함한다. 일부 경우들에서, 인코더(502) 및/또는 디코더(514)는 각각 인코더(402) 및/또는 디코더(403)와 동일할 수 있다. 다른 경우들에서, 인코더(502) 및/또는 디코더(514)는 인코더(402) 및/또는 디코더(403)와 각각 상이할 수 있다.
[0120] 인코더(502)는 입력으로서 이미지(501)(이미지())를 수신할 수 있고, 이미지(501)(이미지())를 잠재 코드 공간의 잠재 코드(504)(잠재성())로 매핑 및/또는 변환할 수 있다. 이미지(501)는 프레임들의 시퀀스(예컨대, 비디오)와 연관된 정지 이미지 및/또는 비디오 프레임을 나타낼 수 있다. 일부 경우들에서, 인코더(502)는 포워드 패스를 수행하여 잠재 코드(504)를 생성할 수 있다. 일부 예들에서, 인코더(502)는 학습 가능한 함수를 구현할 수 있다. 일부 경우들에서, 인코더(502)는 φ로 파라미터화(parameterize)된 학습 가능한 함수를 구현할 수 있다. 예를 들어, 인코더(502)는 함수 를 구현할 수 있다. 일부 예들에서, 학습 가능한 함수는 디코더(514)와 공유되거나 디코더(514)에 의해 알려질 필요가 없다.
[0121] 산술 인코더(508)는 잠재 코드(504)(잠재성(z i )) 및 잠재 사전 분포(latent prior)(506)에 기초하여 비트스트림(510)을 생성할 수 있다. 일부 예들에서, 잠재 사전 분포(506)는 학습 가능한 함수를 구현할 수 있다. 일부 경우들에서, 잠재 사전 분포(506)는 에 의해 파라미터화된 학습 가능한 함수를 구현할 수 있다. 예를 들어, 잠재 사전 분포(506)는 함수 를 구현할 수 있다. 잠재 사전 분포(506)는 무손실 압축을 사용하여 잠재 코드(504)(잠재성())를 비트스트림(510)으로 변환하는 데 사용될 수 있다. 잠재 사전 분포(506)는 전송기 측(예컨대, 인코더(502) 및/또는 산술 인코더(508))과 수신기 측(예컨대, 산술 디코더(512) 및/또는 디코더(514)) 모두에서 공유되고 그리고/또는 이용 가능하게 될 수 있다.
[0122] 산술 디코더(512)는 산술 인코더(508)로부터 인코딩된 비트스트림(510)을 수신하고, 잠재 사전 분포(506)를 사용하여, 인코딩된 비트스트림(510) 내의 잠재 코드(504)(잠재성())를 디코딩할 수 있다. 디코더(514)는 잠재 코드(504)(잠재성())를 근사 재구성 이미지(516)(재구성())로 디코딩할 수 있다. 일부 경우들에서, 디코더(514)는 θ로 파라미터화된 학습 가능한 함수를 구현할 수 있다. 예를 들어, 디코더(514)는 함수 를 구현할 수 있다. 디코더(514)에 의해 구현되는 학습 가능한 함수는 전송기 측(예컨대, 인코더(502) 및/또는 산술 인코더(508))과 수신기 측(예컨대, 산술 디코더(512) 및/또는 디코더(514)) 모두에서 공유되고 그리고/또는 이용 가능하게 될 수 있다.
[0123] 신경망 압축 시스템(500)은 레이트 왜곡을 최소화하도록 훈련될 수 있다. 일부 예들에서, 레이트는 비트스트림(510)(비트스트림 b)의 길이를 반영하고, 왜곡은 이미지(501)(이미지())와 재구성 이미지(516)(재구성()) 사이의 왜곡을 반영한다. 특정 레이트 왜곡 비율에 대한 모델을 훈련하기 위해 파라미터(β)가 사용될 수 있다. 일부 예들에서, 파라미터(β)는 레이트와 왜곡 사이의 특정 절충을 정의 및/또는 구현하는 데 사용될 수 있다.
[0124] 일부 예들에서, 손실은 다음과 같이: 로 표기될 수 있으며, 여기서 함수 E는 기대값이다. 왜곡 는 예를 들어, MSE(mean squared error)와 같은 손실 함수에 기초하여 결정될 수 있다. 일부 예들에서, 항들은 왜곡 를 표시 및/또는 표현할 수 있다.
[0125] 잠재성들을 전송하기 위한 레이트는 로서 표기될 수 있다. 일부 예들에서, 항들은 레이트 를 표시 및/또는 표현할 수 있다. 일부 경우들에서, 손실은 전체 데이터세트(D)에 대해 다음과 같이 최소화될 수 있다: .
[0126] 도 5b는 추론 프로세스를 구현하기 위한 예시적인 신경망 압축 시스템(530)을 예시하는 도면이다. 도시된 바와 같이, 인코더(502)는 이미지(501)를 잠재 코드(504)로 변환할 수 있다. 일부 예들에서, 이미지(501)는 프레임들의 시퀀스(예컨대, 비디오)와 연관된 스틸 이미지 및/또는 비디오 프레임을 표현할 수 있다.
[0127] 일부 예들에서, 인코더(502)는 단일 포워드 패스 를 사용하여 이미지(501)를 인코딩할 수 있다. 그 다음, 산술 인코더(508)는 잠재 사전 분포(506) 하에서 잠재 코드(504)(잠재성())의 산술 코딩을 수행하여 비트스트림(520)을 생성할 수 있다. 일부 예들에서, 산술 인코더(508)는 다음과 같이 비트스트림(520)을 생성할 수 있다: .
[0128] 산술 디코더(512)는 산술 인코더(508)로부터 비트스트림(510)을 수신하고, 잠재 사전 분포(506) 하에서 잠재 코드(504)(잠재성())의 산술 디코딩을 수행할 수 있다. 일부 예들에서, 산술 디코더(512)는 비트스트림(520)으로부터 다음과 같이 잠재 코드(504)를 디코딩할 수 있다: . 디코더(514)는 잠재 코드(504)(잠재성())를 디코딩하고 재구성 이미지(516)(재구성())를 생성할 수 있다. 일부 예들에서, 디코더(514)는 다음과 같이 단일 포워드 패스를 사용하여 잠재 코드(504)(잠재성())를 디코딩할 수 있다: .
[0129] 일부 예들에서, RD-AE 시스템은 한 세트의 훈련 데이터를 사용하여 훈련될 수 있고, 수신기(예컨대, 디코더)에 송신될 그리고 수신기에 의해 디코딩될 데이터포인트(예컨대, 이미지 데이터, 비디오 데이터, 오디오 데이터)에 대해 추가로 미세 튜닝될 수 있다. 예를 들어, 추론 시점에, RD-AE 시스템은 수신기에 송신되는 이미지 데이터에 대해 미세 튜닝될 수 있다. 압축 모델들은 일반적으로 크기 때문에, 모델과 연관된 파라미터들을 수신기에 전송하는 것은 네트워크(예컨대, 대역폭 등), 저장소 및 컴퓨팅 자원들과 같은 자원들의 관점에서 매우 비용이 많이 들 수 있다. 일부 경우들에서, RD-AE 시스템은 압축되는 단일 데이터포인트에 대해 미세 튜닝될 수 있고, 압축해제를 위해 수신기에 전송될 수 있다. 이는, 압축/압축해제 효율, 성능 및/또는 품질을 유지 및/또는 증가시키면서, 수신기에 전송되는 정보의 양(및 연관된 비용)을 제한할 수 있다.
[0130] 도 6은 모델 사전 분포를 사용하여 미세 튜닝된 예시적인 신경망 압축 시스템에 의해 구현되는 예시적인 추론 프로세스를 예시하는 도면이다. 일부 예들에서, 신경망 압축 시스템(600)은 RDM-AE 모델 사전 분포를 사용하여 미세 튜닝된 RD-AE 시스템을 포함할 수 있다. 일부 경우들에서, 신경망 압축 시스템(600)은 모델 사전 분포를 사용하여 미세 튜닝된 AE 모델을 포함할 수 있다.
[0131] 이 예시적인 예에서, 신경망 압축 시스템(600)은 인코더(602), 산술 인코더(608), 산술 디코더(612), 디코더(614), 모델 사전 분포(616) 및 잠재 사전 분포(606)를 포함한다. 일부 경우들에서, 인코더(602)는 인코더(402) 또는 인코더(502)와 동일하거나 상이할 수 있고, 디코더(614)는 디코더(403) 또는 디코더(514)와 동일하거나 상이할 수 있다. 산술 인코더(608)는 산술 코더(406) 또는 산술 인코더(508)와 동일하거나 상이할 수 있고, 산술 디코더(612)는 산술 디코더(426) 또는 산술 디코더(512)와 동일하거나 상이할 수 있다.
[0132] 신경망 압축 시스템(600)은 이미지(601)에 대한 잠재 코드(604)(잠재성())를 생성할 수 있다. 신경망 압축 시스템(600)은 잠재 코드(604) 및 잠재 사전 분포(606)을 사용하여 이미지(601)(이미지())를 인코딩하고, 재구성 이미지(620)(재구성())를 생성하기 위해 수신기에 의해 사용될 수 있는 비트스트림(610)을 생성할 수 있다. 일부 예들에서, 이미지(601)는 프레임들의 시퀀스(예컨대, 비디오)와 연관된 스틸 이미지 및/또는 비디오 프레임을 표현할 수 있다.
[0133] 일부 예들에서, 신경망 압축 시스템(600)은 RDM-AE 손실을 사용하여 미세 튜닝될 수 있다. 신경망 압축 시스템(600)은 RDM(rate-distortion-model rate) 손실을 최소화함으로써 훈련될 수 있다. 일부 예들에서는, 인코더 측에서, AE 모델은 다음과 같은 RDM 손실을 사용하여 이미지(601)(이미지())에 대해 미세 튜닝될 수 있다: .
[0134] 미세 튜닝된 인코더(602)는 이미지(601)(이미지(x i ))를 인코딩하여 잠재 코드(604)를 생성할 수 있다. 일부 경우들에서, 미세 튜닝된 인코더(602)는 다음과 같이 단일 포워드 패스 를 사용하여 이미지(601)(이미지())를 인코딩할 수 있다. 산술 인코더(608)는 잠재 사전 분포(606)를 사용하여 잠재 코드(604)를 산술 디코더(612)에 대한 비트스트림(610)으로 변환할 수 있다. 산술 인코더(608)는 모델 사전 분포(616) 하에서 미세 튜닝된 디코더(614) 및 미세 튜닝된 잠재 사전 분포(606)의 파라미터들을 엔트로피 코딩하고, 미세 튜닝된 디코더(614) 및 미세 튜닝된 잠재 사전 분포(606)의 압축된 파라미터들을 포함하는 비트스트림(611)을 생성할 수 있다. 일부 예들에서, 비트스트림(611)은 미세 튜닝된 디코더(614) 및 미세 튜닝된 잠재 사전 분포(606)의 업데이트된 파라미터들을 포함할 수 있다. 업데이트된 파라미터들은 예를 들어, 베이스라인(baseline) 디코더 및 잠재 사전 분포, 이를테면 디코더(614) 및 미세 튜닝 이전 잠재 사전 분포(606)에 대한 파라미터 업데이트들을 포함할 수 있다.
[0135] 일부 경우들에서, 미세 튜닝된 잠재 사전 분포(606)는 다음과 같이 모델 사전 분포(616) 하에서 엔트로피 코딩될 수 있으며, 미세 튜닝된 디코더(614)는 다음과 같이 모델 사전 분포(616) 하에서 엔트로피 코딩될 수 있고, 잠재 코드(604)(잠재성(z i ))는 다음과 같이 미세 튜닝된 잠재 사전 분포(606) 하에서 엔트로피 코딩될 수 있다. 일부 경우들에서, 디코더 측에서, 미세 튜닝된 잠재 사전 분포(606)는 다음과 같이 모델 사전 분포(616) 하에서 엔트로피 코딩될 수 있으며, 미세 튜닝된 디코더(614)는 다음과 같이 모델 사전 분포(616) 하에서 엔트로피 코딩될 수 있고, 잠재 코드(604) (잠재성(z i ))는 다음과 같이 미세 튜닝된 잠재 사전 분포(606) 하에서 엔트로피 코딩될 수 있다.
[0136] 디코더(614)는 잠재 코드(604)(잠재성(z i ))를 근사 재구성 이미지(620)(재구성())로 디코딩할 수 있다. 일부 예들에서, 디코더(614)는 다음과 같은 미세 튜닝된 디코더의 단일 포워드 패스 를 사용하여 잠재 코드(604)를 디코딩할 수 있다.
[0137] 이전에 설명된 바와 같이, 신경망 압축 시스템(600)은 RDM 손실을 최소화함으로써 훈련될 수 있다. 일부 경우들에서, 레이트는 비트스트림 b(예컨대, 비트스트림(610 및/또는 611))의 길이를 반영할 수 있고, 왜곡은 입력 이미지(601)(이미지())와 재구성 이미지(620)(재구성()) 사이의 왜곡을 반영할 수 있으며, 모델 레이트는 모델 업데이트들(예컨대, 업데이트된 파라미터들)을 수신기에(예컨대, 디코더(614)에) 전송하는 데 사용 및/또는 필요한 비트스트림의 길이를 반영할 수 있다. 특정 레이트 왜곡 비율에 대한 모델을 훈련하기 위해 파라미터(β)가 사용될 수 있다.
[0138] 일부 예들에서, 데이터포인트(x)에 대한 손실은 추론 시점에 다음과 같이 최소화될 수 있다: . 일부 예들에서, RDM 손실은 다음과 같이: 로 표기될 수 있다. 일부 경우들에서, 왜곡 D(x|z;θ)은 예를 들어, MSE(mean squared error)와 같은 손실 함수에 기초하여 결정될 수 있다.
[0139] 항들은 왜곡 를 표시 및/또는 표현할 수 있다. 항들은 잠재성들()을 전송하기 위한 레이트를 표시 및/또는 표현할 수 있고, 항들은 미세 튜닝된 모델 업데이트들()을 전송하기 위한 레이트를 표시 및/또는 표현할 수 있다.
[0140] 일부 경우들에서, 모델 사전 분포(616)는 모델 업데이트들을 전송하기 위한 비트 레이트 오버헤드의 길이를 반영할 수 있다. 일부 예들에서, 모델 업데이트들을 전송하기 위한 비트 레이트는 다음과 같이 설명될 수 있다: . 일부 경우들에서, 모델 사전 분포는 업데이트들 없이 모델을 전송하는 것이 가치가 없게, 즉 비트 길이(모델-레이트-손실)가 작게: 로 선택될 수 있다.
[0141] 일부 경우들에서, RDM 손실 함수를 사용하여, 신경망 압축 시스템(600)은 잠재 레이트 또는 왜곡이 적어도 그만큼의 비트들로 감소한다면, 모델 업데이트들을 위해 비트스트림에 단지 비트들()을 추가할 수 있다. 이는 R/D(rate-distortion) 성능에 대한 부스트(boost)를 제공할 수 있다. 예를 들어, 신경망 압축 시스템(600)이 적어도 동일한 수의 비트들로 레이트 또는 왜곡을 또한 감소시킬 수 있다면, 신경망 압축 시스템(600)은 모델 업데이트들을 전송하기 위한 비트스트림(611)에서 비트들의 수를 증가시킬 수 있다. 다른 경우들에, 신경망 압축 시스템(600)은 잠재 레이트 또는 왜곡이 적어도 그만큼의 비트들로 감소하지 않더라도, 모델 업데이트들을 위해 비트스트림에 비트들()을 추가할 수 있다.
[0142] 신경망 압축 시스템(600)은 엔드-투-엔드(end-to-end)로 훈련될 수 있다. 일부 경우들에서, RDM 손실은 추론 시점에 엔드-투-엔드로 최소화될 수 있다. 일부 예들에서, 특정 양의 컴퓨팅이 한 번 소비될 수 있고(예컨대, 모델을 미세 튜닝함), 후속적으로 수신기 측에 대한 추가 비용 없이 높은 압축비들이 획득될 수 있다. 예를 들어, 콘텐츠 제공자는 많은 수의 수신기들에 제공될 비디오를 위해 신경망 압축 시스템(600)을 더 광범위하게 훈련하고 미세 튜닝하기 위해 많은 양의 컴퓨팅을 소비할 수 있다. 고도로 훈련되고 미세 튜닝된 신경망 압축 시스템(600)은 그 비디오에 대해 높은 압축 성능을 제공할 수 있다. 많은 양의 컴퓨팅을 소비했기 때문에, 비디오 제공자는 모델 사전 분포의 업데이트된 파라미터들을 저장할 수 있고, 압축된 비디오의 각각의 수신기에 효율적으로 제공하여 비디오를 압축해제할 수 있다. 비디오 제공자는 모델을 훈련 및 미세 튜닝하는 초기 컴퓨팅 비용들을 상당히 능가할 수 있는 비디오의 각각의 송신에 대해 압축에서 큰 이익들(그리고 네트워크 및 컴퓨팅 자원들의 감소)을 달성할 수 있다.
[0143] 비디오 및 이미지들(예컨대, 고해상도 이미지들) 내의 많은 수의 픽셀들로 인해, 위에서 설명된 훈련/학습 및 미세 튜닝 접근 방식들은 비디오 압축 및/또는 고해상도 이미지들에 대해 매우 유리할 수 있다. 일부 경우들에서, 복잡성 및/또는 디코더 컴퓨팅이 전체 시스템 설계 및/또는 구현에 대한 추가 고려사항들로서 사용될 수 있다. 예를 들어, 추론을 수행하는 데 빠른 매우 작은 네트워크들이 미세 튜닝될 수 있다. 다른 예로서, 비용 항이 수신기 복잡도에 대해 추가될 수 있으며, 이는 모델이 하나 이상의 계층들을 제거하도록 강제 및/또는 야기할 수 있다. 일부 예들에서, 더 복잡한 모델 사전 분포들은 훨씬 더 큰 이득들을 달성하도록 기계 학습을 사용하여 학습될 수 있다.
[0144] 모델 사전 분포 설계는 다양한 속성들을 포함할 수 있다. 일부 예들에서, 구현된 모델 사전 분포는 어떠한 업데이트들도 없이 모델을 전송하기 위한 높은 확률 , 및 그에 따른 낮은 비트 레이트: 를 할당하는 모델 사전 분포를 포함할 수 있다. 일부 경우들에서, 모델 사전 분포는 미세 튜닝된 모델들의 상이한 인스턴스들이 실제로 인코딩될 수 있도록 주위의 값들에 0이 아닌 확률을 할당하는 모델 사전 분포를 포함할 수 있다. 일부 경우들에서, 모델 사전 분포는 추론 시점에 양자화되고 엔트로피 코딩을 수행하는 데 사용될 수 있는 모델 사전 분포를 포함할 수 있다.
[0145] 가속화된 연구 개발들에도 불구하고, ("코덱들"로 지칭되는) 심층 학습 기반 압축 코더-디코더들은 상업적 또는 소비자 애플리케이션들에 아직 배치되지 않았다. 이에 대한 하나의 이유는, 신경 코덱들이 레이트 왜곡의 관점들에서 종래의 코덱들을 아직 견고하게 능가하지 못하기 때문이다. 추가로, 기존의 신경 기반 코덱들은 추가 구현 난제들을 제시한다. 예를 들어, 신경 기반 코덱들은 모든 수신기들에 대해 훈련된 신경망을 요구한다. 결과적으로, 상이한 플랫폼들에 걸친 모든 사용자들은 디코딩 기능을 수행하기 위해 그러한 신경망의 동일한 사본을 저장해야 한다. 그러한 신경망의 저장은 상당한 양의 메모리를 소비하고, 유지하기가 어렵고, 손상에 취약하다.
[0146] 위에서 언급된 바와 같이, 위에서 언급된 문제들을 해결할 수 있는 암시적 신경 압축 코덱을 포함하는 시스템들 및 기법들이 본 명세서에서 설명된다. 예컨대, 본 개시내용의 양상들은 암시적 신경 모델로 지칭될 수 있는 INR(implicit neural representation)들에 기초한 비디오 압축 코덱을 포함한다. 본 명세서에서 설명되는 바와 같이, 암시적 신경 모델은 좌표 포지션들(예컨대, 이미지 또는 비디오 프레임 내의 좌표들)을 입력으로 취할 수 있고, 픽셀 값들(예컨대, 이미지 또는 비디오 프레임에 대한 컬러 값들, 이를테면 각각의 좌표 포지션 또는 픽셀에 대한 RGB(red-green-blue) 값들)을 출력할 수 있다. 일부 경우들에서, 암시적 신경 모델은 또한 IPB 프레임 방식에 기반할 수 있다. 일부 예들에서, 암시적 신경 모델은 INOF(implicit neural optical flow)로 지칭되는 광 흐름을 모델링하도록 입력 데이터를 수정할 수 있다.
[0147] 예컨대, 암시적 신경 모델은 로컬 해석들이 엘리먼트별 가산에 이를 수 있는 암시적 신경 표현들로 광 흐름을 모델링할 수 있다. 일부 경우들에서, 광 흐름은 로컬 해석(예컨대, 포지션의 함수로써의 픽셀들의 움직임)에 대응할 수 있다. 일부 양상들에서, 광 흐름들은 압축 성능을 개선하도록 비디오의 프레임들에 걸쳐 모델링될 수 있다. 일부 경우들에서, 암시적 모델은 대응하는 출력 픽셀 값들을 산출하도록 입력 좌표 포지션들을 조정함으로써 광 흐름을 모델링할 수 있다. 예컨대, 입력들의 엘리먼트별 가산은 출력에서 로컬 해석으로 이어질 수 있으며, 이는 픽셀 움직임의 필요성 및 연관된 계산적 복잡성을 제거할 수 있다. 하나의 예시적인 예에서, 3개의 픽셀들(예컨대, P1 | P2 | P3)을 갖는 제1 프레임 및 3개의 픽셀들(예컨대, P0 | P1 | P2)을 갖는 제2 프레임으로부터의 전환은 (예컨대, 픽셀들의 포지션을 시프트할 필요 없이) 입력을 수정함으로써, 이를테면 엘리먼트별 뺄셈 또는 덧셈을 수행함으로써 암시적 신경 모델에 의해 모델링될 수 있다. 다음 다이어그램(diagram)은 이 예를 예시한다:
[0148] 1 | 2 | 3 → P1 | P2 | P3
[0149] 0 | 1 | 2 → P0 | P1 | P2
[0150] 위에서 언급된 바와 같이, 암시적 신경 모델은 이미지 또는 비디오 프레임의 좌표 포지션들을 입력으로 취할 수 있고, 이미지 또는 비디오 프레임에 대한 픽셀 값들을 출력할 수 있다. 이 경우, 입력들(1 | 2 | 3 및 0 | 1 | 2)은 암시적 신경 모델에 대한 입력을 표현하고, 이미지 내의 좌표들을 포함한다. 출력들 (P1 | P2 | P3) 및 (P0 | P1 | P2)는 암시적 신경 모델의 출력을 나타내고, RGB 값들을 포함할 수 있다. 위의 2개의 라인들(1 | 2 | 3 → P1 | P2 | P3 및 0 | 1 | 2 → P0 | P1 | P2) 각각은, 입력들이 출력들에서 대응하는 시프트를 야기하는 '1'의 값만큼 변경된 동일한 모델에 대응한다. 종래의 광 흐름의 경우, 기계 학습 모델 자체는 하나의 프레임에서 다음 프레임으로 픽셀들의 포지션을 시프트해야 한다. 암시적 기계 학습 모델이 입력으로서 좌표들을 취하기 때문에, 입력은 모든 각각의 입력 값을 1만큼 감산하도록 (코덱에 의해 프로세싱되기 전에) 사전 프로세싱될 수 있으며, 이 경우에 출력은 시프트될 것이고, 따라서 광 흐름을 효과적으로 모델링할 것이다. 일부 경우들에서, (예컨대, 프레임 내의 객체들이 특정 방향으로 이동할 때) 엘리먼트별 가산이 수행될 수 있으며, 여기서 값(예컨대, 1의 값)이 입력 값들에 가산될 것이다.
[0151] 일부 예들에서, 잔차들은 암시적 신경 모델의 가중치 업데이트들로 프레임들에 걸쳐 모델링될 수 있다. 일부 경우들에서, 본 기술은 인터-예측(inter-predict)된 프레임들(예컨대, 단방향 프레임들(P 프레임들) 및/또는 양방향 프레임들(B 프레임들)을 압축하기 위해 요구되는 비트 레이트를 감소시키는 데 사용될 수 있다. 일부 예들에서, 컨볼루션 기반 아키텍처는 인트라 프레임(intra-frame)들(예컨대, 인트라 프레임들 또는 I 프레임들)을 프로세싱하는 데 사용될 수 있다. 컨볼루션 기반 아키텍처는 암시적 모델들의 디코딩 컴퓨팅 병목현상을 해소하여, 인코딩 및 디코딩하기에 빠른 결과적인 모델을 산출하는 데 사용될 수 있다. 일부 양상들에서, 데이터를 비트 스트림들로 변환하는 것은, I 프레임들에 대한 훈련 후 양자화 및 P 및 B 프레임들에 대한 양자화 인식 훈련에 의해 수행될 수 있다.
[0152] 일부 경우들에서, 모델은 완전한 신경 압축 코덱을 형성하도록 양자화 및/또는 인코딩될 수 있다. 일부 예들에서, 모델은 수신기에 전송될 수 있다. 일부 경우들에서, 모델의 미세 튜닝은 P 및 B 프레임들에 대해 수행될 수 있고, 수렴된 업데이트들이 수신기에 전송될 수 있다. 일부 양상들에서, 모델은 P 및 B 프레임들에 대한 비트 레이트들을 최소화할 수 있는 이전 및/또는 양자화 인식 절차를 유도하는 희소성을 이용하여 미세 튜닝될 수 있다. 기존의 신경 압축 코덱들과 비교하여, 암시적 신경 모델 기반 신경 압축 코덱은 수신기 측에서(그리고 일부 경우들에는 송신기 측에서) 사전 훈련된 네트워크에 대한 요건을 제거한다. 본 기술의 성능은, 이전 INR 기반 신경 코덱들에 비해 향상된 성능으로, 이미지 및 비디오 데이터세트 모두에 대해 종래의 그리고 신경 기반 코덱들과 유리하게 비교된다.
[0153] 일부 양상들에서, INR(implicit neural representation) 방법/모델이 비디오 및 이미지 압축을 위해 사용될 수 있다. 비디오들 또는 이미지들은 신경망으로서 구현될 수 있는 함수로서 표현될 수 있다. 일부 예들에서, 이미지 또는 비디오를 인코딩하는 것은 아키텍처를 선택하는 것 그리고 단일 이미지 또는 비디오에 대해 네트워크 가중치들을 과적합시키는 것을 포함할 수 있다. 일부 예들에서, 디코딩은 신경망 포워드 패스들을 포함할 수 있다. 압축에 사용되는 암시적 신경 모델들의 하나의 난제는 디코딩 계산 효율이다. 대부분의 기존의 암시적 신경 모델들은 입력 데이터의 각각의 픽셀에 대해 하나의 포워드 패스를 요구한다. 일부 양상들에서, 본 기술은 고해상도 비디오 또는 이미지를 디코딩하는 것과 연관된 계산 오버헤드를 감소시켜 디코딩 시간 및 메모리 요건을 감소시킬 수 있는 암시적 신경 표현 모델들의 일반화로서 컨볼루션 아키텍처를 포함한다.
[0154] 일부 예들에서, 비트 레이트는 저장된 모델 가중치들의 크기에 의해 결정될 수 있다. 일부 경우들에서, 본 명세서에 개시된 암시적 신경 접근 방식의 성능을 개선하기 위해, 비트 레이트를 개선하기 위해 모델 크기가 감소될 수 있다. 일부 구성들에서, 모델 크기를 감소시키는 것은 가중치들을 양자화하고, 양자화된 네트워크 가중치들을 무손실 압축하는 데 사용될 수 있는 가중치 사전 분포를 적합시킴으로써 수행될 수 있다.
[0155] 일부 경우들에서, 본 기술은 최신 신경 이미지 및 비디오 코덱들의 압축 성능을 매칭(match)시킬 수 있다. 본 명세서에 개시된 바와 같은 코덱의 하나의 예시적인 장점은, 그것이 수신기 측에 신경망을 저장할 필요성을 제거할 수 있고 경량 프레임워크로 구현될 수 있다는 것이다. (예컨대, SSF(scale-space flow)형 신경 코덱들과 비교하여) 다른 장점은 하드웨어로 구현하기가 어려울 수 있는 흐름 동작들의 부재이다. 추가로, 디코딩 함수는 표준 신경 코덱들에서보다 더 빠를 수 있다. 더욱이, 본 기술은, 인코딩될 데이터(예컨대, 이미지, 비디오 프레임, 비디오 등의 현재 인스턴스)를 사용하여 암시적으로 훈련될 수 있기 때문에, 별개의 훈련 데이터세트를 요구하지 않는다. 본 명세서에서 설명되는 암시적 신경 모델의 구성은 잠재적인 프라이버시 우려들을 회피하는 데 도움이 될 수 있고, 어떠한 적절한 훈련 데이터도 이용 가능하지 않은 것들을 포함하여 상이한 도메인들로부터의 데이터에 대해 잘 수행한다.
[0156] 신경 압축 코드들과 관련된 일례에서, 신경 비디오 압축은 변형 또는 압축 자동 인코더들의 프레임워크를 사용하여 구현될 수 있다. 그러한 모델들은 다음과 같이 RD(rate-distortion) 손실을 최적화하도록 구성된다:
(1)
[0157] 이 예에서, 인코더(q φ )는 각각의 인스턴스(x)를 잠재성(z)에 매핑하고, 디코더(p)는 재구성을 복구한다. 훈련된 디코더가 수신기 측에서 이용 가능하다고 가정하면, 송신된 비트스트림은 인코딩된 잠재성(z)을 포함한다. 이러한 타입의 구성의 예들은 3D 컨볼루션 아키텍처들 및 IP 프레임 흐름 아키텍처를 포함하며, 이들은 이전 프레임들 상에서 각각의 P 프레임을 컨디셔닝한다. 다른 예는 모델이 각각의 테스트 인스턴스에 대해 미세 튜닝되고 모델이 잠재성들과 함께 송신되는 인스턴스 적응형 미세 튜닝을 포함한다. 이 방법은 이전 작업에 비해 이점들(예컨대, 도메인 시프트에 대한 견고성 및 모델 크기의 감소)을 포함할 수 있지만, 이는 여전히, 사전 훈련된 글로벌(global) 디코더가 수신기 측에서 이용 가능할 것을 요구한다.
[0158] 신경 압축 코덱들과 관련된 다른 예에서, 모델은 신경망 가중치들로서 그들의 암시적 표현을 통해 이미지들을 압축하는 데 사용될 수 있다. 이러한 구성은 다양한 수의 계층들 및 채널들을 갖는 SIREN(sinusoidal representation networks) 기반 모델들을 구현하고, 이들을 16-비트 정밀도로 양자화한다. 설명되는 암시적 신경 코덱은 이미지 압축 작업들을 위해 SIREN 모델들을 사용할 수 있는 다른 시스템들과 상이하다. 예컨대, 일부 예들에서, 본 명세서에서 설명되는 암시적 신경 코덱은 포지션 인코딩들을 갖는 컨볼루션 아키텍처들을 포함할 수 있고, 양자화 및 엔트로피 코딩을 포함하는 더 진보된 압축 방식들을 구현할 수 있고, 비디오 압축을 수행할 수 있다.
[0159] 암시적 신경 표현에 관한 일례에서, 3차원 구조들 및 광 필드들을 학습하기 위해 암시적 표현들이 사용되었다. 일부 예시들에서, 이러한 구성들은 단일 장면에 대해 신경망을 훈련하여 그것이 네트워크 가중치들에 의해 인코딩되도록 할 수 있다. 그런 다음, 장면의 새로운 뷰(view)들dl 네트워크의 포워드 패스를 통해 생성될 수 있다. 일부 양상들에서, 이러한 방법들은 이산 대응부들보다 더 효율적일 수 있는데, 이는 객체 데이터가 고차원 좌표 프레임에서 저차원 매니폴드(manifold) 상에 있을 때, 이산 표현에 높은 중복성이 존재하고, 여기서 값은 좌표들의 각각의 세트와 연관된다. 일부 예들에서, 암시적 신경 표현들은 이러한 중복성들을 활용할 수 있고, 이로써 더 효율적인 표현들을 학습할 수 있다.
[0160] 암시적 표현들은 이미지들 및 비디오들과 같은 저차원 좌표들을 갖는 데이터에 적용될 수 있지만, 이산 또는 잠재 표현들과 비교하여 상대적인 효율은 아직 결정되지 않았다. 더욱이, 암시적 표현들을 사용하는 기존 구성들의 성능은 이산 표현들을 사용하는 또는 설정된 압축 코덱들을 사용하는 구성의 성능과 매칭시키거나 이를 초과할 필요가 있다.
[0161] 입력 데이터의 차원에 관계없이, 표현들의 올바른 클래스를 선택하는 것이 중요하다. 일부 예들에서, 푸리에(Fourier) 도메인 특징들은 현실적인 장면들의 구조를 학습하는 암시적 신경 모델들에 도움이 된다. 예컨대, 푸리에 도메인 특징들은 자연어 처리를 위해 구현되었으며, 여기서 문장 내의 단어들의 푸리에 포지션 인코딩은 완전히 주의력 있는 아키텍처들을 갖는 최신 언어 모델링을 가능하게 하는 것으로 도시된다. 추가로, 비전 작업들의 암시적 신경 모델링과 관련하여, 구성은 MLP 모델로 전달하기 전에 랜덤하게(randomly) 샘플링된 푸리에 주파수들을 인코더로서 사용할 수 있다. 추가로, 일부 구성들은, 가중치들이 신중하게 초기화되는 한, 정현파 함수들일 수 있는 모든 MLP 활성화들을 포함하며, 여기서 x int b 비트를 갖는 정수 텐서이고, s는 부동 소수점의 스케일링(scaling) 팩터(또는 벡터)이다.
[0162] 일부 예들에서, 신경망 양자화는 자원 제약된 디바이스들 상에서 모델들을 더 효율적으로 실행하는 것을 가능하게 하도록 모델 크기를 감소시키는 데 사용될 수 있다. 신경망 양자화의 예들은 코드북(code book)을 사용하여 양자화된 텐서를 표현할 수 있는 벡터 양자화, 및 정수 텐서와 스케일링 팩터를 포함하는 고정 소수점 수를 갖는 텐서를 표현할 수 있는 고정 소수점 양자화를 포함한다. 고정 소수점에서, 양자화 함수는 다음과 같이 정의될 수 있으며:
(2)
[0163] 여기서 비트를 갖는 정수 텐서이고, 는 부동 소수점의 스케일링 팩터(또는 벡터)이다. 일부 양상들에서, 심벌 는 모든 양자화 파라미터들의 세트를 지칭하는 데 사용될 수 있다.
[0164] 일부 예들에서, 신경망에서 가중 텐서들(예컨대, 모든 가중 텐서들)의 낮은 비트 양자화는 상당한 양자화 잡음을 발생시킬 수 있다. 양자화 인식 훈련을 이용하여, 신경망들은 양자화 동작으로 이들을 엔드-투-엔드로 훈련함으로써 양자화 잡음에 적응할 수 있다. 식(2)의 반올림 연산이 미분 가능하지 않기 때문에, 일반적으로 STE(straight-trough estimator)가 기울기를 근사화하는 데 사용된다. 일부 경우들에서, 네트워크와 공동으로 스케일링 팩터들을 학습하는 것 외에도, 모든 각각의 계층에 대해 텐서별 비트 폭을 학습하는 것이 또한 수행될 수 있다. 일부 양상들에서, 본 기술은 양자화 비트 폭을 레이트 손실로서 공식화할 수 있고, 픽셀 공간에서 비트 레이트와 왜곡 사이의 최상의 절충을 암시적으로 학습하기 위해 RD 손실을 최소화할 수 있다.
[0165] 도 7a는 암시적 신경망 압축 시스템(700)에 기반한 예시적인 코덱을 예시하는 도면이다. 일부 양상들에서, 암시적 신경 압축 시스템(700)은 왜곡 및/또는 비트 레이트를 최적화하도록 구성되는 암시적 압축 모델들을 훈련시키기 위한 파이프라인을 포함할 수 있다. 일부 예들에서, 왜곡은 왜곡 목적에 대해 암시적 모델()(704)의 가중치들()(706)을 훈련시킴으로써 최소화될 수 있다. 일부 양상들에서, 레이트는 가중치들(706)을 양자화 함수 로 양자화함으로써, 그리고 가중치 사전 분포()(712)를 양자화된 가중치들(708)에 대해 적합화함으로써 최소화될 수 있다. 어떤 예에서, 이러한 컴포넌트들은 다음과 같이 레이트 왜곡 손실을 반영하는 단일 목적으로 조합될 수 있다:
(3)
[0166] 일부 예들에서, (예컨대, 이미지 또는 복수의 이미지들을 포함할 수 있는 입력 이미지 데이터(702)에 대응하는) 데이터포인트()를 "인코딩"하는 제1 단계는 데이터포인트(예컨대, 입력 이미지 데이터(702))에 대해 식(3)에서의 손실의 최소치를 찾는 것이다. 일부 경우들에서, 손실의 최소치는 탐색 및/또는 훈련 알고리즘을 사용하여 획득될 수 있다. 예를 들어, 도 7a에 도시된 바와 같이, 송신기 측에서 암시적 신경 모델(704)을 훈련시키기 위해, 좌표 그리드(703)가 암시적 모델(704)에 입력된다. 훈련 전에, 암시적 모델(704)의 가중치들은 초기 값들로 초기화된다. 가중치들의 초기 값들은, 좌표 그리드(703)를 프로세싱하고, 식(3)에서 로서 표현된, 입력 이미지 데이터(702)에 대한 재구성된 출력 값들(예컨대, 각각의 픽셀에 대한 RGB 값들)을 생성하는 데 사용된다. 압축되고 있는 실제 입력 이미지 데이터(702)는, 식(3)에서 데이터포인트(x)로서 표현되는 알려진 출력(또는 라벨)으로서 사용될 수 있다. 그 다음에, 재구성된 출력 값들과 알려진 출력(도 7a의 입력 이미지 데이터(702)인 데이터포인트()) 사이에서 손실()이 결정될 수 있다. 손실에 기반하여, 암시적 모델(704)의 가중치들이 (예컨대, 역전파 훈련 기법에 기반하여) 튜닝될 수 있다. 그러한 프로세스는, 특정 손실 값(예컨대, 최소화된 손실 값)이 획득되도록 가중치들이 튜닝될 때까지, 특정 횟수의 반복들이 수행될 수 있다. 일단 암시적 모델(704)이 훈련되면, 도 7a에 도시된 바와 같이, 암시적 모델(704)로부터의 가중치들()(706)이 출력될 수 있다. 수신기 측에서, 좌표 그리드(703)는 역양자화 후에 디코딩된 가중치들()로 튜닝된 암시적 모델(704)을 사용하여(또는 양자화된 가중치들(708)을 사용하여) 프로세싱될 수 있다. 일부 경우들에서, 암시적 모델(704)의 아키텍처 파라미터들은 아키텍처 디코더(726)에 의한 비트스트림(720)의 디코딩에 기반하여 결정될 수 있다.
[0167] 일부 양상들에서, 제1 단계는 네트워크 아키텍처들()에 걸쳐 탐색함으로써 입력 이미지 데이터(702)를 압축하기 위해 (이용 가능한 암시적 모델들의 그룹으로부터) 사용할 최적의 암시적 모델(704)을 결정하고 양자화 없이 손실을 최소화함으로써 각각의 모델에 대해 가중치들()(706)을 훈련시키는 단계를 포함할 수 있다. 일부 예들에서, 이 프로세스는 암시적 모델(704)을 선택하는 데 사용될 수 있다.
[0168] 일부 경우들에서, 양자화기는 양자화기 하이퍼파라미터(hyperparameter)들()을 기초로 최적의 왜곡()을 달성하도록 구현될 수 있다. 일부 양상들에서, 암시적 모델()(704)은 양자화된 가중치들(708)에 기초하여 미세 튜닝될 수 있다.
[0169] 일부 예들에서, 가중치 사전 분포(712)는 양자화기 파라미터들 및 암시적 모델 가중치들(예컨대, 양자화된 가중치들(708) 또는 가중치들(706))을 고정하면서 구현될 수 있다. 일부 양상들에서, 가중치 사전 분포(712)는 레이트 손실()을 최소화하는 (가중치들()(706)을 포함하는) 최적의 설정들을 결정하는 데 사용될 수 있다.
[0170] 일부 양상들에서, 암시적 신경망 압축 시스템(700)은 (사전 인코더(714)를 사용하여) 비트스트림(722)에서 가중치 사전 분포 파라미터들()(712)을 인코딩하고 비트스트림(724)에서 가중치 사전 분포()(712) 하에서 (AE(arithmetic encoder)(710)에 의해) 엔트로피 코딩을 사용하여 양자화된 가중치들()(708)을 인코딩하도록 구성될 수 있는 이미지 또는 비디오 코덱으로서 사용될 수 있다. 일부 예들에서, 디코딩은 역 방식으로 구현될 수 있다. 예컨대, 수신기/디코더 측에서, AD(arithmetic decoder)(730)는, 엔트로피 디코딩을 수행하여 비트스트림(724)을 디코딩하고 가중치들(예컨대, 가중치들(706) 또는 양자화된 가중치들(708))을 생성하기 위해, (사전 디코더(728)에 의해 디코딩된) 디코딩된 가중치 사전 분포를 사용할 수 있다. 가중치들 및 신경망 모델 아키텍처(예컨대, ), 암시적 모델(704)을 사용하여, 암시적 모델(704)은 출력 이미지 데이터(732)를 생성할 수 있다. 일례로, 가 디코딩되면, 포워드 패스: 를 사용하여 재구성()이 획득될 수 있다.
[0171] 위에서 언급된 바와 같이, 암시적 모델(704)은 가중치들(w)(706)을 훈련시키고 최소 왜곡을 결정함으로써 선택될 수 있는 하나 이상의 신경망 아키텍처들을 포함할 수 있다. 일례에서, 암시적 모델(704)은, 이미지 내의 좌표들을 입력으로 취하고 RGB 값들(또는 다른 컬러 값들)을 다음과 같이 리턴(return)하는 MLP(multi-layer perceptron)를 포함할 수 있다:
(4)
[0172] 일부 양상들에서, 암시적 모델(704)은 이미지들 및 비디오들의 미세 세부사항들이 정확하게 표현될 수 있음을 보장하기 위해 주기적 활성화 함수들을 사용할 수 있는 SIREN 아키텍처를 구현할 수 있다. 일부 예들에서, 이미지를 디코딩하는 것은 모든 각각의 관심 픽셀 위치(x, y)에서 MLP를 평가하는 것을 포함할 수 있다. 일부 경우들에서, 표현은 연속적이기 때문에, 표현은 상이한 해상도 설정들에서 또는 임의의 타입의 픽셀 그리드(예컨대, 불규칙한 그리드들)에 대해 훈련되거나 평가될 수 있다.
[0173] 일부 예들에서, 암시적 모델(704)은 (예컨대, 특히 수신기 측에서) 코드들의 계산 효율을 개선하는 데 사용될 수 있는 컨볼루션 네트워크를 포함할 수 있다. 일부 경우들에서, MLP 기반 암시적 신경 모델은 각각의 입력 픽셀 좌표에 대한 포워드 패스를 요구할 수 있으며, 이는 1K 해상도 비디오의 각각의 프레임을 디코딩하기 위한 많은(예컨대, 대략 2백만) 포워드 패스들을 야기할 수 있다.
[0174] 일부 양상들에서, MLP 기반 암시적 신경 모델은 1x1 커널들을 이용한 컨볼루션 연산으로서 보일 수 있다. 일부 예들에서, 본 명세서에서 설명되는 기법들은 암시적 모델들을 컨볼루션 아키텍처로 일반화할 수 있다.
[0175] 한 번에 하나의 좌표를 프로세싱하는 MLP들과 달리, 본 기술은 채널 축의 좌표 값들을 이용하여 모든 좌표들을 한 번에 레이아웃(lay out)할 수 있다. 일부 양상들에서, 본 기술은 전치 컨볼루션 블록들에 대해 (예컨대, 컨볼루션 커널 또는 필터가 각각의 컨볼루션 연산 이후 2개의 포지션들 이동됨을 표시하는) 3x3 커널들 및 2의 스트라이드(stride) 값을 사용할 수 있으며, 이는 이미지를 재구성하는 데 필요한 포워드 패스들의 수의 감소와 2 2L 의 곱을 야기할 수 있고, 여기서 L은 컨볼루션 계층들의 수이다.
[0176] 일부 예들에서, 랜덤 푸리에 인코딩 및 SIREN 아키텍처들은 이런 식으로 일반화될 수 있다. 예를 들어, 컨볼루션 아키텍처의 제1 계층은 다음과 같이 좌표들의 포지션 인코딩을 포함할 수 있으며:
(5)
[0177] 여기서 c, i는 채널 공간 차원들을 따르는 인덱스들이고, 는 가우시안 분포로부터의 개의 주파수 샘플들이다. 표준 편차 및 주파수들의 수는 하이퍼파라미터들이다. 이러한 포지션 인코딩 다음에, 교번하는 전치된 컨볼루션들 및 ReLU 활성화들이 뒤따를 수 있다.
[0178] 일부 양상들에서, 본 기술로부터의 컨볼루션 모델들은 임의로 적은 수의 포워드 패스들로 고해상도 이미지들을 쉽게 프로세싱할 수 있고, 그에 따라 인코딩 및 디코딩 모두를 가속화할 수 있다. 이는 또한, 높은 비트 레이트들에서 훨씬 더 메모리 효율적이다. 일부 예들에서, 초저비트 레이트들에서 3x3 컨볼루션 커널들을 훈련시키는 것은 상이한 컨볼루션 커널들(예컨대, 파이프라인에서의 1x1 및/또는 3x3 컨볼루션들)을 사용하여 구현될 수 있다.
[0179] 위에서 언급된 바와 같이, 신경망 압축 시스템(700)에 대한 입력은 (예컨대, 암시적 모델을 훈련시키기 위한) 이미지 데이터(702)를 포함할 수 있으며, 이는 비디오 데이터를 포함할 수 있다. 일부 예들에서, 비디오 데이터는 후속 프레임들 사이에 강한 리던던시들을 가질 수 있다. 기존의 비디오 코덱들에서, GoP(group of picture)는 종종, 각각의 프레임이 이전 프레임에 의존하는 방식으로 압축된다. 구체적으로, 새로운 프레임 예측은 잔차들과 이전 프레임의 워핑의 합으로서 공식화될 수 있다. 본 기술은 암시적 신경 압축 방식과 함께 사용하기 위한 유사한 구성을 구현할 수 있다. 일부 경우들에서, 암시적 모델들은 정확도로 워핑을 표현하는 것으로 나타났다. 일부 양상들에서, 본 기술은 프레임들에 걸쳐 가중치들을 공유하는, 암시적으로 레버리지(leverage)될 수 있는 시간 중복성을 사용할 수 있다. 일부 양상들에서, (본 명세서에 개시된) 완전히 암시적 접근 방식은 개념상 단순성 및 아키텍처 자유도의 이점을 가질 수 있다.
[0180] 일부 예들에서, 암시적 비디오 표현들은 픽처들의 그룹들을 사용하여 구현될 수 있다. 예컨대, 비디오들은 개의 프레임들(또는 픽처들)의 그룹들로 분할될 수 있고, 각각의 배치(batch)는 별개의 네트워크를 이용하여 압축될 수 있다. 일부 경우들에서, 이러한 구현은 암시적 표현들의 요구되는 표현성을 감소시킨다. 일부 예들에서, 다음 개의 프레임들이 디코딩될 수 있기 전에 하나의 소형 네트워크만이 전송될 필요가 있기 때문에, 이러한 구현은 버퍼링(buffer)된 스트리밍을 가능하게 할 수 있다.
[0181] 일부 양상들에서, 암시적 비디오 표현은 3D MLP를 사용하여 구현될 수 있다. 예를 들어, MLP 표현은 프레임 번호(또는 시간 컴포넌트)(t)를 표현하는 제3 입력을 추가함으로써 비디오 데이터로 쉽게 확장될 수 있다. 일부 예들에서, SIREN 아키텍처는 사인 활성화들과 함께 사용될 수 있다.
[0182] 일부 경우들에서, 암시적 비디오 표현은 3D 컨볼루션 네트워크들을 사용하여 구현될 수 있다. 이전에 언급된 바와 같이, 3D MLP는 1x1x1 컨볼루션 연산으로 보일 수 있다. 2차원의 경우와 유사하게, 본 기술은 3D MLP들을 3차원 커널들을 이용한 컨볼루션 연산들로 구현할 수 있다. 파라미터들의 수를 최소로 유지하기 위해, 본 기술은 크기의 공간 커널들을 사용한 다음, 이어서 형상의 프레임별 커널들을 사용할 수 있다.
[0183] 식(5)의 푸리에 인코딩과 관련하여, x i 를 [t, x, y]로 설정하고 그에 따라 추가 주파수들을 도입함으로써 추가 좌표가 고려될 수 있다. 시간 및 공간 상관 스케일들이 매우 상이할 가능성이 있기 때문에, 본 기술은 시간-공액 주파수 분산들을 별개의 하이퍼파라미터가 되게 할 수 있다. ReLU 활성화들과 교번하는 3차원 전치 컨볼루션들의 시퀀스는 포지션 인코딩 특징들을 비디오 시퀀스로 프로세싱할 수 있다.
일부 양상들에서, 암시적 비디오 표현은 시간 변조 네트워크들을 사용하여 구현될 수 있으며, 이는 단일 인스턴스보다는 한 세트의 데이터에 대해 작동하도록 표현을 적응시킬 수 있는 암시적 표현에 대응한다. 일부 예들에서, 방법들은 하이퍼네트워크뿐만 아니라 잠재 기반 방법들의 사용을 포함할 수 있다. 일부 경우들에서, 본 기술은 인스턴스 모델을 (한 세트의 데이터 포인트들 대신) 비디오의 프레임들로 일반화하기 위해 시간 변조된 네트워크들을 사용할 수 있다. 일부 예들에서, 본 기술은 합성 변조기 합성 네트워크 아키텍처를 이들의 개념적 단순성 및 파라미터 공유 효율을 위해 구현할 수 있다. 이전 구현들은 SIREN MLP가 고해상도들에서 고품질 재구성들을 수행할 수 없고 그에 따라 가중치 공유를 위해 이미지를 중첩 공간 타일(tile)들로 분할할 수 없다는 것을 발견했지만, 본 기술은 고해상도 프레임들을 생성할 수 있는 컨볼루션 SIREN 아키텍처를 구현한다. 일부 경우들에서, 본 기술은 프레임 축만을 따르는 변조를 예비할 수 있다. 이 접근 방식에서, 모델에 대한 입력들은 여전히 단지 공간 좌표들(x, y)이다. 그러나 이 네트워크의 k번째 계층은 다음과 같이 주어지며:
(6)
[0184] 여기서 활성화 함수이고, 는 3×3 또는 1×1 컨볼루션들을 포함하는 신경망 계층이며, 는 각각의 프레임에 대한 학습 가능한 잠재 벡터이고, 은 변조 MLP의 번째 계층 출력을 나타낸다. 엘리먼트별 곱셈 상호작용들은 복잡한 시간 의존성들을 모델링할 수 있게 한다.
[0185] 일부 예들에서, 암시적 비디오 표현은 IPB 프레임 분해 및/또는 IP 프레임 분해에 기반한 구성을 사용하여 구현될 수 있다. 도 9를 참조하면, 연속적인 프레임들(902)의 그룹이 먼저 중간 프레임을 I 프레임으로서 압축함으로써 (예컨대, IPB 프레임 분해를 사용하여) 인코딩될 수 있다. 다음으로, 훈련된 I 프레임 암시적 모델로부터 시작하여, 본 기술은 첫 번째 프레임 및 마지막 프레임을 P 프레임들로서 미세 튜닝할 수 있다. 일부 예들에서, 첫 번째 프레임 및 마지막 프레임에 대한 미세 튜닝은 비트 레이트를 최소화하기 위해 희소성 유도 사전 분포 및 양자화 인식 미세 튜닝을 사용하는 것을 포함할 수 있다. 일부 양상들에서, 나머지 프레임들은 B 프레임들로서 인코딩될 수 있다. 일부 예들에서, IPB 프레임 분해는 프레임의 양측의 모델 가중치들의 보간으로서 모델 가중치들을 초기화함으로써 구현될 수 있다. 일부 경우들에서, 전체 비트스트림은, 희소성 유도 사전 분포들로 인코딩된, P 및 B 프레임들에 대한 적합화된 모델 사전 분포 및 양자화된 업데이트들로 인코딩되는 I 프레임 모델의 양자화된 파라미터들을 포함할 수 있다. 일부 예들에서, 암시적 비디오 표현은 도 9의 프레임들(904)에 의해 예시된 바와 같이, IP 프레임 분해를 사용하여 구현될 수 있다.
[0186] 도 7a로 돌아가면, 신경망 압축 시스템(700)은 가중치들(706)을 양자화하여 양자화된 가중치들(708)을 산출하는 데 사용될 수 있는 양자화 알고리즘을 구현할 수 있다. 일부 양상들에서, 네트워크 양자화는 고정 소수점 표현을 사용하여 모든 각각의 가중 텐서()를 양자화함으로써 모델 크기를 감소시키는 데 사용될 수 있다. 일부 경우들에서, 양자화 파라미터 및 비트 폭은 공동으로; 예컨대, 스케일() 및 클리핑 임계치()를 학습함으로써 학습될 수 있다. 그런 다음, 비트 폭()은 로서 암시적으로 정의되는데, 이는, 이러한 파라미터화가 무한한 기울기 노름(norm)을 겪지 않기 때문에, 비트 폭을 직접적으로 학습하는 것보다 유리하다는 것을 보여주었다.
[0187] 일부 예들에서, 비트스트림을 인코딩하는 것은 모든 양자화 파라미터들 및 모든 정수 텐서들 을 인코딩하는 것을 포함할 수 있다. 모든 는 32 비트 부동 소수점 변수로서, 비트 폭들 는 INT4로서 그리고 정수 텐서들 는 이들 개개의 비트 폭 로서 인코딩된다.
[0188] 일부 양상들에서, 신경망 압축 시스템(700)은 엔트로피 코딩을 구현할 수 있다. 예를 들어, 마지막 훈련 스테이지(stage)는 AE(arithmetic encoder)(710)가 비트스트림(724)을 생성하기 위해 가중치들(예컨대, 가중치들(706) 또는 양자화된 가중치들(708))에 대해 사전에 적합화하는 것을 포함할 수 있다. 위에서 언급된 바와 같이, 수신기/디코더 측에서, AD(arithmetic decoder)(730)는, 엔트로피 디코딩을 수행하여 비트스트림(724)을 디코딩하고 가중치들(예컨대, 가중치들(706) 또는 양자화된 가중치들(708))을 생성하기 위해, (사전 디코더(728)에 의해 디코딩된) 디코딩된 가중치 사전 분포를 사용할 수 있다. 가중치들 및 신경망 모델 아키텍처를 사용하여, 암시적 모델(704)은 출력 이미지 데이터(732)를 생성할 수 있다. 일부 경우들에서, 가중치들은 대부분의 텐서들에 대해 0-중심 가우시안으로서 대략적으로 분포될 수 있다. 일부 예들에서, 모든 각각의 가중치의 스케일은 상이할 수 있지만, 가중치 범위들은 (송신된) 양자화 파라미터들()의 일부이기 때문에, 가중치들이 정규화될 수 있다. 이어서, 일부 경우들에서, 네트워크 압축 시스템(700)은 정규화된 가중치들에 가우시안을 적합화시키고, 이를 엔트로피 코딩에 사용할 수 있다(예컨대, 비트스트림(724)을 야기함).
[0189] 일부 예들에서, 일부 가중치들(예컨대, 가중치들(706) 또는 양자화된 가중치들(708))은 희소하게 분포된다. 희소하게 분포된 가중치들의 경우, 신경망 압축 시스템(700)은 콘텐츠를 갖는 이진수들에만 확률 질량을 재분배하는 데 사용될 수 있는 이진 마스크를 송신할 수 있다. 일부 경우들에서, 마스크가 송신되는지 여부를 인코딩하기 위해 신호 비트가 포함될 수 있다.
[0190] 도 7b는 암시적 신경망 압축 시스템(700)에 기반한 예시적인 코덱을 예시하는 도면이다. 일부 양상들에서, 암시적 신경 압축 시스템(700)은 왜곡 및/또는 비트 레이트를 최적화하도록 구성되는 암시적 압축 모델들을 훈련시키기 위한 파이프라인을 포함할 수 있다. 도 7a와 관련하여 위에서 언급된 바와 같이, 제1 단계는 네트워크 아키텍처들()에 걸쳐 탐색함으로써 입력 이미지 데이터(702)를 압축하기 위해 (이용 가능한 암시적 모델들의 그룹으로부터) 사용할 최적의 암시적 모델(704)을 결정하고 양자화 없이 왜곡 손실을 최소화함으로써 각각의 모델에 대해 가중치들()(706)을 훈련시키는 단계를 포함할 수 있다. 일부 예들에서, 이 프로세스는 암시적 모델(704)을 선택하는 데 사용될 수 있다. 일부 예들에서, 암시적 모델(704)은 모델 폭, 모델 깊이, 해상도, 컨볼루션 커널의 크기, 입력 치수 및/또는 임의의 다른 적절한 모델 파라미터 또는 특징을 포함할 수 있는 하나 이상의 모델 특징들과 연관될 수 있다.
[0191] 일부 양상들에서, 수신기 측(예컨대, 디코더)은 입력 이미지 데이터(702)를 인코딩하는 데 사용되는 네트워크 아키텍처 에 대한 사전 지식을 갖지 않는다. 일부 경우들에서, 암시적 신경망 압축 시스템(700)은 (아키텍처 인코더(716)를 사용하여) 비트스트림(720)에서 모델 아키텍처 (718)를 인코딩하도록 구성될 수 있다.
[0192] 도 8a는 암시적 신경 표현들을 사용하는 픽처들의 그룹에 대한 파이프라인(800)의 일례를 예시하는 도면이다. 일부 양상들에서, 파이프라인(800)은, 입력 이미지(예컨대, I 프레임(802) 및/또는 P1 프레임(808))와 연관된 좌표들을 픽셀 값들(예컨대, RGB 값들)에 매핑할 수 있는 신경망들을 사용하여 이미지들을 프로세싱할 수 있는 비디오 압축 코덱에 의해 구현될 수 있다. 일부 예들에서, 파이프라인(800)의 출력은 (예컨대, 네트워크 아키텍처를 식별하기 위해 사용되는) 헤더(header) 및/또는 대응하는 입력 프레임에 대한 신경망의 가중치들을 갖는 압축된 파일들을 포함할 수 있다.
[0193] 일부 예들에서, 파이프라인(800)은 비디오 입력과 연관된 프레임들의 그룹으로부터의 하나 이상의 이미지 프레임들을 압축하는 데 사용될 수 있는 베이스(base) 모델(804)(예컨대, 베이스 모델(f θ ))을 포함할 수 있다. 일부 경우들에서, 베이스 모델(804)은 프레임들의 그룹으로부터의 제1 프레임을 사용하여 훈련되는 I 프레임 모델을 포함할 수 있다. 일부 양상들에서, 베이스 모델(804)의 훈련은 (예컨대, 식(4)을 사용하여) 입력 좌표 포지션들을 픽셀 값들에 매핑함으로써 프레임들의 그룹(예컨대, I 프레임)으로부터 제1 프레임을 압축하는 것을 포함할 수 있다.
[0194] 일부 양상들에서, 베이스 모델(804)의 크기는 베이스 모델(804)과 연관된 가중치 텐서들 중 하나 이상을 양자화함으로써 감소될 수 있다. 일부 예들에서, 가중 텐서들은 고정 소수점 양자화 함수, 이를테면 식(2)으로부터의 함수를 사용하여 양자화될 수 있다. 예를 들어, 식(2)은 베이스 모델(804)을 양자화하여 양자화된 베이스 모델(806)(예컨대, 양자화된 베이스 모델(f q ( θ )))을 산출하는 데 사용될 수 있다. 일부 양상들에서, 양자화된 베이스 모델(806)은 (예컨대, 산술 인코더를 사용하여) 압축되어 수신기에 전송될 수 있다.
[0195] 일부 예들에서, 파이프라인(800)은 2개의 이미지 프레임들(예컨대, I 프레임(802)과 P1 프레임(808)) 사이의 광 흐름 필드를 결정하는 데 사용될 수 있는 흐름 모델(810)(예컨대, 흐름 모델())을 포함할 수 있다. 예를 들어, 흐름 모델(810)은 비디오로부터의 연속적인 이미지 프레임들 사이의 광 흐름 필드 또는 모션(motion) 벡터(예컨대, 변위 벡터들의 필드)를 결정하도록 구성될 수 있다. 일부 양상들에서, 흐름 모델(810)은 프레임들의 그룹으로부터의 제2 프레임(예컨대, P1 프레임(808))을 사용하여 훈련될 수 있다. 일부 경우들에서, 흐름 모델(810)에 의해 결정된 변위 벡터들의 필드는 이전 프레임에 적용되어 현재 프레임을 모델링할 수 있다. 일부 양상들에서, 광 흐름 필드로부터의 변위는 로 표현될 수 있다. 일부 경우들에서, 광 흐름 필드로부터의 변위는 다음 식에 따라 입력 변수들에 변위 벡터를 더함으로써 적용될 수 있다:
(7)
[0196] 일부 양상들에서, 흐름 모델(810)의 크기는 흐름 모델(810)과 연관된 가중치 텐서들 중 하나 이상을 양자화함으로써 감소될 수 있다. 일부 예들에서, 가중 텐서들은 고정 소수점 양자화 함수, 이를테면 식(2)으로부터의 함수를 사용하여 양자화될 수 있다. 예를 들어, 식(2)은 흐름 모델(810)을 양자화하여 양자화된 흐름 모델(812)(예컨대, 양자화된 흐름 모델())을 산출하는 데 사용될 수 있다. 일부 양상들에서, 양자화된 흐름 모델(812)은 (예컨대, 산술 인코더를 사용하여) 압축되어 수신기에 전송될 수 있다.
[0197] 도 8b는 암시적 신경 표현들을 사용하는 픽처들의 그룹에 대한 파이프라인(840)의 일례를 예시하는 도면이다. 일부 양상들에서, 파이프라인(840)은 파이프라인(800)을 따를 수 있는 제2 파이프라인 상을 표현할 수 있다. 예를 들어, 파이프라인(840)은 훈련된 베이스 모델(예컨대, 베이스 모델(844)) 및 훈련된 흐름 모델(예컨대, 흐름 모델(846))을 사용하여 프레임들을 프로세싱 및 압축하는 데 사용될 수 있다.
[0198] 일부 예들에서, 파이프라인(840)은 합성 모델의 파라미터들에 대한 양자화된 업데이트들을 결정함으로써 프레임들의 그룹으로부터의 추가 프레임들을 인코딩하는 데 사용될 수 있다. 예를 들어, 파이프라인(840)은 이전 프레임에 대해 베이스 모델 가중치 업데이트들(δθ) 및 흐름 모델 가중치 업데이트들()을 학습하기 위해 후속 P 프레임들(예컨대, P1 프레임(842))에 걸쳐 순차적으로 반복하는 데 사용될 수 있다. 일부 경우들에서, 베이스 모델 가중치들(θ)에 대한 업데이트들 및 흐름 모델 가중치들()에 대한 업데이트들은 다음과 같이 결정될 수 있다:
그리고 (8)
[0199] 일부 양상들에서, 베이스 모델(844) 및 흐름 모델(846)에 대한 업데이트된 가중치들이 수신기에 전송될 수 있다. 일부 경우들에서, 가중치 업데이트들(δθ, )은 δθ = 0을 중심으로 하는 폭(t)의 n개의 동일 크기의 빈(bin)들의 고정된 그리드에 대해 양자화될 수 있다. 일부 예들에서, 가중치 업데이트들은 스파이크 및 슬래브 사전 분포, 다음 식으로 주어진 넓은 가우시안 분포와 넓은 가우시안 분포의 혼합 모델에 따라 엔트로피 코딩될 수 있다:
. (9)
[0200] 일부 양상들에서, 식(9)에서 사용된 분산()을 갖는 "슬래브" 컴포넌트는 업데이트된 가중치들을 수신기에 전송하기 위한 비트 레이트를 최소화할 수 있다. 일부 경우들에서, 좁은 표준 편차()를 갖는 "스파이크" 컴포넌트는 0 업데이트들과 연관된 프로세싱 비용을 최소화할 수 있다. 일부 예들에서, 유사한 후속 프레임은 희소하며 비교적 낮은 비트 레이트 비용과 연관된 업데이트들(δθ)을 가질 수 있다. 일부 양상들에서, 양자화 그리드 파라미터들(n, t), 이전 표준 편차들(, ), 및 스파이크-슬래브 비()는 하이퍼파라미터들에 대응한다. 도 8b에 도시된 바와 같이, 수신기는 (프레임()(850)으로서 도시된) 재구성된 P1 프레임(850) 및 (프레임()(848)으로서 도시된) 재구성된 I 프레임을 출력한다.
[0201] 도 8c는 암시적 신경 표현들을 사용하는 픽처들의 그룹에 대한 파이프라인(860)의 일례를 예시하는 도면이다. 일부 예들에서, 파이프라인(860)은 프레임들의 그룹으로부터의 개개의 프레임을 프로세싱하도록 구성되는 다수의 스테이지들을 포함할 수 있다. 예를 들어, 파이프라인(860)은 제1 프레임(예컨대, I 프레임(802))을 프로세싱하여 재구성된 제1 프레임()(872)을 산출할 수 있는 제1 스테이지(866)를 포함할 수 있다.
[0202] 일부 양상들에서, 파이프라인(860)은 제2 프레임(예컨대, P1 프레임(862))을 프로세싱하여 재구성된 제2 프레임()(874)을 산출할 수 있는 제2 스테이지(868)를 포함할 수 있다. 일부 예들에서, 파이프라인(860)은 제3 프레임(예컨대, P2 프레임(864))을 프로세싱하여 재구성된 제3 프레임()(876)을 산출할 수 있는 제3 스테이지(870)를 포함할 수 있다. 당해 기술분야에서 통상의 지식을 가진 자들은 파이프라인(860)이 본 기술에 따른 임의의 수의 스테이지들을 갖도록 구성될 수 있다고 인식할 것이다.
[0203] 일부 예들에서, 파이프라인(860)의 각각의 스테이지는 베이스 모델(예컨대, 베이스 모델(804)) 및 흐름 모델(예컨대, 흐름 모델(810))을 포함할 수 있다. 일부 양상들에서, 베이스 모델에 대한 입력은 흐름 모델 출력들의 이전 버전들뿐만 아니라 현재 흐름 모델과의 입력 좌표들의 엘리먼트별 합일 수 있다. 일부 경우들에서, 첨부된 흐름 모델들은 스킵(skip) 연결로 부가될 수 있는 추가 계층들로서 구현될 수 있다.
[0204] 도 10은 암시적 신경 압축을 수행하기 위한 예시적인 프로세스(1000)를 예시하는 도면이다. 일 양상에서, 프로세스(1000)의 각각의 블록은 신경망 압축 시스템(예컨대, 시스템(700))에서 레이트 왜곡을 최소화하기 위해 구현될 수 있는 식(1002)과 연관될 수 있다. 일부 예들에서, 식(1002)은 다음 형태를 가질 수 있다:
(10)
[0205] 식(1002)을 참조하면, 는 왜곡 함수(예컨대, MSE, MS-SSIM)에 대응할 수 있고; 는 암시적 모델 클래스(예컨대, 네트워크 타입 및 아키텍처)에 대응할 수 있고; 는 가중치 양자화기에 대응할 수 있고; 는 암시적 모델 가중치들에 대응할 수 있고; 는 입력 이미지 또는 비디오에 대응할 수 있고; β는 절충 파라미터에 대응할 수 있고; 는 가중치 사전 분포에 대응할 수 있다.
[0206] 프로세스(1000)로 넘어가면, 블록(1004)에서, 프로세스는 최적의 함수 클래스 또는 모델 아키텍처를 찾는 것을 포함한다. 일부 양상들에서, 최적의 암시적 모델을 찾는 것은 네트워크 아키텍처들에 걸친 탐색, 그리고 (예컨대, 가중치들의 양자화 없이) 왜곡 손실을 최소화함으로써 각각의 모델에 대한 가중치들을 훈련시키는 것을 포함할 수 있다. 일부 예들에서, 최적의 모델은 최소화된 왜곡 손실에 기초하여 선택된다. 일부 경우들에서, 탐색은 신경망 탐색 또는 베이지안(Bayesian) 최적화 기법을 포함할 수 있다.
[0207] 블록(1006)에서, 프로세스(1000)는 최적의 함수 파라미터들 및/또는 가중치들을 찾는 것을 포함한다. 일부 예들에서, 최적의 가중치들을 찾는 것은, 최적의 가중치들을 찾기 위해 기울기 하강 또는 확률적 기울기 하강을 사용하는 것을 포함할 수 있다.
[0208] 블록(1008)에서, 프로세스(1000)는 최적의 양자화 설정들을 찾는 것을 포함한다. 일부 양상들에서, 최적의 양자화 설정들을 찾는 것은 (예컨대, 기계 학습 알고리즘을 사용하여 훈련된) 훈련 가능한 양자화기를 사용하여 수행될 수 있다. 일부 예들에서, 양자화 설정들은 코드북 양자화, 학습된 고정 소수점 양자화, 및/또는 임의의 다른 적절한 양자화 기법을 사용하여 결정될 수 있다.
[0209] 블록(1010)에서, 프로세스(1000)는 최적의 가중치 사전 분포를 찾는 것을 포함한다. 일부 경우들에서, 최적의 가중치 사전 분포는 상이한 분포 타입들(예컨대, 가우시안, 베타(beta), 라플라스 등)을 탐색함으로써 발견될 수 있다. 일부 양상들에서, 최적의 가중치 사전 분포를 찾는 것은 레이트 손실을 최소화하도록 가중치 분포의 파라미터들(예컨대, 평균 및/또는 표준 편차)을 적합화시키는 것을 포함할 수 있다. 일부 예들에서, 어떠한 가중치들도 없는 이진수들의 표시를 제공할 수 있는 이진 마스크가 디코더로의 송신을 위해 포함될 수 있다.
[0210] 일부 예들에서, 프로세스(1000)의 단계들은 적용 가능한 경우, 순차적으로 또는 병렬 프로세싱을 사용하여 실행될 수 있다. 일부 양상들에서, 하나 이상의 파라미터들은 역전파를 가능하게 할 수 있으며, 이는 하나 이상의 단계들의 조합을 가능하게 할 수 있다(예컨대, 블록(1006) 및 블록(1008)은 학습 가능한 양자화기를 사용할 때 기울기 하강을 사용하여 최소화될 수 있음).
[0211] 도 11은 암시적 신경 압축을 수행하기 위한 예시적인 프로세스(1100)를 예시하는 도면이다. 블록(1102)에서, 프로세스(1100)는 신경망 압축 시스템에 의한 압축을 위한 입력 비디오 데이터를 수신하는 것을 포함할 수 있다. 일부 예들에서, 신경망 압축 시스템은 암시적 신경 표현들에 기반하는 IFF(implicit frame flow)를 사용하여 비디오 및 이미지 압축을 수행하도록 구성될 수 있다. 예를 들어, 전체 해상도 비디오 시퀀스들은 좌표 포지션들을 픽셀 값들에 매핑하는 신경망으로 각각의 프레임을 표현함으로써 압축될 수 있다. 일부 양상들에서, 프레임들 사이의 모션 보상(예컨대, 광 흐름 워핑)을 가능하게 하기 위해 좌표 입력들을 변조하기 위해 별개의 암시적 네트워크가 사용될 수 있다. 일부 예들에서, IFF는, 수신기가 사전 훈련된 신경망에 액세스할 것이 요구되지 않도록 구현될 수 있다. 일부 경우들에서, IFF는 별개의 훈련 데이터세트의 필요성 없이 구현될 수 있다(예컨대, 네트워크는 입력 프레임들을 사용하여 훈련될 수 있음).
[0212] 블록(1104)에서, 프로세스(1100)는 입력 비디오를 ("픽처들의 그룹들" 또는 "GoP"로도 또한 지칭되는) 프레임들의 그룹들로 분할하는 것을 포함한다. 일부 예들에서, 프레임들의 그룹은 5개 이상의 프레임들을 포함할 수 있다. 일부 양상들에서, 프레임들의 그룹 내의 제1 프레임은 독립형 이미지(예컨대, I 프레임)로서 압축될 수 있는 한편, 프레임들의 그룹 내의 다른 프레임들은 다른 프레임들로부터의 이용 가능한 정보를 사용하여 압축될 수 있다. 예컨대, 프레임들의 그룹 내의 다른 프레임들은 이전 프레임에 의존하는 P 프레임들로서 압축될 수 있다. 일부 양상들에서, 프레임들은 선행 및 후속 프레임들 모두에 의존하는 B 프레임들로서 압축될 수 있다.
[0213] 블록(1106)에서, 프로세스(1100)는 I 프레임에 대해 베이스 모델(예컨대, 베이스 모델())을 훈련시키는 것을 포함한다. 일부 예들에서, I 프레임에 대해 베이스 모드를 훈련시키는 것은 왜곡을 최소화하는 것을 포함할 수 있다. 일부 양상들에서, I 프레임에 대해 베이스 모델을 훈련시키는 것은 다음 관계에 기반할 수 있다:
(11)
[0214] 식(11)에서, t는 프레임 인덱스에 대응할 수 있고; x, y는 비디오 프레임 내의 좌표들에 대응할 수 있고; 는 (x, y) 좌표들에서의 지상 실측 정보에 대응할 수 있고; 는 (x, y) 좌표들에서 평가된 가중치들()을 갖는 암시적 신경망에 대응할 수 있고; 는 파라미터들()을 갖는 양자화 함수에 대응할 수 있고; 는 양자화된 가중치들()을 압축하는 데 사용되는 사전 분포에 대응할 수 있다.
[0215] 블록(1108)에서, 프로세스(1100)는 I 프레임 가중치들(θ 0)을 양자화 및 엔트로피 코딩하고 이들을 비트스트림에 기록하는 것을 포함한다. 일부 양상들에서, I 프레임들을 표현하는 암시적 모델의 모델 크기를 감소시키기 위해, 각각의 가중 텐서()는 고정 소수점 표현을 사용하여(예컨대, 식(2)을 사용하여) 양자화될 수 있다. 일부 예들에서, 비트 폭은 암시적으로 로서 정의될 수 있으며, 여기서 는 스케일에 대응할 수 있고, 는 클리핑(clipping) 임계치에 대응할 수 있다. 일부 예들에서, 행렬의 모든 각각의 행에 대한 별개의 범위 및 비트 폭을 획득하기 위해 채널별 양자화가 수행될 수 있다. 일 양상에서, 채널별 혼합된 정밀도 양자화 함수는 다음에 따라 정의될 수 있다:
(12)
[0216] 일부 양상들에서, 양자화 파라미터들 및 정수 텐서들 은 비트스트림으로 인코딩될 수 있다. 예컨대, 는 32 비트 부동 소수점 벡터들로서 인코딩될 수 있고, 비트 폭들 는 5-비트 정수 벡터들로서 인코딩될 수 있으며, 정수 텐서들 는 이들 개개의 비트 채널 폭 로서 인코딩될 수 있다.
[0217] 블록(1110)에서, 프로세스(1100)는 P 프레임에 대해 흐름 모델(예컨대, 모델())을 훈련시키는 것을 포함한다. 일부 양상들에서, P 프레임은 프레임들의 그룹에서 다음 순차적인 프레임(예컨대, I 프레임 이후의 제1 P 프레임)에 대응할 수 있다. 위에서 언급된 바와 같이, 광 흐름은 암시적 표현들 사이의 연속성을 레버리지함으로써 암시적으로 모델링될 수 있다. IFF를 사용하여, 프레임들은 다음과 같이 이미지 좌표들을 입력 및 리턴 픽셀 값들로서 취하는 네트워크로서 표현될 수 있다: . 일부 양상들에서, 광 흐름 필드()로부터의 변위는 입력 변수들에 변위 벡터를 더함(예컨대, 식(7))으로써 적용될 수 있다. 일부 양상들에서, P 프레임에 대해 흐름 모델을 훈련시키는 것은 식(11)의 관계에 기반할 수 있다.
[0218] 블록(1112)에서, 프로세스(1100)는 P 프레임 가중치들(φ 0)을 양자화 및 엔트로피 코딩하고 이들을 비트스트림에 기록하는 것을 포함한다. 일부 양상들에서, P 프레임 가중치들(φ 0)은 I 프레임 가중치들(θ 0)에 대해 앞서 설명된 방법들을 사용하여 양자화되고 엔트로피 코딩될 수 있다. 예를 들어, P 프레임 가중치들(φ 0)은 고정 소수점 표현을 사용하여 양자화될 수 있다. 어떤 경우에는, 채널별 양자화는 식(12)에 따라 수행될 수 있다. 일부 양상들에서, 양자화 파라미터들 및 정수 텐서들은 비트스트림에 기록되거나 또는 비트스트림으로 인코딩되어 수신기에 전송될 수 있다. 일부 양상들에서, 학습 가능한 양자화 파라미터들(ω)은 또한 인코딩되어 비트스트림에 기록될 수 있다.
[0219] 블록(1114)에서, 프로세스(1100)는 현재 프레임(P t )을 프로세싱하기 위한 기존 모델 파라미터들을 로딩하는 것을 포함한다. 일부 양상들에서, 현재 프레임(P t )은 프레임들의 그룹 내의 다음 프레임에 대응할 수 있다. 예를 들어, 현재 프레임은 베이스 모델 및 흐름 모델을 훈련시키는 데 각각 사용된 I 프레임 및 P 프레임을 따르는 프레임에 대응할 수 있다. 일부 양상들에서, 기존의 모델 파라미터들은 이전 프레임에 대한 베이스 모델 가중치들(예컨대, θ t -1) 및 이전 프레임에 대한 흐름 모델 가중치들(예컨대, φ t -1)로서 표현될 수 있다.
[0220] 블록(1116)에서, 프로세스(1100)는 현재 프레임에 대해 베이스 모델 및 흐름 모델을 훈련시키는 것을 포함한다. 일부 양상들에서, 현재 프레임에 대해 베이스 모델 및 흐름 모델을 훈련시키는 것은 다음과 같이 이전 프레임에 대해 가중치 업데이트들(δθ, δφ)을 학습하는 것을 포함한다:
그리고 . (13)
[0221] 일부 예들에서, 베이스 모델에 대한 업데이트들은 잔차들을 모델링하는 것에 대응할 수 있다. 일부 경우들에서, 업데이트들을 모델링하는 것은 이전에 컴퓨팅된 흐름 정보를 재전송하는 것을 피할 수 있다(예컨대, 연속적인 프레임들 사이의 광 흐름은 유사할 가능성이 있음). 일부 양상들에서, P 프레임(T)의 암시적 표현은 다음 식들에 의해 보여질 수 있다:
(14)
(15)
[0222] 일부 예들에서, 식(15)에 의해 입증되는 바와 같이, 모든 이전 흐름 모델들의 누적 효과는 국소 변위들의 합인 단일 텐서에 저장된다. 일부 경우들에서, 이 텐서는 전송기 및 수신기에 의해 유지될 수 있다. 일부 양상들에서, 단일 텐서의 사용은 각각의 프레임에 대해 모든 각각의 네트워크를 통한 포워드 패스를 수행하기 위해 이전 버전들의 흐름 네트워크들을 저장할 필요성을 회피할 수 있다.
[0223] 일부 경우들에서, 프레임()에 대해 훈련시키는 것은 다음 관계에 따라 표현될 수 있다:
(16)
[0224] 식(16)에서, 는 프레임()에 대한 왜곡을 나타낼 수 있으며, 는 업데이트된 레이트 비용을 나타낸다.
[0225] 블록(1118)에서, 프로세스(1100)는 가중치 업데이트들(δθ, δφ)을 비트스트림으로 양자화 및 엔트로피 코딩하는 것을 포함할 수 있다. 일부 예들에서, 업데이트들(δθ, δφ)은 δθ = 0을 중심으로 하는 폭(t)의 n개의 동일 크기의 빈들의 고정된 그리드에 대해 양자화될 수 있다. 일부 양상들에서, 양자화된 가중치 업데이트들은, 식(9)에 대해 논의된 바와 같이, 스파이크 및 슬랩 사전 분포 하에서 엔트로피 코딩될 수 있다. 위에서 언급된 바와 같이, 일부 양상들에서, 식(9)에서 사용된 분산()을 갖는 "슬래브" 컴포넌트는 업데이트된 가중치들을 수신기에 전송하기 위한 비트 레이트를 최소화할 수 있다. 일부 경우들에서, 좁은 표준 편차()를 갖는 "스파이크" 컴포넌트는 0 업데이트들과 연관된 프로세싱 비용을 최소화할 수 있다.
[0226] 블록(1120)에서, 프로세스(1100)는 베이스 모델 및 흐름 모델에 대한 모델 파라미터들을 업데이트하는 것을 포함한다. 일부 양상들에서, 모델 파라미터들에 대한 업데이트들은 로서 표기될 수 있다. 일부 경우들에서, 모델 파라미터들에 대한 업데이트들이 수신기에 전송될 수 있다.
[0227] 블록(1122)에서, 프로세스(1100)는 변위 텐서를 업데이트하는 것을 포함한다. 일부 양상들에서, 변위 텐서에 대한 업데이트들은 로서 표기될 수 있다.
[0228] 블록(1124)에서, 프로세스(1100)는 프레임들의 그룹(예컨대, GoP) 내에 추가 프레임들이 있는지 여부를 결정할 수 있다. 프로세싱할 추가 프레임들(예컨대, 추가 P 프레임들)이 있다면, 프로세스(1100)는 블록들(1114 내지 1122)에 대해 논의된 동작들을 반복할 수 있다. 네트워크 압축 시스템이 프레임들의 그룹의 프로세싱을 완료했다면, 프로세스(1100)는 블록(1126)으로 진행하여 비디오 입력과 연관된 프레임들의 더 많은 그룹들이 있는지 여부를 결정할 수 있다. 프로세싱할 추가 프레임들의 그룹들이 있다면, 방법은 블록(1106)으로 리턴하고 프레임들의 다음 그룹에 대응하는 새로운 I 프레임을 사용하여 베이스 모델의 훈련을 시작할 수 있다. 프레임들의 추가 그룹들이 없다면, 프로세스(1100)는 블록(1102)으로 리턴하여 압축을 위한 새로운 입력 데이터를 수신할 수 있다.
[0229] 도 12는 미디어 데이터를 프로세싱하기 위한 예시적인 프로세스(1200)를 예시하는 흐름도이다. 블록(1202)에서, 프로세스(1200)는 신경망 압축 시스템에 의한 압축을 위해 복수의 이미지들을 수신하는 것을 포함할 수 있다. 예를 들어, 암시적 신경망 압축 시스템(700)은 이미지 데이터(702)를 수신할 수 있다. 일부 양상들에서, 암시적 신경망 압축 시스템(700)은 파이프라인(800)을 사용하여 구현될 수 있고, 복수의 이미지들은 I 프레임(802) 및 P1 프레임(808)을 포함할 수 있다.
[0230] 블록(1204)에서, 프로세스(1200)는 복수의 이미지들로부터의 제1 이미지에 기초하여, 신경망 압축 시스템의 제1 모델과 연관된 제1 복수의 가중 값들을 결정하는 것을 포함할 수 있다. 예컨대, 베이스 모델(804)은 I 프레임(802)에 기초하여 제1 복수의 가중 값들(예컨대, 가중치들(w)(706))을 결정할 수 있다. 일부 양상들에서, 제1 모델의 적어도 하나의 계층은 제1 이미지와 연관된 복수의 좌표들의 포지션 인코딩을 포함할 수 있다. 예컨대, 베이스 모델(804)의 적어도 하나의 계층은 I 프레임(802)과 연관된 좌표들의 포지션 인코딩을 포함할 수 있다.
[0231] 일부 경우들에서, 제1 모델은 제1 이미지와 연관된 복수의 좌표들에 대응하는 하나 이상의 픽셀 값들을 결정하도록 구성될 수 있다. 예를 들어, 베이스 모델(804)은 I 프레임(802)과 연관된 복수의 좌표들에 대응하는 하나 이상의 픽셀 값들(예컨대, RGB 값들)을 결정하도록 구성될 수 있다.
[0232] 블록(1206)에서, 프로세스(1200)는 제1 복수의 가중 값들의 압축된 버전을 포함하는 제1 비트스트림을 생성하는 것을 포함할 수 있다. 예를 들어, 산술 인코더(710)는 복수의 가중 값들(예컨대, 가중치들(w)(706))의 압축된 버전을 포함할 수 있는 비트스트림(724)을 생성할 수 있다. 블록(1208)에서, 프로세스(1200)는 수신기로의 송신을 위해 제1 비트스트림을 출력하는 것을 포함할 수 있다. 예컨대, 비트스트림(724)은 수신기(예컨대, 산술 디코더(730))로의 송신을 위해 산술 인코더(710)에 의해 출력될 수 있다.
[0233] 일부 양상들에서, 프로세스(1200)는 복수의 양자화된 가중 값들을 산출하기 위해 가중치 사전 분포 하에서 제1 복수의 가중 값들을 양자화하는 것을 포함할 수 있다. 일부 경우들에서, 비트스트림은 복수의 양자화된 가중 값들의 압축된 버전을 포함할 수 있다. 예를 들어, 가중치들(w)(706)은 양자화된 가중치들(708)을 산출하기 위해 가중치 사전 분포(712) 하에서 양자화될 수 있다. 일부 예들에서, 양자화된 가중치들(708)은 산술 인코더(710)에 의해 비트스트림(724)으로 인코딩될 수 있다. 일부 양상들에서, 프로세스(1200)는 가중치 사전 분포를 사용하여 제1 복수의 가중 값들을 엔트로피 인코딩하는 것을 포함할 수 있다. 예컨대, 산술 인코더(710)는 비트스트림(724)에서 가중치 사전 분포(712) 하에서 엔트로피 코딩을 사용하여 양자화된 가중치들(708)을 인코딩할 수 있다.
[0234] 일부 경우들에서, 가중치 사전 분포는 제1 비트스트림을 수신기에 전송하는 것과 연관된 레이트 손실을 최소화하도록 선택될 수 있다. 예를 들어, 가중치 사전 분포(712)는 비트스트림(724)을 수신기에 전송하는 것과 연관된 레이트 손실을 최소화하도록 선택 또는 구성될 수 있다. 일부 예들에서, 제1 복수의 가중 값들은 고정 소수점 양자화를 사용하여 양자화될 수 있다. 일부 양상들에서, 고정 소수점 양자화는 기계 학습 알고리즘을 사용하여 구현될 수 있다. 예를 들어, 가중치들()(706)은 정수 텐서 및 스케일링 팩터를 포함하는 고정 소수점 수를 갖는 가중 텐서를 표현할 수 있는 고정 소수점 양자화를 사용하여 양자화될 수 있다. 일부 경우들에서, 암시적 신경망 압축 시스템(700)은 기계 학습 알고리즘을 사용하여 가중치들()(706)의 고정 소수점 양자화를 구현할 수 있다.
[0235] 일부 양상들에서, 프로세스(1200)는 복수의 이미지들로부터의 제2 이미지에 기초하여, 신경망 압축 시스템과 연관된 제2 모델에 의한 사용을 위한 제2 복수의 가중 값들을 결정하는 것을 포함할 수 있다. 예컨대, 파이프라인(800)은 P1 프레임(808)에 기초하여, 흐름 모델(810)에 의한 사용을 위한 제2 세트의 가중 값들을 결정할 수 있다. 일부 경우들에서, 프로세스(1200)는 제2 복수의 가중 값들의 압축된 버전을 포함하는 제2 비트스트림을 생성하는 것 그리고 수신기로의 송신을 위해 제2 비트스트림을 출력하는 것을 포함할 수 있다. 예를 들어, 산술 인코더(예컨대, 산술 인코더(710))는 흐름 모델(810)에 의해 사용되는 가중 텐서들의 압축된 버전을 포함할 수 있는 비트스트림을 생성할 수 있다.
[0236] 일부 예들에서, 제2 모델은 제1 이미지와 제2 이미지 사이의 광 흐름을 결정하도록 구성될 수 있다. 예를 들어, 흐름 모델(810)(예컨대, 흐름 모델())은 I 프레임(802)과 P1 프레임(808) 사이의 광 흐름 필드를 결정하는 데 사용될 수 있다. 일부 양상들에서, 프로세스(1200)는 광 흐름에 기반하여, 제1 복수의 가중 값들로부터 적어도 하나의 업데이트된 가중 값을 결정하는 것을 포함할 수 있다. 예컨대, 흐름 모델(810)은 광 흐름에 기반하여, 베이스 모델(804)에 의해 사용된 가중 값들로부터 업데이트된 가중 값을 결정할 수 있다.
[0237] 일부 양상들에서, 프로세스(1200)는 제1 이미지에 기반하여, 제1 모델에 대응하는 모델 아키텍처를 선택하는 것을 포함할 수 있다. 일부 경우들에서, 모델 아키텍처를 선택하는 것은 제1 이미지에 기반하여, 하나 이상의 모델 아키텍처들과 연관된 복수의 가중 값들을 튜닝하는 것을 포함할 수 있고, 하나 이상의 모델 아키텍처들 각각은 하나 이상의 모델 특징들과 연관된다. 예를 들어, 암시적 신경 압축 시스템(700)은 이미지 데이터(702)에 기초하여 각각의 모델 아키텍처에 대한 가중치들()(706)을 튜닝할 수 있다. 일부 예들에서, 하나 이상의 모델 특징들은 폭, 깊이, 해상도, 컨볼루션 커널의 크기, 및 입력 치수 중 적어도 하나를 포함할 수 있다.
[0238] 일부 경우들에서, 프로세스(1200)는 하나 이상의 모델 아키텍처들 각각에 대응하는 재구성된 데이터 출력과 제1 이미지 사이의 적어도 하나의 왜곡을 결정하는 것을 포함할 수 있다. 예를 들어, 암시적 신경 압축 시스템(700)은 양자화 없이 왜곡 손실을 최소화하도록 각각의 모델과 연관된 가중치들()(706)을 튜닝할 수 있다. 일부 양상들에서, 프로세스(1200)는 적어도 하나의 왜곡에 기반하여 하나 이상의 모델 아키텍처들로부터 모델 아키텍처를 선택하는 것을 포함할 수 있다. 예컨대, 암시적 신경 압축 시스템(700)은 가장 낮은 왜곡 값에 기반하여 모델 아키텍처를 선택할 수 있다.
[0239] 일부 예들에서, 프로세스(1200)는 모델 아키텍처의 압축된 버전을 포함하는 제2 비트스트림을 생성하는 것 그리고 수신기로의 송신을 위해 제2 비트스트림을 출력하는 것을 포함할 수 있다. 예를 들어, 아키텍처 인코더(716)는 모델 아키텍처 (718)를 비트스트림(720)에서 인코딩하고, 수신기(예컨대, 아키텍처 디코더(726))로의 송신을 위해 비트스트림(720)을 출력할 수 있다.
[0240] 도 13은 미디어 데이터를 프로세싱하기 위한 예시적인 프로세스(1300)를 예시하는 흐름도이다. 블록(1302)에서, 프로세스(1300)는 복수의 이미지들로부터 제1 이미지와 연관된 제1 복수의 신경망 가중 값들의 압축된 버전을 수신하는 것을 포함할 수 있다. 예를 들어, 산술 디코더(730)는 이미지 데이터(702)와 연관된 복수의 가중 값들(예컨대, 가중치들()(706))을 포함할 수 있는 비트스트림(724)을 수신할 수 있다.
[0241] 블록(1304)에서, 프로세스(1300)는 제1 복수의 신경망 가중 값들을 압축해제하는 것을 포함할 수 있다. 예컨대, 산술 디코더는 비트스트림(724)으로부터의 가중치들()(706)을 압축해제할 수 있다. 블록(1306)에서, 프로세스(1300)는 제1 신경망 모델을 사용하여, 제1 이미지를 산출하기 위해 제1 복수의 신경망 가중 값들을 프로세싱하는 것을 포함할 수 있다. 예를 들어, 암시적 신경 압축 시스템(700)은 I 프레임(802)의 재구성된 버전을 산출하기 위해 가중치 텐서를 프로세싱하는 데 사용될 수 있는 양자화된 베이스 모델(806)을 갖는 파이프라인(800)을 포함할 수 있다.
[0242] 일부 양상들에서, 프로세스(1300)는 복수의 이미지들로부터 제2 이미지와 연관된 제2 복수의 신경망 가중 값들의 압축된 버전을 수신하는 것을 포함할 수 있다. 일부 경우들에서, 프로세스(1300)는 제2 복수의 신경망 가중 값들을 압축해제하고, 제1 이미지와 제2 이미지 사이의 광 흐름을 결정하기 위해 제2 신경망 모델을 사용하여 제2 복수의 신경망 가중 값들을 프로세싱하는 것을 포함할 수 있다. 예를 들어, 암시적 신경 압축 시스템(600)은 I 프레임(802)과 P1 프레임(808) 사이의 광 흐름을 결정하기 위해 흐름 모델(810)과 연관된 가중치 텐서들을 프로세싱하는 데 사용될 수 있는 양자화된 흐름 모델을 갖는 파이프라인(800)을 포함할 수 있다.
[0243] 일부 경우들에서, 프로세스(1300)는 광 흐름에 기반하여, 제1 신경망 모델과 연관된 제1 복수의 신경망 가중 값들로부터 적어도 하나의 업데이트된 가중 값을 결정하는 것을 포함할 수 있다. 예컨대, 흐름 모델(810)은 흐름 모델(810)과 연관된 가중치들로부터 업데이트된 가중 값을 결정할 수 있다. 일부 양상들에서, 프로세스(1300)는 제1 신경망 모델을 사용하여, 제2 이미지의 재구성된 버전을 산출하기 위해 적어도 하나의 업데이트된 가중 값을 프로세싱하는 것을 포함할 수 있다. 예를 들어, 양자화된 베이스 모델(806)은 (예컨대, 광 흐름에 기반하여) 업데이트된 가중치들을 사용하여 P1 프레임(808)의 재구성된 버전을 산출할 수 있다.
[0244] 일부 예들에서, 제1 복수의 신경망 가중 값들은 가중치 사전 분포 하에서 양자화될 수 있다. 예를 들어, 양자화된 베이스 모델(806)에 의해 수신된 가중치들은 가중치 사전 분포(예컨대, 가중치 사전 분포(712)) 하에서 양자화될 수 있다. 일부 양상들에서, 제1 복수의 네트워크 가중 값들의 압축된 버전은 엔트로피 인코딩된 비트스트림에서 수신된다. 예컨대, 산술 인코더(710)는 가중치들(예컨대, 가중치들()(706)) 또는 양자화된 가중치들(예컨대, 양자화된 가중치들(708)) 및 출력 비트스트림(724)의 엔트로피 인코딩을 수행할 수 있다.
[0245] 일부 경우들에서, 프로세스(1300)는 제1 신경망 모델에 대응하는 신경망 아키텍처의 압축된 버전을 수신하는 것을 포함할 수 있다. 예컨대, 아키텍처 인코더(716)는 비트스트림(720)에서 모델 아키텍처 (718)를 인코딩하고, 이를 아키텍처 디코더(726)에 전송할 수 있다.
[0246] 도 14는 암시적 신경 표현들에 기반하여 이미지 데이터를 압축하기 위한 예시적인 프로세스(1400)를 예시하는 흐름도이다. 블록(1402)에서, 프로세스(1400)는 신경망 압축 시스템에 의한 압축을 위한 입력 데이터를 수신하는 것을 포함할 수 있다. 일부 양상들에서, 입력 데이터는 미디어 데이터(예컨대, 비디오 데이터, 사진 데이터, 오디오 데이터 등)에 대응할 수 있다. 일부 예들에서, 입력 데이터는 신경망 압축 시스템을 훈련시키는 데 사용되는 이미지 데이터에 대응하는 복수의 좌표들을 포함할 수 있다.
[0247] 블록(1404)에서, 프로세스(1400)는 입력 데이터를 압축하기 위해 신경망 압축 시스템에 의해 사용하기 위한 모델 아키텍처를 입력 데이터에 기반하여 선택하는 것을 포함할 수 있다. 일부 양상들에서, 모델 아키텍처를 선택하는 것은 입력 데이터에 기반하여, 하나 이상의 모델 아키텍처들과 연관된 복수의 가중 값들을 튜닝하는 것을 포함할 수 있고, 하나 이상의 모델 아키텍처들 각각은 하나 이상의 모델 특징들과 연관된다. 일부 예들에서, 모델 아키텍처를 선택하는 것은 또한, 하나 이상의 모델 아키텍처들 각각에 대응하는 재구성된 데이터 출력과 입력 데이터 사이의 적어도 하나의 왜곡을 결정하는 것을 포함할 수 있다. 일부 경우들에서, 하나 이상의 모델 아키텍처들로부터 모델 아키텍처를 선택하는 것은 적어도 하나의 왜곡에 기반할 수 있다. 일부 양상들에서, 하나 이상의 모델 특징들은 폭, 깊이, 해상도, 컨볼루션 커널의 크기, 및 입력 치수 중 적어도 하나를 포함할 수 있다.
[0248] 블록(1406)에서, 프로세스(1400)는 입력 데이터를 사용하여, 모델 아키텍처와 연관된 복수의 계층들에 대응하는 복수의 가중 값들을 결정하는 것을 포함할 수 있다. 블록(1408)에서, 프로세스(1400)는 가중치 사전 분포의 압축된 버전을 포함하는 제1 비트스트림을 생성하는 것을 포함할 수 있다. 일부 예들에서, 제1 비트스트림을 생성하는 것은 ONNX(Open Neural Network Exchange) 포맷(format)을 사용하여 가중치 사전 분포를 인코딩하는 것을 포함할 수 있다. 블록(1410)에서, 프로세스(1400)는 가중치 사전 분포 하에서 복수의 가중 값들의 압축된 버전을 포함하는 제2 비트스트림을 생성하는 것을 포함할 수 있다. 일부 양상들에서, 제2 비트스트림을 생성하는 것은 가중치 사전 분포를 사용하여 복수의 가중 값들을 엔트로피 인코딩하는 것을 포함할 수 있다. 일부 예들에서, 가중치 사전 분포는 제2 비트스트림을 수신기에 전송하는 것과 연관된 레이트 손실을 최소화하도록 선택될 수 있다.
[0249] 블록(1412)에서, 프로세스(1400)는 수신기로의 송신을 위해 제1 비트스트림 및 제2 비트스트림을 출력하는 것을 포함할 수 있다. 일부 예들에서, 프로세스는 모델 아키텍처의 압축된 버전을 포함하는 제3 비트스트림을 생성하는 것 그리고 수신기로의 송신을 위해 제3 비트스트림을 출력하는 것을 포함할 수 있다. 일부 양상들에서, 모델 아키텍처의 적어도 하나의 계층은 입력 데이터와 연관된 복수의 좌표들의 포지션 인코딩을 포함한다.
[0250] 일부 예들에서, 프로세스는 복수의 양자화된 가중 값들을 산출하기 위해 복수의 가중 값들을 양자화하는 것을 포함할 수 있으며, 제2 비트스트림은 가중치 사전 분포 하에서 복수의 양자화된 가중 값들의 압축된 버전을 포함한다. 일부 양상들에서, 복수의 가중 값들은 학습된 고정 소수점 양자화를 사용하여 양자화될 수 있다. 일부 경우들에서, 학습된 고정 소수점 양자화는 기계 학습 알고리즘을 사용하여 구현될 수 있다. 일부 예들에서, 제2 비트스트림은 복수의 가중 값들을 양자화하기 위해 사용되는 복수의 인코딩된 양자화 파라미터들을 포함할 수 있다.
[0251] 도 15는 암시적 신경 표현들에 기반하여 이미지 데이터를 압축해제하기 위한 프로세스(1500)의 일례를 예시하는 흐름도이다. 블록(1502)에서, 프로세스(1500)는 가중치 사전 분포의 압축된 버전 및 가중치 사전 분포 하에서 복수의 가중 값들의 압축된 버전을 수신하는 것을 포함할 수 있다. 일부 양상들에서, 가중치 사전 분포 하의 복수의 가중치들은 엔트로피 인코딩된 비트스트림에서 수신될 수 있다. 블록(1504)에서, 프로세스(1500)는 가중치 사전 분포 및 가중치 사전 분포 하의 복수의 가중 값들의 압축된 버전을 압축해제하는 것을 포함할 수 있다.
[0252] 블록(1506)에서, 프로세스(1500)는 가중치 사전 분포 및 가중치 사전 분포 하의 복수의 가중치들에 기초하여, 복수의 신경망 가중치들을 결정하는 것을 포함할 수 있다. 블록(1508)에서, 프로세스(1500)는 재구성된 이미지 콘텐츠를 산출하기 위해 신경망 아키텍처를 사용하여 복수의 신경망 가중치들을 프로세싱하는 것을 포함할 수 있다. 일부 양상들에서, 가중치 사전 분포 하의 복수의 가중 값들은 가중치 사전 분포 하의 복수의 양자화된 가중치들에 대응할 수 있다. 일부 예들에서, 프로세스는 가중치 사전 분포 하에서 복수의 양자화된 가중치들을 양자화하기 위해 사용되는 복수의 인코딩된 양자화 파라미터들을 수신하는 것을 포함할 수 있다.
[0253] 일부 양상들에서, 프로세스는 신경망 아키텍처의 압축된 버전을 수신하는 것 그리고 신경망 아키텍처의 압축된 버전을 압축해제하는 것을 포함할 수 있다. 일부 예들에서, 프로세스는 이진 마스크에 기반하여 가중치 사전 분포 하에서 복수의 가중치들을 재분배하는 것을 포함할 수 있다.
[0254] 일부 예들에서, 본 명세서에서 설명되는 프로세스들(예컨대, 프로세스(1100), 프로세스(1200), 프로세스(1300), 프로세스(1400), 프로세스(1500), 및/또는 본 명세서에서 설명되는 다른 프로세스)은 컴퓨팅 디바이스 또는 장치에 의해 수행될 수 있다. 일례에서, 프로세스(1100, 1200, 1300, 1400 및/또는 1500)는 도 4에 도시된 시스템(400) 또는 도 16에 도시된 컴퓨팅 시스템(1600)에 따른 컴퓨팅 디바이스에 의해 수행될 수 있다.
[0255] 컴퓨팅 디바이스는 임의의 적절한 디바이스, 이를테면 모바일 디바이스(예컨대, 휴대 전화), 데스크톱 컴퓨팅 디바이스, 태블릿 컴퓨팅 디바이스, 웨어러블 디바이스(예컨대, VR 헤드셋(headset), AR 헤드셋, AR 안경류, 네트워크 접속 워치 또는 스마트 워치, 또는 다른 웨어러블 디바이스), 서버 컴퓨터, 자율 주행 차량 또는 자율 주행 차량의 컴퓨팅 디바이스, 로봇 디바이스, 텔레비전, 및/또는 프로세스(1100), 프로세스(1200), 프로세스(1300), 프로세스(1400), 프로세스(1500), 및/또는 본 명세서에서 설명되는 다른 프로세스를 포함하여, 본 명세서에서 설명되는 프로세스들을 수행하기 위한 자원 능력들을 갖는 임의의 다른 컴퓨팅 디바이스를 포함할 수 있다. 일부 경우들에서, 컴퓨팅 디바이스 또는 장치는 다양한 컴포넌트들, 이를테면 하나 이상의 입력 디바이스들, 하나 이상의 출력 디바이스들, 하나 이상의 프로세서들, 하나 이상의 마이크로프로세서(microprocessor)들, 하나 이상의 마이크로컴퓨터(microcomputer)들, 하나 이상의 카메라들, 하나 이상의 센서들, 및/또는 본 명세서에서 설명되는 프로세스들의 단계들을 실행하도록 구성되는 다른 컴포넌트(들)를 포함할 수 있다. 일부 예들에서, 컴퓨팅 디바이스는 디스플레이, 데이터를 통신 및/또는 수신하도록 구성된 네트워크 인터페이스, 이들의 임의의 조합, 및/또는 다른 컴포넌트(들)를 포함할 수 있다. 네트워크 인터페이스는 IP(Internet Protocol) 기반 데이터 또는 다른 타입의 데이터를 통신 및/또는 수신하도록 구성될 수 있다.
[0256] 컴퓨팅 디바이스의 컴포넌트들은 회로로 구현될 수 있다. 예를 들어, 컴포넌트들은 하나 이상의 프로그래밍 가능 전자 회로들(예컨대, 마이크로프로세서들, GPU(graphics processing unit)들, DSP(digital signal processor)들, CPU(central processing unit)들 및/또는 다른 적절한 전자 회로들)을 포함할 수 있는 전자 회로들 또는 다른 전자 하드웨어를 포함할 수 있고 그리고/또는 이들을 사용하여 구현될 수 있으며, 그리고/또는 본 명세서에서 설명되는 다양한 동작들을 수행하기 위해 컴퓨터 소프트웨어(software), 펌웨어, 또는 이들의 임의의 조합을 포함할 수 있고 그리고/또는 이들을 사용하여 구현될 수 있다.
[0257] 프로세스들(1100, 1200, 1300, 1400, 1500)은 논리 흐름도들로서 예시되며, 논리 흐름도들의 동작은 하드웨어, 컴퓨터 명령들, 또는 이들의 조합으로 구현될 수 있는 동작들의 시퀀스를 표현한다. 컴퓨터 명령들과 관련하여, 동작들은 하나 이상의 컴퓨터 판독 가능 저장 매체들 상에 저장된 컴퓨터 실행 가능 명령들을 표현하며, 이러한 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 열거된 동작들을 수행한다. 일반적으로, 컴퓨터 실행 가능 명령들은 특정 기능들을 수행하거나 특정 데이터 타입들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한으로서 해석되는 것으로 의도되지 않으며, 임의의 수의 설명되는 동작들이 임의의 순서로 그리고/또는 병렬로 조합되어 프로세스들을 구현할 수 있다.
[0258] 추가로, 프로세스들(1100, 1200, 1300, 1400, 1500) 및/또는 본 명세서에서 설명되는 다른 프로세스는 실행 가능 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에서 수행될 수 있고, 하나 이상의 프로세서들 상에서, 하드웨어에 의해, 또는 이들의 조합들로 집합적으로 실행되는 코드(예컨대, 실행 가능 명령들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 애플리케이션들)로서 구현될 수 있다. 위에서 언급된 바와 같이, 코드는 예를 들어, 하나 이상의 프로세서들에 의해 실행 가능한 복수의 명령들을 포함하는 컴퓨터 프로그램의 형태로, 컴퓨터 판독 가능 또는 기계 판독 가능 저장 매체 상에 저장될 수 있다. 컴퓨터 판독 가능 또는 기계 판독 가능 저장 매체는 비-일시적일 수 있다.
[0259] 도 16은 본 기술의 특정 양상들을 구현하기 위한 시스템의 일례를 예시하는 도면이다. 특히, 도 16은 예를 들어, 내부 컴퓨팅 시스템, 원격 컴퓨팅 시스템, 카메라 또는 이들의 임의의 컴포넌트를 구성하는 임의의 컴퓨팅 디바이스일 수 있는 컴퓨팅 시스템(1600)의 일례를 예시하며, 여기서 시스템의 컴포넌트들은 접속(1605)을 사용하여 서로 간에 통신한다. 접속(1605)은 버스를 사용하는 물리적 접속, 또는 이를테면 칩셋(chipset) 아키텍처에서 프로세서(1610)로의 직접 접속일 수 있다. 접속(1605)은 또한 가상 접속, 네트워킹된 접속 또는 논리적 접속일 수 있다.
[0260] 일부 실시예들에서, 컴퓨팅 시스템(1600)은 본 개시내용에서 설명되는 기능들이 데이터 센터(datacenter), 다수의 데이터 센터들, 피어(peer) 네트워크 등 내에 분산될 수 있는 분산 시스템이다. 일부 실시예들에서, 설명되는 시스템 컴포넌트들 중 하나 이상은 컴포넌트가 설명되는 기능의 일부 또는 전부를 각각이 수행하는 그러한 많은 컴포넌트들을 표현한다. 일부 실시예들에서, 컴포넌트들은 물리적 또는 가상 디바이스들일 수 있다.
[0261] 예시적인 시스템(1600)은 시스템 메모리(1615), 이를테면 ROM(read-only memory)(1620) 및 RAM(random access memory)(1625)를 프로세서(1610)에 결합하는 접속(1605) 및 적어도 하나의 프로세싱 유닛(CPU 또는 프로세서)(1610)을 포함한다. 컴퓨팅 시스템(1600)은 프로세서(1610)와 직접적으로 접속되거나, 프로세서(1610)에 매우 근접하거나, 또는 프로세서(1610)의 일부로서 통합되는 고속 메모리의 캐시(1612)를 포함할 수 있다.
[0262] 프로세서(1610)는 임의의 범용 프로세서 및 하드웨어 서비스 또는 소프트웨어 서비스, 이를테면 저장 디바이스(1630)에 저장되며, 프로세서(1610)를 제어하도록 구성된 서비스들(1632, 1634, 1636)뿐만 아니라 소프트웨어 명령들이 실제 프로세서 설계에 통합되는 특수 목적 프로세서를 포함할 수 있다. 프로세서(1610)는 본질적으로, 다수의 코어들 또는 프로세서들, 버스, 메모리 제어기, 캐시 등을 포함하는 완전히 자립적인 컴퓨팅 시스템일 수 있다. 다중 코어 프로세서는 대칭적 또는 비대칭적일 수 있다.
[0263] 사용자 상호 작용을 가능하게 하기 위해, 컴퓨팅 시스템(1600)은 임의의 수의 입력 메커니즘들, 이를테면 스피치(speech)를 위한 마이크로폰(microphone), 제스처(gesture) 또는 그래픽 입력(graphical input)을 위한 터치 감응 스크린(touch-sensitive screen), 키보드(keyboard), 마우스(mouse), 모션 입력, 스피치 등을 표현할 수 있는 입력 디바이스(1645)를 포함한다. 컴퓨팅 시스템(1600)은 또한, 다수의 출력 메커니즘들 중 하나 이상일 수 있는 출력 디바이스(1635)를 포함할 수 있다. 일부 예시들에서, 멀티모달(multimodal) 시스템들은 사용자가 컴퓨팅 시스템(1600)과 통신하기 위해 다수의 타입들의 입력/출력을 제공하는 것을 가능하게 할 수 있다. 컴퓨팅 시스템(1600)은 일반적으로 사용자 입력 및 시스템 출력을 통제 및 관리할 수 있는 통신 인터페이스(1640)를 포함할 수 있다.
[0264] 통신 인터페이스는 오디오 잭(jack)/플러그(plug), 마이크로폰(microphone) 잭/플러그, USB(universal serial bus) 포트(port)/플러그, Apple® Lightning® 포트/플러그, 이더넷(Ethernet) 포트/플러그, 광섬유 포트/플러그, 독점 유선 포트/플러그, BLUETOOTH® 무선 신호 전송, BLE(BLUETOOTH® low energy) 무선 신호 전송, IBEACON® 무선 신호 전송, RFID(radio-frequency identification) 무선 신호 전송, NFC(near-field communications) 무선 신호 전송, DSRC(dedicated short range communication) 무선 신호 전송, 802.11 Wi-Fi 무선 신호 전송, WLAN(wireless local area network) 신호 전송, VLC(Visible Light Communication), WiMAX(Worldwide Interoperability for Microwave Access), IR(Infrared) 통신 무선 신호 전송, PSTN(Public Switched Telephone Network) 신호 전송, ISDN(Integrated Services Digital Network) 신호 전송, 3G/4G/5G/LTE 셀룰러 데이터 네트워크 무선 신호 전송, 애드혹(ad-hoc) 네트워크 신호 전송, 라디오파 신호 전송, 마이크로파(microwave) 신호 전송, 적외선 신호 전송, 가시광선 신호 전송, 자외선 광 신호 전송, 전자기 스펙트럼(spectrum)을 따르는 무선 신호 전송, 또는 이들의 어떤 조합을 사용하는 트랜시버들을 포함하여, 유선 및/또는 무선 트랜시버들을 사용하여 수신 및/또는 송신 유선 또는 무선 통신들을 수행하거나 가능하게 할 수 있다.
[0265] 통신 인터페이스(1640)는 또한, 하나 이상의 GNSS(Global Navigation Satellite System) 수신기들 또는, 하나 이상의 GNSS 시스템들과 연관된 하나 이상의 위성들로부터의 하나 이상의 신호들의 수신에 기반하여 컴퓨팅 시스템(1600)의 위치를 결정하는 데 사용되는 트랜시버들을 포함할 수 있다. GNSS 시스템들은 미국 기반 GPS(Global Positioning System), 러시아 기반 GLONASS(Global Navigation Satellite System), 중국 기반 BDS(BeiDou Navigation Satellite System) 및 유럽 기반 Galileo GNSS를 포함한다(그러나 이에 제한되지 않음). 임의의 특정 하드웨어 어레인지먼트 상에서의 동작에 대한 어떠한 제한도 없으며, 따라서 여기서의 기본 특징들은, 개선된 하드웨어 또는 펌웨어 어레인지먼트들이 개발될 때, 이러한 개선된 하드웨어 또는 펌웨어 어레인지먼트들을 쉽게 대체할 수 있다.
[0266] 저장 디바이스(1630)는 비휘발성 및/또는 비-일시적 및/또는 컴퓨터-판독가능 메모리 디바이스일 수 있고, 컴퓨터에 의해 액세스 가능한 데이터를 저장할 수 있는 하드 디스크(hard disk) 또는 다른 타입들의 컴퓨터 판독 가능 매체들, 이를테면 자기 카세트(cassette)들, 플래시(flash) 메모리 카드(card)들, 고체 상태 메모리 디바이스들, 디지털 다목적 디스크(disk)들, 카트리지(cartridge)들, 플로피(floppy) 디스크, 가요성 디스크, 하드 디스크, 자기 테이프(tape), 자기 스트립(strip)/스트라이프(stripe), 임의의 다른 자기 저장 매체, 플래시 메모리, 메모리 저장소, 임의의 다른 고체 상태 메모리, CD-ROM(compact disc read only memory) 광 디스크(disc), 재기록 가능한 CD(compact disc) 광 디스크, DVD(digital video disk) 광 디스크, BDD(blu-ray disc) 광 디스크 홀로그래픽(holographic) 광 디스크, 다른 광 매체, SD(secure digital) 카드, microSD(microsecure digital) 카드, Memory Stick® 카드, 스마트카드 칩(chip), EMV 칩, SIM( subscriber identity module) 카드, 미니(mini)/마이크로/나노(nano)/피코(pico) SIM 카드, 다른 IC(integrated circuit) 칩/카드, RAM(random access memory), SRAM(static RAM), DRAM(dynamic RAM), ROM(read-only memory), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), FLASHEPROM(flash EPROM), 캐시 메모리(L1/L2/L3/L4/L5/L#), RRAM/ReRAM(resistive random-access memory), PCM(phase change memory), STT-RAM(spin transfer torque RAM), 다른 메모리 칩 또는 카트리지, 및/또는 이들의 조합일 수 있다.
[0267] 저장 디바이스(1630)는 소프트웨어 서비스들, 서버들, 서비스들 등을 포함할 수 있으며, 이러한 소프트웨어를 정의하는 코드가 프로세서(1610)에 의해 실행될 때, 이러한 코드는 시스템으로 하여금 기능을 수행하게 한다. 일부 실시예들에서, 특정 기능을 수행하는 하드웨어 서비스는 기능을 실행하도록 프로세서(1610), 접속(1605), 출력 디바이스(1635) 등과 같은 필요한 하드웨어 컴포넌트들과 관련하여 컴퓨터 판독 가능 매체에 저장된 소프트웨어 컴포넌트를 포함할 수 있다. "컴퓨터 판독 가능 매체"라는 용어는 휴대용 또는 비-휴대용 저장 디바이스들, 광 저장 디바이스들, 및 명령(들) 및/또는 데이터를 저장하거나 포함하거나 전달할 수 있는 다양한 다른 매체들을 다양한 다른 매체들을 포함한다(그러나 이에 제한되지 않음). 컴퓨터 판독 가능 매체는 데이터가 저장될 수 있고 무선으로 또는 유선 연결들을 통해 전파되는 반송파들 및/또는 일시적 전자 신호들을 포함하지 않는 비-일시적 매체를 포함할 수 있다. 비-일시적 매체의 예들은 자기 디스크 또는 테이프, CD(compact disk) 또는 DVD(digital versatile disk)와 같은 광학 저장 매체, 플래시 메모리, 메모리 또는 메모리 디바이스들을 포함할 수 있다(그러나 이에 제한되지 않음). 컴퓨터 판독 가능 매체 상에는 프로시저, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들 또는 프로그램 명령문들의 임의의 조합을 나타낼 수 있는 코드 및/또는 기계 실행 가능 명령들이 저장될 수 있다. 코드 세그먼트는 정보, 데이터, 인수들, 파라미터들 또는 메모리 콘텐츠를 전달 및/또는 수신하여 다른 코드 세그먼트 또는 하드웨어 회로에 결합될 수 있다. 정보, 인수들, 파라미터들, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적당한 수단을 통해 전달, 포워딩 또는 송신될 수 있다.
[0268] 일부 실시예들에서, 컴퓨터 판독 가능 저장 디바이스들, 매체들 및 메모리들은 비트 스트림 등을 포함하는 케이블 또는 무선 신호를 포함할 수 있다. 그러나 언급될 때, 비-일시적인 컴퓨터 판독 가능 저장 매체들은 에너지, 반송파 신호들, 전자파들, 및 신호들 그 자체와 같은 매체들을 명시적으로 배제한다.
[0269] 본 명세서에서 제공되는 실시예들 및 예들의 철저한 이해를 제공하기 위해, 특정 세부사항들이 위의 설명에서 제공된다. 그러나 실시예들은 이러한 특정 세부사항들 없이 실시될 수 있다고 당해 기술분야에서 통상의 지식을 가진 자에 의해 이해될 것이다. 설명의 명확성을 위해, 일부 경우들에서, 본 기술은 디바이스들, 디바이스 컴포넌트들, 소프트웨어로 구현되는 방법의 단계들 또는 루틴들, 또는 하드웨어와 소프트웨어의 조합들을 포함하는 기능 블록들을 포함하는 개별 것으로 제시될 수 있다. 도면들에 도시된 그리고/또는 본 명세서에서 설명되는 것들 이외의 추가 컴포넌트들이 사용될 수 있다. 예를 들어, 불필요한 세부사항으로 실시예들을 모호하게 하지 않도록 회로들, 시스템들, 네트워크들, 프로세스(process)들 및 다른 컴포넌트들은 블록도 형태로 컴포넌트들로서 도시될 수 있다. 다른 경우들에는, 실시예들을 모호하게 하는 것을 피하기 위해, 잘 알려진 회로들, 프로세스들, 알고리즘들, 구조들 및 기법들은 불필요한 세부사항 없이 도시될 수 있다.
[0270] 개별 실시예들은 위에서 흐름도, 순서도, 데이터 순서도, 구조도, 또는 블록도로서 도시된 프로세스 또는 방법으로서 설명될 수 있다. 흐름도는 순차적인 프로세스로서 동작들을 설명할 수 있지만, 동작들 중 다수는 병렬로 또는 동시에 수행될 수 있다. 또한, 동작들의 순서는 재배열될 수 있다. 프로세스는 프로세서의 동작들이 완료될 때 종료되지만 도면에 포함되지 않은 추가 단계들을 가질 수 있다. 프로세스는 방법, 함수, 프로시저(procedure), 서브루틴(subroutine), 서브프로그램(subprogram) 등에 대응할 수 있다. 프로세스가 함수에 대응할 때, 그 종료는 호출 함수 또는 메인 함수로의 함수의 복귀에 대응할 수 있다.
[0271] 위에서 설명된 예들에 따른 프로세스들 및 방법들은 컴퓨터 판독 가능 매체들로부터 저장되거나 아니면 컴퓨터 판독 가능 매체들로부터 이용 가능한 컴퓨터 실행 가능 명령들을 사용하여 구현될 수 있다. 이러한 명령들은 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터 또는 프로세싱 디바이스로 하여금 특정 기능 또는 기능들의 그룹을 수행하게 하거나 아니면 구성하는 명령들 및 데이터를 포함할 수 있다. 사용되는 컴퓨터 자원들의 부분들은 네트워크를 통해 액세스 가능할 수 있다. 컴퓨터 실행 가능 명령들은 예를 들어, 바이너리들, 중간 포맷 명령들, 이를테면 어셈블리 언어, 펌웨어, 소스 코드일 수 있다. 설명되는 예들에 따른 방법들 동안 생성된 정보, 명령들, 및/또는 사용되는 정보를 저장하는 데 사용될 수 있는 컴퓨터 판독 가능 매체들의 예들은 자기 또는 광 디스크들, 플래시 메모리, 비휘발성 메모리가 제공된 USB 디바이스들, 네트워크킹된 저장 디바이스들 등을 포함한다.
[0272] 이러한 개시내용들에 따른 프로세스들 및 방법들을 구현하는 디바이스들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어들, 또는 이들의 임의의 조합을 포함할 수 있고, 다양한 폼 팩터들 중 임의의 폼 팩터를 취할 수 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현될 때, 필요한 작업들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들(예를 들어, 컴퓨터 프로그램 제품)은 컴퓨터 판독 가능 또는 기계 판독 가능 매체에 저장될 수 있다. 프로세서(들)는 필요한 작업들을 수행할 수 있다. 폼 팩터들의 통상적인 예들은 랩톱들, 스마트폰들, 휴대 전화들, 태블릿 디바이스들 또는 다른 소형 폼 팩터 개인용 컴퓨터들, 개인용 디지털 보조 기기들, 랙마운트 디바이스들, 독립형 디바이스들 등을 포함한다. 본 명세서에서 설명되는 기능은 또한 주변 기기들 또는 애드인(add-in) 카드들로 구현될 수 있다. 그러한 기능은 또한 추가 예로서, 단일 디바이스에서 실행되는 상이한 프로세스들 또는 상이한 칩들 사이의 회로 기판 상에서 구현될 수 있다.
[0273] 명령들, 그러한 명령들을 전달하기 위한 매체들, 명령들을 실행하기 위한 컴퓨팅 자원들, 및 그러한 컴퓨팅 자원들을 지원하기 위한 다른 구조들은 본 개시내용에서 설명되는 기능들을 제공하기 위한 예시적인 수단들이다.
[0274] 위의 설명에서, 본 출원의 양상들은 본 출원의 특정 실시예들을 참조하여 설명되지만, 당해 기술분야에서 통상의 지식을 가진 자들은 본 출원이 이에 제한되지 않음을 인식할 것이다. 따라서 본 출원의 예시적인 실시예들이 본 명세서에서 상세히 설명되었지만, 본 발명의 개념들은 다른 식으로 다양하게 구현 및 이용될 수 있고, 첨부된 청구항들은 종래 기술에 의해 제한된 것을 제외하면, 그러한 변형들을 포함하는 것으로 해석되어야 한다고 이해되어야 한다. 위에서 설명된 애플리케이션의 다양한 특징들 및 양상들은 개별적으로 또는 공동으로 사용될 수 있다. 추가로, 실시예들은, 본 명세서의 더 넓은 사상 및 범위를 벗어나지 않으면서, 본 명세서에서 설명되는 것들 이외의 임의의 수의 환경들 및 애플리케이션들에서 이용될 수 있다. 이에 따라, 본 명세서 및 도면들은 제한적인 것이 아니라 예시적인 것으로 간주되어야 한다. 예시의 목적들로, 방법들은 특정 순서로 설명되었다. 대안적인 실시예들에서, 방법들은 설명된 것과 상이한 순서로 수행될 수 있다고 인식되어야 한다.
[0275] 당해 기술분야에서 통상의 지식을 가진 자는 본 명세서에서 사용되는 미만("<") 및 초과(">")의 심벌들 또는 용어가 본 설명의 범위를 벗어나지 않으면서, 이하("≤") 또는 이상("≥") 심벌들로 각각 대체될 수 있음을 인식할 것이다.
[0276] 컴포넌트들이 특정 동작들을 수행하도록 "구성되는" 것으로 설명되는 경우, 이러한 구성은 예를 들어, 동작을 수행하도록 전자 회로들 또는 다른 하드웨어를 설계함으로써, 동작을 수행하도록 프로그래밍 가능 전자 회로들(예컨대, 마이크로프로세서들 또는 다른 적합한 전자 회로들을 프로그래밍함으로써, 또는 이들의 임의의 조합으로 달성될 수 있다.
[0277] "~에 결합된"이라는 문구는 다른 컴포넌트에 물리적으로 직접적으로 또는 간접적으로 연결되는 임의의 컴포넌트, 및/또는 다른 컴포넌트와 직접적으로 또는 간접적으로 통신하는(예컨대, 유선 또는 무선 연결, 및/또는 다른 적절한 통신 인터페이스를 통해 다른 컴포넌트에 연결되는) 임의의 컴포넌트를 의미한다.
[0278] 세트"의 적어도 하나" 및/또는 세트의 "하나 이상"을 언급하는 청구항 언어 또는 다른 언어는, 세트의 하나의 멤버 또는 세트의 다수의 멤버들이 (임의의 조합으로) 청구항을 충족한다는 것을 표시한다. 예를 들어, "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의 세트에 나열되지 않은 항목들을 추가로 포함할 수 있다.
[0279] 본 명세서에 개시된 예들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들, 회로들 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 조합들로 구현될 수 있다. 하드웨어와 소프트웨어의 이러한 상호 호환성을 명확히 설명하기 위해, 각종 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들은 일반적으로 이들의 기능과 관련하여 위에서 설명되었다. 이러한 기능이 하드웨어로 구현되는지 아니면 소프트웨어로 구현되는지는 전체 시스템에 부과된 설계 제약들 및 특정 애플리케이션에 좌우된다. 당해 기술분야에서 통상의 지식을 가진 자들은 설명된 기능을 특정 출원마다 다양한 방식들로 구현할 수 있지만, 이러한 구현 결정들이 본 출원의 범위를 벗어나게 하는 것으로 해석되지는 않아야 한다.
[0280] 본 명세서에서 설명되는 기법들은 또한 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 이러한 기법들은 무선 통신 디바이스 핸드셋들 및 다른 디바이스들에서의 적용을 포함하여 다수의 용도들을 갖는 범용 컴퓨터들, 무선 통신 디바이스 핸드셋들 또는 집적 회로 디바이스들과 같은 다양한 디바이스들 중 임의의 디바이스에서 구현될 수 있다. 모듈들 또는 컴포넌트들로서 설명되는 임의의 특징들은 통합된 로직 디바이스로 함께 또는 개별적이지만 상호 운용 가능한 로직 디바이스들로서 별개로 구현될 수 있다. 소프트웨어로 구현된다면, 이 기법들은 적어도 부분적으로는, 실행될 때 위에서 설명된 방법들, 알고리즘들 및/또는 동작들 중 하나 이상을 수행하는 명령들을 포함하는 프로그램 코드를 포함하는 컴퓨터 판독 가능 데이터 저장 매체에 의해 실현될 수 있다. 컴퓨터 판독 가능 데이터 저장 매체는 패키징 재료들을 포함할 수 있는 컴퓨터 프로그램 제품의 일부를 형성할 수 있다. 컴퓨터 판독 가능 매체는 메모리 또는 데이터 저장 매체들, 이를테면 RAM(random access memory), 이를테면 SDRAM(synchronous dynamic random access memory), ROM(read-only memory), NVRAM(non-volatile random access memory), EEPROM(electrically erasable programmable read-only memory), FLASH 메모리, 자기 또는 광 데이터 저장 매체들 등을 포함할 수 있다. 추가로 또는 대안으로, 이 기법들은 적어도 부분적으로는, 명령들 또는 데이터 구조들의 형태로 프로그램 코드를 운반 또는 전달하고 컴퓨터, 이를테면 전파 신호들 또는 파들 의해 액세스, 판독 및/또는 실행될 수 있는 컴퓨터 판독 가능 통신 매체에 의해 실현될 수 있다.
[0281] 프로그램 코드는 하나 이상의 프로세서들, 이를테면 하나 이상의 DSP(digital signal processor)들, 범용 마이크로프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable logic array)들 또는 다른 대등한 집적 또는 이산 로직 회로를 포함할 수 있는 프로세서에 의해 실행될 수 있다. 그러한 프로세서는 본 개시내용에서 설명되는 기법들 중 임의의 기법을 수행하도록 구성될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있고; 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로컨트롤러 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예컨대 DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다. 이에 따라, 본 명세서에서 사용되는 "프로세서"라는 용어는 앞서 말한 구조, 앞서 말한 구조의 임의의 조합, 또는 본 명세서에서 설명되는 기법들의 구현에 적합한 임의의 다른 구조 또는 장치 중 임의의 것을 의미할 수 있다.
[0282] 본 개시내용의 예시적인 예들은 다음을 포함한다:
[0283] 양상 1: 장치는, 적어도 하나의 메모리; 및 적어도 하나의 메모리에 결합된 적어도 하나의 프로세서를 포함하며, 적어도 하나의 프로세서는, 신경망 압축 시스템에 의한 압축을 위해 복수의 이미지들을 수신하고; 복수의 이미지들로부터의 제1 이미지에 기초하여, 신경망 압축 시스템의 제1 모델과 연관된 제1 복수의 가중 값들을 결정하고; 제1 복수의 가중 값들의 압축된 버전을 포함하는 제1 비트스트림을 생성하고; 그리고 수신기로의 송신을 위해 제1 비트스트림을 출력하도록 구성된다.
[0284] 양상 2: 양상 1의 장치에서, 제1 모델의 적어도 하나의 계층은 제1 이미지와 연관된 복수의 좌표들의 포지션 인코딩을 포함한다.
[0285] 양상 3: 양상 2의 장치에서, 제1 모델은 제1 이미지와 연관된 복수의 좌표들에 대응하는 하나 이상의 픽셀 값들을 결정하도록 구성된다.
[0286] 양상 4: 양상 1 내지 양상 3 중 어느 한 양상의 장치에서, 적어도 하나의 프로세서는, 복수의 이미지들로부터의 제2 이미지에 기초하여, 신경망 압축 시스템과 연관된 제2 모델에 의한 사용을 위한 제2 복수의 가중 값들을 결정하고; 제2 복수의 가중 값들의 압축된 버전을 포함하는 제2 비트스트림을 생성하고; 그리고 수신기로의 송신을 위해 제2 비트스트림을 출력하도록 추가로 구성된다.
[0287] 양상 5: 양상 4의 장치에서, 제2 모델은 제1 이미지와 제2 이미지 사이의 광 흐름을 결정하도록 구성된다.
[0288] 양상 6: 양상 5의 장치에서, 적어도 하나의 프로세서는, 광 흐름에 기반하여, 제1 복수의 가중 값들로부터 적어도 하나의 업데이트된 가중 값을 결정하도록 추가로 구성된다.
[0289] 양상 7: 양상 1 내지 양상 6 중 어느 한 양상의 장치에서, 적어도 하나의 프로세서는, 복수의 양자화된 가중 값들을 산출하기 위해 가중치 사전 분포 하에서 제1 복수의 가중 값들을 양자화하도록 추가로 구성되며, 제1 비트스트림은 복수의 양자화된 가중 값들의 압축된 버전을 포함한다.
[0290] 양상 8: 양상 7의 장치에서, 가중치 사전 분포는 제1 비트스트림을 수신기에 전송하는 것과 연관된 레이트 손실을 최소화하도록 선택된다.
[0291] 양상 9: 양상 7 또는 양상 8의 장치에서, 제1 비트스트림을 생성하기 위해, 적어도 하나의 프로세서는, 가중치 사전 분포를 사용하여 제1 복수의 가중 값들을 엔트로피 인코딩하도록 추가로 구성된다.
[0292] 양상 10: 양상 7 내지 양상 9 중 어느 한 양상의 장치에서, 제1 복수의 가중 값들은 고정 소수점 양자화를 사용하여 양자화된다.
[0293] 양상 11: 양상 10의 장치에서, 고정 소수점 양자화는 기계 학습 알고리즘을 사용하여 구현된다.
[0294] 양상 12: 양상 1 내지 양상 11 중 어느 한 양상의 장치에서, 적어도 하나의 프로세서는, 제1 이미지에 기초하여, 제1 모델에 대응하는 모델 아키텍처를 선택하도록 추가로 구성된다.
[0295] 양상 13: 양상 12의 장치에서, 적어도 하나의 프로세서는, 모델 아키텍처의 압축된 버전을 포함하는 제2 비트스트림을 생성하고; 그리고 수신기로의 송신을 위해 제2 비트스트림을 출력하도록 추가로 구성된다.
[0296] 양상 14: 양상 12 또는 양상 13의 장치에서, 모델 아키텍처를 선택하기 위해, 적어도 하나의 프로세서는, 제1 이미지에 기초하여, 하나 이상의 모델 아키텍처들과 연관된 복수의 가중 값들을 튜닝하고 ― 하나 이상의 모델 아키텍처들 각각은 하나 이상의 모델 특징들과 연관됨 ―; 하나 이상의 모델 아키텍처들 각각에 대응하는 재구성된 데이터 출력과 제1 이미지 사이의 적어도 하나의 왜곡을 결정하고; 그리고 적어도 하나의 왜곡에 기초하여 하나 이상의 모델 아키텍처들로부터 모델 아키텍처를 선택하도록 추가로 구성된다.
[0297] 양상 15: 양상 14의 장치에서, 하나 이상의 모델 특징들은 폭, 깊이, 해상도, 컨볼루션 커널의 크기, 및 입력 치수 중 적어도 하나를 포함한다.
[0298] 양상 16: 양상 1 내지 양상 15의 동작들 중 임의의 동작을 수행하는 방법.
[0299] 양상 17: 컴퓨터 판독 가능 저장 매체는, 실행될 때, 하나 이상의 프로세서들로 하여금, 양상 1 내지 양상 15의 동작들 중 임의의 동작을 수행하게 하는 명령들을 저장한다.
[0300] 양상 18: 장치는, 양상 1 내지 양상 15의 동작들 중 임의의 동작을 수행하기 위한 수단을 포함한다.
[0301] 양상 19: 장치는, 적어도 하나의 메모리; 및 적어도 하나의 메모리에 결합된 적어도 하나의 프로세서를 포함하며, 적어도 하나의 프로세서는, 복수의 이미지들로부터 제1 이미지와 연관된 제1 복수의 신경망 가중 값들의 압축된 버전을 수신하고; 제1 복수의 신경망 가중 값들을 압축해제하고; 그리고 제1 신경망 모델을 사용하여, 제1 이미지를 산출하기 위해 제1 복수의 신경망 가중 값들을 프로세싱하도록 구성된다.
[0302] 양상 20: 양상 19의 장치에서, 적어도 하나의 프로세서는, 복수의 이미지들로부터 제2 이미지와 연관된 제2 복수의 신경망 가중 값들의 압축된 버전을 수신하고; 제2 복수의 신경망 가중 값들을 압축해제하고; 그리고 제1 이미지와 제2 이미지 사이의 광 흐름을 결정하기 위해 제2 신경망 모델을 사용하여 제2 복수의 신경망 가중 값들을 프로세싱하도록 추가로 구성된다.
[0303] 양상 21: 양상 20의 장치에서, 적어도 하나의 프로세서는, 광 흐름에 기반하여, 제1 신경망 모델과 연관된 제1 복수의 신경망 가중 값들로부터 적어도 하나의 업데이트된 가중 값을 결정하도록 추가로 구성된다.
[0304] 양상 22: 양상 21의 장치에서, 적어도 하나의 프로세서는, 제1 신경망 모델을 사용하여, 제2 이미지의 재구성된 버전을 산출하기 위해 적어도 하나의 업데이트된 가중 값을 프로세싱하도록 추가로 구성된다.
[0305] 양상 23: 양상 19 내지 양상 22 중 어느 한 양상의 장치에서, 제1 복수의 신경망 가중 값들은 가중치 사전 분포 하에서 양자화된다.
[0306] 양상 24: 양상 19 내지 양상 23 중 어느 한 양상의 장치에서, 제1 복수의 신경망 가중 값들의 압축된 버전은 엔트로피 인코딩된 비트스트림으로 수신된다.
[0307] 양상 25: 양상 19 내지 양상 24 중 어느 한 양상의 장치에서, 적어도 하나의 프로세서는, 제1 신경망 모델에 대응하는 신경망 아키텍처의 압축된 버전을 수신하도록 추가로 구성된다.
[0308] 양상 26: 양상 19 내지 양상 25의 동작들 중 임의의 동작을 수행하는 방법.
[0309] 양상 27: 컴퓨터 판독 가능 저장 매체는, 실행될 때, 하나 이상의 프로세서들로 하여금, 양상 19 내지 양상 25의 동작들 중 임의의 동작을 수행하게 하는 명령들을 저장한다.
[0310] 양상 28: 장치는, 양상 19 내지 양상 25의 동작들 중 임의의 동작을 수행하기 위한 수단을 포함한다.
[0311] 양상 29: 장치는 메모리; 및 메모리에 결합된 하나 이상의 프로세서들을 포함하며, 하나 이상의 프로세서들은, 신경망 압축 시스템에 의한 압축을 위한 입력 데이터를 수신하고; 입력 데이터에 기반하여, 입력 데이터를 압축하기 위해 신경망 압축 시스템에 의해 사용하기 위한 모델 아키텍처를 선택하고; 입력 데이터를 사용하여, 모델 아키텍처와 연관된 복수의 계층들에 대응하는 복수의 가중 값들을 결정하고; 가중치 사전 분포의 압축된 버전을 포함하는 제1 비트스트림을 생성하고; 가중치 사전 분포 하에서 복수의 가중 값들의 압축된 버전을 포함하는 제2 비트스트림을 생성하고; 그리고 수신기로의 송신을 위해 제1 비트스트림 및 제2 비트스트림을 출력하도록 구성된다.
[0312] 양상 30: 양상 29의 장치에서, 신경망에 의한 사용을 위한 모델 아키텍처를 선택하기 위해, 하나 이상의 프로세서들은, 입력 데이터에 기반하여, 하나 이상의 모델 아키텍처들과 연관된 복수의 가중 값들을 튜닝하고 ― 하나 이상의 모델 아키텍처들 각각은 하나 이상의 모델 특징들과 연관됨 ―; 하나 이상의 모델 아키텍처들 각각에 대응하는 재구성된 데이터 출력과 입력 데이터 사이의 적어도 하나의 왜곡을 결정하고; 그리고 적어도 하나의 왜곡에 기초하여 하나 이상의 모델 아키텍처들로부터 모델 아키텍처를 선택하도록 구성된다.
[0313] 양상 31: 양상 30의 장치에서, 하나 이상의 모델 특징들은 폭, 깊이, 해상도, 컨볼루션 커널의 크기, 및 입력 치수 중 적어도 하나를 포함한다.
[0314] 양상 32: 양상 29 내지 양상 31 중 어느 한 양상의 장치에서, 하나 이상의 프로세서들은, 복수의 양자화된 가중 값들을 산출하기 위해 복수의 가중 값들을 양자화하도록 추가로 구성되고, 제2 비트스트림은 가중치 사전 분포 하에서 복수의 양자화된 가중 값들의 압축된 버전을 포함한다.
[0315] 양상 33: 양상 32의 장치에서, 복수의 가중 값들은 학습된 고정 소수점 양자화를 사용하여 양자화된다.
[0316] 양상 34: 양상 32의 장치에서, 고정 소수점 양자화는 기계 학습 알고리즘을 사용하여 구현된다.
[0317] 양상 35: 양상 32의 장치에서, 제2 비트스트림은 복수의 가중 값들을 양자화하기 위해 사용되는 복수의 인코딩된 양자화 파라미터들을 포함한다.
[0318] 양상 36: 양상 29 내지 양상 35 중 어느 한 양상의 장치에서, 하나 이상의 프로세서들은, 모델 아키텍처의 압축된 버전을 포함하는 제3 비트스트림을 생성하고; 그리고 수신기로의 송신을 위해 제3 비트스트림을 출력하도록 추가로 구성된다.
[0319] 양상 37: 양상 29 내지 양상 36 중 어느 한 양상의 장치에서, 모델 아키텍처의 적어도 하나의 계층은 입력 데이터와 연관된 복수의 좌표들의 포지션 인코딩을 포함한다.
[0320] 양상 38: 양상 29 내지 37 중 어느 한 양상의 장치에서, 제1 비트스트림을 생성하기 위해, 하나 이상의 프로세서들은, 개방 신경망 교환 포맷을 사용하여 가중치 사전 분포를 인코딩하도록 구성된다.
[0321] 양상 39: 양상 29 내지 양상 38 중 어느 한 양상의 장치에서, 제2 비트스트림을 생성하기 위해, 하나 이상의 프로세서들은, 가중치 사전 분포를 사용하여 복수의 가중 값들을 엔트로피 인코딩하도록 구성된다.
[0322] 양상 40: 양상 29 내지 39 중 어느 한 양상의 장치에서, 가중치 사전 분포는 제2 비트스트림을 수신기에 전송하는 것과 연관된 레이트 손실을 최소화하도록 선택된다.
[0323] 양상 41: 양상 29 내지 양상 40 중 어느 한 양상의 장치에서, 입력 데이터는 신경망 압축 시스템을 훈련시키기 위해 사용되는 이미지 데이터에 대응하는 복수의 좌표들을 포함한다.
[0324] 양상 42: 양상 29 내지 양상 41의 동작들 중 임의의 동작을 수행하는 방법.
[0325] 양상 43: 컴퓨터 판독 가능 저장 매체는, 실행될 때, 하나 이상의 프로세서들로 하여금, 양상 29 내지 양상 41의 동작들 중 임의의 동작을 수행하게 하는 명령들을 저장한다.
[0326] 양상 44: 장치는, 양상 29 내지 양상 41의 동작들 중 임의의 동작을 수행하기 위한 수단을 포함한다.
[0327] 양상 45: 장치는 메모리; 및 메모리에 결합된 하나 이상의 프로세서들을 포함하며, 하나 이상의 프로세서들은, 가중치 사전 분포의 압축된 버전 및 복수의 가중치 사전 분포 하에서의 복수의 가중 값들의 압축된 버전을 수신하고; 가중치 사전 분포 및 가중치 사전 분포 하의 복수의 가중 값들의 압축된 버전을 압축해제하고; 가중치 사전 분포 및 가중치 사전 분포 하의 복수의 가중치들에 기반하여, 복수의 신경망 가중치들을 결정하고; 그리고 신경망 아키텍처를 사용하여, 재구성된 이미지 콘텐츠를 산출하기 위해 복수의 신경망 가중치들을 프로세싱하도록 구성된다.
[0328] 양상 46: 양상 45의 장치에서, 하나 이상의 프로세서들은, 신경망 아키텍처의 압축된 버전을 수신하고; 그리고 신경망 아키텍처의 압축된 버전을 압축해제하도록 추가로 구성된다.
[0329] 양상 47: 양상 45 또는 양상 46의 장치에서, 가중치 사전 분포 하의 복수의 가중 값들은 가중치 사전 분포 하의 복수의 양자화된 가중치들에 대응한다.
[0330] 양상 48: 양상 47의 장치에서, 하나 이상의 프로세서들은, 가중치 사전 분포 하에서 복수의 양자화된 가중치들을 양자화하기 위해 사용되는 복수의 인코딩된 양자화 파라미터들을 수신하도록 추가로 구성된다.
[0331] 양상 49: 양상 45 내지 양상 48 중 어느 한 양상의 장치에서, 가중치 사전 분포 하의 복수의 가중치들의 압축된 버전은 엔트로피 인코딩된 비트스트림에서 수신된다.
[0332] 양상 50: 양상 45 내지 양상 49 중 어느 한 양상의 장치에서, 하나 이상의 프로세서들은, 이진 마스크에 기반하여 가중치 사전 분포 하에서 복수의 가중치들을 재분배하도록 추가로 구성된다.
[0333] 양상 51: 양상 45 내지 양상 50의 동작들 중 임의의 동작을 수행하는 방법.
[0334] 양상 52: 컴퓨터 판독 가능 저장 매체는, 실행될 때, 하나 이상의 프로세서들로 하여금, 양상 45 내지 양상 50의 동작들 중 임의의 동작을 수행하게 하는 명령들을 저장한다.
[0335] 양상 53: 장치는, 양상 45 내지 양상 50의 동작들 중 임의의 동작을 수행하기 위한 수단을 포함한다.

Claims (44)

  1. 미디어 데이터를 프로세싱하는 방법으로서,
    신경망 압축 시스템에 의한 압축을 위해 복수의 이미지들을 수신하는 단계;
    상기 복수의 이미지들로부터의 제1 이미지에 기초하여, 상기 신경망 압축 시스템의 제1 모델과 연관된 제1 복수의 가중 값들을 결정하는 단계;
    상기 제1 복수의 가중 값들의 압축된 버전(version)을 포함하는 제1 비트스트림(bitstream)을 생성하는 단계; 및
    수신기로의 송신을 위해 상기 제1 비트스트림을 출력하는 단계를 포함하는, 미디어 데이터를 프로세싱하는 방법.
  2. 제1 항에 있어서,
    상기 제1 모델의 적어도 하나의 계층은 상기 제1 이미지와 연관된 복수의 좌표들의 포지션 인코딩을 포함하는, 미디어 데이터를 프로세싱하는 방법.
  3. 제2 항에 있어서,
    상기 제1 모델은 상기 제1 이미지와 연관된 복수의 좌표들에 대응하는 하나 이상의 픽셀(pixel) 값들을 결정하도록 구성되는, 미디어 데이터를 프로세싱하는 방법.
  4. 제1 항에 있어서,
    상기 복수의 이미지들로부터의 제2 이미지에 기초하여, 상기 신경망 압축 시스템과 연관된 제2 모델에 의한 사용을 위한 제2 복수의 가중 값들을 결정하는 단계;
    상기 제2 복수의 가중 값들의 압축된 버전을 포함하는 제2 비트스트림을 생성하는 단계; 및
    수신기로의 송신을 위해 상기 제2 비트스트림을 출력하는 단계를 더 포함하는, 미디어 데이터를 프로세싱하는 방법.
  5. 제4 항에 있어서,
    상기 제2 모델은 상기 제1 이미지와 상기 제2 이미지 사이의 광 흐름을 결정하도록 구성되는, 미디어 데이터를 프로세싱하는 방법.
  6. 제5 항에 있어서,
    상기 광 흐름에 기반하여, 상기 제1 복수의 가중 값들로부터 적어도 하나의 업데이트(update)된 가중 값을 결정하는 단계를 더 포함하는, 미디어 데이터를 프로세싱하는 방법.
  7. 제1 항에 있어서,
    복수의 양자화된 가중 값들을 산출하기 위해 가중치 사전 분포(weight prior) 하에서 상기 제1 복수의 가중 값들을 양자화하는 단계를 더 포함하며,
    상기 제1 비트스트림은 상기 복수의 양자화된 가중 값들의 압축된 버전을 포함하는, 미디어 데이터를 프로세싱하는 방법.
  8. 제7 항에 있어서,
    상기 가중치 사전 분포는 상기 제1 비트스트림을 상기 수신기에 전송하는 것과 연관된 레이트 손실을 최소화하도록 선택되는, 미디어 데이터를 프로세싱하는 방법.
  9. 제7 항에 있어서,
    상기 제1 비트스트림을 생성하는 단계는,
    상기 가중치 사전 분포를 사용하여 상기 제1 복수의 가중 값들을 엔트로피(entropy) 인코딩하는 단계를 포함하는, 미디어 데이터를 프로세싱하는 방법.
  10. 제7 항에 있어서,
    상기 제1 복수의 가중 값들은 고정 소수점 양자화를 사용하여 양자화되는, 미디어 데이터를 프로세싱하는 방법.
  11. 제10 항에 있어서,
    상기 고정 소수점 양자화는 기계 학습 알고리즘(algorithm)을 사용하여 구현되는, 미디어 데이터를 프로세싱하는 방법.
  12. 제1 항에 있어서,
    상기 제1 이미지에 기반하여, 상기 제1 모델에 대응하는 모델 아키텍처(architecture)를 선택하는 단계를 더 포함하는, 미디어 데이터를 프로세싱하는 방법.
  13. 제12 항에 있어서,
    상기 모델 아키텍처의 압축된 버전을 포함하는 제2 비트스트림을 생성하는 단계; 및
    상기 수신기로의 송신을 위해 상기 제2 비트스트림을 출력하는 단계를 더 포함하는, 미디어 데이터를 프로세싱하는 방법.
  14. 제12 항에 있어서,
    상기 모델 아키텍처를 선택하는 단계는,
    상기 제1 이미지에 기반하여, 하나 이상의 모델 아키텍처들과 연관된 복수의 가중 값들을 튜닝(tune)하는 단계 ― 상기 하나 이상의 모델 아키텍처들 각각은 하나 이상의 모델 특징들과 연관됨 ―;
    상기 하나 이상의 모델 아키텍처들 각각에 대응하는 재구성된 데이터 출력과 상기 제1 이미지 사이의 적어도 하나의 왜곡을 결정하는 단계; 및
    상기 적어도 하나의 왜곡에 기반하여 상기 하나 이상의 모델 아키텍처들로부터 상기 모델 아키텍처를 선택하는 단계를 포함하는, 미디어 데이터를 프로세싱하는 방법.
  15. 제14 항에 있어서,
    상기 하나 이상의 모델 특징들은 폭, 깊이, 해상도, 컨볼루션 커널(convolution kernel)의 크기, 및 입력 치수 중 적어도 하나를 포함하는, 미디어 데이터를 프로세싱하는 방법.
  16. 장치로서,
    적어도 하나의 메모리(memory); 및
    상기 적어도 하나의 메모리에 결합된 적어도 하나의 프로세서(processor)를 포함하며,
    상기 적어도 하나의 프로세서는,
    신경망 압축 시스템에 의한 압축을 위해 복수의 이미지들을 수신하고;
    상기 복수의 이미지들로부터의 제1 이미지에 기초하여, 상기 신경망 압축 시스템의 제1 모델과 연관된 제1 복수의 가중 값들을 결정하고;
    상기 제1 복수의 가중 값들의 압축된 버전을 포함하는 제1 비트스트림을 생성하고; 그리고
    수신기로의 송신을 위해 상기 제1 비트스트림을 출력하도록 구성되는, 장치.
  17. 제16 항에 있어서,
    상기 제1 모델의 적어도 하나의 계층은 상기 제1 이미지와 연관된 복수의 좌표들의 포지션 인코딩을 포함하는, 장치.
  18. 제17 항에 있어서,
    상기 제1 모델은 상기 제1 이미지와 연관된 복수의 좌표들에 대응하는 하나 이상의 픽셀 값들을 결정하도록 구성되는, 장치.
  19. 제16 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 복수의 이미지들로부터의 제2 이미지에 기초하여, 상기 신경망 압축 시스템과 연관된 제2 모델에 의한 사용을 위한 제2 복수의 가중 값들을 결정하고;
    상기 제2 복수의 가중 값들의 압축된 버전을 포함하는 제2 비트스트림을 생성하고; 그리고
    수신기로의 송신을 위해 상기 제2 비트스트림을 출력하도록 추가로 구성되는, 장치.
  20. 제19 항에 있어서,
    상기 제2 모델은 상기 제1 이미지와 상기 제2 이미지 사이의 광 흐름을 결정하도록 구성되는, 장치.
  21. 제20 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 광 흐름에 기반하여, 상기 제1 복수의 가중 값들로부터 적어도 하나의 업데이트된 가중 값을 결정하도록 추가로 구성되는, 장치.
  22. 제16 항에 있어서,
    상기 적어도 하나의 프로세서는,
    복수의 양자화된 가중 값들을 산출하기 위해 가중치 사전 분포 하에서 상기 제1 복수의 가중 값들을 양자화하도록 추가로 구성되며,
    상기 제1 비트스트림은 상기 복수의 양자화된 가중 값들의 압축된 버전을 포함하는, 장치.
  23. 제22 항에 있어서,
    상기 가중치 사전 분포는 상기 제1 비트스트림을 상기 수신기에 전송하는 것과 연관된 레이트 손실을 최소화하도록 선택되는, 장치.
  24. 제22 항에 있어서,
    상기 제1 비트스트림을 생성하기 위해, 상기 적어도 하나의 프로세서는,
    상기 가중치 사전 분포를 사용하여 상기 제1 복수의 가중 값들을 엔트로피 인코딩하도록 추가로 구성되는, 장치.
  25. 제22 항에 있어서,
    상기 제1 복수의 가중 값들은 고정 소수점 양자화를 사용하여 양자화되는, 장치.
  26. 제25 항에 있어서,
    상기 고정 소수점 양자화는 기계 학습 알고리즘을 사용하여 구현되는, 장치.
  27. 제16 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제1 이미지에 기반하여, 상기 제1 모델에 대응하는 모델 아키텍처를 선택하도록 추가로 구성되는, 장치.
  28. 제27 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 모델 아키텍처의 압축된 버전을 포함하는 제2 비트스트림을 생성하고; 그리고
    상기 수신기로의 송신을 위해 상기 제2 비트스트림을 출력하도록 추가로 구성되는, 장치.
  29. 제27 항에 있어서,
    상기 모델 아키텍처를 선택하기 위해 상기 적어도 하나의 프로세서는,
    상기 제1 이미지에 기반하여, 하나 이상의 모델 아키텍처들과 연관된 복수의 가중 값들을 튜닝하고 ― 상기 하나 이상의 모델 아키텍처들 각각은 하나 이상의 모델 특징들과 연관됨 ―;
    상기 하나 이상의 모델 아키텍처들 각각에 대응하는 재구성된 데이터 출력과 상기 제1 이미지 사이의 적어도 하나의 왜곡을 결정하고; 그리고
    상기 적어도 하나의 왜곡에 기초하여 상기 하나 이상의 모델 아키텍처들로부터 상기 모델 아키텍처를 선택하도록 추가로 구성되는, 장치.
  30. 제29 항에 있어서,
    상기 하나 이상의 모델 특징들은 폭, 깊이, 해상도, 컨볼루션 커널의 크기, 및 입력 치수 중 적어도 하나를 포함하는, 장치.
  31. 미디어 데이터를 프로세싱하기 위한 방법으로서,
    복수의 이미지들로부터 제1 이미지와 연관된 제1 복수의 신경망 가중 값들의 압축된 버전을 수신하는 단계;
    상기 제1 복수의 신경망 가중 값들을 압축해제하는 단계; 및
    제1 신경망 모델을 사용하여, 상기 제1 이미지를 산출하기 위해 상기 제1 복수의 신경망 가중 값들을 프로세싱하는 단계를 포함하는, 미디어 데이터를 프로세싱하기 위한 방법.
  32. 제31 항에 있어서,
    상기 복수의 이미지들로부터 제2 이미지와 연관된 제2 복수의 신경망 가중 값들의 압축된 버전을 수신하는 단계;
    상기 제2 복수의 신경망 가중 값들을 압축해제하는 단계; 및
    상기 제1 이미지와 상기 제2 이미지 사이의 광 흐름을 결정하기 위해 제2 신경망 모델을 사용하여 상기 제2 복수의 신경망 가중 값들을 프로세싱하는 단계를 더 포함하는, 미디어 데이터를 프로세싱하기 위한 방법.
  33. 제32 항에 있어서,
    상기 광 흐름에 기반하여, 상기 제1 신경망 모델과 연관된 제1 복수의 신경망 가중 값들로부터 적어도 하나의 업데이트된 가중 값을 결정하는 단계를 더 포함하는, 미디어 데이터를 프로세싱하기 위한 방법.
  34. 제33 항에 있어서,
    상기 제1 신경망 모델을 사용하여, 상기 제2 이미지의 재구성된 버전을 산출하기 위해 상기 적어도 하나의 업데이트된 가중 값을 프로세싱하는 단계를 더 포함하는, 미디어 데이터를 프로세싱하기 위한 방법.
  35. 제31 항에 있어서,
    상기 제1 복수의 신경망 가중 값들은 가중치 사전 분포 하에서 양자화되는, 미디어 데이터를 프로세싱하기 위한 방법.
  36. 제31 항에 있어서,
    상기 제1 복수의 신경망 가중 값들의 압축된 버전은 엔트로피 인코딩된 비트스트림으로 수신되는, 미디어 데이터를 프로세싱하기 위한 방법.
  37. 제31 항에 있어서,
    상기 제1 신경망 모델에 대응하는 신경망 아키텍처의 압축된 버전을 수신하는 단계를 더 포함하는, 미디어 데이터를 프로세싱하기 위한 방법.
  38. 장치로서,
    적어도 하나의 메모리; 및
    상기 적어도 하나의 메모리에 결합된 적어도 하나의 프로세서를 포함하며,
    상기 적어도 하나의 프로세서는,
    복수의 이미지들로부터 제1 이미지와 연관된 제1 복수의 신경망 가중 값들의 압축된 버전을 수신하고;
    상기 제1 복수의 신경망 가중 값들을 압축해제하고; 그리고
    제1 신경망 모델을 사용하여, 상기 제1 이미지를 산출하기 위해 상기 제1 복수의 신경망 가중 값들을 프로세싱하도록 구성되는, 장치.
  39. 제38 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 복수의 이미지들로부터 제2 이미지와 연관된 제2 복수의 신경망 가중 값들의 압축된 버전을 수신하고;
    상기 제2 복수의 신경망 가중 값들을 압축해제하고; 그리고
    상기 제1 이미지와 상기 제2 이미지 사이의 광 흐름을 결정하기 위해 제2 신경망 모델을 사용하여 상기 제2 복수의 신경망 가중 값들을 프로세싱하도록 추가로 구성되는, 장치.
  40. 제39 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 광 흐름에 기반하여, 상기 제1 신경망 모델과 연관된 제1 복수의 신경망 가중 값들로부터 적어도 하나의 업데이트된 가중 값을 결정하도록 추가로 구성되는, 장치.
  41. 제40 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제1 신경망 모델을 사용하여, 상기 제2 이미지의 재구성된 버전을 산출하기 위해 상기 적어도 하나의 업데이트된 가중 값을 프로세싱하도록 추가로 구성되는, 장치.
  42. 제38 항에 있어서,
    상기 제1 복수의 신경망 가중 값들은 가중치 사전 분포 하에서 양자화되는, 장치.
  43. 제38 항에 있어서,
    상기 제1 복수의 신경망 가중 값들의 압축된 버전은 엔트로피 인코딩된 비트스트림에서 수신되는, 장치.
  44. 제38 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제1 신경망 모델에 대응하는 신경망 아키텍처의 압축된 버전을 수신하도록 추가로 구성되는, 장치.
KR1020237039057A 2021-05-21 2022-03-31 기계 학습 시스템들을 사용한 암시적 이미지 및 비디오 압축 KR20240012374A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163191606P 2021-05-21 2021-05-21
US63/191,606 2021-05-21
US17/645,018 2021-12-17
US17/645,018 US20220385907A1 (en) 2021-05-21 2021-12-17 Implicit image and video compression using machine learning systems
PCT/US2022/022881 WO2022245434A1 (en) 2021-05-21 2022-03-31 Implicit image and video compression using machine learning systems

Publications (1)

Publication Number Publication Date
KR20240012374A true KR20240012374A (ko) 2024-01-29

Family

ID=81392695

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237039057A KR20240012374A (ko) 2021-05-21 2022-03-31 기계 학습 시스템들을 사용한 암시적 이미지 및 비디오 압축

Country Status (7)

Country Link
US (1) US20220385907A1 (ko)
EP (1) EP4342178A1 (ko)
JP (1) JP2024519791A (ko)
KR (1) KR20240012374A (ko)
BR (1) BR112023023427A2 (ko)
TW (1) TW202247650A (ko)
WO (1) WO2022245434A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11922314B1 (en) * 2018-11-30 2024-03-05 Ansys, Inc. Systems and methods for building dynamic reduced order physical models
US11810225B2 (en) * 2021-03-30 2023-11-07 Zoox, Inc. Top-down scene generation
US11858514B2 (en) 2021-03-30 2024-01-02 Zoox, Inc. Top-down scene discrimination
US20230013421A1 (en) * 2021-07-14 2023-01-19 Sony Group Corporation Point cloud compression using occupancy networks
US11995548B2 (en) * 2021-10-21 2024-05-28 Visa International Service Association Method, system, and computer program product for embedding compression and regularization
US11743552B1 (en) * 2022-06-03 2023-08-29 International Business Machines Corporation Computer technology for enhancing images with a generative adversarial network
US11689601B1 (en) * 2022-06-17 2023-06-27 International Business Machines Corporation Stream quality enhancement
CN115834890B (zh) * 2023-02-08 2023-04-28 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种图像压缩方法、装置、设备及存储介质
CN116862019B (zh) * 2023-07-06 2024-03-19 清华大学 基于数据并行范式的模型训练方法及装置
CN117541791B (zh) * 2023-11-23 2024-05-28 北京师范大学 基于多域可变形卷积的眼部结构分割方法、系统及设备
CN117495741B (zh) * 2023-12-29 2024-04-12 成都货安计量技术中心有限公司 一种基于大卷积对比学习的畸变还原方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201603144D0 (en) * 2016-02-23 2016-04-06 Magic Pony Technology Ltd Training end-to-end video processes
CA2997193C (en) * 2015-09-03 2021-04-06 Mediatek Inc. Method and apparatus of neural network based processing in video coding
EP3451293A1 (en) * 2017-08-28 2019-03-06 Thomson Licensing Method and apparatus for filtering with multi-branch deep learning
KR20220007853A (ko) * 2019-03-18 2022-01-19 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 신경망의 매개변수를 압축하기 위한 방법 및 장치
EP3792821A1 (en) * 2019-09-11 2021-03-17 Naver Corporation Action recognition using implicit pose representations
US20220261616A1 (en) * 2019-07-02 2022-08-18 Vid Scale, Inc. Clustering-based quantization for neural network compression
WO2021220008A1 (en) * 2020-04-29 2021-11-04 Deep Render Ltd Image compression and decoding, video compression and decoding: methods and systems
CN116134822A (zh) * 2020-07-21 2023-05-16 交互数字Vc控股法国有限公司 用于更新基于深度神经网络的图像或视频解码器的方法和装置
WO2022139618A1 (en) * 2020-12-24 2022-06-30 Huawei Technologies Co., Ltd. Decoding with signaling of segmentation information

Also Published As

Publication number Publication date
US20220385907A1 (en) 2022-12-01
TW202247650A (zh) 2022-12-01
JP2024519791A (ja) 2024-05-21
EP4342178A1 (en) 2024-03-27
BR112023023427A2 (pt) 2024-01-30
WO2022245434A1 (en) 2022-11-24

Similar Documents

Publication Publication Date Title
US11924445B2 (en) Instance-adaptive image and video compression using machine learning systems
KR20240012374A (ko) 기계 학습 시스템들을 사용한 암시적 이미지 및 비디오 압축
US11991368B2 (en) Video compression using deep generative models
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
US20220086463A1 (en) End-to-end neural network based video coding
TWI806199B (zh) 特徵圖資訊的指示方法,設備以及電腦程式
US11375242B1 (en) Compression of bitstream indexes for parallel entropy coding
US20230100413A1 (en) Transformer-based architecture for transform coding of media
EP4209007A1 (en) Encoding a video frame using different compression ratios for text blocks and non-text blocks
US20240121398A1 (en) Diffusion-based data compression
CN113574882B (zh) 使用深度生成性模型的视频压缩
CN117716687A (zh) 使用机器学习系统的隐式图像和视频压缩
US11825090B1 (en) Bit-rate estimation for video coding with machine learning enhancement
US20220272355A1 (en) Machine learning based flow determination for video coding
KR20230150274A (ko) 비디오 코딩을 위한 기계 학습 기반 플로우 결정
WO2024015664A1 (en) Video coding using optical flow and residual predictors