KR102578967B1 - 단대단 신경망 기반 비디오 코딩 - Google Patents

단대단 신경망 기반 비디오 코딩 Download PDF

Info

Publication number
KR102578967B1
KR102578967B1 KR1020237008395A KR20237008395A KR102578967B1 KR 102578967 B1 KR102578967 B1 KR 102578967B1 KR 1020237008395 A KR1020237008395 A KR 1020237008395A KR 20237008395 A KR20237008395 A KR 20237008395A KR 102578967 B1 KR102578967 B1 KR 102578967B1
Authority
KR
South Korea
Prior art keywords
channel
frame
luminance
chrominance
values associated
Prior art date
Application number
KR1020237008395A
Other languages
English (en)
Other versions
KR20230041084A (ko
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 KR20230041084A publication Critical patent/KR20230041084A/ko
Application granted granted Critical
Publication of KR102578967B1 publication Critical patent/KR102578967B1/ko

Links

Images

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/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/186Methods 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 colour or a chrominance component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/136Incoming video signal characteristics or properties
    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

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

Abstract

신경망 시스템을 사용하여 비디오 데이터를 프로세싱하기 위한 시스템들 및 기법들이 설명된다. 예를 들어, 프로세스는 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하는 것을 포함할 수 있다. 프로세스는 인코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 것을 포함할 수 있다. 프로세스는 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하는 것을 포함할 수 있다. 프로세스는 프레임의 결합된 표현에 기초하여 인코딩된 비디오 데이터를 생성하는 것을 포함할 수 있다.

Description

단대단 신경망 기반 비디오 코딩
본 개시는 일반적으로 이미지들 및/또는 비디오의 인코딩 (또는 압축) 및 디코딩 (압축해제) 을 포함하는 이미지 및 비디오 코딩에 관한 것이다. 예를 들어, 본 개시의 양태들은 단대단 머신 러닝 (예를 들어, 신경망)-기반 이미지 및 비디오 코딩 시스템을 사용하여 루미넌스-크로미넌스 (YUV) 입력 포맷들 (예를 들어, YUV420, YUV444, YUV422 등) 및/또는 다른 입력 포맷들을 핸들링하기 위한 기법들에 관한 것이다.
많은 디바이스들 및 시스템들은 비디오 데이터가 프로세싱되고 소비를 위해 출력되게 한다. 디지털 비디오 데이터는 소비자들 및 비디오 제공자들의 수요들을 충족시키기 위해 대량의 데이터를 포함한다. 예를 들어, 비디오 데이터의 소비자들은 높은 충실도, 해상도, 프레임 레이트들 등을 갖는 높은 품질의 비디오들을 원한다. 결과적으로, 이들 요구들을 충족시키기 위해 필요한 대량의 비디오 데이터는 그 비디오 데이터를 프로세싱하고 저장하는 통신 네트워크들 및 디바이스들에 부담을 가한다.
비디오 코딩 기법들이 비디오 데이터를 압축하는데 사용될 수도 있다. 비디오 코딩의 목표는 비디오 품질에 대한 저하를 회피 또는 최소화하면서 더 낮은 비트 레이트를 사용하는 형태로 비디오 데이터를 압축하는 것이다. 끊임없이 진화하는 비디오 서비스들이 이용가능하게 됨에 따라, 우수한 코딩 효율을 갖는 인코딩 기법들이 필요하다.
하나 이상의 머신 러닝 시스템들을 사용하여 이미지 및/또는 비디오 컨텐츠를 코딩 (예를 들어, 인코딩 및/또는 디코딩) 하기 위한 시스템들 및 기법들이 설명된다. 예를 들어, YUV (디지털 도메인 YCbCr) 입력 포맷들 (및 일부 경우들에서 다른 입력 포맷들) 을 프로세싱할 수 있는 단대단 머신 러닝 (예를 들어, 신경망)-기반 이미지 및 비디오 코딩 (E2E-NNVC) 시스템이 제공된다. E2E-NNVC 시스템은 독립형 프레임들 (이미지들이라고도 지칭됨) 및/또는 다수의 프레임들을 포함하는 비디오 데이터를 프로세싱할 수 있다. YUV 포맷은 루미넌스 채널 (Y) 및 한 쌍의 크로미넌스 채널 (U 및 V) 을 포함한다. U 및 V 채널들은 시각적 품질에 상당한 또는 눈에 띄는 영향 없이 Y 채널에 대해 서브샘플링될 수 있다. 채널들에 걸친 상관은 YUV 포맷에서 감소되며, 이는 다른 컬러 포맷들 (예를 들어, 적색-녹색-청색 (RGB) 포맷) 에 대한 경우가 아닐 수 있다.
본 명세서에 설명된 일부 예들은 상이한 특성들을 갖는 채널들을 갖는 비디오 포맷들에 대한 E2E-NNVC 동작들을 가능하게 하는 것에 의해 디바이스들의 동작들을 개선한다. 예를 들어, 일부 YUV 포맷들 (예를 들어, YUV 420 포맷) 은 크로미넌스 채널들 (U 및 V 채널들) 의 해상도보다 더 큰 (예를 들어, 수평 및 수직 차원 둘 모두에서 픽셀들의 수의 2배) 해상도를 갖는 루미넌스 채널 (Y 채널) 을 포함한다. 표준 E2E-NNVC 시스템은 이러한 비디오 포맷을 효율적으로 프로세싱할 수 없다. 본 명세서에 설명된 예들은 상이한 채널들이 E2E-NNVC 시스템의 다른 계층들에 의해 함께 프로세싱될 수 있도록 상이한 채널의 특성들을 등화하는 초기 인코딩 계층 및 최종 디코딩 계층을 구성한다. 초기 인코딩 계층 및 최종 디코딩 계층은 상이한 특성들을 갖는 채널을 프로세싱하기 위한 제 2 병렬 계층 (예를 들어, 수정된 RGB 프로세싱 시스템) 을 갖는, 기존의 RGB 시스템에 대한 컨볼루션 계층들을 포함할 수 있다. 다른 예들은 YUV 포맷 프로세싱을 위해 구체적으로 설계될 수 있다. 예를 들어, 예시적인 예로서 YUV 420 포맷을 사용하여, 루미넌스 채널들은 초기 계층에 의해 다운샘플링되는 한편, 크로미넌스 채널들은 다운샘플링되지 않는다. 초기 계층에서 정규화 (예를 들어, 데이터를 밸런싱하기 위한 동작들을 수행하는 것) 후에, 루미넌스 및 크로미넌스 데이터는 공유된 해상도에 있고, 최종 디코딩 계층까지 나머지 인코딩 및 디코딩 단계들에 의해 함께 프로세싱될 수 있으며, 여기서 크로미넌스 및 루미넌스 데이터는 분리되고 YUV 420 포맷으로 복귀하도록 상이하게 처리된다. 초기 인코딩 계층과 유사하게, 최종 디코딩 계층에서, 크로미넌스 데이터는 업샘플링 없이 최종 계층에서 프로세싱되는 동안 루미넌스 데이터는 업샘플링될 수 있다. 다른 예들은 채널 데이터를 표준화하기 위해 이러한 동작들을 수행하도록 초기 인코딩 계층들 및 최종 디코딩 계층들을 사용하는 다른 그러한 구조들을 포함한다. 이러한 계층들은 또한 표준화된 중앙 NNVC 계층들 (예를 들어, 유사한 특성들을 갖는 채널들을 갖는 비디오 포맷들, 이를 테면 RGB 포맷 데이터에 사용되는 계층들) 이 상이한 특성들을 갖는 채널을 가진 데이터 프로세싱에 사용되는 것을 허용하는 것에 의해 디바이스들의 효율 및 동작들을 개선한다.
일부 예들은 데이터의 초기 계층의 효율적인 프로세싱으로 디바이스의 동작들을 추가로 개선할 수 있다. 예를 들어, 더 높은 해상도 채널 및 더 낮은 해상도 채널에서 동일한 필터를 사용하기보다는, 맞춤형 필터들이 각각의 채널에 대해 선택될 수 있다. (예를 들어, 더 높은 해상도 및 더 낮은 해상도 채널들 양쪽 모두에 대해 더 큰 필터를 사용하는 것과 비교하여) 더 작은 필터가 더 낮은 해상도 채널에 사용되는 경우 사용되는 프로세싱 리소스들이 감소되고, (예를 들어, 높은 해상도 및 더 낮은 해상도 채널들 둘 모두에 대해 더 작은 필터를 사용하는 것과 비교하여) 더 큰 필터가 더 큰 해상도 채널에 사용되는 경우 비디오 품질이 개선된다. 또한, 초기 인코딩 계층 및 최종 디코딩 계층에서 상이한 채널들에 대한 타겟팅된 정규화 (예를 들어, 밸런스 동작들, 스케일 동작들, 또는 다른 동작들) 는 상이한 통계적 특성들 (예를 들어, 비디오 프로세싱 결과들에 영향을 줄 수 있는 상이한 평균, 분산, 또는 다른 그러한 통계적 특성들) 을 갖는 채널들이 나머지 계층들에 의해 프로세싱되도록 독립적으로 관리되고 표준화되게 하여, 주어진 양의 비디오 압축에 대해 개선된 전체 비디오 품질을 초래한다. 상이한 특성들 (예를 들어, 해상도 또는 통계적 특성들) 을 갖는 채널들을 갖는 비디오 포맷들이 많은 비디오 통신 시스템들에서 개선된 압축을 제공하기 때문에, 위에서 설명된 예들은 기존의 E2E-NNVC(예를 들어, RGB 포맷) 시스템들과 비교할 때 개선된 통신 효율을 추가로 가능하게 하는 것에 의해 E2E-NNVC 시스템들의 동작을 개선한다.
일 예시적인 예에서, 비디오 데이터를 인코딩하는 방법이 제공된다. 방법은: 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하는 단계; 인코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 단계; 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하는 단계; 및 프레임의 결합된 표현에 기초하여 인코딩된 비디오 데이터를 생성하는 단계를 포함한다.
다른 예에서, 메모리 및 메모리에 커플링된 프로세서 (예를 들어, 회로부로 구현됨) 를 포함하는 비디오 데이터를 인코딩하기 위한 장치가 제공된다. 일부 예들에서, 하나 보다 많은 프로세서가 메모리에 커플링될 수 있고, 동작들 중 하나 이상을 수행하는 데 사용될 수 있다. 본 프로세서는: 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하고; 인코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하고; 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하고; 그리고 프레임의 결합된 표현에 기초하여 인코딩된 비디오 데이터를 생성하도록 구성된다.
다른 예에서, 그 위에 명령들을 저장한, 비디오 데이터를 인코딩하기 위한 비일시적 컴퓨터 판독가능 매체가 제공되며, 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금: 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하게 하고; 인코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하게 하고; 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하게 하고; 그리고 프레임의 결합된 표현에 기초하여 인코딩된 비디오 데이터를 생성하게 한다.
다른 예에서, 비디오 데이터를 인코딩하기 위한 장치가 제공된다. 본 장치는 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하기 위한 수단; 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하기 위한 수단; 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하기 위한 수단; 및 프레임의 결합된 표현에 기초하여 인코딩된 비디오 데이터를 생성하기 위한 수단을 포함한다.
일부 양태들에서, 비디오 데이터를 인코딩하기 위한, 위에 설명된 방법, 장치, 및 비일시적인 컴퓨터 판독가능 매체는: 인코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 프레임의 루미넌스 채널과 연관된 출력 값들을 프로세싱하는 것; 및 인코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 프로세싱하는 것을 더 포함한다. 이러한 양태들에서, 결합된 표현은 제 1 정규화 계층의 출력 및 제 2 정규화 계층의 출력에 기초하여 생성된다.
일부 양태들에서, 적어도 하나의 크로미넌스 채널 및 루미넌스 채널은 상이한 통계적 특성들을 갖는다. 일부 양태들에서, 제 1 정규화 계층 및 제 2 정규화 계층은 적어도 하나의 크로미넌스 채널과 연관된 출력 값들 및 루미넌스 채널과 연관된 출력 값들의 통계적 특성들을 밸런싱하도록 구성된다.
일부 양태들에서, 인코더 서브-네트워크의 제 1 컨볼루션 계층은 프레임의 루미넌스 채널을 서브샘플링한다. 일부 경우들에서, 제 1 컨볼루션 계층의 루미넌스 필터는 제 2 컨볼루션 계층의 크로미넌스 필터의 크로미넌스 필터 사이즈보다 큰 루미넌스 필터 사이즈를 갖는다.
일부 양태들에서, 비디오 데이터를 인코딩하기 위한, 위에 설명된 방법, 장치, 및 비일시적인 컴퓨터 판독가능 매체는: 프레임의 루미넌스 채널과 연관된 입력 루미넌스 값들에 액세스하는 것 - 입력 루미넌스 값들은 루미넌스 해상도와 추가로 연관됨 -; 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 입력 크로미넌스 값들에 액세스하는 것 - 입력 크로미넌스 값들은 크로미넌스 해상도와 추가로 연관되고, 루미넌스 해상도는 크로미넌스 해상도보다 더 큼 - 을 더 포함한다.
일부 양태들에서, 제 1 컨볼루션 계층의 루미넌스 필터는 5 픽셀 x 5 픽셀의 루미넌스 필터 사이즈를 갖고, 제 2 컨볼루션 계층의 크로미넌스 필터는 3 픽셀 x 3 픽셀의 크로미넌스 필터 사이즈를 갖는다.
일 예시적인 예에서, 비디오 데이터를 디코딩하는 방법이 제공된다. 방법은: 인코딩된 프레임을 획득하는 단계; 신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하는 단계; 디코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하는 단계; 및 루미넌스 채널과 연관된 복원된 출력 값들 및 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 포함하는 출력 프레임을 생성하는 단계를 포함한다.
다른 예에서, 메모리 및 메모리에 커플링된 프로세서 (예를 들어, 회로부로 구현됨) 를 포함하는 비디오 데이터를 디코딩하기 위한 장치가 제공된다. 일부 예들에서, 하나 보다 많은 프로세서가 메모리에 커플링될 수 있고, 동작들 중 하나 이상을 수행하는 데 사용될 수 있다. 본 프로세서는: 인코딩된 프레임을 획득하고; 신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하고; 디코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하고; 루미넌스 채널과 연관된 복원된 출력 값들 및 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 포함하는 출력 프레임을 생성하도록 구성된다.
다른 예에서, 그 위에 명령들을 저장한, 비디오 데이터를 디코딩하기 위한 비일시적 컴퓨터 판독가능 매체가 제공되며, 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금: 인코딩된 프레임을 획득하게 하고; 신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하게 하고; 디코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하게 하고; 루미넌스 채널과 연관된 복원된 출력 값들 및 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 포함하는 출력 프레임을 생성하게 하도록 구성된다.
다른 예에서, 비디오 데이터를 디코딩하기 위한 장치가 제공된다. 본 장치는 인코딩된 프레임을 획득하기 위한 수단; 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하기 위한 수단; 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하기 위한 수단; 루미넌스 채널과 연관된 복원된 출력 값들 및 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 포함하는 출력 프레임을 생성하기 위한 수단을 포함한다.
일부 양태들에서, 비디오 데이터를 디코딩하기 위한, 위에 설명된 방법, 장치, 및 비일시적인 컴퓨터 판독가능 매체는: 디코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 인코딩된 프레임의 루미넌스 채널과 연관된 값들을 프로세싱하는 것 - 루미넌스 채널과 연관된 복원된 출력 값들은 제 1 정규화 계층의 출력에 기초하여 생성됨 -; 및 디코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 값들을 프로세싱하는 것 - 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들은 제 2 정규화 계층의 출력에 기초하여 생성됨 - 을 더 포함한다.
일부 양태들에서, 비디오 데이터를 인코딩하기 위한, 위에 설명된 방법, 장치, 및 비일시적인 컴퓨터 판독가능 매체는: 디코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 인코딩된 프레임의 루미넌스 채널과 연관된 값들을 프로세싱하는 것 - 루미넌스 채널과 연관된 복원된 출력 값들은 제 1 정규화 계층의 출력에 기초하여 생성됨 -; 및 디코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 값들을 프로세싱하는 것 - 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들은 제 2 정규화 계층의 출력에 기초하여 생성됨 - 을 더 포함한다.
일부 양태들에서, 디코더 서브-네트워크의 제 1 컨볼루션 계층은 인코딩된 프레임의 루미넌스 채널을 서브샘플링한다.
일부 양태들에서, 제 1 컨볼루션 계층의 루미넌스 필터는 제 2 컨볼루션 계층의 크로미넌스 필터의 크로미넌스 필터 사이즈보다 큰 루미넌스 필터 사이즈를 갖는다.
일부 양태들에서, 루미넌스 필터 사이즈는 9 픽셀 x 9 픽셀이고, 크로미넌스 필터 사이즈는 5 픽셀 x 5 픽셀이다.
일부 양태들에서, 비디오 데이터를 디코딩하기 위한, 위에 설명된 방법, 장치, 및 비일시적인 컴퓨터 판독가능 매체는 인코딩된 프레임의 샘플들을 엔트로피 디코딩하는 것을 더 포함한다.
일부 양태들에서, 비디오 데이터를 인코딩하기 위한, 위에 설명된 방법, 장치, 및 비일시적인 컴퓨터 판독가능 매체는: 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하는 것; 인코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 것; 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하는 것; 및 프레임의 결합된 표현에 기초하여 인코딩된 프레임을 생성하는 것을 더 포함한다.
일부 양태들에서, 장치는 모바일 디바이스 (예컨대, 모바일 전화 또는 소위 "스마트 폰", 태블릿 컴퓨터, 또는 다른 유형의 모바일 디바이스), 웨어러블 디바이스, 확장 현실 디바이스 (예컨대, 가상 현실 (VR) 디바이스, 증강 현실 (AR) 디바이스, 또는 혼합 현실 (MR) 디바이스), 개인용 컴퓨터, 랩탑 컴퓨터, 비디오 서버, 텔레비전, 비히클 (또는 비히클의 컴퓨팅 디바이스) 또는 다른 디바이스를 포함한다. 일부 양태들에서, 장치는 하나 이상의 이미지들 또는 비디오 프레임들을 캡처하기 위한 적어도 하나의 카메라를 포함한다. 예를 들어, 장치는 비디오 프레임들을 포함하는 하나 이상의 이미지들 및/또는 하나 이상의 비디오들을 캡처하기 위한 카메라 (예를 들어, RGB 카메라) 또는 다수의 카메라들을 포함할 수 있다. 일부 양태들에서, 장치는 하나 이상의 이미지들, 비디오, 통지 또는 다른 디스플레이가능한 데이터를 디스플레이하기 위한 디스플레이를 포함한다. 일부 양태들에서, 장치는 하나 이상의 비디오 프레임 및/또는 신택스 데이터를 송신 매체를 통해 적어도 하나의 디바이스로 송신하도록 구성된 송신기를 포함한다. 일부 양태들에서, 프로세서는 뉴럴 프로세싱 유닛 (NPU), 중앙 프로세싱 유닛 (CPU), 그래픽 프로세싱 유닛 (GPU), 또는 다른 프로세싱 디바이스 또는 컴포넌트를 포함한다.
이 개요는 청구된 대상의 핵심 또는 본질적 특징들을 식별하기 위해 의도된 것이 아니며, 청구된 대상의 범위를 결정하는데 단독으로 사용되도록 의도된 것도 아니다. 청구대상은 이 특허의 전체 명세서, 임의의 또는 모든 도면들, 및 각 청구항의 적절한 부분들을 참조하여 이해되어야 한다.
전술한 바는, 다른 특징들 및 실시형태들과 함께, 다음의 상세한 설명, 청구범위, 및 첨부 도면들을 참조할 시 더 명확하게 될 것이다.
본 출원의 예시적 실시형태들은 다음 도면들을 참조하여 이하에서 상세히 설명된다.
도 1 은 일부 예들에 따른 신경망 비디오 코딩 층들을 구현하는데 사용될 수 있는 시스템-온-칩 (SOC) 의 일 예의 구현을 예시한다.
도 2a 는 본 명세서에 설명된 일부 예들에 따른 신경망들의 양태들을 예시한다.
도 2b 는 본 명세서에 설명된 일부 예들에 따른 신경망들의 양태들을 예시한다.
도 2c 는 본 명세서에 설명된 일부 예들에 따른 신경망들의 양태들을 예시한다.
도 2d 는 본 명세서에 설명된 일부 예들에 따라 이미지로부터 시각적 피처들을 인식하도록 설계된 딥 컨볼루션 네트워크 (DCN) 의 양태들을 예시한다.
도 3 은 본 개시의 양태들에 따른 예시적인 딥 컨볼루션 네트워크 (DCN) 를 예시하는 블록 다이어그램이다.
도 4 는 일부 예들에 따라, 신경망-기반 시스템을 사용하여 이미지 및/또는 비디오 코딩 (예를 들어, 인코딩 및 디코딩) 을 수행하도록 동작가능한 디바이스를 포함하는 시스템의 일 예를 예시하는 다이어그램이다.
도 5a 는 신경망-기반 이미지 및 비디오 코딩 시스템의 양태들을 예시하는 다이어그램이다.
도 5b 는 본 명세서에 설명된 예들에 따른 신경망-기반 이미지 및 비디오 코딩 시스템의 양태들을 예시하는 다이어그램이다.
도 6 은 일부 예들에 따른, 루미넌스-크로미넌스 (YUV) 포맷을 갖는 입력에 대한 단대단 신경망 기반 이미지 및 비디오 코딩 시스템의 예를 예시하는 다이어그램이다.
도 7 은 일부 예들에 따라 비디오 데이터를 프로세싱하는 프로세스의 일 예를 예시하는 플로우차트이다.
도 8 은 일부 예들에 따라 비디오 데이터를 프로세싱하는 프로세스의 다른 예를 예시하는 플로우차트이다.
도 9 는 본 명세서에 설명된 다양한 기법을 구현할 수 있는 일 예의 컴퓨팅 디바이스의 일 예의 컴퓨팅 디바이스 아키텍처를 도시한다.
이 개시의 일부 양태들 및 실시형태들이 아래 제공된다. 이들 양태들 및 실시형태들의 일부가 독립적으로 적용될 수도 있고 그것들 중 일부는 본 기술분야의 통상의 당업자들에게 명확하게 될 바와 같이 조합하여 적용될 수도 있다. 다음의 설명에 있어서, 설명의 목적들로, 특정 상세들이 본 출원의 실시형태들의 철저한 이해를 제공하기 위하여 기재된다. 하지만, 다양한 실시형태들은 이들 특정 상세들 없이도 실시될 수도 있음이 명백할 것이다. 도면들 및 설명은 제한적인 것으로 의도되지 않는다.
다음의 설명은 오직 예시적인 실시형태들을 제공할 뿐이고, 본 개시의 범위, 적용가능성, 또는 구성을 한정하도록 의도되지 않는다. 오히려, 예시적인 실시형태들의 설명은 예시적인 실시형태를 구현하기 위한 가능한 설명을 당업자에게 제공할 것이다. 첨부된 청구범위에 설명된 바와 같이 본 출원의 사상 및 범위를 벗어나지 않으면서 엘리먼트들의 기능 및 배열에 다양한 변경들이 이루어질 수도 있음이 이해되어야 한다.
본 개시의 양태들은 일반적으로 이미지들 및/또는 비디오의 인코딩 (또는 압축) 및 디코딩 (압축해제) 을 포함하는 이미지 및 비디오 코딩에 관련된다. 본 개시의 일부 양태들은 단대단 머신 러닝-기반 이미지 및 비디오 코딩 시스템 (예를 들어, 단대단 신경망 비디오 코딩 (E2E-NNVC)) 을 사용하여 상이한 특성들을 갖는 채널들을 가진 루미넌스-크로미넌스 (YUV) 입력 포맷들 (예를 들어, YUV420, YUV444, YUV422 등) 및/또는 다른 입력 포맷들을 핸들링하기 위한 기법들에 관한 것이다.
상술한 바와 같이, 디지털 비디오는 많은 양의 데이터를 포함하고 있으며, 비디오 데이터의 네트워크 송신이 증가하고 있어, 네트워크 리소스들의 효율적 압축 및 효율적 사용이 요구되고 있다. 컴퓨팅 전력에서의 증가는 신경망과 같은 머신 러닝 구조의 사용을 구동하였으며, 이는 프로세싱 디바이스들에서의 개선을 활용하여 데이터에서 예상치 못한 관계를 식별하고 광범위한 애플리케이션에서 데이터 분석을 개선할 수 있다. 신경망들의 프로세서 집약적 특성과 결합된 비디오 통신 시스템들에서 많은 양의 데이터는 비디오 코딩 시스템들에서 머신 러닝 구조들에 특히 중요한 리소스들을 효율적으로 사용한다. 동시에, 비디오 코딩 시스템들의 중요한 양태는 이미지 품질이고, 이미지 품질은 과도한 압축에 의해 손상될 수 있다.
YUV 비디오 포맷은 컬러 정보로부터 별개의 채널의 루미넌스 정보를 인코딩하는 컬러 공간들의 계열을 사용한다. 반면 RGB (Red-Green-Blue) 비디오 포맷들은 상이한 채널 (예를 들어, 적색, 녹색 및 청색 채널) 에서의 상이한 컬러들의 밝기 및 컬러 정보를 인코딩한다. YUV 포맷들은 본질적으로 RGB 포맷들보다 더 콤팩트하지 않지만, 인간의 눈은 밝기의 변화들보다 컬러 휴에서의 변화들에 덜 민감하기 때문에, YUV 비디오 포맷들은 밝기 채널들 (예를 들어, 루미넌스 채널들) 과 비교하여 컬러 채널들 (예를 들어, 크로미넌스 채널들) 에 대한 추가적인 압축을 사용할 수 있다. 차이는 RGB 포맷 비디오와 비교하여 YUV 포맷 비디오에 대한 더 많은 압축 및 효율적인 네트워크 리소스 사용을 허용할 수 있지만, 상이한 특성들 (예를 들어, 프레임 당 픽셀들의 수, 픽셀 데이터의 평균 및 분산과 같은 통계적 특성들 등) 을 갖는 채널들을 처리하는 코딩 시스템들을 초래할 수 있다.
신경망 구조들은 입력 데이터에 대해 고도로 맞춤화되고, 따라서 상이한 채널들 (예를 들어, YUV 포맷 데이터에서의 Y 및 UV 채널들) 의 특성들은 데이터를 처리하기 위해 상이한 신경망 프로세싱 구조들을 사용한다. YUV 포맷들이 압축 레벨들 및 연관된 인지된 이미지 품질과 연관된 이점들을 갖지만, 2개의 별개의 신경망 프로세싱 경로들을 사용하는 것은 비효율적이다. 본 명세서에 설명된 예들은 상이한 특성들을 갖는 채널들을 개별적으로 프로세싱하고, E2E-NNVC 시스템에서의 후속 프로세싱 계층들이 상이한 채널들에 의해 공유될 수 있도록 데이터 특성들을 표준화하는 초기 신경망 코딩 계층들을 포함한다. 유사하게, 본 명세서에 설명된 예들에 따른 디코딩은 상이한 채널들을 프로세싱하기 위해 공유 계층들을 사용한다. 최종 출력 계층에서의 별개의 프로세싱 경로들은 표준화된 인코딩된 데이터를 획득할 수 있고, 출력 데이터를 생성하기 위해 최종 계층에서 상이한 특성들을 갖는 채널들을 개별적으로 프로세싱할 수 있다.
본 명세서에 설명된 일부 예들은 E2E-NNVC 시스템들의 성능을 개선하기 위해 YUV 코딩의 이점들과 상이한 특성들을 갖는 YUV 채널들에 의해 요구되는 추가적인 리소스들을 밸런싱한다. YUV 포맷들을 고유하게 처리하는 것에 의해, RGB-YUV 변환에 의해 이용될 프로세싱 리소스들은 YUV 비디오 코딩을 위해 제거된다. 추가적으로, 공유된 중간 또는 매개 계층들 (예를 들어, 초기 인코딩 계층과 최종 디코딩 계층 사이의 계층들) 은 채널 차이들을 관리하기 위해 초기 및 최종 계층들을 사용하는 것에 의해 상이한 고유 특성들을 갖는 채널들에 사용되며, 이는 중간 계층들에 대한 효율적인 프로세싱 리소스 사용을 가능하게 한다. 전술된 양태들은 비디오 코딩 디바이스들 및 시스템들의 동작을 개선한다.
추가적으로, 일부 양태들에서, 초기 인코딩 계층 및 최종 디코딩 계층은 상이한 채널들을 효율적으로 필터링하도록 구성될 수 있다. 예를 들어, 더 높은 해상도의 루미넌스 (Y) 계층은 더 큰 필터 (예를 들어, 5x5 필터) 를 갖는 별개의 필터 구조를 사용할 수 있는 반면, 더 낮은 해상도의 크로미넌스 (U 및 V) 계층들은 더 작은 필터들 (예를 들어, 3x3 필터) 을 사용할 수 있다. 초기 인코딩 계층과 최종 디코딩 계층에서 특정 채널의 특성을 목표로 하는 필터를 사용하는 것에 의해, 원하는 이미지 품질을 얻기 위해 사용되는 리소스들이 각각의 채널의 특성들에 기초하여 할당할 수 있다. 대조적으로, 초기 및 최종 계층들에서 단일 필터를 사용하는 것은 초과 리소스들이 더 낮은 해상도 데이터에 할당되는 것을 초래하거나 또는 더 작은 필터가 더 높은 해상도 데이터에 사용되는 더 낮은 이미지 품질을 초래할 것이다. 본 명세서에 설명된 일부 예들은 채널 레벨에서 설계된 초기 인코딩 계층들 및 최종 디코딩 계층들에서의 비디오 필터들을 이용하여 리소스 사용 및 비디오 이미지 품질의 효율적인 밸런싱을 갖는 코딩 디바이스들의 동작을 개선한다. 그 결과는 (예를 들어, 상이한 해상도들의 채널들에 적용되는 더 작은 필터와 비교하여) 개선된 이미지 품질, (예를 들어, 상이한 해상도들의 채널들에 적용되는 더 큰 필터와 비교하여) 감소된 프로세싱 리소스 사용량, 또는 (예를 들어, 더 낮은 해상도 채널에 사용되는 더 작은 필터 및 상이한 통계적 특성들을 갖는 채널들에 대한 상이한 정규화의 이점들로 인해) 양쪽 모두이다.
위에 설명된 바와 같이, 비디오 데이터, 특히 디지털 비디오 데이터는, 특히 고품질 비디오 데이터에 대한 요구가 계속 증가함에 따라, 많은 양의 데이터를 포함할 수 있다. 예를 들어, 비디오 데이터의 소비자는 통상적으로 높은 충실도, 해상도, 프레임 레이트 등을 갖는 최고 품질의 비디오를 원한다. 그러나, 이러한 요구를 총족시키는데 요구되는 큰 양의 비디오 데이터는 비디오 데이터를 프로세싱하고 저장하는 디바이스들 상에뿐만 아니라 통신 네트워크에 대해 상당한 부담을 줄 수 있다.
여러 기법들은 비디오 데이터를 코딩하는데 사용될 수 있다. 비디오 코딩은 특정 비디오 코딩 표준들에 따라 수행될 수 있다. 일 예의 비디오 코딩 표준들은 HEVC (high-efficiency video coding), AVC (advanced video coding), MPEG (moving picture experts group) 코딩 및 VVC (versatile video coding) 을 포함한다. 비디오 코딩은 종종 예측 방법들, 이를 테면, 인터-예측 또는 인트라-예측을 사용하며 이는 비디오 이미지들 또는 시퀀스들에 존재하는 리던던시들의 상당한 이점을 취한다. 비디오 코딩 기법들의 일반적인 목표는 비디오 품질에 대한 저하를 회피 또는 최소화하면서 더 낮은 비트 레이트를 사용하는 형태로 비디오 데이터를 압축하는 것이다. 비디오 서비스들에 대한 수요가 증가하고 새로운 비디오 서비스들이 이용가능해짐에 따라, 더 양호한 코딩 효율, 성능, 및 레이트 제어를 갖는 코딩 기법들이 필요하다.
하나 이상의 머신 러닝 (ML) 시스템들을 사용하여 이미지 및/또는 비디오 코딩을 수행하기 위한 시스템들, 장치들, 프로세스들 (또한 방법들로 지칭됨), 및 컴퓨터 판독가능 매체 (총괄적으로 "시스템들 및 기법들"로 지칭됨) 가 본 명세서에 설명된다. 일반적으로 ML은 인공 지능 (AI) 의 서브세트이다. ML 시스템들은, 컴퓨터 시스템들이 명시적 명령어들의 사용 없이, 패턴들 및 추론에 의존하는 것에 의해 다양한 태스크들을 수행하기 위해 사용할 수 있는 알고리즘들 및 통계 모델들을 포함할 수 있다. ML 시스템의 일 예는 인공 뉴런들 (예를 들어, 뉴런 모델들) 의 상호연결된 그룹을 포함할 수 있는 신경망 (인공 신경망으로도 지칭됨) 이다. 신경망들은 특히 이미지 및/또는 비디오 코딩, 이미지 분석 및/또는 컴퓨터 비전 애플리케이션들, 인터넷 프로토콜 (IP) 카메라들, 사물 인터넷 (IoT) 디바이스들, 자율 차량들, 서비스 로봇들과 같은 다양한 애플리케이션들 및/또는 디바이스들을 위해 사용될 수 있다.
신경망 내의 개별 노드들은 입력 데이터를 취하고 데이터에 대해 간단한 연산들을 수행하는 것에 의해 생물학적 뉴런들을 에뮬레이트할 수 있다. 입력 데이터에 대해 수행된 단순한 동작들의 결과들은 다른 뉴런들에 선택적으로 전달된다. 가중치 값들은 네트워크 내의 각각의 벡터 및 노드와 연관되고, 이들 값들은 입력 데이터가 출력 데이터와 어떻게 관련되는지를 제약한다. 예를 들어, 각각의 노드의 입력 데이터는 대응하는 가중치 값과 곱해질 수 있고, 그 곱들은 합산될 수도 있다. 곱들의 합은 선택적인 바이어스에 의해 조정될 수 있고, 활성화 함수가 결과에 적용되어, 노드의 출력 신호 또는 "출력 활성화" (때때로 활성화 맵 또는 피처 맵으로 지칭됨) 를 산출할 수 있다. 가중치 값들은 초기에 네트워크를 통한 트레이닝 데이터의 반복적 플로우에 의해 결정될 수 있다 (예를 들어, 가중치 값들은 네트워크가 자신들의 전형적인 입력 데이터 특성들에 의해 특정 클래스들을 식별하는 방법을 학습하는 트레이닝 페이즈 동안에 설정된다).
상이한 유형의 신경망들, 이를 테면, CNN들 (convolutional neural networks), RNN들 (recurrent neural networks), GAN들 (generative adversarial networks), MLP (multilayer perceptron) 신경망들이 존재한다. 예를 들어, CNN들 (convolutional neural networks) 은 일 유형의 피드-포워드 인공 신경망이다. 컨볼루션 신경망들은 수용 필드 (예를 들어, 입력 공간의 공간적으로 국부화된 영역) 를 각각 갖고 그리고 입력 공간을 집합적으로 타일링하는 인공 뉴런들의 집합들을 포함할 수도 있다. RNN들은 계층의 결과를 예측하는 것을 보조하기 위해 계층의 출력을 저장하고 그 출력을 입력에 피드백하는 원리에 대해 작동한다. GAN 은 입력 데이터에서 패턴들을 학습할 수 있는 생성형 신경망의 형태이며, 따라서 신경망 모델은 원래 데이터세트로부터 적합하게 얻어질 수 있었던 새로운 합성 출력들을 생성할 수 있다. GAN 은 합성된 출력을 생성하는 생성 신경망 및 진본성에 대해 출력을 평가하는 판별 신경망을 포함한, 함께 동작하는 2개의 신경망들을 포함할 수 있다. MLP 신경망들에서, 데이터는 입력 계층에 공급될 수 있고, 하나 이상의 은닉 계층들은 데이터에 대한 추상화의 레벨들을 제공한다. 그 후, 추상화된 데이터에 기초하여 출력 계층 상에서 예측들이 이루어질 수도 있다.
계층화된 신경망 네트워크 아키텍처들 (다수의 은닉된 계층들이 존재할 때 딥 신경망으로서 지칭됨) 에서, 인공 뉴런들의 제 1 계층의 출력은 인공 뉴런들의 제 2 계층에 대한 입력으로 되고, 인공 뉴런들의 제 2 계층의 출력은 인공 뉴런들의 제 3 계층에 대한 입력으로 되는 등등이다. CNN들은, 예를 들어, 피처들의 계층을 인식하도록 트레이닝될 수도 있다. CNN 아키텍처에서의 연산은 하나 이상의 연산 체인들로 구성될 수도 있는 프로세싱 노드들의 포퓰레이션에 걸쳐 분산될 수도 있다. 이들 멀티-계층화된 아키텍처들은 한번에 하나의 계층씩 트레이닝될 수도 있고, 역 전파 (back propagation) 를 이용하여 미세-튜닝될 수도 있다.
일부 양태들에서, 본 명세서에 설명된 시스템들 및 기법들은 루미넌스-크로미넌스 (YUV) 입력 포맷들을 갖는 입력 데이터를 프로세싱하도록 설계된 단대단 ML-기반 (예를 들어, 신경망 아키텍처를 사용함) 이미지 및 비디오 코딩 (E2E-NNVC) 시스템을 포함한다. YUV 포맷은 루미넌스 채널 (Y) 및 한 쌍의 크로미넌스 채널 (U 및 V) 을 포함한다. U 채널은 크로미넌스 (또는 크로마)-청색 채널로 지칭될 수 있고, U 채널은 크로미넌스 (또는 크로마)-적색 채널로 지칭될 수 있다. 일부 경우들에서, 루미넌스 (Y) 채널 또는 컴포넌트는 또한 루마 채널 또는 컴포넌트로 지칭될 수 있다. 일부 경우들에서, 크로미넌스 (U 및 V) 채널들 또는 컴포넌트들은 또한 크로마 채널들 또는 성분들로 지칭될 수 있다. YUV 입력 포맷들은 다른 무엇보다도 YUV420, YUV444, YUV422 를 포함할 수 있다. 일부 경우들에서, 본 명세서에 설명된 기법들 및 시스템들은 Y-크로마 청색 (Cb)-크로마 적색 (Cr) (YCbCr) 포맷, 적색-녹색-청색 (RGB) 포맷, 및/또는 다른 포맷을 갖는 데이터와 같은 다른 입력 포맷들을 핸들링하도록 설계될 수 있다. YUV 포맷은 아날로그 도메인 및 YCbCr 포맷을 위한 것이다. E2E-NNVC 시스템은 독립형 프레임들 (또한 이미지들로서 지칭됨) 및/또는 다수의 프레임들을 포함하는 비디오 데이터를 인코딩 및/또는 디코딩할 수 있다.
많은 경우들에, E2E-NNVC 시스템들은 오토 인코더 서브-네트워크 (인코더 서브-네트워크) 및 엔트로피 코딩을 위해 사용된 양자화된 레이턴트들을 통하여 확률론적 모델을 학습하는 것을 담당하는 제 2 서브-네트워크 (디코더 서브-네트워크) 의 조합으로서 설계된다. 일부 경우들에서, 디코더의 다른 서브-네트워크들이 존재할 수 있다. 이러한 E2E-NNVC 시스템 아키텍처는 변환 플러스 양자화 모듈 (또는 인코더 서브-네트워크) 및 엔트로피 모델링 서브-네트워크 모듈 (또는 디코더 서브-네트워크) 의 조합으로 보여질 수 있다. E2E-NNVC 시스템들은 통상적으로 RGB 입력을 프로세싱하도록 설계된다. 예를 들어, 인코더 및 디코더 서브-네트워크들은 통상적으로 3-채널 RGB 입력을 위해 설계되고, 여기서 모든 입력 채널들은 동일한 신경망 계층들 (예를 들어, 컨볼루션 신경망 (CNN) 및/또는 일반화된 분할 정규화 (GDN) 계층들) 을 통과한다. 그러나, 대부분의 이미지 및 이미지 코딩 시스템들은 YUV 입력 포맷 (예를 들어, 많은 경우에 YUV420 입력 포맷) 을 사용한다. 본 명세서에 설명된 기법들 및 시스템들은 YUV 입력 포맷들을 갖는 입력 데이터를 프로세싱하도록 설계된 E2E-NNVC 시스템을 제공한다.
본 개시의 다양한 양태들이 도면들을 참조하여 설명된다. 도 1 은 시스템-온-칩 (SOC)(100) 의 일 예의 구현을 예시하며, 이는 본 명세서에서 설명된 기능들의 하나 이상을 수행하도록 구성된 중앙 프로세싱 유닛 (CPU)(102) 또는 멀티-코어 CPU 를 포함할 수도 있다. 다른 정보 중에서도 파라미터들 또는 변수들 (예를 들어, 뉴럴 신호들 및 시냅틱 (synaptic) 가중치들), 계산 디바이스와 연관된 시스템 파라미터들 (예를 들어, 가중치들을 갖는 신경망), 지연들, 주파수 빈 정보, 태스크 정보는 뉴럴 프로세싱 유닛 (NPU)(108) 과 연관된 메모리 블록, CPU (102) 와 연관된 메모리 블록, 그래픽 프로세싱 유닛 (GPU)(104) 과 연관된 메모리 블록, 디지털 신호 프로세서 (DSP)(106) 와 연관된 메모리 블록, 메모리 블록 (118) 에 저장될 수도 있거나, 및/또는 다수의 블록들에 걸쳐 분산될 수도 있다. CPU (102) 에서 실행되는 명령들은 CPU (102) 와 연관된 프로그램 메모리로부터 로딩될 수도 있거나 메모리 블록 (118) 으로부터 로딩될 수도 있다.
SOC (100) 는 또한, GPU (104), DSP (106), 5세대 (5G) 연결성, 4세대 롱 텀 에볼루션 (4G LTE) 연결성, Wi-Fi 연결성, USB 연결성, 블루투스 연결성 등을 포함할 수도 있는 연결성 블록 (110), 및 예를 들어, 제스처들을 검출 및 인식할 수도 있는 멀티미디어 프로세서 (112) 와 같은, 특정 기능들에 맞게 조정된 부가 프로세싱 블록들을 포함할 수도 있다. 일 구현에서, NPU 는 CPU (102), DSP (106), 및/또는 GPU (104) 에서 구현된다. SOC (100) 는 또한 센서 프로세서 (114), 이미지 신호 프로세서들 (ISP들)(116), 및/또는 내비게이션 모듈 (120) 을 포함할 수 있으며, 이는 글로벌 포지셔닝 시스템을 포함할 수도 있다.
SOC (100) 는 ARM 명령 세트에 기초할 수도 있다. 본 개시의 일 양태에서, CPU (102) 에 로딩된 명령들은 입력 값과 필터 가중치의 곱셈 곱에 대응하는 룩업 테이블 (LUT) 에서 저장된 곱셈 결과를 검색하기 위한 코드를 포함할 수도 있다. CPU (102) 에 로딩된 명령들은 또한 곱셈 곱의 룩업 테이블 히트가 검출될 때 곱셈 곱의 곱셈 연산 동안 곱셈기를 디스에이블하기 위한 코드를 포함할 수도 있다. 또한, CPU (102) 에 로딩된 명령들은 곱셈 곱의 룩업 테이블 미스가 검출될 때 입력 값과 필터 가중치의 연산된 곱셈 곱을 저장하기 위한 코드를 포함할 수도 있다.
SOC (100) 및/또는 그 컴포넌트들은 본 명세서에서 논의된 본 개시의 양태들에 따른 머신 러닝 기법들을 사용하여 비디오 압축 및/또는 압축해제 (또한 비디오 인코딩 및/또는 디코딩으로서 지칭되며, 집합적으로 비디오 코딩으로서 지칭됨) 를 수행하도록 구성될 수도 있다. 비디오 압축 및/또는 압축해제를 수행하기 위해 딥 러닝 아키텍처들을 사용하는 것에 의해, 본 개시내용의 양태들은 디바이스 상의 비디오 압축 및/또는 압축해제의 효율을 증가시킬 수 있다. 예를 들어, 설명된 비디오 코딩 기법들을 사용하는 디바이스는 머신 학습 기반 기법들을 사용하여 비디오를 더 효율적으로 압축할 수 있고, 압축된 비디오를 다른 디바이스에 송신할 수 있고, 다른 디바이스는 본원에서 설명된 머신 학습 기반 기법들을 사용하여 압축된 비디오를 더 효율적으로 압축해제할 수 있다.
위에 주지된 바와 같이, 신경망은 머신 러닝 시스템의 일 예이고, 입력 계층, 하나 이상의 은닉 계층들, 및 출력 계층을 포함할 수 있다. 데이터는 입력 계층의 입력 노드들로부터 제공되고, 프로세싱은 하나 이상의 은닉 계층들의 은닉 노드들에 의해 수행되고, 출력은 출력 계층의 출력 노드들을 통해 생성된다. 딥 러닝 네트워크들은 통상적으로 다수의 은닉 계층들을 포함한다. 신경망의 각각의 계층은 인공 뉴런들 (또는 노드들) 을 포함할 수 있는 피처 맵들 또는 활성화 맵들을 포함할 수 있다. 피처 맵은 필터, 커널 등을 포함할 수 있다. 노드들은 계층들 중 하나 이상의 노드들의 중요도를 나타내는데 사용되는 하나 이상의 가중치들을 포함할 수 있다. 일부 경우들에, 딥 러닝 네트워크는 일련의 많은 은닉된 계층들을 가질 수 있고, 초기 계층들은 입력의 간단하고 낮은 레벨의 특성들을 결정하는데 사용되고, 이후의 게층들은 더 복잡하고 추상적인 특성들의 계층구조를 빌드업한다.
딥 러닝 아키텍처는 피처의 계층구조를 학습할 수 있다. 예를 들어, 시각적 데이터로 제시되면, 제 1 계층은 입력 스트림에서, 에지들과 같은 비교적 간단한 특징들을 인식하는 것을 학습할 수도 있다. 다른 예에서, 청각적 데이터로 제시되면, 제 1 계층은 특정 주파수들에서의 스펙트럼 전력을 인식하는 것을 학습할 수도 있다. 제 1 계층의 출력을 입력으로서 취하는 제 2 계층은, 시각 데이터에 대한 간단한 형상들 또는 청각 데이터에 대한 사운드들의 조합들과 같은 특징들의 조합들을 인식하는 것을 학습할 수도 있다. 예를 들어, 상위 계층들은 시각적 데이터에서의 복잡한 형상들 또는 청각적 데이터에서의 단어들을 나타내는 것을 학습할 수도 있다. 여전히 상위 계층들은 공통 시각적 객체들 또는 구어체들을 인식하는 것을 학습할 수도 있다.
딥 러닝 아키텍처들은 자연스러운 계층구조를 갖는 문제들에 적용될 때 특히 잘 수행할 수도 있다. 예를 들어, 모터구동 차량들 (motorized vehicle) 의 분류는 휠들, 윈드쉴드들 및 다른 특징들을 인식하는 것을 먼저 학습하는 것으로 이익을 얻을 수 있다. 이러한 특징들은 자동차, 트럭, 및 비행기를 인식하기 위해 상이한 방식들로 상위 계층에서 조합될 수도 있다.
신경망들은 다양한 연결성 패턴들로 설계될 수도 있다. 피드-포워드 네트워크들에서, 정보는 하위 계층에서 상위 계층으로 전달되고, 주어진 계층에서의 각각의 뉴런은 상위 계층들에서의 뉴런들에 통신한다. 계층구조적 표현은 상술한 바와 같이, 피드-포워드 네트워크의 연속적인 계층들에 구축될 수도 있다. 신경망들은 또한 순환 (recurrent) 또는 피드백 (또한 하향식이라 함) 연결들을 가질 수도 있다. 순환 연결에서, 주어진 계층의 뉴런으로부터의 출력은 동일한 계층의 다른 뉴런으로 통신될 수도 있다. 순환 아키텍처는 시퀀스로 신경망에 전달되는 입력 데이터 청크들 중 하나보다 많은 청크들에 걸쳐 있는 패턴들을 인식하는데 도움이 될 수도 있다. 주어진 계층의 뉴런에서 하위 계층의 뉴런으로의 연결은 피드백 (또는 하향식) 연결이라고 한다. 많은 피드백 연결들을 갖는 네트워크는 하이-레벨 개념의 인식이 입력의 특정 로우-레벨 특징들을 식별하는 것을 보조할 수도 있을 때 도움이 될 수도 있다.
신경망의 계층들 사이의 연결들은 전체 연결되거나 국부적으로 연결될 수도 있다. 도 2a 는 전체 연결된 신경망 (202) 의 예를 도시한다. 전체 연결된 신경망 (202) 에서, 제 1 계층에서의 뉴런은 제 2 계층에서의 모든 뉴런에 그의 출력을 통신할 수도 있으므로, 제 2 계층에서의 각각의 뉴런이 제 1 계층에서의 모든 뉴런으로부터 입력을 수신할 것이다. 도 2b 는 국부적으로 연결된 신경망 (204) 의 예를 도시한다. 국부적으로 연결된 신경망 (204) 에서, 제 1 층에서의 뉴런은 제 2 계층에서의 제한된 수의 뉴런들에 연결될 수도 있다. 보다 일반적으로, 국부적으로 연결된 신경망 (204) 의 국부적으로 연결된 계층은 계층에서의 각각의 뉴런이 동일하거나 유사한 연결성 패턴을 가질 것이지만, 상이한 값들 (예를 들어, 210, 212, 214, 및 216) 을 가질 수도 있는 연결 강도들을 갖도록 구성될 수도 있다. 국부적으로 연결된 연결성 패턴은 상위 계층에서 공간적으로 별개의 수용 필드들을 발생할 수도 있는데, 이는 주어진 영역에서 상위 계층 뉴런들이 네트워크에 대한 총 입력의 제한된 부분의 특성들에 대한 트레이닝을 통해 튜닝되는 입력들을 수신할 수도 있기 때문이다.
국부적으로 연결된 신경망의 일 예는 컨볼루션 신경망이다. 도 2c 는 컨볼루션 신경망 (206) 의 예를 도시한다. 컨볼루션 신경망 (206) 는 제 2 계층에서의 각각의 뉴런에 대한 입력들과 연관된 연결 강도들이 공유되도록 (예를 들어, 208) 구성될 수도 있다. 컨볼루션 신경망들은 입력들의 공간적 위치가 의미있는 문제들에 매우 적합할 수도 있다. 컨볼루션 신경망 (206) 은 본 개시내용의 양태들에 따라, 비디오 압축 및/또는 압축해제의 하나 이상의 양태들을 수행하는 데 사용될 수 있다.
컨볼루션 신경망의 하나의 유형은 딥 컨볼루션 네트워크 (DCN) 이다. 도 2d 는 자동차-탑재형 (car-mounted) 카메라와 같은 이미지 캡처 디바이스 (230) 로부터 입력된 이미지 (226) 로부터 시각적 피처들을 인식하도록 설계된 DCN (200) 의 상세한 예를 도시한다. 본 예의 DCN (200) 은 교통 표지판 및 교통 표지판 상에 제공된 번호를 식별하도록 트레이닝될 수도 있다. 물론, DCN (200) 은 차선 마킹들을 식별하거나 교통 신호등 들을 식별하는 것과 같은 다른 태스크들을 위해 트레이닝될 수도 있다.
DCN (200) 은 지도 학습으로 트레이닝될 수도 있다. 트레이닝 동안, DCN (200) 은 속도 제한 표지판의 이미지 (226) 와 같은 이미지로 제시될 수도 있고, 그 후 순방향 패스가 출력 (222) 을 생성하기 위해 계산될 수도 있다. DCN (200) 은 특징 추출 섹션 및 분류 섹션을 포함할 수도 있다. 이미지 (226) 를 수신하면, 컨볼루션 계층 (232) 은 이미지 (226) 에 컨볼루션 커널들 (미도시) 을 적용하여 피처 맵들 (218) 의 제 1 세트를 생성할 수도 있다. 예로서, 컨볼루션 계층 (232) 에 대한 컨볼루션 커널은 28x28 피처 맵들을 생성하는 5x5 커널일 수도 있다. 본 예에서, 4개의 상이한 피처 맵이 피처 맵들의 제 1 세트 (218) 에서 생성되기 때문에, 4개의 상이한 컨볼루션 커널이 컨볼루션 계층 (232) 에서 이미지 (226) 에 적용되었다. 컨볼루션 커널들은 또한 필터들 또는 컨볼루션 필터들로 지칭될 수도 있다.
피처 맵들의 제 1 세트 (218) 는 피처 맵들의 제 2 세트 (220) 를 생성하기 위해 최대 풀링 계층 (미도시) 에 의해 서브샘플링될 수도 있다. 최대 풀링 계층은 피처 맵들 (218) 의 제 1 세트의 사이즈를 감소시킨다. 즉, 14x14 와 같은 피처 맵들의 제 2 세트 (220) 의 사이즈는 28x28 과 같은 피처 맵들의 제 1 세트 (218) 의 사이즈보다 작다. 감소된 사이즈는 메모리 소비를 감소시키면서 후속 계층에 유사한 정보를 제공한다. 피처 맵들의 제 2 세트 (220) 는 추가로, 피처 맵들의 하나 이상의 후속 세트 (미도시) 를 생성하기 위해 하나 이상의 후속 컨볼루션 계층 (미도시) 을 통해 컨볼루션될 수도 있다.
도 2d 의 예에서, 피처 맵들의 제 2 세트 (220) 는 제 1 피처 벡터 (224) 를 생성하도록 컨볼루션된다. 또한, 제 1 특징 벡터 (224) 는 제 2 특징 벡터 (228) 를 생성하도록 추가로 컨볼루션된다. 제 2 특징 벡터 (228) 의 각각의 특징은 "표지판", "60" 및 "100" 과 같은 이미지 (226) 의 가능한 특징에 대응하는 수를 포함할 수도 있다. 소프트맥스 함수 (softmax function)(미도시) 는 제 2 특징 벡터 (228) 에서의 수들을 확률로 변환할 수도 있다. 이와 같이, DCN (200) 의 출력 (222) 은 하나 이상의 특징을 포함하는 이미지 (226) 의 확률이다.
본 예에서, "표지판" 및 "60" 에 대한 출력 (222) 에서의 확률들은 "30", "40", "50", "70", "80", "90" 및 "100" 과 같은 출력 (222) 의 다른 것들의 확률들보다 높다. 트레이닝 전에, DCN (200) 에 의해 생성된 출력 (222) 은 부정확할 가능성이 있다. 따라서, 출력 (222) 과 타겟 출력 사이에 에러가 계산될 수도 있다. 타겟 출력은 이미지 (226) 의 실측 자료(ground truth)(예를 들어, "표지판" 및 "60") 이다. DCN (200) 의 가중치들은 그 후 DCN (200) 의 출력 (222) 이 타겟 출력과 더 밀접하게 정렬되도록 조정될 수도 있다.
가중치들를 조정하기 위해, 러닝 알고리즘은 가중치들에 대한 그래디언트 벡터를 계산할 수도 있다. 그래디언트는 가중치가 조정되었으면 에러가 증가 또는 감소할 양을 표시할 수도 있다. 최상위 계층에서, 그래디언트는 끝에서 두번째 계층에서의 활성화된 뉴런 및 출력 계층에서의 뉴런을 연결하는 가중치의 값에 직접 대응할 수도 있다. 하위 계층들에서, 그래디언트는 가중치들의 값 및 상위 계층들의 계산된 에러 그래디언트들에 의존할 수도 있다. 가중치들은 그 후 에러를 감소시키기 위해 조정될 수도 있다. 가중치를 조정하는 이러한 방식은 신경망을 통한 "역방향 패스"를 수반하기 때문에 "역 전파" 로 지칭될 수도 있다.
실제로, 가중치들의 에러 그래디언트는, 계산된 그래디언트가 참 에러 기울기에 근사하도록, 작은 수의 예들에 걸쳐 계산될 수도 있다. 이러한 근사 방법은 확률적 그래디언트 하강법 (stochastic gradient descent) 으로 지칭될 수도 있다. 확률론적 그래디언트 하강은, 전체 시스템의 달성가능한 에러 레이트가 감소하는 것을 정지하였을 때까지 또는 에러 레이트가 타겟 레벨에 도달하였을 때까지 반복될 수도 있다. 학습 후에, DCN 은 새로운 이미지들을 제시받을 수도 있고, 네트워크를 통한 포워드 패스는 DCN 의 추론 또는 예측으로 고려될 수도 있는 출력 (222) 을 산출할 수도 있다.
딥 신뢰성 네트워크들 (Deep belief networks; DBNs) 은 은닉된 노드들의 다수의 계층들을 포함하는 확률적 모델들이다. DBN 은 트레이닝 데이터 세트의 계층구조적 표현을 추출하는데 사용될 수도 있다. DBN 은 제한된 볼츠만 머신 (Restricted Boltzmann Machines)(RBM) 의 계층들을 적층하여 획득될 수도 있다. RBM 은 입력들의 세트에 걸친 확률 분포를 학습할 수 있는 인공 신경망의 타입이다. RBM들은 각각의 입력이 카테고리화되어야 하는 클래스에 관한 정보의 부재 시 확률 분포를 학습할 수 있기 때문에, RBM들은 종종 비지도 학습에 사용된다. 하이브리드 비지도 및 지도 패러다임을 사용하여, DBN 의 최하위 RBM들은 비지도 방식으로 트레이닝될 수도 있고 특징 추출기들로서 작용할 수도 있으며, 최상위 RBM 은 (이전 계층 및 타겟 클래스들로부터의 입력들의 공동 분포에 대해) 지도 방식으로 트레이닝될 수도 있고 분류기로서 작용할 수도 있다.
딥 컨볼루션 네트워크 (DCN) 는 부가 풀링 및 정규화 계층들로 구성된, 컨볼루션 네트워크의 네트워크이다. DCN들은 많은 태스크들에 대해 최첨단 성능을 달성하였다. DCN들은 입력 및 출력 타겟들 양자 모두가 많은 예시들에 대해 알려져 있고 그래디언트 하강 방법들의 사용에 의해 네트워크의 가중치들을 수정하는데 사용되는 지도 학습을 사용하여 트레이닝될 수 있다.
DCN 은 피드-포워드 네트워크일 수도 있다. 또한, 상술한 바와 같이, DCN 의 제 1 계층에서의 뉴런으로부터 다음 상위 계층에서의 뉴런들의 그룹으로의 연결들은 제 1 계층에서의 뉴런들에 걸쳐 공유된다. DCN들의 피드-포워드 및 공유 연결들은 빠른 프로세싱을 위해 이용될 수도 있다. DCN 의 계산 부담은 예를 들어, 순환 또는 피드백 연결들을 포함하는 유사하게 사이징된 신경망의 것보다 훨씬 적을 수도 있다.
컨볼루션 네트워크의 각각의 계층의 프로세싱은 공간적으로 불변 템플릿 또는 기저 투영으로 간주될 수도 있다. 입력이 컬러 이미지의 적색, 녹색 및 청색 채널들과 같은 다수의 채널들로 먼저 분해되면, 그 입력에 대해 트레이닝된 컨볼루션 네트워크는 이미지의 축들을 따라 2개의 공간 차원 및 컬러 정보를 캡처하는 제 3 차원을 갖는, 3 차원으로 간주될 수도 있다. 컨볼루션 연결들의 출력들은 후속 계층에서 피처 맵을 형성하는 것으로 간주될 수도 있고, 피처 맵의 각각의 엘리먼트 (예를 들어, 220) 는 이전 계층에서의 뉴런들의 범위 (예를 들어, 피처 맵들 (218)) 로부터 그리고 다중 채널들 각각으로부터 입력을 수신한다. 피처 맵에서의 값들은 교정 (rectification) 과 같은 비-선형성, max(0,x) 으로 추가로 프로세싱될 수도 있다. 인접한 뉴런들로부터의 값들은 추가로 풀링될 수도 있으며, 이는 다운 샘플링에 대응하고, 부가적인 로컬 불변 및 차원성 감소를 제공할 수도 있다.
도 3 은 딥 컨볼루션 네트워크 (350) 의 일 예를 예시하는 블록 다이어그램이다. 딥 컨볼루션 네트워크 (350) 는 연결성 및 가중치 공유에 기초한 다수의 상이한 유형들의 계층들을 포함할 수도 있다. 도 3 에 도시된 바와 같이, 딥 컨볼루션 네트워크 (350) 는 컨볼루션 블록들 (354A, 354B) 을 포함한다. 컨볼루션 블록들 (354A, 354B) 의 각각은 컨볼루션 계층 (CONV)(356), 정규화 계층 (LNorm)(358), 및 최대 풀링 계층 (MAX POOL)(360) 으로 구성될 수도 있다.
컨볼루션 계층들 (356) 은 피처 맵을 생성하기 위해 입력 데이터 (352) 에 적용될 수도 있는 하나 이상의 컨볼루션 필터들을 포함할 수도 있다. 두 개의 컨볼루션 블록들 (354A, 354B) 만이 나타나 있지만, 본 개시는 그렇게 제한되지 않으며, 대신에, 설계 선호도에 따라 임의의 수의 컨볼루션 블록들 (예를 들어, 블록들 (354A, 354B)) 이 딥 컨볼루션 네트워크 (350) 에 포함될 수도 있다. 정규화 계층 (358) 은 컨볼루션 필터들의 출력들을 밸런싱할 수도 있다 (예를 들어, 서로에 대해 각각의 컨볼루션 필터의 값들을 정규화, 스케일링 또는 달리 설정함) 예를 들어, 정규화 계층 (358) 은 화이트닝 또는 측면 억제를 제공할 수도 있다. 최대 풀링 계층 (360) 은 로컬 불변 및 차원성 감소를 위해 공간에 걸쳐 다운 샘플링 집성을 제공할 수도 있다.
예를 들어, 딥 컨볼루션 네트워크의 병렬 필터 뱅크들은 고성능 및 저전력 소비를 달성하기 위해 SOC (100) 의 CPU (102) 또는 GPU (104) 상에 로딩될 수도 있다. 대안적인 실시형태들에서, 병렬 필터 뱅크들은 SOC (100) 의 DSP (106) 또는 ISP (116) 상에 로딩될 수도 있다. 또한, 딥 컨볼루션 네트워크 (350) 는 센서들 및 내비게이션에 각각 전용된, 센서 프로세서 (114) 및 내비게이션 모듈 (120) 과 같은 SOC (100) 상에 존재할 수도 있는 다른 프로세싱 블록들에 액세스할 수도 있다.
딥 컨볼루션 네트워크 (350) 는 또한 하나 이상의 전체 연결된 계층들 이를 테면, 계층 (362A)("FC1"으로 라벨링됨) 및 계층 (362B) ("FC2"로 라벨링됨) 을 포함할 수도 있다. 딥 컨볼루션 네트워크 (350) 는 로지스틱 회귀 (LR) 계층 (364) 을 더 포함할 수도 있다. 딥 컨볼루션 네트워크 (350) 의 각각의 계층 (356, 358, 360, 362A, 362B, 364) 사이에는 업데이트될 가중치들 (도시되지 않음) 이 있다. 계층들 (예를 들어, 356, 358, 360, 362A, 362B, 364) 각각의 출력은 컨볼루션 블록들 (354A) 중 첫번째에 공급된 입력 데이터 (352)(예를 들어, 이미지들, 오디오, 비디오, 센서 데이터 및/또는 다른 입력 데이터) 로부터 계층구조적 피처 표현들을 학습하기 위해 딥 컨볼루션 네트워크 (350) 에서 계층들 (예를 들어, 356, 358, 360, 362A, 362B, 364) 중 후속하는 하나의 입력으로서 기능할 수도 있다. 딥 컨볼루션 네트워크 (350) 의 출력은 입력 데이터 (352) 에 대한 분류 스코어 (366) 이다. 분류 스코어 (366) 는 확률들의 세트일 수 있으며, 여기서 각각의 확률은 특징들의 세트로부터의 특징을 포함하는, 입력 데이터의 확률이다.
위에 주지된 바와 같이, 디지털 비디오 데이터는 많은 양의 데이터를 포함할 수 있고이는 비디오 데이터를 프로세싱하고 저장하는 디바이스들 상에뿐만 아니라 통신 네트워크 상에 상당한 부담을 줄 수 있다. 예를 들어, 압축되지 않은 비디오 컨텐츠를 기록하는 것은 일반적으로 기록된 비디오 컨텐츠의 해상도가 증가함에 따라 크게 증가하는 큰 파일 사이즈를 초래한다. 하나의 예시적인 예에서, 1080p/24에서 기록된 채널 당 압축되지 않은 16-비트 비디오 (예를 들어, 초당 24개의 프레임들이 캡처되는, 폭이 1920 픽셀들 및 높이가 1080 픽셀들인 해상도) 는 프레임 당 12.4 메가바이트, 또는 초당 297.6 메가바이트를 점유할 수도 있다. 초당 24개의 프레임으로 4K 해상도에서 기록된 채널당 압축되지 않은 16비트 비디오는 프레임당 49.8 메가바이트, 또는 초당 1195.2 메가바이트를 점유할 수 있다.
네트워크 대역폭은 큰 비디오 파일이 문제가 될 수 있는 또 다른 제약이다. 예를 들어, 비디오 컨텐츠는 종종 무선 네트워크들을 통하여 (예를 들어, LTE, LTE-Advanced, New Radio (NR), WiFiTM, BluetoothTM, 또는 다른 무선 네트워크들을 통해) 전달되고, 소비자 인터넷 트래픽의 큰 부분을 구성할 수 있다. 무선 네트워크들에서 이용가능한 대역폭의 양의 진보들에도 불구하고, 이들 네트워크들에서 비디오 컨텐츠를 전달하는데 사용되는 대역폭의 양을 감소시키는 것이 여전히 바람직할 수도 있다.
압축되지 않은 비디오 컨텐츠는 물리적 저장을 위한 상당한 메모리 및 송신을 위한 상당한 대역폭을 수반할 수 있는 큰 파일들을 초래할 수 있기 때문에, 비디오 코딩 기법들이 그러한 비디오 컨텐츠를 압축한 다음 압축해제하기 위해 이용될 수 있다.
비디오 컨텐츠의 사이즈 - 그리고 따라서 비디오 컨텐츠를 저장하는데 수반되는 저장의 양 - 및 비디오 컨텐츠를 전달하는데 수반되는 대역폭의 양을 감소시키기 위해, 다양한 비디오 코딩 기법들이 특히 HEVC, AVC, MPEG, VVC 와 같은 특정 비디오 코딩 표준에 따라 수행될 수 있다. 비디오 코딩은 일반적으로, 비디오 이미지들 또는 시퀀스들에 존재하는 리던던시(redundancy) 의 이점을 취하는 예측 방법들 (예를 들어, 인터-예측 (inter-prediction), 인트라-예측 (intra-prediction) 등) 을 활용한다. 비디오 코딩 기법들의 일반적인 목표는 비디오 품질에 대한 저하를 회피 또는 최소화하면서 더 낮은 비트 레이트를 사용하는 형태로 비디오 데이터를 압축하는 것이다. 비디오 서비스들에 대한 수요가 증가하고 새로운 비디오 서비스들이 이용가능해짐에 따라, 더 양호한 코딩 효율, 성능, 및 레이트 제어를 갖는 코딩 기법들이 필요하다.
일반적으로, 인코딩 디바이스는 인코딩된 비디오 비트스트림을 생성하기 위해 비디오 코딩 표준에 따라 비디오 데이터를 인코딩한다. 일부 예들에서, 인코딩된 비디오 비트스트림 (또는 "비디오 비트스트림" 또는 "비트스트림") 은 일련의 하나 이상의 코딩된 비디오 시퀀스이다. 인코딩 디바이스는 각각의 픽처를 다중의 슬라이스들로 파티셔닝하는 것에 의해 픽처들의 코딩된 표현들을 생성할 수 있다. 슬라이스는 그 슬라이스에서의 정보가 동일한 픽처 내의 다른 슬라이스들로부터의 데이터에 종속되지 않으면서 코딩되도록 다른 슬라이스들에 대해 독립적이다. 슬라이스는 독립 슬라이스 세그먼트를 포함하는 하나 이상의 슬라이스 세그먼트, 및 존재하는 경우, 이전 슬라이스 세그먼트들에 의존하는 하나 이상의 종속 슬라이스 세그먼트를 포함한다. HEVC 에서, 슬라이스들은 루마 샘플들 및 크로마 샘플들의 코딩 트리 블록들 (CTB들) 로 파티셔닝된다. 루마 샘플들의 CTB 및 크로마 샘플들의 하나 이상의 CTB들은, 그 샘플들에 대한 신택스와 함께, 코딩 트리 유닛 (CTU) 으로서 지칭된다. CTU 는 또한 "트리 블록" 또는 "최대 코딩 유닛" (largest coding unit; LCU) 으로 지칭될 수도 있다. CTU 는 HEVC 인코딩을 위한 기본 프로세싱 유닛이다. CTU 는, 가변하는 사이즈들의 다중의 코딩 유닛들 (CU들) 로 스플리팅될 수 있다. CU 는 코딩 블록들 (CB들) 로서 지칭되는 루마 및 크로마 샘플 어레이들을 포함한다.
루마 및 크로마 CB들은 예측 블록들(prediction blocks, PB들)로 추가로 분할될 수 있다. PB 는 (이용 가능하거나 사용을 위해 인에이블될 때) 인터 예측 또는 인트라 블록 카피 (IBC) 예측에 대해 동일한 모션 파라미터들을 사용하는 루마 성분 또는 크로마 성분의 샘플들의 블록이다. 루마 PB 및 하나 이상의 크로마 PB들은, 관련 구문과 함께, 예측 유닛 (PU) 을 형성한다. 인터-예측을 위해, 모션 파라미터들의 세트 (예를 들어, 하나 이상의 모션 벡터들, 참조 인덱스들 등) 가 각각의 PU 에 대해 비트스트림으로 시그널링되고, 루마 PB 및 하나 이상의 크로마 PB들의 인터-예측을 위해 사용된다. 모션 파라미터들은 또한 모션 정보로서 지칭될 수 있다. CB 는 또한 하나 이상의 변환 블록 (TB) 으로 파티셔닝될 수도 있다. TB 는, 예측 잔차 신호를 코딩하기 위해 잔차 변환 (예컨대, 일부 경우들에서 동일한 2 차원 변환) 이 적용되는 컬러 컴포넌트의 샘플들의 정사각형 블록을 나타낸다. 변환 유닛 (TU) 은 루마 및 크로마 샘플들의 TB 들 및 대응하는 신택스 엘리먼트들을 나타낸다. 변환 코딩은 하기에서 더 상세히 설명된다.
HEVC 표준에 따라, 변환들은 TU들을 사용하여 수행될 수도 있다. TU 들은 주어진 CU 내의 PU 들의 사이즈에 기초하여 사이징될 수도 있다. TU들은 PU들과 동일한 사이즈이거나 그 보다 더 작을 수도 있다. 일부 예들에서, CU 에 대응하는 잔차 샘플들은 잔차 쿼드트리 (RQT) 로서 알려진 쿼드트리 구조를 사용하여 더 작은 유닛들로 세분화될 수도 있다. RQT 의 리프 노드들은 TU들에 대응할 수도 있다. TU들과 연관된 픽셀 차이 값들은 변환 계수들을 생성하도록 변환될 수도 있다. 그 다음, 변환 계수들은 인코딩 디바이스에 의해 양자화될 수도 있다.
일단 비디오 데이터의 픽처들이 CU들로 파티셔닝되면, 인코딩 디바이스는 예측 모드를 사용하여 각각의 PU를 예측한다. 그 다음, 예측 유닛 또는 예측 블록은 잔차들을 얻기 위해 오리지널 비디오 데이터로부터 감산된다 (하기에서 설명됨). 각각의 CU 에 대해, 예측 모드는 신택스 데이터를 사용하여 비트스트림 내부에서 시그널링될 수도 있다. 예측 모드는 인트라 예측 (또는 인트라-픽처 예측) 또는 인터-예측 (또는 인터-픽처 예측) 을 포함할 수도 있다. 인트라 예측은 픽처 내에서 공간적으로 이웃하는 샘플 간의 상관 (correlation) 을 이용한다. 예를 들어, 인트라 예측을 사용하여, 각각의 PU 는, 예를 들어, PU 에 대한 평균값을 발견하기 위한 DC 예측, PU 에 대해 평면 표면을 피팅 (fitting) 하기 위한 평면 예측, 이웃하는 데이터로부터 외삽하기 위한 방향 예측, 또는 임의의 다른 적절한 유형의 예측을 사용하여 동일한 픽처 내의 이웃하는 이미지 데이터로부터 예측된다. 인터 예측은 이미지 샘플들의 블록에 대한 모션 보상된 예측을 도출하기 위해 픽처들 간의 시간적 상관을 이용한다. 예를 들어, 인터 예측을 사용하여, 각각의 PU 는 (출력 순서로 현재 픽처의 전 또는 후의) 하나 이상의 레퍼런스 픽처들에서의 이미지 데이터로부터의 모션 보상 예측을 사용하여 예측된다. 인터 픽처 또는 인트라 픽처 예측을 사용하여 픽처 영역을 코딩할지 여부의 결정은 예를 들어 CU 레벨에서 행해질 수도 있다.
인트라 예측 및/또는 인터 예측을 이용하여 예측을 수행한 후에, 인코딩 디바이스는 변환 및 양자화를 수행할 수 있다. 예를 들어, 예측에 이어서, 인코딩 디바이스는 PU 에 대응하는 잔차 값들을 계산할 수도 있다. 잔차 값들은 코딩되는 픽셀들의 현재 블록 (PU) 과 현재 블록을 예측하는데 사용된 예측 블록 (예를 들어, 현재 블록의 예측된 버전) 사이의 픽셀 차이 값들을 포함할 수도 있다. 예를 들어, 예측 블록을 생성한 (예컨대, 인터 예측 또는 인트라 예측을 발행한) 후, 인코딩 디바이스는 현재 블록으로부터 예측 유닛에 의해 생성된 예측 블록을 감산하는 것에 의해 잔차 블록을 생성할 수 있다. 잔차 블록은 현재 블록의 픽셀 값과 예측 블록의 픽셀 값 사이의 차이를 정량화하는 픽셀 차이 값들의 셋트를 포함한다. 일부 예들에서, 잔차 블록은 2 차원 블록 포맷 (예를 들어, 2 차원 매트릭스 또는 어레이의 픽셀 값들) 으로 표현될 수도 있다. 이러한 예에서, 잔차 블록은 픽셀 값들의 2 차원 표현이다.
예측이 수행된 후에 남을 수도 있는 임의의 잔차 데이터는 이산 코사인 변환, 이산 사인 변환, 정수 변환, 웨이브렛 변환, 다른 적절한 변환 함수 또는 이들의 임의의 조합에 기초할 수도 있는 블록 변환을 사용하여 변환된다. 일부 경우들에서, 하나 이상의 블록 변환 (예를 들어, 사이즈들 32 x 32, 16 x 16, 8 x 8, 4 x 4, 또는 다른 적절한 사이즈) 이 각각의 CU 에서 잔차 데이터에 적용될 수도 있다. 일부 실시형태들에서, TU 가 인코딩 디바이스에 의해 구현되는 변환 및 양자화 프로세스들을 위해 사용될 수도 있다. 하나 이상의 PU들을 갖는 주어진 CU 는 또한 하나 이상의 TU들을 포함할 수도 있다. 하기에서 더 상세히 설명되는 바와 같이, 잔차 값들은 블록 변환들을 사용하여 변환 계수들로 변환될 수도 있고, 그 후 TU들을 사용하여 양자화되고 스캔되어 엔트로피 코딩을 위한 직렬화된 변환 계수들을 생성할 수도 있다.
인코딩 디바이스는 변환 계수의 양자화를 수행할 수도 있다. 양자화는 변환 계수들을 양자화하여 추가 압축을 제공하여, 계수들을 표현하기 위해 이용되는 데이터의 양을 감소시킨다. 예를 들어, 양자화는 그 계수들의 일부 또는 전부와 연관되는 비트 깊이를 감소시킬 수도 있다. 일 예에서, n-비트 값을 갖는 계수는 양자화 동안 m-비트 값으로 라운딩 다운될 수도 있으며, 여기서, n 은 m 보다 더 크다.
양자화가 수행되면, 코딩된 비디오 비트스트림은 양자화된 변환 계수들, 예측 정보 (예를 들어, 예측 모드들, 모션 벡터들, 블록 벡터들 등), 파티셔닝 정보, 및 다른 신택스 데이터와 같은 임의의 다른 적합한 데이터를 포함한다. 그 다음, 코딩된 비디오 비트스트림의 상이한 엘리먼트들은 인코딩 디바이스에 의해 엔트로피 인코딩될 수도 있다. 일부 예들에서, 인코딩 디바이스는 양자화된 변환 계수들을 스캔하기 위한 미리정의된 스캔 순서를 이용하여, 엔트로피 인코딩될 수 있는 직렬화된 벡터를 생성할 수도 있다. 일부 예들에서, 인코딩 디바이스는 적응적 스캔을 수행할 수도 있다. 벡터 (예를 들어, 1차원 벡터) 를 형성하기 위해 양자화된 변환 계수들을 스캔한 이후, 인코딩 디바이스는 그 벡터를 엔트로피 인코딩할 수도 있다. 예를 들어, 인코딩 디바이스는 컨텍스트 적응적 가변 길이 코딩, 컨텍스트 적응적 이진 산술 코딩, 신택스 기반 컨텍스트 적응적 이진 산술 코딩, 확률 인터벌 파티셔닝 엔트로피 코딩, 또는 다른 적합한 엔트로피 인코딩 기법을 사용할 수도 있다.
인코딩 디바이스는 인코딩된 비디오 비트스트림을 저장할 수 있고/있거나 인코딩된 비디오 비트스트림 데이터를 통신 링크를 통해 디코딩 디바이스를 포함할 수 있는 수신 디바이스로 전송할 수 있다. 디코딩 디바이스는 인코딩된 비디오 데이터를 구성하는 하나 이상의 코딩된 비디오 시퀀스들의 엘리먼트들을 (예를 들어, 엔트로피 디코더를 사용하여) 엔트로피 디코딩하고 추출하는 것에 의해 인코딩된 비디오 비트스트림 데이터를 디코딩할 수도 있다. 그 다음, 디코딩 디바이스는 인코딩된 비디오 비트스트림 데이터에 대해 리스케일링 (rescale) 하고 역 변환을 수행할 수도 있다. 그 다음, 잔차 데이터가 디코딩 디바이스의 예측 스테이지로 전달된다. 그 후, 디코딩 디바이스는 인트라-예측, 인터-예측, IBC, 및/또는 다른 유형의 예측을 사용하여 픽셀들의 블록 (예를 들어, PU) 을 예측한다. 일부 예들에서, 예측은 역변환의 출력 (잔차 데이터) 에 부가된다. 디코딩 디바이스는 디코딩된 비디오를 비디오 목적지 디바이스에 출력할 수도 있으며, 비디오 목적지 디바이스는 디코딩된 비디오 데이터를 컨텐츠의 소비자에게 디스플레이하기 위한 디스플레이 또는 다른 출력 디바이스를 포함할 수도 있다.
다양한 비디오 코딩 표준들에 의해 정의된 비디오 코딩 시스템들 및 기법들 (예를 들어, 상기 설명된 HEVC 비디오 코딩 기법들) 은 원시 비디오 컨텐츠에서 정보의 많은 부분을 유지할 수 있을 수도 있고, 신호 프로세싱 및 정보 이론 개념들에 기초하여 선험적으로 정의될 수도 있다. 그러나, 일부 경우들에서, 머신 러닝 (ML) 기반 이미지 및/또는 비디오 시스템은 단대단 신경망 기반 이미지 및 비디오 코딩 (E2E-NNVC) 시스템과 같은 비-ML 기반 이미지 및 비디오 코딩 시스템들에 비해 이점들을 제공할 수 있다. 위에 설명된 바와 같이, 많은 E2E-NNVC 시스템들은 오토 인코더 서브-네트워크 (인코더 서브-네트워크) 및 엔트로피 코딩을 위해 사용된 양자화된 레이턴트들을 통하여 확률론적 모델을 학습하는 것을 담당하는 제 2 서브-네트워크의 조합으로서 설계된다. 이러한 아키텍처는 변환 플러스 양자화 모듈 (인코더 서브-네트워크) 및 엔트로피 모델링 서브-네트워크 모듈의 조합으로 보여질 수 있다.
도 4 는 E2E-NNVC 시스템 (410) 을 사용하여 비디오 인코딩 및 디코딩을 수행하도록 구성된 디바이스 (402) 를 포함하는 시스템 (400) 을 도시한다. 디바이스 (402) 는 카메라 (407) 및 저장 매체(414)(예를 들어, 데이터 저장 디바이스) 에 커플링된다. 일부 구현들에서, 카메라 (407) 는 E2E-NNVC 시스템 (410) 에 의한 인코딩을 위해 프로세서 (404) 에 이미지 데이터 (408)(예를 들어, 비디오 데이터 스트림) 를 제공하도록 구성된다. 일부 구현들에서, 디바이스 (402) 는 다수의 카메라들 (예를 들어, 듀얼 카메라 시스템, 3개의 카메라들, 또는 다른 수의 카메라들) 에 커플링될 수 있고/있거나 이들을 포함할 수 있다. 일부 경우들에서, 디바이스 (402) 는 마이크로폰 및/또는 다른 입력 디바이스 (예를 들어, 키보드, 마우스, 터치스크린 및/또는 터치패드와 같은 터치 입력 디바이스, 및/또는 다른 입력 디바이스) 에 커플링될 수 있다. 일부 예들에서, 카메라 (407), 저장 매체 (414), 마이크로폰, 및/또는 다른 입력 디바이스는 디바이스 (402) 의 일부일 수 있다.
디바이스 (402) 는 또한 송신 매체 (418), 이를 테면, 하나 이상의 무선 네트워크들, 하나 이상의 유선 네트워크들, 또는 이들의 조합을 통해 제 2 디바이스 (490) 에 커플링된다. 예를 들어, 송신 매체 (418) 는 무선 네트워크, 유선 네트워크, 또는 유선 및 무선 네트워크들의 조합에 의해 제공된 채널을 포함할 수 있다. 송신 매체 (418) 는 패킷 기반 네트워크, 예를 들어 로컬 영역 네트워크, 광역 네트워크, 또는 글로벌 네트워크, 예를 들어 인터넷의 부분을 형성할 수도 있다. 송신 매체 (418) 는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스로부터 목적지 디바이스로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다. 무선 네트워크가 임의의 무선 인터페이스 또는 무선 인터페이스들의 조합을 포함할 수도 있고, 임의의 적합한 무선 네트워크 (예를 들어, 인터넷 또는 다른 광역 네트워크, 패킷 기반 네트워크, WiFiTM, 무선 주파수 (RF), UWB, WiFi-Direct, 셀룰러, LTE (Long-Term Evolution), WiMaxTM 등) 를 포함할 수도 있다. 유선 네트워크가 임의의 유선 인터페이스(예를 들어, 섬유, 이더넷, 전력선 이더넷, 동축 케이블을 통한 이더넷, 디지털 신호 라인 (DSL) 등) 를 포함할 수도 있다. 유선 및/또는 무선 네트워크는 기지국, 라우터, 액세스 포인트, 브리지, 게이트웨이, 스위치 등과 같은 다양한 장비를 사용하여 구현될 수있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되고, 수신 디바이스로 송신될 수도 있다.
디바이스 (402) 는 메모리 (406), 제 1 인터페이스 ("I/F 1")(412) 및 제 2 인터페이스 ("I/F 2")(416) 에 커플링된 하나 이상의 프로세서들 (본 명세서에서 "프로세서"로 지칭됨)(404) 를 포함한다. 프로세서 (404) 는 카메라 (407) 로부터, 메모리 (406) 로부터, 및/또는 저장 매체 (414) 로부터 이미지 데이터 (408) 를 수신하도록 구성된다. 프로세서 (404) 는 제 1 인터페이스 (412) 를 통해 (예를 들어, 메모리 버스를 통해) 저장 매체 (414) 에 커플링되고, 제 2 인터페이스 (416)(예를 들어, 네트워크 인터페이스 디바이스, 무선 트랜시버 및 안테나, 하나 이상의 다른 네트워크 인터페이스 디바이스들, 또는 이들의 조합) 를 통해 송신 매체 (418) 에 커플링된다.
프로세서 (404) 는 E2E-NNVC 시스템 (410) 을 포함한다. E2E-NNVC 시스템 (410) 은 인코더 부분 (462) 및 디코더 부분 (466) 을 포함한다. 일부 구현들에서, E2E-NNVC 시스템 (410) 은 하나 이상의 오토-인코더들을 포함할 수 있다. 인코더 부분 (462) 은 입력 데이터 (470) 를 수신하고 입력 데이터 (470) 를 프로세싱하여 입력 데이터 (470) 에 적어도 부분적으로 기초하여 출력 데이터 (474) 를 생성하도록 구성된다.
일부 구현들에서, E2E-NNVC 시스템 (410) 의 인코더 부분 (462) 은 출력 데이터 (474) 를 생성하기 위해 입력 데이터 (470) 의 손실 압축을 수행하도록 구성되어, 출력 데이터 (474) 는 입력 데이터 (470) 보다 적은 비트들을 갖는다. 인코더 부분 (462) 은 임의의 이전 표현들 (예를 들어, 하나 이상의 이전에 복원된 프레임들) 에 기초하여 모션 보상을 사용하지 않고 입력 데이터 (470)(예를 들어, 이미지들 또는 비디오 프레임들) 를 압축하도록 트레이닝될 수 있다. 예를 들어, 인코더 부분 (462) 은 이전에 복원된 프레임들의 임의의 데이터를 사용하지 않고 그 비디오 프레임으로부터만 비디오 데이터를 사용하여 비디오 프레임을 압축할 수 있다. 인코더 부분 (462) 에 의해 프로세싱된 비디오 프레임들은 본 명세서에서 인트라-예측된 프레임 (I-프레임들) 으로서 지칭될 수 있다. 일부 예들에서, I-프레임들은 (예를 들어, HEVC, VVC, MPEG-4, 또는 다른 비디오 코딩 표준에 따라) 전통적인 비디오 코딩 기법들을 사용하여 생성될 수 있다. 이러한 예들에서, 프로세서 (404) 는 HEVC 표준에 대하여 위에서 설명된 것과 같은 블록-기반 인트라 예측을 수행하도록 구성된 비디오 코딩 디바이스 (예를 들어, 인코딩 디바이스) 를 포함하거나 또는 이와 커플링될 수도 있다. 이러한 예들에서, E2E-NNVC 시스템 (410) 은 프로세서 (404) 로부터 배제될 수 있다.
일부 구현들에서, E2E-NNVC 시스템 (410) 의 인코더 부분 (462) 은 이전 표현들(예를 들어, 하나 이상의 이전에 복원된 프레임들)에 기초하여 모션 보상을 사용하여 입력 데이터 (470)(예를 들어, 비디오 프레임들) 를 압축하도록 트레이닝될 수 있다. 예를 들어, 인코더 부분 (462) 은 비디오 프레임으로부터의 비디오 데이터를 사용하여 그리고 이전에 복원된 프레임들의 데이터를 사용하여 비디오 프레임을 압축할 수 있다. 인코더 부분 (462) 에 의해 프로세싱된 비디오 프레임들은 본 명세서에서 인트라-예측된 프레임 (P-프레임들) 으로서 지칭될 수 있다. 모션 보상은 이전에 복원된 프레임으로부터의 픽셀들이 잔차 정보와 함께 현재 프레임에서의 새로운 포지션들로 이동하는 방법을 기술하는 것에 의해 현재 프레임의 데이터를 결정하는데 사용될 수 있다.
도시된 바와 같이, E2E-NNVC 시스템(410)의 인코더 부분 (462) 은 신경망 (463) 및 양자화기 (464) 를 포함할 수 있다. 신경망 (463) 은 하나 이상의 컨볼루션 신경망 (CNN), 하나 이상의 전체-연결된 신경망들, 하나 이상의 게이트된 순환 유닛들 (GRU들), 하나 이상의 장기 단기 메모리 (LSTM) 네트워크들, 하나 이상의 ConvRNN들, 하나 이상의 ConvGRU들, 하나 이상의 ConvLSTM들, 하나 이상의 GAN들, 이들의 임의의 조합, 및/또는 중간 데이터 (472) 를 생성하는 다른 유형의 신경망 아키텍처를 포함할 수 있다. 중간 데이터 (472) 는 양자화기 (464) 에 입력된다. 인코더 부분 (462) 에 포함될 수도 있는 컴포넌트들의 예들이 도 6 에 예시되어 있다.
양자화기 (464) 는 출력 데이터 (474) 를 생성하기 위해 중간 데이터 (472) 의 양자화 및 일부 경우들에서 엔트로피 코딩을 수행하도록 구성된다. 출력 데이터 (474) 는 양자화된 (및 일부 경우에 엔트로피 코딩된) 데이터를 포함할 수 있다. 양자화기 (464) 에 의해 수행되는 양자화 동작들은 중간 데이터 (472) 로부터 양자화된 코드들 (또는 E2E-NNVC 시스템 (410) 에 의해 생성된 양자화된 코드들을 나타내는 데이터) 의 생성을 야기할 수 있다. 양자화 코드들 (또는 양자화된 코드들을 나타내는 데이터) 은 또한 레이턴트 코드들 (latent codes) 또는 레이턴트 (z로 표기됨) 로 지칭될 수 있다. 레이턴트에 적용되는 엔트로피 모델은 본 명세서에서 "이전"으로 지칭될 수 있다. 일부 예들에서, 양자화 및/또는 엔트로피 코딩 동작들은 기존의 비디오 코딩 표준들에 따라 비디오 데이터를 인코딩 및/또는 디코딩할 때 수행되는 기존의 양자화 및 엔트로피 코딩 동작들을 사용하여 수행될 수 있다. 일부 예들에서, 양자화 및/또는 엔트로피 코딩 동작들은 E2E-NNVC 시스템 (410) 에 의해 행해질 수 있다. 하나의 예시적인 예에서, E2E-NNVC 시스템 (410) 은 감독된 트레이닝을 사용하여 트레이닝될 수 있으며, 잔차 데이터는 입력으로서 사용되고, 양자화된 코드들 및 엔트로피 코드들은 트레이닝 동안 알려진 출력 (라벨들) 으로서 사용된다.
E2E-NNVC 시스템 (410) 의 디코더 부분 (466) 은 (예를 들어, 양자화기 (464) 로부터 및/또는 저장 매체 (414) 로부터 직접) 출력 데이터 (474) 를 수신하도록 구성된다. 디코더 부분 (466)은 출력 데이터 (474) 를 프로세싱하여 출력 데이터 (474) 에 적어도 부분적으로 기초하여 입력 데이터 (470) 의 표현 (476) 을 생성할 수 있다. 일부 예에서, E2E-NNVC 시스템 (410) 의 디코더 부분 (466) 은 하나 이상의 CNN, 하나 이상의 완전 연결 신경망, 하나 이상의 GRU, 하나 이상의 장기 메모리 (LSTM) 네트워크, 하나 이상의 ConvRNN, 하나 이상의 ConvGRU, 하나 이상의 ConvLSTM, 하나 이상의 GAN, 이들의 임의의 조합, 및/또는 다른 유형의 신경망 아키텍처를 포함할 수 있는 신경망 (468) 을 포함한다. 디코더 부분 (466) 에 포함될 수도 있는 컴포넌트들의 예들이 도 6 에 예시되어 있다.
프로세서 (404) 는 출력 데이터 (474) 를 송신 매체 (418) 또는 저장 매체 (414) 중 적어도 하나에 전송하도록 구성된다. 예를 들어, 출력 데이터 (474) 는 복원된 데이터로서 입력 데이터 (470) 의 표현 (476) 을 생성하기 위해 디코더 부분 (466) 에 의한 나중의 취출 및 디코딩 (또는 압축해제) 을 위해 저장 매체 (414) 에 저장될 수 있다. 복원된 데이터는 출력 데이터 (474) 를 생성하기 위해 인코딩/압축된 비디오 데이터의 재생을 위한 것과 같은 다양한 목적을 위해 사용될 수 있다. 일부 구현들에서, 출력 데이터 (474) 는 복원된 데이터로서 입력 데이터 (470) 의 표현 (476) 을 생성하기 위해 디코더 부분 (466) 에 매칭하는 다른 디코더 디바이스에서 (예를 들어, 디바이스 (402)에서, 제 2 디바이스 (490) 에서, 또는 다른 디바이스에서) 디코딩될 수도 있다. 예를 들어, 제 2 디바이스 (490) 는 디코더 부분 (466) 과 매칭 (또는 실질적으로 매칭) 하는 디코더를 포함할 수도 있고, 출력 데이터 (474) 는 송신 매체 (418) 를 통해 제 2 디바이스 (490) 로 송신될 수도 있다. 제 2 디바이스 (490) 는 입력 데이터 (470) 의 표현 (476) 을 복원된 데이터로서 생성하기 위해 출력 데이터 (474) 를 프로세싱할 수 있다.
시스템 (400) 의 컴포넌트들은, 하나 이상의 프로그래머블 전자 회로들 (예컨대, 마이크로프로세서들, 그래픽 프로세싱 유닛들 (GPU들), 디지털 신호 프로세서들 (DSP들), 중앙 프로세싱 유닛들 (CPU들), 및/또는 다른 적합한 전자 회로들) 을 포함할 수 있는 전자 회로들 또는 다른 전자적 하드웨어를 포함할 수 있고, 및/또는 본원에 기술된 다양한 동작들을 수행하기 위해 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함하고 및/또는 이들을 이용하여 구현될 수 있다.
시스템 (400) 이 특정 컴포넌트들을 포함하는 것으로 도시되지만, 당업자는 시스템(400) 이 도 4 에 도시된 컴포넌트들보다 더 많거나 더 적은 컴포넌트들을 포함할 수 있다는 것을 이해할 것이다. 예를 들어, 시스템 (400) 은 또한 입력 디바이스 및 출력 디바이스 (도시되지 않음) 를 포함하거나 이를 포함하는 컴퓨팅 디바이스의 일부일 수 있다. 일부 구현들에서, 시스템 (400) 은 또한 하나 이상의 메모리 디바이스들 (예를 들어, 하나 이상의 랜덤 액세스 메모리 (RAM) 컴포넌트들, 판독 전용 메모리 (ROM) 컴포넌트들, 캐시 메모리 컴포넌트들, 버퍼 컴포넌트들, 데이터베이스 컴포넌트들, 및/또는 다른 메모리 디바이스들), 하나 이상의 메모리 디바이스들과 통신하고/하거나 그 하나 이상의 메모리 디바이스들에 전기적으로 접속된 하나 이상의 프로세싱 디바이스들 (예를 들어, 하나 이상의 CPU들, GPU들, 및/또는 다른 프로세싱 디바이스들), 무선 통신을 수행하기 위한 하나 이상의 무선 인터페이스들 (예를 들어, 각각의 무선 인터페이스에 대한 기저대역 프로세서 및 하나 이상의 트랜시버들을 포함함), 하나 이상의 하드와이어 접속들을 통해 통신을 수행하기 위한 하나 이상의 유선 인터페이스들 (예를 들어, USB (universal serial bus) 입력과 같은 직렬 인터페이스, 라이트닝 커넥터, 및/또는 다른 유선 인터페이스), 및/또는 도 4 에 도시되지 않은 다른 컴포넌트들을 포함하는 컴퓨팅 디바이스를 포함할 수도 있거나 또는 이들의 부분일 수 있다.
일부 구현들에서, 시스템 (400) 은 컴퓨팅 디바이스에 의해 국부적으로 구현되고 그리고/또는 컴퓨팅 디바이스에 포함될 수 있다. 예를 들어, 컴퓨팅 디바이스는 모바일 디바이스, 개인용 컴퓨터, 태블릿 컴퓨터, 가상 현실 (VR) 디바이스 (예를 들어, 헤드 마운트 디스플레이 (HMD) 또는 다른 VR 디바이스), 증강 현실 (AR) 디바이스 (예를 들어, HMD, AR 안경, 또는 다른 AR 디바이스), 웨어러블 디바이스, 서버 (예를 들어, SaaS (software as a service) 시스템 또는 다른 서버 기반 시스템), 텔레비전, 및/또는 본 명세서에 설명된 기법들을 수행하기 위한 리소스 능력들을 갖는 임의의 다른 컴퓨팅 디바이스를 포함할 수 있다.
일 예에서, E2E-NNVC 시스템 (410) 은 프로세서 (404) 에 커플링되고 프로세서 (404) 에 의해 실행가능한 명령들을 저장하도록 구성된 메모리 (406), 및 안테나 및 프로세서 (404) 에 커플링되고 출력 데이터 (474) 를 원격 디바이스에 송신하도록 동작가능한 무선 트랜시버를 포함하는 포터블 전자 디바이스에 통합될 수 있다.
도 5a 및 도 5b 는 상이한 특성들을 갖는 채널들을 갖는 비디오 포맷들에 대한 효율적인 E2E-NNVC 를 구현할 수 있는 머신 러닝 (예를 들어, 신경망) 구조들의 예들이다. 예를 들어, 도 5a 는 비디오 코딩 데이터의 프레임들이 표준화된 채널 입력들 (예를 들어, RGB 포맷 프레임의 3 개의 채널들) 사이에서 분할되는 머신-러닝 기반 비디오 코딩 시스템을 예시하는 다이어그램이다. 표준화된 채널 입력들 (502A-N) 에 대한 표준화된 채널 데이터의 공유된 특성들은 모든 채널들이 공유된 계층들에서 동일한 구조들을 사용하여 프로세싱될 수 있게 한다. 표준화된 채널 입력들 (502A-N) 은 공유 특성들을 갖는 임의의 수의 채널들을 포함할 수 있다. 표준화된 채널 입력들이 RGB 포맷 데이터에 대한 것인 일 예는 적색 (R) 채널, 녹색 (G) 채널, 및 청색 (B) 채널을 포함하는 3개의 채널들을 포함할 것이다. 다른 예들은 공유 특성들을 갖는 임의의 수의 채널들 (예를 들어, 비디오 데이터의 각각의 차원을 따라 동일한 수의 픽셀들을 갖는 공유 해상도들, 및 픽셀 값들에 대한 공유 평균 및 분산 특성들과 같은 비디오 데이터에 대한 공유 통계적 특성들) 을 포함할 수 있다.
도 5a 에 예시된 바와 같이, 신경망 인코딩 동작들 (516) 은 초기 인코딩 계층 (511) 및 추가 동작들 (515) 을 포함한다. 초기 인코딩 계층 (511) 은 초기 동작들 (512) 및 초기 정규화 (514) 를 포함한다. 초기 동작들 (512) 은 필터링 동작, 디샘플링 동작, 또는 본 명세서에 설명된 바와 같은 비디오 코딩을 위한 임의의 이러한 동작들을 포함할 수 있다. 초기 정규화 (514) 는 신경망 인코딩 동작들 (516) 에서 추가적인 프로세싱 계층들에 대한 데이터를 작성하기 위해 표준화된 채널 입력들 (502A-N) 로부터의 데이터를 조직화, 포맷, 및/또는 변경하기 위한 임의의 프로세싱을 포함할 수 있다. 추가적인 동작들 (515) 은 비디오 코딩을 위한 머신 러닝 구조의 일부로서 임의의 수의 처리 계층들 및 정규화 단계들을 포함할 수 있다. 일부 경우들에서, 정규화 단계들은 스케일링 단계들 또는 유사한 동작들을 수행할 수 있는 다른 동작들을 포함할 수 있다. 도 5a 의 예에서, 표준화된 채널 입력들 (502A-N) 의 각각의 별개의 채널은 신경망 인코딩 동작들 (516) 의 동일한 플로우를 사용하여 프로세싱된다. 인코딩이 완료된 후, 출력된 인코딩된 데이터는 비디오 코딩 시스템의 일부로서 임의의 방식으로 저장, 송신 및/또는 사용될 수 있다.
신경망 디코딩 동작들 (526) 은 신경망 인코딩 동작들 (516) 의 역이다. 신경망 디코딩 동작들 (526) 에서, 신경망 인코딩 동작들 (516) 로부터의 인코딩된 데이터는 저장 매체로부터 또는 송신 시스템으로부터 액세스되고, 비디오 데이터를 디코딩하기 위해 역 신경망 코딩 동작들이 수행된다. 디코딩은 동작들 (515) 을 반전시키기 위한 동작들 (520) 및 초기 인코딩 계층 (511) 의 동작들을 반전시키기 위한 최종 디코딩 계층 (521) 을 포함한다. 최종 정규화 (522) 및 최종 동작 (524) 은 표준화된 채널 출력 (530A-N) 으로서 출력되는 복원된 비디오 데이터를 생성한다.
위에 설명된 바와 같이, 표준화된 채널 입력들 (502A-N) 로부터 표준화된 채널 출력들 (530A-N) 로의 단일 경로는 비디오 포맷 (예를 들어, RGB 포맷 비디오 데이터) 에 대한 비디오 데이터의 채널들 각각의 공유된 특성들에 의존한다. 채널들이 상이한 특성들을 갖는 비디오 포맷으로 도 5a 의 구조를 사용하기 위해, 상이한 특성들을 갖는 채널의 각각의 유형에 대해 별개의 카피가 필요할 것이고, 또는 포맷 변환이 인코딩에 선행하고 디코딩에 후속한다. YUV 포맷 데이터에 대해, 데이터는 초기 인코딩 계층 (511) 이전에 RGB 데이터로 변환될 수 있고, 최종 동작들 (524) 에 후속하여 YUV 데이터로 다시 변환될 수 있다. 이러한 변환은 상당한 리소스를 사용한다. 대안적으로, 도 5a 의 구조의 제 1 카피는 Y 채널에 대해 필요할 것이고, 제 2 카피는 (예를 들어, 특성들을 공유하는) 2개의 U 및 V 채널들에 대해 필요할 것이다. 이러한 복제는 상당한 리소스를 사용한다. 본 명세서에 설명된 예들은 YUV 포맷 데이터와 같은 상이한 특성들을 갖는 채널들을 갖는 비디오 포맷들을 처리하는데 필요한 리소스들을 감소시키는 것에 의해 E2E-NNVC 시스템들의 동작을 개선한다.
도 5b 는 본 명세서에 설명된 예들에 따른 신경망-기반 이미지 및 비디오 코딩 시스템의 양태들을 예시하는 다이어그램이다. 도 5b 의 시스템은 도 5a 의 시스템과 유사하지만, 공유된 초기 인코딩 계층 (511) 은 신경망 인코딩 동작들 (566) 의 별개의 초기 인코딩 계층들 (561A 내지 561N) 로 대체되고, 도 5a 의 공유된 최종 디코딩 계층 (521) 은 신경망 디코딩 동작들 (580) 의 별개의 최종 디코딩 계층들 (581A 내지 581N) 로 대체된다.
도 5b 의 예에서, 별개의 초기 인코딩 계층들 (561A 내지 561N) 은 상이한 별개의 채널 입력들 (552A 및 552N) 을 핸들링한다. 채널들이 상술한 바와 같은 특성들을 공유하는 한, 별개의 초기 인코딩 계층들 각각은 하나보다 많은 채널을 프로세싱할 수 있다. 도 5b 의 시스템을 사용하여 비디오 데이터를 인코딩하기 위한 신경망 인코딩 동작들 (566) 의 일부로서, 비디오 프레임들의 상이한 채널들로부터의 입력 데이터는 별개의 채널 입력들 (552A) 및 별개의 채널 입력들 (552N) 로서 입력된다. 별개의 채널 입력들 (552A) 은 초기 인코딩 계층 (561A) 에 의해 프로세싱되고, 별개의 채널 입력들 (552N) 은 초기 인코딩 계층 (561N) 에 의해 프로세싱된다. 별개의 초기 인코딩 계층들 (561A 내지 561N) 은 별개의 초기 동작들 (562A 및 562N) 을 사용한다. 별개의 초기 정규화 동작들 (564A 및 564N) 은 별개의 채널 입력들 (552A) 및 별개의 채널 입력들 (552N) 로부터 상이한 특성들을 갖는 데이터를 취하여 표준화된 데이터를 생성하기 위해 사용되며, 이는 동작들의 후속 계층들 (565) 에서 함께 결합 (예를 들어, 병합) 및 프로세싱될 수 있다. 예를 들어, 별개의 채널 입력들(552A)이 더 높은 해상도에서 Y 채널 (예를 들어, 루미넌스) 데이터를 포함하고, 별개의 채널 입력들 (552N) 이 더 낮은 해상도에서 U 및 V 채널 (예를 들어, 크로미넌스) 데이터를 포함하는 경우, 초기 동작들 (562N) 은 동작들 (565) 의 시작에서 양쪽 유형들의 데이터에 의해 사용될 공유 해상도로 해상도를 낮추는 다운샘플링 동작을 포함할 수 있다. 유사하게, 초기 동작들 (562A) 및 초기 동작들 (562N) 은 둘 다 필터링 동작들을 포함할 수 있지만, (예를 들어, 다운샘플링 이전의) 더 높은 해상도 데이터는 더 큰 필터로 프로세싱될 수 있다. 유사하게, 초기 정규화 동작들 (564A 및 564N) 은 상이한 유형들의 데이터가 동작들 (565) 에서 공유 신경망 계층들에 의해 프로세싱될 수 있게 하기 위해 데이터의 통계적 특성들을 표준화하기 위해 상이한 유형들의 데이터에 상이한 데이터 변환들을 적용할 수 있다.
대응하는 신경망 디코딩 동작들 (580) 은 유사한 구조를 공유한다. 공유된 동작들 (570) 은 동작들 (565) 의 인코딩을 반전시키고, 그 후 별개의 채널들에 대한 데이터는 최종 디코딩 계층 (581A) 및 최종 디코딩 계층 (581N) 에 대해 분할된다. 최종 디코딩 계층 (581A) 은 최종 동작들 (572A) 및 최종 정규화 (574A) 를 수행하여 별개의 채널 입력들 (552A 내지 552N) 을 복원된 별개의 채널 출력들 (582A 내지 582N) 로서 복원한다. 최종 디코딩 계층 (581N) 은 최종 동작들 (572N) 및 최종 정규화 (574N) 를 수행하여 별개의 채널 입력들 (552N) 을 복원된 별개의 채널 출력들 (582N) 로서 복원한다.
동작들 (565 및 570) 은 도 5b의 예시에서 작은 공간을 차지하지만, 다양한 구현들에서, 이들 동작들은 초기 인코딩 계층들 (561A 내지 561N) 및 최종 디코딩 계층들 (581A 내지 581N) 에 추가하여 신경망 구조의 일부로서 임의의 수의 계층들 (예를 들어, 5개의 계층들, 9개의 계층들 등) 을 갖는 할당된 물리적 리소스들 (예를 들어, 신경망 프로세싱 회로부의 시간에 따른 사용) 의 대부분일 수 있다. 따라서, 별개의 채널들을 표준화하는 것은, 아래의 예에 의해 더 상세히 설명되는 바와 같이, 별개의 특성들을 갖는 채널들을 갖는 비디오 포맷들에 대한 E2E-NNVC의 파이프라인들에서의 복제를 상당히 감소시킬 수 있다.
도 6 은 일부 예들에 따른, 루미넌스-크로미넌스 (YUV) 포맷을 갖는 입력에 대한 단대단 신경망 기반 이미지 및 비디오 코딩 시스템의 예를 예시하는 다이어그램이다. 도 6 의 비디오 코딩 시스템의 예시적인 네트워크는 Y 채널 입력 (602) 및 UV 채널 입력 (604)에서 YUV 데이터를 받아들이고, 복원된 Y 채널 (670) 및 복원된 U 및 V 채널들 (672) 을 출력한다. 도 6 의 비디오 코딩 시스템은 서브 네트워크들 (620 및 650) 뿐만 아니라, ga 서브 네트워크 (610) 및 서브 네트워크 gs (660) 를 더 포함한다. ga 서브-네트워크 (610) 는 인코더 서브-네트워크 (예를 들어, 인코더 부분 (462)) 에 대응하고, 서브-네트워크 gs (660) 는 디코더 서브-네트워크 (예를 들어, 디코더 부분 (466)) 에 대응한다. ga 및 gs 서브-네트워크들은 3-채널 RGB 입력을 프로세싱하기 위한 시스템과 유사하게 구조화될 수 있는 추가적인 동작들을 사용하며, 여기서 모든 3개의 R, G, 및 B 입력 채널들은 동일한 신경망 계층들 (예를 들어, 컨볼루션 계층들 및 일반화된 분할 정규화 (generalized divisive normalization; GDN) 계층들) 에 의해 프로세싱되지만, 채널들이 상이한 특성들을 갖는 YUV 포맷 데이터를 프로세싱하기 위해 초기 인코딩 계층들 및 최종 디코딩 계층들로 수정된다.
예시된 서브네트워크들은 컨볼루션 계층들 (612, 613, 614, 661, 662, 및 663) 뿐만 아니라 일반화된 분할 정규화 (GDN) 계층들 (691, 690, 616, 및 614) 또는 역 GDN(IGDN) 계층들 (665, 666, 667, 및 668) 을 포함한다. 다양한 계층들은 다양한 그룹들의 신경망 계층들로 간주될 수 있다. 이러한 구조의 신경망 계층들 (예를 들어, GDN 계층 (617) 과 컨볼루션 계층 (614) 을 결합하는 신경망 계층) 은 컨볼루션 연산들을 수행하는 컨볼루션 계층들 및 국부적 분할 정규화를 구현하는 GDN 및/또는 IGDN (inverse-GDN) 비선형성 계층들을 포함할 수 있다. 국부적 분할 정규화는 이미지의 밀도 모델링 및 압축에 특히 적합한 것으로 보여지는 변환 유형이다. E2E-NNVC 시스템들은 RGB 데이터와 같은 유사한 통계적 특성 (예를 들어, 유사한 평균 픽셀 값들 또는 픽셀 값들 사이의 유사한 분산) 을 갖는 채널 데이터 채널들 (예를 들어, 평균 및 분산 특성들과 같은 상이한 R, G, 및 B 채널들의 통계적 특성들이 유사한 경우) 에 대한 것이다.
위에 설명된 바와 같이, E2E-NNVC 시스템은 통상적으로 RGB 입력을 처리하기 위해 단일 코딩 경로 (예를 들어, 도 5a 와 유사함) 로 설계되지만, 대부분의 이미지 및 비디오 코딩 시스템은 YUV 입력 포맷 (예를 들어, 많은 경우에 YUV420 입력 포맷) 을 사용한다. YUV 포맷의 데이터의 크로미넌스 (U 및 V) 채널들은 루미넌스 (Y) 채널에 대해 서브샘플링될 수 있다. 서브샘플링은 시각적 품질에 대한 최소한의 영향을 초래한다 (예를 들어, 밝기 변화들이 색상 또는 컬러 외관 파라미터들의 유사한 사이즈 변화들보다 더 눈에 띄는 인간 인식의 특성들로 인해, 시각적 품질에 대한 유의하거나 눈에 띄는 영향이 없다). 서브샘플링된 포맷들은 YUV420 포맷, YUV422 포맷, 및/또는 다른 YUV 포맷들을 포함한다. 채널들에 걸친 상관은 YUV 포맷에서 감소되며 (예를 들어, Y 채널들은 통상적으로 U 또는 V 채널들과 상이한 특성들을 가짐), 이는 다른 컬러 포맷들 (예를 들어, RGB 포맷) 에 대한 경우가 아닐 수 있다. 또한, 루미넌스 (Y) 및 크로미넌스 (U 및 V) 채널들의 통계적 특성들은 통상적으로 상이하다. 예를 들어, U 및 V 채널들은 통상적으로 루미넌스 채널에 비해 더 작은 분산을 갖는 반면, 예를 들어, RGB 포맷들에서, 상이한 R, G, 및 B 채널들의 통계적 속성들은 더 유사하다. 이러한 통계적 특성들의 차이들은 충분히 상이한 특성들을 갖는 연관된 채널들을 유도하고, 이러한 상이한 채널들에 대해 사용된 동일한 비디오 코딩 경로는 더 낮은 비디오 품질 또는 디바이스 리소스들의 과도한 사용으로부터 열화된 결과들을 가질 것이다. 비디오 코더들-디코더들 (또는 코덱들) 은 데이터의 입력 특성들에 따라 설계된다 (예를 들어, 코덱은 데이터의 입력 포맷에 따라 데이터를 인코딩 및/또는 디코딩할 수 있다). 예를 들어, 프레임의 크로미넌스 채널들이 서브샘플링되면 (예를 들어, 크로미넌스 채널들이 루미넌스 채널과 비교하여 해상도의 절반임), CODEC이 모션 보상을 위해 프레임의 블록을 예측할 때, 루미넌스 블록은 크로미넌스 블록들과 비교하여 폭 및 높이 둘 모두에 대해 2배 더 클 것이다. 다른 예에서, CODEC 은, 다른 것들 중에서도, 얼마나 많은 픽셀들이 크로미넌스 및 루미넌스에 대해 인코딩되거나 디코딩될 것인지를 결정할 수 있다.
RGB 입력 데이터 (위에서 언급된 바와 같이, 대부분의 E2E-NNVC 시스템들이 프로세싱하도록 설계됨) 가 YUV 444 입력 데이터 (여기서, 모든 채널들은 동일한 차원을 가짐) 로 대체되면, 채널 해상도들이 동일하더라도, 입력 데이터를 프로세싱하는 E2E-NNVC 시스템의 성능은 루미넌스 (Y) 및 크로미넌스(U 및 V) 채널들의 상이한 통계적 특성들로 인해 감소된다. 위에 주지된 바와 같이, 크로미넌스 (U 및 V) 채널들은 YUV420 의 경우와 같은 일부 YUV 포맷들에서 서브샘플링된다. 예를 들어, YUV420 포맷을 갖는 컨텐츠에 대해, U 및 V 채널 해상도는 Y 채널 해상도의 절반이다 (U 및 V 채널들은 폭 및 높이가 절반으로 되기 때문에, Y 채널의 4분의 1인 사이즈를 갖는다). 이러한 서브샘플링은 입력 데이터가 E2E-NNVC 시스템의 입력과 호환가능하지 않게 할 수 있다. 입력 데이터는 E2E-NNVC 시스템이 인코딩 및/또는 디코딩하려고 시도하고 있는 정보 (예를 들어, 루미넌스 (Y) 및 크로미넌스 (U 및 V) 채널들을 포함하는 3개의 채널들을 포함하는 YUV 프레임) 이다. 많은 신경망 기반 시스템들은 입력 데이터의 모든 채널 치수들이 동일하다고 가정하고, 따라서 모든 입력 채널들을 동일한 네트워크에 공급한다. 이러한 경우들에서, 특정 동작들의 출력들이 (예를 들어, 행렬 추가를 사용하여) 추가될 수 있으며, 이 경우 채널들의 치수들은 동일해야 한다. 이러한 문제들은 제한된 손실로 YUV 데이터를 RGB 데이터로 변환하는 것에 의해 해결될 수 있지만, 이러한 변환 동작들은 리소스 집약적이다.
도 6 의 비디오 코딩 시스템은 이러한 문제들을 해결하기 위해 별개의 초기 컨볼루션 계층들 (681 및 680) 로 구성된다. 도 6 의 예에서, Y 채널 입력들 (602) 은 컨볼루션 계층 (680) 에서 4개의 절반 해상도 Y 채널들로 서브샘플링될 수 있다. U 및 V 입력들 (604) 은 서브샘플링 없이 컨볼루션 계층 (681) 에서 프로세싱될 수 있다. 계층 (680) 으로부터의 4개의 반해상도 Y 채널들은 GDN 계층 (690) 에 의해 균형 (예를 들어, 정규화, 스케일링, 또는 달리 수정) 될 수 있고, 병합 구조 (699) 에서 계층 (681) 및 GDN 계층 (691) 으로부터의 2개의 크로미넌스 채널들과 조합될 수 있어, 공유된 입력들을 갖는 6개의 입력 채널들을 초래한다. 채널 데이터를 밸런싱하기 위해 사용될 수 있는 동작들은 데이터 내의 픽셀 값들을 조정, 정규화, 스케일링, 또는 달리 비교적으로 수정하는 것 (예를 들어, 밸런싱하는 것) 을 포함한다. 6개의 입력 채널들은 RGB 입력들을 위해 설계되고 초기 인코딩 계층들 (예를 들어, GDN 계층들 (690 및 681) 과 결합된 계층들 (681 및 680)) 및 최종 디코딩 계층들 (예를 들어, IGDN 계층들 (667 및 668) 과 결합된 계층들 (683 및 684)) 로 수정되는 도 6 의 E2E-NNVC 시스템의 일부로서 신경망 계층들의 예시된 플로우에 입력 또는 공급될 수 있다. 이러한 접근법은 (예를 들어, 별개의 경로들에서 상이한 샘플링 또는 스트라이드 특성들을 사용하는) 루미넌스 (Y) 및 크로미넌스 (U 및 V) 채널들의 해상도 차이들에 대한 그리고 별개의 GDN 및 IGDN 계층들을 사용하는 통계적 특성들에 대한 문제를 해결할 수도 있다.
도 6 의 비디오 코딩 시스템은 하나 이상의 ML-기반 시스템들을 사용하여 이미지 및/또는 비디오 코딩을 수행하기 위한 시스템의 일 예를 예시한다. 본 명세서에 설명된 시스템들 및 기법들은 루미넌스-크로미넌스 (YUV) 입력 포맷들 (예를 들어, 무엇보다도 YUV420, YUV444, YUV422) 을 갖는 입력 데이터를 프로세싱하기 위하여 설계된 단대단 신경망 기반 이미지 및 비디오 코딩 (E2E-NNVC) 시스템 (예를 들어, 이를 테면, 도 6 의 비디오 코딩 시스템) 을 제공한다. 본 명세서에 설명된 E2E-NNVC 시스템들은 루미넌스 (Y) 및 크로미넌스(U 및 V) 채널들의 상이한 특성들뿐만 아니라 루미넌스 (Y) 및 크로미넌스 (U 및 V) 채널들의 해상도들의 차이를 다룬다. E2E-NNVC 시스템은 독립형 프레임들 (또는 이미지들) 및/또는 다수의 프레임들을 포함하는 비디오 데이터를 인코딩 및/또는 디코딩할 수 있다.
일부 예들에서, 본 명세서에 설명된 E2E-NNVC 시스템은 Y 및 UV 채널을 초기에 2개의 별개의 계층들 (예를 들어, 계층 (680) 및 계층 (681)) 에 입력하거나 공급할 수 있다. 그 다음, E2E-NNVC 시스템은 병합 구조 (699) 에서 특정 수의 계층들 후에 (예를 들어, 제 1 컨볼루션 및 GDN 계층 조합 후에) Y 및 UV 채널들과 연관된 데이터를 결합할 수 있다. 이러한 기법은 E2E-NNVC 시스템이 상이한 채널 특성 및 해상도를 갖는 YUV 입력 데이터를 처리하도록 할 수 있다. 하나의 예시적인 예에서, E2E-NNVC 는 YUV420 입력 데이터에 대해 설계될 수 있다. YUV420 입력 데이터에 대해, 크로미넌스 (U 및 V) 채널들이 루미넌스 (Y) 채널에 대해 서브샘플링되기 때문에, 제 1 컨볼루션 계층에서의 서브샘플링은 스킵될 수 있고, (예를 들어, (N/2 + 1) x (N/2 + 1) 의 사이즈를 갖는) 특정 사이즈의 컨볼루션 (예를 들어, CNN) 커널들이 별개의 (예를 들어, 공유되지 않는) 계층들 (681 및 680) 에서 서브샘플링된 입력 크로미넌스 (U 및 V) 채널들에 대해 사용될 수 있다. 그 다음, 크로미넌스 (U 및 V) 채널들에 사용되는 커널과 비교하여 상이한 사이즈를 갖는 CNN 커널들 (예를 들어, NxN CNN 커널들) 이 루미넌스 (Y) 채널에 사용될 수 있다. 다른 예시적인 예에서, 동일한 커널 사이즈가 루미넌스 (Y) 및 크로미넌스 (U 및 V) 채널들 양쪽 모두에 대해 사용될 수 있다. 예를 들어, YUV444 입력 데이터의 경우, 제 1 컨볼루션 계층에서 동일한 서브샘플링 (예를 들어, 2의 서브샘플링, 여기서 출력은 때때로 스트라이드 2로 지칭되는 각각의 차원에서 2에 의해 서브샘플링되고, 양쪽 차원들에서 모든 다른 샘플은 폐기됨) 을 갖는 동일한 커널 사이즈가 모든 채널들 Y, U, 및 V 에 대해 사용될 수 있다.
(예를 들어, Y 채널 입력들 (602) 상에서 사용되는 2의 서브샘플링을 갖는) 위의 예들은 YUV420 데이터 포맷들의 맥락에서 설명된다. 유사한 신경망 아키텍처가 다른 유형의 YUV 컨텐츠 (예를 들어, YUV444, YUV422 등) 및/또는 채널이 상이한 특성을 갖는 다른 입력 포맷을 갖는 컨텐츠를 인코딩 및/또는 디코딩하는데 사용될 수 있음이 명백할 것이다.
도 6 에 도시된 바와 같이, 입력 프로세싱은, 인코더 서브네트워크 (610) 에서 그리고 디코더 서브네트워크 gs (660) 에 대응하는 제 1 의 2개의 신경망 계층들에 연결된 입력들 (602 및 604) 로서 도시된 루미넌스 (Y) 및 크로미넌스 (U 및 V) 채널들 (예를 들어, 특정 입력 이미지 또는 비디오 프레임의 Y 및 UV 채널들) 을 개별적으로 프로세싱하는 것에 의해 수정된다. 예를 들어, 인코더 서브-네트워크 ga 의 제 1 의 2개의 신경망 계층들은 제 1 컨볼루션 계층 (681)(Nconv |3x3|↓1 로 표기됨), 제 2 컨볼루션 계층 (680)(Nconv |5x5|↓2 로 표기됨) 및 두 개의 GDN 계층 (691 및 690) 을 포함한다. 디코더 서브네트워크 gs (660) 에서의 마지막 2개의 신경망 계층들은 2개의 역-GDN (IGDN) 계층 (667 및 668), 프레임의 복원된 크로미넌스 (U 및 V) 컴포넌트들을 생성하기 위한 제 1 컨볼루션 계층 (684)(2conv |3x3|↑1 로 표기됨) 및 프레임의 복원된 루미넌스(Y) 컴포넌트를 생성하기 위한 제 2 컨볼루션 계층 (683) (1conv |5x5|↑2로 표기됨) 을 포함한다. "Nconv" 표기는 (출력 채널들의 수를 정의하는 값 N 을 갖는) 주어진 컨볼루션 계층의 (출력 피처들의 수에 대응하는) 출력 채널들의 수를 의미한다. 3x3 및 5x5 표기는 개별적인 컨볼루션 커널들 (예를 들어, 3x3 커널 및 5x5 커널)의 사이즈를 나타낸다. "↓1" 및 "↓2"(예를 들어, D1 및 D2) 표기는 스트라이드 값들을 지칭하고, 여기서 ↓1은 ("↓" 또는 D에 의해 표시된 바와 같은 다운샘플링에 대한) 1의 스트라이드(stride)를 지칭하고, ↓2 는 (다운샘플링에 대한) 1의 스트라이드를 지칭한다. "↑1" 및 "↑2"(예를 들어, U1 및 U2) 표기는 스트라이드 값들을 지칭하고, 여기서 ↑1 는 ("↑" 또는 U 에 의해 표시된 바와 같은 업샘플링에 대한) 1의 스트라이드를 지칭하고, ↑2 는 (업샘플링에 대한) 1의 스트라이드를 지칭한다.
서브-네트워크들 (610 및 660) 에 추가하여, 도 6 의 일 예의 비디오 코딩 시스템은 서브-네트워크들 (620 및 650) 을 포함한다. 서브 네트워크들 (620 및 650) 은 엔트로피 모델 h 를 사용하여 비디오 코딩 성능을 개선하는데 사용될 수 있는 추가적인 인코딩 및 디코딩 네트워크들이다. ABS 계층 (625) 은 (예를 들어, 신경망에서 활성화 함수로서 사용되는) 절대값 함수를 수행한다. 정류된 선형 유닛 (ReLU) 계층들 (626, 627, 655, 656 및 657) 은 입력을 입력 값의 최대값 또는 0 으로 변환한다 (예를 들어, 네거티브 데이터를 0 값들로 대체한다). 계층 (621, 622, 623, 651, 652 및 653) 은 컨볼루션 계층이다. 서브-네트워크 (610) 로부터의 데이터 출력은 양자화기 (Q)(632) 에 입력되는 데이터 및 산술 디코더 (AD)(638) 에 의해 출력되는 데이터를 포함하는, 인코딩 또는 디코딩되고 있는 계수들 (예를 들어, 양자화된 변환의 출력) 을 포함한다. 서브-네트워크 (620) 로부터의 데이터 출력은 엔트로피 모델 ha 에 대한 대응하는 서브-네트워크들 (620) 의 엔트로피 모델들 ha및 hs (예를 들어, 하이퍼프라이어로 지칭되고 아래에서 더 상세히 설명됨) 및 서브-네트워크 (650) 에 대한 엔트로피 모델 hs 을 기술하는 파라미터들을 나타낸다. 서브-네트워크 (620) 로부터 출력된 데이터는 Q (643) 에 의해 양자화되고, 인코더 (AE)(644) 에 의해 이진 데이터 (646) 로서 설정된 다음, 서브-네트워크 (650) 에 입력되는 AD (648) 로부터 수정된 데이터로서 출력된다.
도 6 에 도시된 비디오 코딩 시스템의 예시적인 네트워크에서, 상위 서브-네트워크들 (610 및 660) 은 이미지 오토 인코더 아키텍처를 구현하고, 하위 서브-네트워크들 (620 및 650) 은 하이퍼프라이어 네트워크를 구현한다. (예를 들어, U 및 V 채널 입력들 (604) 및 Y 채널 입력들 (602) 로부터의) 입력 데이터는 공간적으로 변하는 표준 편차들을 포함하는 데이터를 출력하는 서브-네트워크 (610) 에 의해 인코딩된다. 서브-네트워크 (610) 로부터의 데이터 출력은 엔트로피 모델 ha를 구현하는 서브-네트워크 (620) 및 Q (632) 양쪽 모두에 입력된다. 서브-네트워크 (620) 는 본질적으로 서브-네트워크 (610) 로부터의 데이터 출력으로부터의 표준 편차 (예를 들어, z 데이터) 의 분포를 요약한다. z 데이터는 이어서 Q (642) 에 의해 프로세싱되고, 이는 표준 편차들의 공간 분포를 추정하기 위해 서브-네트워크 (650) 및 엔트로피 모델 hs에 의해 사용되는 양자화된 벡터를 출력한다. 비디오 데이터의 표준 편차의 공간 분포를 추정하는 양자화된 벡터는 서브-네트워크 (650) 의 출력이다.
Q (632) 는 서브 네트워크 (610)(예를 들어, 인코딩 네트워크) 로부터 출력된 데이터를 사용하여 양자화된 이미지 표현을 생성한다. AE (634) 는 서브-네트워크 (650) 로부터 출력된 표준 편차들의 추정된 공간 분포와 함께 Q (632) 로부터의 양자화된 이미지 표현을 사용하여 양자화된 이미지 표현을 압축하고 이진 데이터 (636) 로 송신한다. AD (638) 는 (예를 들어, Q (632) 에 의해 생성된) 양자화된 이미지 표현을 복원하기 위해 압축된 전송된 이진 데이터 (636) 와 함께 서브-네트워크 (650) 로부터 출력된 표준 편차들의 추정된 공간 분포를 사용한다. 복구된 양자화된 이미지 표현은 AD (638) 로부터 서브-네트워크 gs (660) 로 출력된다. 그 후, 서브-네트워크 (660) 는 복원된 U 및 V 채널들 (672) 및 복원된 Y 채널 (670) 에 대한 데이터를 생성하기 위해 양자화된 이미지 표현을 디코딩한다.
도 6 의 비디오 코딩 시스템에 대해 설명된 예는 본 명세서에 제공된 설명들에 따른 구현의 일 예이다. 2 개보다 많은 상이한 유형들의 채널들, 또는 다른 이러한 구성들을 핸들링하도록 구조화된 구현들을 포함하는 다른 구현들이 가능하다는 것이 명백할 것이다.
일부 예들에서, 도 6 의 시스템은 상이한 특성들을 갖는 채널들을 적응시키기 위해 하나 이상의 추가적인 초기 입력 계층들을 갖는 RGB 데이터에 대해 구성된 단일 경로 시스템으로서 구조화될 수 있다. 예를 들어, 도 6 의 인코더 서브-네트워크 ga (610) 에서, 루미넌스 (Y) 채널을 프로세싱하는데 사용되는 제 2 서브 컨볼루션 계층 (680) (예를 들어, 인코더 서브-네트워크 (610) 의 Nconv |5x5|↓2 계층) 은 RGB 채널 데이터를 프로세싱하기 위한 인코더 서브-네트워크 ga 의 컨볼루션 계층과 동일할 수 있다. 이러한 구조에서, 계층(681) 및 병합 구조 (699) 는 동일한 구조에서 YUV 프로세싱 능력 및 RGB 프로세싱 능력을 가능하게 하기 위해 추가된다. 이러한 예에서, 복원된 루미넌스 (Y) 컴포넌트를 생성하는데 사용되는 디코더 서브-네트워크 gs (660) 의 제 2 컨볼루션 계층 (683)(1conv |5x5|↑2 로 표시됨) 은 RGB 포맷 데이터를 코딩하기 위한 단일 경로를 갖는 디코더 서브-네트워크 gs의 마지막 컨볼루션 계층과 동일할 수 있다. 단일 경로 시스템과 달리, 크로미넌스 (U 및 V) 채널들은 루미넌스 (Y) 채널을 프로세싱(예를 들어, (N+1)/2 이면, (N+1)/2*(N+1)/2) 으로 됨) 하는데 사용되고, 이어서 GDN 계층 (690) 이 뒤따르는데 사용되는 Nconv |5x5|↓2 컨볼루션 계층 (680) 에서 사용되는 커널의 사이즈의 반인 (그리고 다운샘플링이 없는 경우, 1 과 동일하 스트라이드에 대응하는) 커널 사이즈를 갖는 컨볼루션 계층 (681)(인코더 서브-네트워크 (610) 의 Nconv |3x3|↓1 계층) 을 사용하여 도 6 의 시스템에 의해 프로세싱된다. 컨볼루션 계층들 (680 및 681)(Nconv |5x5|↓2 및 Nconv |3x3|↓1 계층들) 및 대응하는 GDN 계층들 (690 및 691) 이후에, 루미넌스 (Y) 채널 및 크로미넌스 (U 및 V) 채널들 (예를 들어, 입력 채널들 및 병합 구조 (699) 로의 입력의 변환 또는 필터링된 버전) 의 표현 또는 피처들은 동일한 차원을 갖고 이들은 합산에 의해 결합된다. 따라서, 병합 구조 (699) 에 입력되는 Y 채널 데이터는 병합 구조 (699) 에 입력되는 U 및 V 채널 데이터와 유사한 특성들을 가지며, 이는 나머지 계층들이 공유될 수 있게 한다.
일 예에서, 루미넌스 (Y) 채널은 크로미넌스 (U 및 V) 채널들로서 각각의 차원에서의 사이즈의 2배이다. 크로미넌스 (U 및 V) 채널들이 2에 의해 서브샘플링될 때, 이들 채널들을 프로세싱하는 것에 기초하여 생성된 출력은 (루미넌스 채널이 서브샘플링되지 않기 때문에) 루미넌스 채널의 conv2d 출력과 동일한 차원이 된다. 채널들의 별개의 정규화는 루미넌스 및 크로미넌스 채널들의 분산에서의 차이를 해결한다. 디코더 서브-네트워크 gs (660) 에서, 별개의 I-GDN 계층들 (667 및 668) 및 컨볼루션 계층들 (683 및 684) 은 복원된 루미넌스 (Y) 컴포넌트 및 복원된 크로미넌스 (U 및 V) 컴포넌트들을 개별적으로 생성하는데 사용된다. 예를 들어, 컨볼루션 계층 (684)(예를 들어, 디코더 서브-네트워크 gs (660) 의 2conv |3x3|↑1 계층) 은 복원된 Y 채널 (670) (예를 들어, 루미넌스) 컴포넌트를 생성하는데 사용된 1conv |5x5|↑2 컨볼루션 계층 (683) 에서 사용되는 커널의 사이즈의 대략 반인 (그리고 업샘플링이 없는 경우, 1 과 동일한 스트라이드에 대응하는) 커널 사이즈를 갖는 복원된 U 및 V 채널들 (672) 을 생성하는데 사용된다.
일부 예들에서, 본 명세서에 설명된 시스템들 및 기법들은 신경망 기반 코딩 시스템의 입력에서 컨볼루션 (예를 들어, CNN) 및 정규화 스테이지 조합들을 사용하는 다른 인코더-디코더 서브-네트워크들에 대해 사용될 수 있다.
도 7 은 본 명세서에 설명된 순환-기반 머신 러닝 기법 중 하나 이상을 사용하여 비디오를 프로세싱하는 프로세스 (700) 의 예를 예시하는 플로우차트이다. 프로세스 (700) 는, 예를 들어, SOC (100), 디바이스 (402), 또는 본 명세서에 설명된 바와 같은 컴퓨팅 디바이스 아키텍처 (900) 를 사용하여 구현되는 임의의 디바이스로서 구현될 수 있다. 일부 예들에서, 프로세스 (700) 는, 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 디바이스로 하여금 프로세스 (700) 의 동작들을 수행하게 하는 비일시적 컴퓨터 판독가능 매체에 저장된 명령어들로서 구현된다.
블록 (702) 에서, 프로세스 (700) 는 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하는 것을 포함한다. 예를 들어, 도 6 과 관련하여 위에서 설명된 바와 같이, 신경망 시스템의 인코더 서브-네트워크 (610) 의 컨볼루션 계층 (680) 은 프레임에 대한 Y-채널 (예를 들어, 루미넌스 채널) 입력들과 연관된 값들을 출력한다.
블록 (704) 에서, 프로세스 (700) 는 인코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 것을 포함한다. 도 6 의 예에서, 인코더 서브-네트워크 (610) 의 컨볼루션 계층 (681) 은 프레임의 UV-채널 입력들 (604) (예를 들어, 적어도 하나의 크로미넌스 채널) 과 연관된 값들을 출력한다.
블록 (706) 에서, 프로세스 (700) 는 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하는 것을 포함한다. 도 6의 대응하는 구조에서, 컨볼루션 계층들 (681 및 680) 의 출력 값들은 병합 구조 (699) 에서 결합된다.
블록 (708)에서, 프로세스 (700) 는 프레임의 결합된 표현에 기초하여 인코딩된 비디오 데이터를 생성하는 것을 포함한다. 도 6 의 예에서, 병합 구조 (699) 에 의해 생성된 결합된 값들은 그 후 GDN 계층들 (616, 617) 뿐만 아니라 추가적인 컨볼루션 계층들 (614 및 612, 613 및 614) 에 의해 프로세싱된다. 양자화기 (632) 및 인코더 (634) 는 그 후 병합 구조 (699) 로부터의 프레임의 결합된 표현에 기초하여 인코딩된 비디오 데이터를 생성하는데 사용된다.
일부 예들에서, 프로세스 (700) 는 인코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 프레임의 루미넌스 채널과 연관된 출력 값들을 프로세싱하는 것; 및 인코더 서브-네트워크의 제 2 정규화계층을 사용하여, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 프로세싱하는 것을 포함한다. 이러한 예들에서, 결합된 표현은 (예를 들어, 서브-네트워크 (620) 의 정규화된 계층들을 사용하여) 제 1 정규화 계층의 출력 및 제 2 정규화 계층의 출력에 기초하여 생성된다. 일부 양태들에서, 비디오 데이터를 인코딩하기 위한 위에 설명된 방법, 장치 및 컴퓨터 판독가능 매체는 (예를 들어, 양자화기 (632) 를 사용하여) 인코딩된 비디오 데이터를 양자화하는 것을 더 포함한다. 일부 경우들에서, 정규화 계층들은 스케일링 계층들로서 지칭될 수 있다.
일부 예들에서, 프로세스 (700) 는 (예를 들어, AE (634) 를 사용하여) 인코딩된 비디오 데이터를 엔트로피 코딩하는 것을 포함한다. 일부 예들에서, 프로세스 (700) 는 인코딩된 비디오 데이터를 저장하는 것을 포함한다. 일부 예들에서, 프로세스 (700) 는 인코딩된 비디오 데이터를 송신 매체를 통해 적어도 하나의 디바이스로 송신하는 것을 포함한다.
일부 예들에서, 프로세스 (700) 는 인코딩된 프레임을 획득하는 것; 신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하는 것; 및 디코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하는 것을 포함한다.
일부 예들에서, 프레임은 비디오 프레임을 포함한다. 일부 예들에서, 적어도 하나의 크로미넌스 채널은 크로미넌스-청색 채널 및 크로미넌스-적색 채널을 포함한다. 일부 예들에서, 프레임은 루미넌스-크로미넌스 (YUV) 포맷을 갖는다.
도 8 은 본 명세서에 설명된 순환-기반 머신 러닝 기법 중 하나 이상을 사용하여 비디오를 프로세싱하는 프로세스 (800) 의 예를 예시하는 플로우차트이다. 일부 예들에서, 프로세스 (800) 는 프로세스 (700) 의 인코딩 동작들에 대응하는 디코딩 동작들에 대응하여 고려할 수 있다. 프로세스 (700) 에 대해 위에 설명된 바와 같이, 프로세스 (800) 는 예를 들어, SOC (100), 디바이스 (402), 또는 본 명세서에 설명된 바와 같은 컴퓨팅 디바이스 아키텍처 (900) 를 사용하여 구현될 수 있다. 일부 예들에서, 프로세스 (800) 는, 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 디바이스로 하여금 프로세스 (800) 의 동작들을 수행하게 하는 비일시적 컴퓨터 판독가능 매체에 저장된 명령어들로서 구현된다.
블록 (802) 에서, 프로세스 (800) 는 인코딩된 프레임을 획득하는 것을 포함한다. 인코딩된 프레임은, 예를 들어, 위의 블록 (708) 에서, 또는 인코딩된 프레임을 생성하기 위한 임의의 다른 유사한 프로세스의 동작들에 따라 생성된 인코딩된 비디오 데이터를 포함할 수 있다. 도 6 의 예에서, 6 AD (638) 는 압축되어 송신되는 이진 데이터 (636) 로서 인코딩된 비디오 데이터의 양쪽 프레임들 뿐만 아니라, 디코딩된 비디오 데이터의 품질을 개선하기 위해 사용되는 송신된 이진 데이터 (646) 로부터 생성된 엔트로피 모델 데이터를 수신한다.
블록 (804) 에서, 프로세스 (800) 는 신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하는 것을 포함한다. 도 6 의 예에서, IGDN 계층들 (665 및 666) 뿐만 아니라 컨볼루션 계층들 (614, 613 및 612) 에 대응하는 컨볼루션 계층들 (661, 662 및 663) 을 사용하여 데이터의 역 프로세싱 후에, 비디오 데이터는 복원된 Y 채널 (670) 에서 출력될 복원된 Y 데이터로서 출력될 데이터로 분할되고, 복원된 UV 채널 (672) 로서 출력될 복원된 UV 데이터로 분할된다.
블록 (806) 에서, 프로세스 (800) 는 디코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하는 것을 포함한다. 블록 (808) 에서, 프로세스 (800) 는 루미넌스 채널과 연관된 복원된 출력 값들 및 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 포함하는 출력 프레임을 생성하는 것을 포함한다. 도 6 의 예에서, IGDN 계층들 (665 및 666) 뿐만 아니라 컨볼루션 계층들 (614, 613 및 612) 에 대응하는 컨볼루션 계층들 (661, 662 및 663) 을 사용하여 데이터의 역 프로세싱 후에, 비디오 데이터는 복원된 Y 채널 (670) 에서 출력될 복원된 Y 데이터로서 출력될 데이터로 분할되고, 복원된 UV 채널 (672) 로서 출력될 복원된 UV 데이터로 분할된다.
일부 예들에서, 프로세스 (800) 는 디코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 인코딩된 프레임의 루미넌스 채널과 연관된 값들을 프로세싱하는 것 - 루미넌스 채널과 연관된 복원된 출력 값들은 제 1 정규화 계층의 출력에 기초하여 생성됨 -; 및 디코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 값들을 프로세싱하는 것 - 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들은 (서브-네트워크 (650) 의 정규화된 계층들을 사용하여) 제 2 정규화 계층의 출력에 기초하여 생성됨 - 을 포함한다.
일부 예들에서, 프로세스 (800) 는 인코딩된 프레임의 샘플들을 양자화해제하는 것을 포함한다. 일부 예들에서, 프로세스 (800) 는 (예를 들어, AD (638) 를 사용하여) 인코딩된 프레임의 샘플들을 엔트로피 디코딩하는 것을 포함한다. 일부 예들에서, 프로세스 (800) 는 출력 프레임을 메모리에 저장하는 것을 포함한다. 일부 예들에서, 프로세스 (800) 는 출력 프레임을 디스플레이하는 것을 포함한다.
일부 예들에서, 프로세스 (800) 는 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, (예를 들어, Y 채널 입력 (602) 과 연관된) 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하는 것; 인코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, (예를 들어, 복원된 UV 채널 입력들 (604) 과 연관된) 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 것; 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하는 것; 및 프레임의 결합된 표현에 기초하여 (예를 들어, 블록 (802) 에서 인코딩된 프레임으로서 그 다음에 획득되는 이진 데이터 (636) 로서) 인코딩된 프레임을 생성하는 것을 포함한다.
일부 예들에서, 인코딩 프레임은 인코딩된 비디오 프레임을 포함한다. 일부 예들에서, 적어도 하나의 크로미넌스 채널은 크로미넌스-청색 채널 및 크로미넌스-적색 채널을 포함한다. 일부 예들에서, 인코딩된 프레임은 루미넌스-크로미넌스 (YUV) 포맷을 갖는다.
일부 예들에서, 본 명세서에 설명된 프로세스들 (예를 들어, 프로세스 (700), 프로세스 (800), 및/또는 본 명세서에 설명된 다른 프로세스) 은 컴퓨팅 디바이스 또는 장치, 이를 테면, 도 9 에 도시된 컴퓨팅 디바이스 아키텍처 (900) 를 갖는 컴퓨팅 디바이스에 의해 수행될 수 있다. 일부 예들에서, 프로세스 (700) 및/또는 프로세스 (800) 은 도 6 에 도시된 신경망 아키텍처를 구현하는 컴퓨팅 디바이스 아키텍처 (900) 를 갖는 컴퓨팅 디바이스에 의해 수행될 수 있다. 일부 예들에서, 컴퓨팅 디바이스는 모바일 디바이스 (예를 들어, 모바일 폰, 태블릿 컴퓨팅 디바이스 등), 웨어러블 디바이스, 확장 현실 디바이스 (예를 들어, 가상 현실 (VR) 디바이스, 증강 현실 (AR) 디바이스 또는 혼합 현실 (MR) 디바이스), 퍼스널 컴퓨터, 랩톱 컴퓨터, 비디오 서버, 텔레비전, 차량 (차량의 컴퓨팅 디바이스), 로봇 디바이스, 및/또는 프로세스 (700) 및/또는 프로세스 (800) 를 포함한, 본 명세서에서 설명된 프로세스들을 수행하는 리소스 능력들을 갖는 다른 컴퓨팅 디바이스를 포함할 수도 있다.
일부 경우들에서, 컴퓨팅 디바이스 또는 장치는 본 명세서에 설명된 프로세스들의 단계들을 수행하도록 구성되는 하나 이상의 입력 디바이스들, 하나 이상의 출력 디바이스들, 하나 이상의 프로세서들, 하나 이상의 마이크로프로세서들, 하나 이상의 마이크로컴퓨터들, 하나 이상의 송신기들, 수신기들 또는 결합된 송신기-수신기들 (예를 들어, 트랜시버로서 지칭됨), 하나 이상의 카메라들, 하나 이상의 센서들, 및/또는 다른 컴포넌트(들)과 같은 여러 컴포넌트들을 포함할 수도 있다. 일부 예들에서, 컴퓨팅 디바이스는 디스플레이, 데이터를 통신 및/또는 수신하도록 구성된 네트워크 인터페이스, 이들의 임의의 조합, 및/또는 다른 컴포넌트(들)를 포함할 수도 있다. 네트워크 인터페이스는 인터넷 프로토콜 (IP) 기반 데이터 또는 다른 타입의 데이터를 통신 및/또는 수신하도록 구성될 수도 있다.
컴퓨팅 디바이스의 컴포넌트들은 회로부로 구현될 수 있다. 예를 들어, 컴포넌트들은, 하나 이상의 프로그래밍가능 전자 회로들 (예를 들어, 마이크로프로세서들, 그래픽 프로세싱 유닛들 (GPU들), 디지털 신호 프로세서들 (DSP들), 중앙 프로세싱 유닛들 (CPU들), 신경망 유닛들 (NPU들), 및/또는 다른 적합한 전자 회로들) 을 포함할 수 있는 전자 회로들 또는 다른 전자 하드웨어를 포함하고/하거나 이들을 사용하여 구현될 수 있고, 및/또는 본 명세서에서 설명된 다양한 동작들을 수행하기 위해 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함하고/하거나 이들을 사용하여 구현될 수 있다.
프로세스들 (700 및 800) 은 논리적 플로우 다이어그램으로서 예시되고, 그 동작은 하드웨어, 컴퓨터 명령들, 또는 이들의 조합으로 구현될 수 있는 동작들의 시퀀스를 표현한다. 컴퓨터 명령들의 맥락에서, 그 동작들은, 하나 이상의 프로세서들에 의해 실행될 때, 열거된 동작들을 수행하는 하나 이상의 컴퓨터 판독가능 저장 매체들 상에 저장된 컴퓨터 실행가능 명령들을 표현한다. 일반적으로, 컴퓨터 실행가능 명령들은 특정한 기능들을 수행하거나 또는 특정한 데이터 타입들을 구현하는 루틴들, 프로그램들, 오브젝트들, 컴포넌트들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한으로서 해석되도록 의도되지 않으며, 임의의 수의 설명된 동작들은 프로세스들을 구현하기 위해 임의의 순서로 및/또는 병렬로 결합될 수 있다.
추가적으로, 본 명세서에 설명된 프로세스들 (프로세스 (700), 프로세스 (800) 및/또는 본 명세서에 설명된 다른 프로세스들을 포함함) 은 실행가능 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에서 수행될 수도 있고, 집합적으로 하나 이상의 프로세서 상에서 실행하는 코드 (예를 들어, 실행가능 명령들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 애플리케이션들) 로서, 하드웨어에 의해, 또는 이들의 조합으로 구현될 수도 있다. 앞서 언급된 바와 같이, 코드는 컴퓨터 판독가능 또는 머신 판독가능 저장 매체 상에, 예를 들어, 하나 이상의 프로세서들에 의해 실행가능한 복수의 명령들을 포함하는 컴퓨터 프로그램의 형태로 저장될 수도 있다. 컴퓨터 판독가능 또는 머신 판독가능 저장 매체는 비일시적일 수도 있다.
도 9 는 본 명세서에 설명된 다양한 기술을 구현할 수 있는 일 예의 컴퓨팅 디바이스의 예시적인 컴퓨팅 디바이스 아키텍처 (900) 를 도시한다. 일부 예들에서, 컴퓨팅 디바이스는 모바일 디바이스, 웨어러블 디바이스, 확장 현실 디바이스 (예를 들어, 가상 현실 (VR) 디바이스, 증강 현실 (AR) 디바이스 또는 혼합 현실 (MR) 디바이스), 퍼스널 컴퓨터, 랩톱 컴퓨터, 비디오 서버, 차량 (또는 차량의 컴퓨팅 디바이스) 또는 다른 디바이스를 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스 아키텍처 (900) 는 도 6 의 시스템을 구현할 수 있다. 컴퓨팅 디바이스 아키텍처 (900) 의 컴포넌트들은 버스와 같은 커넥션 (905) 을 사용하여 서로 전기적으로 통신하는 것으로 도시된다. 예시적인 컴퓨팅 디바이스 아키텍처 (900) 는 프로세싱 유닛 (CPU 또는 프로세서) (910), 및 판독 전용 메모리 (ROM) (920) 및 랜덤 액세스 메모리 (RAM) (925) 와 같은 컴퓨팅 디바이스 메모리 (915) 를 포함하는 다양한 컴퓨팅 디바이스 컴포넌트들을 프로세서 (910) 에 커플링하는 컴퓨팅 디바이스 커넥션 (905) 을 포함한다.
컴퓨팅 디바이스 아키텍처 (900) 는 프로세서 (910) 와 직접 연결되거나, 매우 근접하거나, 또는 프로세서의 일부로서 통합된 고속 메모리의 캐시를 포함할 수 있다. 컴퓨팅 디바이스 아키텍처 (900) 는 프로세서 (910) 에 의한 빠른 액세스를 위해 메모리 (915) 및/또는 저장 디바이스 (930) 로부터 캐시 (912) 로 데이터를 복사할 수 있다. 캐시는 데이터를 기다리는 동안 프로세서 (910) 지연을 방지하는 성능 부스트를 제공할 수 있다. 이들 및 다른 모듈들은 다양한 액션들을 수행하도록 프로세서 (910) 를 제어하거나 제어하도록 구성될 수 있다. 다른 컴퓨팅 디바이스 메모리 (915) 가 또한 사용가능할 수도 있다. 메모리 (915) 는 상이한 성능 특성들을 갖는 다수의 상이한 타입들의 메모리를 포함할 수 있다. 프로세서 (910) 는, 임의의 범용 프로세서 및 프로세서 (910) 를 제어하도록 구성된, 저장 디바이스(930) 에 저장된, 서비스 1 (932), 서비스 2 (934), 및 서비스 3 (936)과 같은, 하드웨어 또는 소프트웨어 서비스뿐만 아니라, 소프트웨어 명령들이 프로세서 설계에 통합되는 특수 목적 프로세서를 포함할 수 있다. 프로세서 (910) 는 다중 코어 또는 프로세서, 버스, 메모리 제어기, 캐시 등을 포함하는 독립형 시스템일 수도 있다. 다중 코어 프로세서는 대칭 또는 비대칭일 수도 있다.
컴퓨팅 디바이스 아키텍처 (900) 와의 사용자 상호작용을 가능하게 하기 위해, 입력 디바이스 (945) 는 스피치를 위한 마이크로폰, 제스처 또는 그래픽 입력을 위한 터치 감지 스크린, 키보드, 마우스, 모션 입력, 스피치 등과 같은 임의의 수의 입력 메커니즘을 나타낼 수 있다. 출력 디바이스 (935) 는 또한 디스플레이, 프로젝터, 텔레비전, 스피커 디바이스 등과 같이 당업자에게 알려진 다수의 출력 메커니즘 중 하나 이상일 수 있다. 일부 경우에, 다중모드 컴퓨팅 디바이스들은 사용자가 컴퓨팅 디바이스 아키텍처 (900) 와 통신하기 위해 여러 유형의 입력을 제공하게 할 수 있다. 통신 인터페이스 (940) 는 일반적으로 사용자 입력 및 컴퓨팅 디바이스 출력을 제어하고 관리할 수 있다. 임의의 특정 하드웨어 배열에 대해 동작하는 것에 대한 제한은 없으며, 따라서 여기서 기본 특징들은 이들이 개발됨에 따라 개선된 하드웨어 또는 펌웨어 배열들을 쉽게 대체할 수도 있다.
저장 디바이스 (930) 는 비휘발성 메모리이고, 하드 디스크 또는 자기 카세트, 플래시 메모리 카드, 고체 상태 메모리 디바이스, 디지털 다기능 디스크, 카트리지, 랜덤 액세스 메모리들 (RAM들) (925), 판독 전용 메모리 (ROM) (920) 및 이들의 하이브리드와 같은, 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독가능 매체일 수 있다. 저장 디바이스 (930) 는 프로세서 (910) 를 제어하기 위한 서비스들 (932, 934, 936) 을 포함할 수 있다. 다른 하드웨어 또는 소프트웨어 모듈이 고려된다. 저장 디바이스 (930) 는 컴퓨팅 디바이스 접속 (905) 에 커플링될 수 있다. 일 양태에서, 특정 기능을 수행하는 하드웨어 모듈은, 그 기능을 수행하기 위해, 프로세서 (910), 커넥션 (905), 출력 디바이스 (935) 등과 같은 필요한 하드웨어 컴포넌트들과 관련하여 컴퓨터 판독가능 매체에 저장된 소프트웨어 컴포넌트를 포함할 수 있다.
본 개시의 양태들은 하나 이상의 능동 심도 감지 시스템들을 포함하거나 그들에 커플링된 (보안 시스템들, 스마트폰들, 태블릿들, 랩탑 컴퓨터들, 차량들, 드론들, 또는 다른 디바이스들과 같은) 임의의 적합한 전자 디바이스에 적용가능하다. 하나의 광 프로젝터를 갖거나 그에 커플링된 디바이스에 관하여 하기에서 설명되지만, 본 개시의 양태들은 임의의 수의 광 프로젝터들을 갖는 디바이스들에 적용가능하고, 따라서, 특정 디바이스들로 제한되지 않는다.
용어 "디바이스" 는 (일 스마트폰, 일 제어기, 일 프로세싱 시스템 등과 같은) 하나 또는 특정 수의 물리적 오브젝트들로 제한되지 않는다. 본 명세서에서 사용되는 바와 같이, 디바이스는 본 개시의 적어도 일부 부분들을 구현할 수도 있는 하나 이상의 부분들을 갖는 임의의 전자 디바이스일 수도 있다. 하기의 설명 및 예들이 본 개시의 다양한 양태들을 설명하기 위해 용어 "디바이스" 를 사용하지만, 용어 "디바이스" 는 오브젝트들의 특정 구성, 타입, 또는 개수로 제한되지 않는다. 부가적으로, 용어 "시스템" 은 다중의 컴포넌트들 또는 특정 실시형태들로 제한되지 않는다. 예를 들어, 시스템은 하나 이상의 인쇄 회로 보드들 또는 다른 기판들 상에서 구현될 수도 있고, 이동가능 또는 정적 컴포넌트들을 가질 수도 있다. 하기의 설명 및 예들이 본 개시의 다양한 양태들을 설명하기 위해 용어 "시스템" 을 사용하지만, 용어 "시스템" 는 오브젝트들의 특정 구성, 타입, 또는 개수로 제한되지 않는다.
특정 상세들이, 본 명세서에서 제공된 실시형태들 및 예들의 철저한 이해를 제공하기 위해 상기 설명에서 제공된다. 하지만, 실시형태들은 이들 특정 상세들 없이 실시될 수도 있음이 당업자에 의해 이해될 것이다. 설명의 명료성을 위해, 일부 사례들에서, 본 기술은 디바이스들, 디바이스 컴포넌트들, 소프트웨어로 구체화된 방법의 단계들 또는 루틴들, 또는 하드웨어와 소프트웨어의 조합들을 포함하는 기능적 블록들을 포함하는 개별의 기능적 블록들을 포함하는 것으로서 제시될 수도 있다. 도면들에서 도시되고/되거나 본 명세서에서 설명된 것들 이외의 추가적인 컴포넌트들이 사용될 수도 있다. 예를 들어, 회로, 시스템, 네트워크, 프로세스 및 다른 컴포넌트들은, 실시형태들을 불필요한 상세들에서 불분명하게 하지 않기 위하여 블록 다이어그램 형태의 컴포넌트들로서 보여질 수도 있다. 다른 예들에서, 잘 알려진 회로들, 프로세스들, 알고리즘, 구조들, 및 기법들은 실시형태들을 모호하게 하는 것을 회피하기 위하여 불필요한 상세없이 나타낼 수도 있다.
개별 실시형태들은, 플로우차트, 플로우 다이어그램, 데이터 플로우 다이어그램, 구조 다이어그램, 또는 블록 다이어그램으로서 도시되는 프로세스 또는 방법으로서 상기 설명될 수도 있다. 비록 플로우차트가 동작들을 순차적인 프로세스로서 기술할 수도 있지만, 동작들 중 다수는 병렬로 또는 동시에 수행될 수 있다. 또한, 동작들의 순서가 재배열될 수도 있다. 프로세스는 그것의 동작들이 완료될 때 종료되지만, 도면에 포함되지 않은 추가 단계들을 가질 수 있을 것이다. 프로세스는 방법, 함수, 프로시저, 서브루틴, 서브프로그램 등에 대응할 수도 있다. 프로세스가 함수에 대응할 경우, 그 종료는 그 함수의 호출 함수 또는 메인 함수로의 복귀에 대응할 수 있다.
상술된 예들에 따른 프로세스들 및 방법들은 컴퓨터 판독가능 매체들에 저장되거나 그 외에 컴퓨터 판독가능 매체들로부터 이용가능한 컴퓨터 실행가능 명령들을 이용하여 구현될 수 있다. 이러한 명령들은, 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 프로세싱 디바이스가 소정의 기능 또는 기능들의 그룹을 수행하게 하거나 또는 다르게는 수행하도록 구성하는 명령들 및 데이터를 포함할 수 있다. 사용되는 컴퓨터 리소스들의 부분들은 네트워크를 통해 액세스가능할 수 있다. 컴퓨터 실행 가능 명령들은 예를 들어 바이너리, 어셈블리 언어, 펌웨어, 소스 코드 등과 같은 중간 형식 명령일 수도 있다.
용어 "컴퓨터 판독가능 매체" 는 휴대용 또는 비-휴대용 저장 디바이스들, 광학 저장 디바이스들, 및 명령(들) 및/또는 데이터를 저장, 포함, 또는 수록가능한 다양한 다른 매체들을 포함하지만 이에 한정되지 않는다. 컴퓨터 판독가능 매체는, 데이터가 저장될 수 있고 그리고 무선으로 또는 유선 커넥션들 상으로 전파하는 일시적인 전자 신호들 및/또는 캐리어파들을 포함하지 않는 비일시적인 매체를 포함할 수도 있다. 비일시적 매체의 예들은, 특히 자기 디스크 또는 테이프, 플래시 메모리와 같은 광학 저장 매체, 메모리 또는 메모리 디바이스들, 자기 또는 광학 디스크들, 플래시 메모리, 비휘발성 메모리가 제공된 USB 디바이스들, 네트워크화된 저장 디바이스들, 컴팩트 디스크(CD) 또는 디지털 다기능 디스크(DVD), 또는 이들의 임의의 적절한 조합을 포함할 수 있지만, 이들로 제한되지 않는다. 컴퓨터 판독가능 매체는, 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 스테이트먼트들의 임의의 조합을 나타낼 수도 있는 코드 및/또는 머신 실행가능 명령들을 저장할 수도 있다. 코드 세그먼트는, 정보, 데이터, 인수들 (arguments), 파라미터들, 또는 메모리 컨텐츠들을 전달 및/또는 수신하는 것에 의해 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수도 있다. 정보, 인수들, 파라미터들, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함한 임의의 적합한 수단을 통해 전달, 포워딩, 또는 송신될 수도 있다.
일부 실시형태들에서, 컴퓨터 판독가능 저장 디바이스들, 매체들, 및 메모리들은 비트 스트림 등을 포함하는 무선 신호 또는 케이블을 포함할 수 있다. 하지만, 언급될 때, 비일시적인 컴퓨터 판독가능 저장 매체들은 에너지, 캐리어 신호들, 전자기 파들, 및 신호들 그 자체와 같은 매체들을 명시적으로 배제한다.
이들 개시들에 따른 프로세스들 및 방법들을 구현하는 디바이스들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 디스크립션 언어들, 또는 이들의 임의의 조합을 포함할 수 있으며, 다양한 폼 팩터들 중 임의의 것을 취할 수 있다. 소프트웨어, 펌웨어, 미들웨어, 또는 마이크로코드로 구현될 경우, 필요한 태스크들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들 (예를 들어, 컴퓨터 프로그램 제품) 은 컴퓨터 판독가능 또는 머신 판독가능 매체에 저장될 수도 있다. 프로세서(들)는 필요한 태스크들을 수행할 수도 있다. 폼 팩터들의 통상적인 예들은 랩탑들, 스마트 폰들, 모바일 폰들, 태블릿 디바이스들 또는 다른 소형 폼 팩터 개인용 컴퓨터들, 개인용 디지털 보조기들, 랙마운트 디바이스들, 자립형 디바이스들 등을 포함한다. 본 명세서에서 설명된 기능은 또한, 주변기기들 또는 애드-인 (add-in) 카드들에서 구현될 수 있다. 그러한 기능성은 또한, 추가의 예에 의해, 단일 디바이스에서 실행되는 상이한 칩들 또는 상이한 프로세스들 중에서 회로 보드 상에서 구현될 수 있다.
명령들, 이러한 명령들을 운반하기 위한 매체들, 그것들을 실행하기 위한 컴퓨팅 리소스들, 및 이러한 컴퓨팅 리소스들을 지원하기 위한 다른 구조들은 본 개시에서 설명된 기능들을 제공하기 위한 예시적인 수단들이다.
전술한 설명에서, 본원의 양태들은 이들의 구체적 실시형태를 참조하여 설명되었지만, 당업자는 본 출원이 이에 제한되지 않는다는 것을 인식할 것이다. 따라서, 본 출원의 예시적인 실시형태들이 본 명세서에 상세하게 설명되었지만, 본 발명의 개념은 다르게는 다양하게 구체화되고 채용될 수도 있으며, 첨부된 청구범위는 선행 기술에 의해 제한되는 것을 제외하고, 그러한 변형들을 포함하는 것으로 해석되도록 의도된다. 전술한 애플리케이션의 다양한 특징들 및 양태들은 개별적으로 또는 공동으로 사용될 수도 있다. 추가로, 실시형태들은 본 명세서의 더 넓은 사상 및 범위로부터 일탈함없이 본 명세서에서 설명된 것들을 넘어서는 임의의 수의 환경들 및 어플리케이션들에서 활용될 수 있다. 본 명세서 및 도면들은, 이에 따라, 제한적이라기 보다는 예시적인 것으로서 간주되어야 한다. 예시의 목적으로, 방법들은 특정 순서로 설명되었다. 대안적인 실시형태들에서, 방법들은 설명된 것과는 상이한 순서로 수행될 수도 있음이 인식되어야 한다.
당업자는 본 명세서에 사용된 미만 ("<") 및 초과 (">") 기호 또는 용어가 설명의 범위를 벗어남이 없이 이하 ("≤") 및 이상 ("≥") 으로 각각 대체될 수 있음을 주지할 것이다.
컴포넌트들이 특정 동작을 수행하도록 "구성된" 것으로 기술되는 경우, 그러한 구성은 예를 들어, 전자 회로 또는 다른 하드웨어를 설계하여 그 동작을 수행하는 것에 의해, 프로그래밍 가능한 전자 회로 (예를 들어, 마이크로프로세서 또는 다른 적절한 전자 회로) 를 프로그래밍하여 그 동작을 수행하는 것에 의해 또는 이들의 임의의 조합에 의해, 달성될 수 있다.
구절 "커플링된" 은 직접 또는 간접적으로 다른 컴포넌트에 물리적으로 연결되는 임의의 컴포넌트, 및/또는 직접 또는 간접적으로 다른 컴포넌트와 통신하는 (예를 들어, 유선 또는 무선 연결, 및/또는 다른 적절한 통신 인터페이스를 통해 다른 컴포넌트에 연결되는) 임의의 컴포넌트를 지칭한다.
세트 "중 적어도 하나" 또는 세트 "중 하나 이상" 을 인용하는 청구항 언어 또는 다른 언어는 그 세트의 하나의 멤버 또는 그 세트의 다중의 멤버들 (임의의 조합) 이 청구항을 충족하는 것을 나타낸다. 예를 들어, "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 의 세트에 열거되지 않은 항목들을 추가적으로 포함할 수 있다.
본 명세서에서 개시되는 실시형태들에 관련하여 설명되는 다양한 예시적 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 그 조합들로서 구현될 수도 있다. 하드웨어와 소프트웨어의 이러한 상호대체 가능성을 분명히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 일반적으로 그들의 기능의 관점에서 상기 설명되었다. 이러한 기능성이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지는 전체 시스템에 부과된 설계 제약들 및 특정한 애플리케이션에 의존한다. 당업자는 설명된 기능을 각각의 특정 애플리케이션에 대하여 다양한 방식들로 구현할 수도 있지만, 그러한 구현의 결정들이 본 출원의 범위로부터의 일탈을 야기하는 것으로서 해석되지는 않아야 한다.
본 명세서에서 설명된 기법들은 또한 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 그러한 기술들은 범용 컴퓨터들, 무선 통신 디바이스 핸드셋들, 또는 무선 통신 디바이스 핸드셋들 및 다른 디바이스들에서의 애플리케이션을 포함하여 다중의 이용들을 갖는 집적 회로 디바이스들과 같은 임의의 다양한 디바이스들에서 구현될 수도 있다. 모듈들, 또는 컴포넌트들로서 설명된 임의의 특징들은 집적 로직 디바이스 (integrated logic device) 에서 함께 구현되거나 또는 이산이지만 연동적인 (interoperable) 로직 디바이스들로서 따로 구현될 수도 있다. 소프트웨어로 구현되면, 기법들은, 실행될 때, 위에서 설명된 방법들 중 하나 이상을 수행하는 명령들을 포함하는 프로그램 코드를 포함하는 컴퓨터 판독가능 데이터 저장 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터 판독가능 데이터 저장 매체는 패키징 재료들을 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터 판독가능 매체는 메모리 또는 데이터 저장 매체, 예컨대 동기식 랜덤 액세스 메모리 (SDRAM) 와 같은 랜덤 액세스 메모리 (DRAM), 판독 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 전기적 소거가능 프로그램가능 판독 전용 메모리 (EEPROM), 플래시 메모리, 자기 또는 광학 데이터 저장 매체 등을 포함할 수도 있다. 부가적으로 또는 대안으로 기법들은, 전파된 신호들 또는 파들과 같은, 컴퓨터에 의해 실행되고 및/또는, 액세스될 수 있는 그리고 명령들 또는 데이터 구조들의 형태로 프로그램 코드를 반송 또는 통신하는 컴퓨터 판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다.
프로그램 코드는 하나 이상의 프로세서, 예컨대 하나 이상의 디지털 신호 프로세서 (DSP), 범용 마이크로프로세서들, 주문형 집적 회로들 (ASIC들), 필드 프로그램가능 로직 어레이들 (FPGA들), 또는 다른 균등한 통합된 또는 별개의 로직 회로부를 포함할 수도 있는 프로세서에 의해 실행될 수도 있다. 그러한 프로세서는 본 개시에서 설명된 기법들 중 임의의 기법을 수행하도록 구성될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 그 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로 제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수도 있다. 따라서, 본 명세서에 사용된 용어 "프로세서" 는 임의의 전술한 구조, 전술한 구조의 임의의 조합, 또는 본 명세서에 설명된 기술들의 구현에 적합한 임의의 다른 구조 또는 장치를 지칭할 수도 있다.
본 개시의 예시적인 양태는 다음을 포함한다:
양태 1: 비디오 데이터를 프로세싱하는 방법으로서, 방법은, 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하는 단계; 인코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 단계; 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하는 단계; 및 프레임의 결합된 표현에 기초하여 인코딩된 비디오 데이터를 생성하는 단계를 포함한다.
양태 2: 양태 1 의 방법은: 인코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 프레임의 루미넌스 채널과 연관된 출력 값들을 프로세싱하는 단계; 및 인코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 프로세싱하는 단계를 포함하고, 결합된 표현은 제 1 정규화 계층의 출력 및 제 2 정규화 계층의 출력에 기초하여 생성된다.
양태 3: 양태들 1 또는 2 의 어느 하나의 방법은, 인코딩된 비디오 데이터를 양자화하는 단계를 더 포함한다.
양태 4: 양태들 1 내지 3 의 어느 하나의 방법은, 인코딩된 비디오 데이터를 엔트로피 코딩하는 단계를 더 포함한다.
양태 5: 양태들 1 내지 4 의 어느 하나의 방법은, 인코딩된 비디오 데이터를 메모리에 저장하는 단계를 더 포함한다.
양태 6: 양태들 1 내지 5 의 어느 하나의 방법은, 인코딩된 비디오 데이터를 송신 매체를 통해 적어도 하나의 디바이스에 송신하는 단계를 더 포함한다.
양태 7: 양태들 1 내지 6 의 어느 하나의 방법은, 인코딩된 프레임을 획득하는 단계; 신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하는 단계; 및 디코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하는 단계를 더 포함한다.
양태 8: 양태들 1 내지 7 의 어느 하나의 방법에서, 프레임은 비디오 프레임을 포함한다.
양태 9: 양태들 1 내지 8 의 어느 하나의 방법에서, 적어도 하나의 크로미넌스 채널은 크로미넌스-청색 채널 및 크로미넌스-적색 채널을 포함한다.
양태 10: 양태들 1 내지 9 의 어느 하나의 방법에서, 프레임은 루미넌스-크로미넌스 (YUV) 포맷을 갖는다.
양태 11: 양태들 1 내지 10 의 어느 하나의 방법에서, 적어도 하나의 크로미넌스 채널 및 루미넌스 채널은 상이한 통계적 특성들을 가지며, 그리고 제 1 정규화 계층 및 제 2 정규화 계층은 적어도 하나의 크로미넌스 채널과 연관된 출력 값들 및 루미넌스 채널과 연관된 출력 값들의 통계적 특성들을 밸런싱하도록 구성된다.
양태 12: 양태들 1 내지 11 의 어느 하나의 방법에서, 인코더 서브-네트워크의 제 1 컨볼루션 계층은 프레임의 루미넌스 채널을 서브샘플링한다.
양태 13: 양태 12 의 방법에서, 제 1 컨볼루션 계층의 루미넌스 필터는 제 2 컨볼루션 계층의 크로미넌스 필터의 크로미넌스 필터 사이즈보다 큰 루미넌스 필터 사이즈를 갖는다.
양태 14: 양태들 1 내지 13 의 어느 하나의 방법은, 프레임의 루미넌스 채널과 연관된 입력 루미넌스 값들에 액세스하는 단계 - 입력 루미넌스 값들은 루미넌스 해상도와 추가로 연관됨 -; 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 입력 크로미넌스 값들에 액세스하는 단계 - 입력 크로미넌스 값들은 크로미넌스 해상도와 추가로 연관되고, 루미넌스 해상도는 크로미넌스 해상도보다 더 큼 - 를 더 포함한다.
양태 15: 양태 14 의 방법에서, 제 1 컨볼루션 계층의 루미넌스 필터는 5 픽셀 x 5 픽셀의 루미넌스 필터 사이즈를 갖고, 제 2 컨볼루션 계층의 크로미넌스 필터는 3 픽셀 x 3 픽셀의 크로미넌스 필터 사이즈를 갖는다.
양태 16: 비디오 데이터를 프로세싱하는 장치는: 메모리; 및 메모리에 커플링된 하나 이상의 프로세서들을 포함하고, 하나이상의 프로세서들은 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하고; 인코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하고; 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하고; 그리고 프레임의 결합된 표현에 기초하여 인코딩된 비디오 데이터를 생성하도록 구성된다.
양태 17: 양태 16 의 장치에서, 하나 이상의 프로세서들은: 인코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 프레임의 루미넌스 채널과 연관된 출력 값들을 프로세싱하고; 그리고 인코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 프로세싱하도록 구성되고; 결합된 표현은 제 1 정규화 계층의 출력 및 제 2 정규화 계층의 출력에 기초하여 생성된다.
양태 18: 양태들 16 또는 17 의 어느 하나의 장치에서, 하나 이상의 프로세서들은: 인코딩된 비디오 데이터를 양자화하도록 구성된다.
양태 19: 양태들 16 내지 18 의 어느 하나의 장치에서, 하나 이상의 프로세서들은: 인코딩된 비디오 데이터를 엔트로피 코딩하도록 구성된다.
양태 20: 양태들 16 내지 19 의 어느 하나의 장치에서, 하나 이상의 프로세서들은: 인코딩된 비디오 데이터를 메모리에 저장하도록 구성된다.
양태 21: 양태들 16 내지 20 의 어느 하나의 장치에서, 하나 이상의 프로세서들은: 인코딩된 비디오 데이터를 송신 매체를 통해 적어도 하나의 디바이스에 송신하도록 구성된다.
양태 22: 양태들 16 내지 21 의 어느 하나의 장치에서, 하나 이상의 프로세서들은: 인코딩된 프레임을 획득하고; 신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하고; 그리고 디코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하도록 구성된다.
양태 23: 양태들 16 내지 22 의 어느 하나의 장치에서, 프레임은 비디오 프레임을 포함한다.
양태 24: 양태들 16 내지 23 의 어느 하나의 장치에서, 적어도 하나의 크로미넌스 채널은 크로미넌스-청색 채널 및 크로미넌스-적색 채널을 포함한다.
양태 25: 양태들 16 내지 24 의 어느 하나의 장치에서, 프레임은 루미넌스-크로미넌스 (YUV) 포맷을 갖는다.
양태 26: 양태들 16 내지 25 의 어느 하나의 장치에서, 하나 이상의 프로세서들은 신경 프로세싱 유닛 (NPU) 을 포함한다.
양태 27: 양태들 16 내지 26 의 어느 하나의 장치에서, 장치는 모바일 디바이스를 포함한다.
양태 28. 양태들 16 내지 27 의 어느 하나의 장치에서, 장치는 증강 현실 디바이스를 포함한다.
양태 29: 양태들 16 내지 28 의 어느 하나의 장치는 디스플레이를 더 포함한다.
양태 30: 양태들 16 내지 29 의 어느 하나의 장치에서, 장치는 텔레비전을 포함한다.
양태 31: 양태들 16 내지 30 의 어느 하나의 장치에서, 장치는 하나 이상의 비디오 프레임들을 캡처하도록 구성된 카메라를 포함한다.
양태 32: 양태들 16 내지 31 의 어느 하나의 장치에서, 적어도 하나의 크로미넌스 채널 및 루미넌스 채널은 상이한 통계적 특성들을 가지며, 그리고 제 1 정규화 계층 및 제 2 정규화 계층은 적어도 하나의 크로미넌스 채널과 연관된 출력 값들 및 루미넌스 채널과 연관된 출력 값들의 통계적 특성들을 밸런싱하도록 구성된다.
양태 33: 양태들 16 내지 32 의 어느 하나의 장치에서, 인코더 서브-네트워크의 제 1 컨볼루션 계층은 프레임의 루미넌스 채널을 서브샘플링한다.
양태 34: 양태 33 의 장치에서, 제 1 컨볼루션 계층의 루미넌스 필터는 제 2 컨볼루션 계층의 크로미넌스 필터의 크로미넌스 필터 사이즈보다 큰 루미넌스 필터 사이즈를 갖는다.
양태 35: 양태들 16 내지 34 의 어느 하나의 장치에서, 하나 이상의 프로세서들은: 프레임의 루미넌스 채널과 연관된 입력 루미넌스 값들에 액세스하고 - 입력 루미넌스 값들은 루미넌스 해상도와 추가로 연관됨 -; 그리고 프레임의 적어도 하나의 크로미넌스 채널과 연관된 입력 크로미넌스 값들에 액세스하도록 구성되고 - 입력 크로미넌스 값들은 크로미넌스 해상도와 추가로 연관되고, 루미넌스 해상도는 크로미넌스 해상도보다 더 크다.
양태 36: 양태 35 의 장치에서, 제 1 컨볼루션 계층의 루미넌스 필터는 5 픽셀 x 5 픽셀의 루미넌스 필터 사이즈를 갖고, 제 2 컨볼루션 계층의 크로미넌스 필터는 3 픽셀 x 3 픽셀의 크로미넌스 필터 사이즈를 갖는다.
양태 37: 양태들 16 내지 36 의 어느 하나의 장치에서, 장치는 모바일 디바이스를 포함한다.
양태 38: 양태들 16 내지 37 의 어느 하나의 장치는 프로세서에 커플링된 디스플레이를 더 포함한다.
양태 39: 컴퓨터 판독가능 저장 매체는, 실행될 때, 하나 이상의 프로세서들로 하여금 양태 1 내지 38 의 동작들 중 어느 것을 수행하게 한다.
양태 40: 장치는 양태 1 내지 38 의 동작들 중 어느 것을 수행하기 위한 수단을 포함한다.
양태 41: 비디오 데이터를 프로세싱하는 방법으로서, 방법은: 인코딩된 프레임을 획득하는 단계; 신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하는 단계; 디코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하는 단계; 및 루미넌스 채널과 연관된 복원된 출력 값들 및 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 포함하는 출력 프레임을 생성하는 단계를 포함한다.
양태 42: 양태 41 의 방법은: 디코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 인코딩된 프레임의 루미넌스 채널과 연관된 값들을 프로세싱하는 단계 - 루미넌스 채널과 연관된 복원된 출력 값들은 제 1 정규화 계층의 출력에 기초하여 생성됨 -; 및 디코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 값들을 프로세싱하는 단계 - 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들은 제 2 정규화 계층의 출력에 기초하여 생성됨 - 를 더 포함한다.
양태 43: 양태들 41 또는 42 의 어느 하나의 방법에서, 디코더 서브-네트워크의 제 1 컨볼루션 계층은 인코딩된 프레임의 루미넌스 채널을 업샘플링한다.
양태 44: 양태들 41 내지 43 의 어느 것의 방법에서, 제 1 컨볼루션 계층의 루미넌스 필터는 디코더 서브-네트워크의 제 2 컨볼루션 계층의 크로미넌스 필터의 크로미넌스 필터 사이즈보다 큰 루미넌스 필터 사이즈를 갖는다.
양태 45: 양태 44 의 방법에서, 루미넌스 필터 사이즈는 9 픽셀 x 9 픽셀이고, 크로미넌스 필터 사이즈는 5 픽셀 x 5 픽셀이다.
양태 46: 양태들 41 내지 45 의 어느 것의 방법에서, 인코딩된 프레임의 샘플들을 엔트로피 디코딩하는 단계를 더 포함한다.
양태 47: 양태들 41 내지 46 의 어느 것의 방법은, 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하는 단계; 인코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 단계; 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하는 단계; 및 프레임의 결합된 표현에 기초하여 인코딩된 프레임을 생성하는 단계를 더 포함한다.
양태 48: 양태들 41 내지 47 의 어느 것의 방법에서, 신경망 시스템은 신경 프로세싱 유닛 (NPU) 의 일부이다.
양태 49: 양태들 41 또는 48 의 어느 하나의 방법은, 인코딩된 프레임의 샘플들을 양자화해제한다.
양태 50: 양태들 41 내지 49 의 어느 하나의 방법은, 출력 프레임을 메모리에 저장하는 단계를 더 포함한다.
양태 51: 양태들 41 내지 50 의 어느 하나의 방법은, 출력 프레임을 디스플레이하는 단계를 더 포함한다.
양태 52: 양태들 41 내지 51 의 어느 하나의 방법에서, 인코딩 프레임은 인코딩된 비디오 프레임을 포함한다.
양태 53: 양태들 41 내지 52 의 어느 하나의 방법에서, 적어도 하나의 크로미넌스 채널은 크로미넌스-청색 채널 및 크로미넌스-적색 채널을 포함한다.
양태 54: 양태들 41 내지 53 의 어느 하나의 방법에서, 인코딩된 프레임은 루미넌스-크로미넌스 (YUV) 포맷을 갖는다.
양태 55: 비디오 데이터를 프로세싱하는 장치는: 메모리; 및 메모리에 커플링된 하나 이상의 프로세서들을 포함하고, 하나이상의 프로세서들은 인코딩된 프레임을 획득하고; 신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하고; 디코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하고; 루미넌스 채널과 연관된 복원된 출력 값들 및 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 포함하는 출력 프레임을 생성하도록 구성된다.
양태 56: 양태 55 의 장치에서, 하나 이상의 프로세서들은: 디코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 인코딩된 프레임의 루미넌스 채널과 연관된 값들을 프로세싱하고 - 루미넌스 채널과 연관된 복원된 출력 값들은 제 1 정규화 계층의 출력에 기초하여 생성됨 -; 그리고 디코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 값들을 프로세싱하도록 구성되고, 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들은 제 2 정규화 계층의 출력에 기초하여 생성된다.
양태 57: 양태들 55 또는 56 의 어느 하나의 장치에서, 디코더 서브-네트워크의 제 1 컨볼루션 계층은 인코딩된 프레임의 루미넌스 채널을 업샘플링한다.
양태 58: 양태들 55 내지 57 의 어느 하나의 장치는, 제 1 컨볼루션 계층의 루미넌스 필터는 디코더 서브-네트워크의 제 2 컨볼루션 계층의 크로미넌스 필터의 크로미넌스 필터 사이즈보다 큰 루미넌스 필터 사이즈를 갖는다.
양태 59: 양태 58 의 장치에서, 루미넌스 필터 사이즈는 9 픽셀 x 9 픽셀이고, 크로미넌스 필터 사이즈는 5 픽셀 x 5 픽셀이다.
양태 60: 양태들 55 내지 59 의 어느 하나의 장치에서, 하나 이상의 프로세서들은 인코딩된 프레임의 샘플들을 엔트로피 디코딩하도록 구성된다.
양태 61: 양태들 55 내지 60 의 어느 하나의 장치에서, 하나 이상의 프로세서들은: 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하고; 인코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하고; 프레임의 루미넌스 채널과 연관된 출력 값들 및 프레임의 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하고; 그리고 프레임의 결합된 표현에 기초하여 인코딩된 프레임을 생성하도록 구성된다.
양태 62: 양태들 55 내지 61 의 어느 것의 장치는, 신경망 시스템은 신경 프로세싱 유닛 (NPU) 의 일부이다.
양태 63: 양태들 55 또는 62 의 어느 하나의 장치에서, 하나 이상의 프로세서들은 인코딩된 프레임의 샘플들을 양자화해제하도록 구성된다.
양태 64: 양태들 55 내지 63 의 어느 하나의 장치에서, 하나 이상의 프로세서들은 출력 프레임이 메모리에 저장되게 하도록 구성된다.
양태 65: 양태들 55 내지 64 의 어느 하나의 장치에서, 하나 이상의 프로세서들은 출력 프레임이 디스플레이되게 하도록 구성된다.
양태 66: 양태들 55 내지 65 의 어느 하나의 장치에서, 인코딩 프레임은 인코딩된 비디오 프레임을 포함한다.
양태 67: 양태들 55 내지 66 의 어느 하나의 장치에서, 적어도 하나의 크로미넌스 채널은 크로미넌스-청색 채널 및 크로미넌스-적색 채널을 포함한다.
양태 68: 양태들 55 내지 67 의 어느 하나의 장치에서, 인코딩된 프레임은 루미넌스-크로미넌스 (YUV) 포맷을 갖는다.
양태 69: 양태들 55 내지 68 의 어느 하나의 장치에서, 프로세서에 커플링된 디스플레이를 더 포함하고, 출력 프레임은 장치의 디스플레이에 출력된 비디오 프레임을 포함한다.
양태 70: 컴퓨터 판독가능 저장 매체는, 실행될 때, 하나 이상의 프로세서들로 하여금 양태 41 내지 69 의 동작들 중 어느 것을 수행하게 한다.
양태 71: 장치는 양태 41 내지 69 의 동작들 중 어느 것을 수행하기 위한 수단을 포함한다.
양태 72: 방법은 양태 1 내지 38의 동작들의 어느 하나 및 양태들 41 내지 69 의 동작들의 어느 하나를 수행한다.
양태 73: 비디오 데이터를 프로세싱하는 장치는: 메모리; 및 메모리에 커플링된 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은 양태 1 내지 38의 동작들의 어느 하나 및 양태들 41 내지 69 의 동작들의 어느 하나를 수행하도록 한다.
양태 74: 명령들을 저장한 컴퓨터 판독가능 저장 매체로서, 상기 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금: 양태 1 내지 38의 동작들의 어느 하나 및 양태들 41 내지 69 의 동작들의 어느 하나를 수행하게 한다.
양태 75: 장치는 양태 1 내지 38 의 동작들의 어느 하나 및 양태들 41 내지 69 의 동작들의 어느 하나를 수행하기 위한 수단을 포함한다.

Claims (30)

  1. 비디오 데이터를 프로세싱하는 장치로서,
    메모리, 및
    상기 메모리에 커플링된 프로세서를 포함하고,
    상기 프로세서는:
    신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하는 것으로서, 상기 인코더 서브-네트워크의 상기 제 1 컨볼루션 계층은 상기 프레임의 적어도 하나의 크로미넌스 채널의 해상도에 매칭하는 해상도로 상기 프레임의 상기 루미넌스 채널을 서브샘플링하도록 구성되는, 상기 루미넌스 채널과 연관된 출력 값들을 생성하고;
    상기 인코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하고;
    상기 프레임의 상기 루미넌스 채널과 연관된 상기 출력 값들 및 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 출력 값들을 결합하는 것에 의해 상기 프레임의 결합된 표현을 생성하고; 그리고
    상기 프레임의 상기 결합된 표현에 기초하여 인코딩된 비디오 데이터를 생성하도록 구성되는, 비디오 데이터를 프로세싱하는 장치.
  2. 제 1 항에 있어서,
    상기 프로세서는:
    상기 인코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 상기 프레임의 상기 루미넌스 채널과 연관된 상기 출력 값들을 프로세싱하고; 그리고
    상기 인코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 출력 값들을 프로세싱하도록 구성되고;
    상기 결합된 표현은 상기 제 1 정규화 계층의 출력 및 상기 제 2 정규화 계층의 출력에 기초하여 생성되는, 비디오 데이터를 프로세싱하는 장치.
  3. 제 2 항에 있어서,
    상기 적어도 하나의 크로미넌스 채널 및 상기 루미넌스 채널은 상이한 통계적 특성들을 가지며, 그리고 상기 제 1 정규화 계층 및 상기 제 2 정규화 계층은 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 출력 값들 및 상기 루미넌스 채널과 연관된 상기 출력 값들의 통계적 특성들을 밸런싱하도록 구성되는, 비디오 데이터를 프로세싱하는 장치.
  4. 제 1 항에 있어서,
    상기 제 1 컨볼루션 계층의 루미넌스 필터는 상기 제 2 컨볼루션 계층의 크로미넌스 필터의 크로미넌스 필터 사이즈보다 큰 루미넌스 필터 사이즈를 갖는, 비디오 데이터를 프로세싱하는 장치.
  5. 제 1 항에 있어서,
    상기 프로세서는 또한:
    상기 프레임의 상기 루미넌스 채널과 연관된 입력 루미넌스 값들에 기초하여 상기 프레임의 상기 루미넌스 채널과 연관된 출력 값들을 생성하는 것으로서, 상기 입력 루미넌스 값들은 루미넌스 해상도와 추가로 연관되는, 상기 루미넌스 채널과 연관된 출력 값들을 생성하고; 그리고
    상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 입력 크로미넌스 값들에 기초하여 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 것으로서, 상기 입력 크로미넌스 값들은 크로미넌스 해상도와 추가로 연관되고, 상기 루미넌스 해상도는 상기 크로미넌스 해상도보다 큰, 상기 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하도록 구성되는, 비디오 데이터를 프로세싱하는 장치.
  6. 제 1 항에 있어서,
    상기 제 1 컨볼루션 계층의 루미넌스 필터는 5 픽셀 x 5 픽셀의 루미넌스 필터 사이즈를 갖고, 상기 제 2 컨볼루션 계층의 크로미넌스 필터는 3 픽셀 x 3 픽셀의 크로미넌스 필터 사이즈를 갖는, 비디오 데이터를 프로세싱하는 장치.
  7. 제 1 항에 있어서,
    상기 장치는 모바일 디바이스를 포함하는, 비디오 데이터를 프로세싱하는 장치.
  8. 제 1 항에 있어서,
    상기 프로세서에 커플링된 디스플레이를 더 포함하는, 비디오 데이터를 프로세싱하는 장치.
  9. 비디오 데이터를 프로세싱하는 방법으로서,
    신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 프레임의 루미넌스 채널과 연관된 출력 값들을 생성하는 단계로서, 상기 인코더 서브-네트워크의 상기 제 1 컨볼루션 계층은 상기 프레임의 적어도 하나의 크로미넌스 채널의 해상도에 매칭하는 해상도로 상기 프레임의 상기 루미넌스 채널을 서브샘플링하도록 구성되는, 상기 루미넌스 채널과 연관된 출력 값들을 생성하는 단계;
    상기 인코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 단계;
    상기 프레임의 상기 루미넌스 채널과 연관된 상기 출력 값들 및 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 출력 값들을 결합하는 것에 의해 상기 프레임의 결합된 표현을 생성하는 단계; 및
    상기 프레임의 상기 결합된 표현에 기초하여 인코딩된 비디오 데이터를 생성하는 단계를 포함하는, 비디오 데이터를 프로세싱하는 방법.
  10. 제 9 항에 있어서,
    상기 인코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 상기 프레임의 상기 루미넌스 채널과 연관된 상기 출력 값들을 프로세싱하는 단계; 및
    상기 인코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 출력 값들을 프로세싱하는 단계를 더 포함하고,
    상기 결합된 표현은 상기 제 1 정규화 계층의 출력 및 상기 제 2 정규화 계층의 출력에 기초하여 생성되는, 비디오 데이터를 프로세싱하는 방법.
  11. 제 10 항에 있어서,
    상기 적어도 하나의 크로미넌스 채널 및 상기 루미넌스 채널로부터 생성된 인코딩된 프레임을 획득하는 단계;
    상기 신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 상기 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하는 단계; 및
    상기 디코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 상기 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하는 단계를 더 포함하는, 비디오 데이터를 프로세싱하는 방법.
  12. 제 10 항에 있어서,
    상기 프레임은 루미넌스-크로미넌스 (YUV) 포맷을 갖는, 비디오 데이터를 프로세싱하는 방법.
  13. 제 10 항에 있어서,
    상기 적어도 하나의 크로미넌스 채널 및 상기 루미넌스 채널은 상이한 통계적 특성들을 가지며, 그리고 상기 제 1 정규화 계층 및 상기 제 2 정규화 계층은 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 출력 값들 및 상기 루미넌스 채널과 연관된 상기 출력 값들의 통계적 특성들을 밸런싱하도록 구성되는, 비디오 데이터를 프로세싱하는 방법.
  14. 제 9 항에 있어서,
    상기 제 1 컨볼루션 계층의 루미넌스 필터는 상기 제 2 컨볼루션 계층의 크로미넌스 필터의 크로미넌스 필터 사이즈보다 큰 루미넌스 필터 사이즈를 갖는, 비디오 데이터를 프로세싱하는 방법.
  15. 제 9 항에 있어서,
    상기 프레임의 상기 루미넌스 채널과 연관된 입력 루미넌스 값들에 기초하여 상기 프레임의 상기 루미넌스 채널과 연관된 출력 값들을 생성하는 단계로서, 상기 입력 루미넌스 값들은 루미넌스 해상도와 추가로 연관되는, 상기 루미넌스 채널과 연관된 출력 값들을 생성하는 단계; 및
    상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 입력 크로미넌스 값들에 기초하여 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 단계로서, 상기 입력 크로미넌스 값들은 크로미넌스 해상도와 추가로 연관되고, 상기 루미넌스 해상도는 상기 크로미넌스 해상도보다 큰, 상기 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 단계를 더 포함하는, 비디오 데이터를 프로세싱하는 방법.
  16. 비디오 데이터를 프로세싱하는 장치로서,
    메모리, 및
    상기 메모리에 커플링된 프로세서를 포함하고,
    상기 프로세서는:
    인코딩된 프레임을 획득하고;
    신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 상기 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하는 것으로서, 상기 디코더 서브-네트워크의 상기 제 1 컨볼루션 계층은 상기 인코딩된 프레임의 적어도 하나의 크로미넌스 채널의 해상도에 매칭하는 해상도로 상기 루미넌스 채널을 업샘플링하도록 구성되는, 상기 루미넌스 채널과 연관된 복원된 출력 값들을 생성하고;
    상기 디코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 상기 인코딩된 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하고; 그리고
    상기 루미넌스 채널과 연관된 상기 복원된 출력 값들 및 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 복원된 출력 값들을 포함하는 출력 프레임을 생성하도록 구성되는, 비디오 데이터를 프로세싱하는 장치.
  17. 제 16 항에 있어서,
    상기 프로세서는:
    상기 디코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 상기 인코딩된 프레임의 루미넌스 채널과 연관된 값들을 프로세싱하는 것으로서, 상기 루미넌스 채널과 연관된 상기 복원된 출력 값들은 상기 제 1 정규화 계층의 출력에 기초하여 생성되는, 상기 루미넌스 채널과 연관된 값들을 프로세싱하고; 그리고
    상기 디코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 상기 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 값들을 프로세싱하는 것으로서, 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 복원된 출력 값들은 상기 제 2 정규화 계층의 출력에 기초하여 생성되는, 상기 적어도 하나의 크로미넌스 채널과 연관된 값들을 프로세싱하도록 구성되는, 비디오 데이터를 프로세싱하는 장치.
  18. 제 16 항에 있어서,
    상기 제 1 컨볼루션 계층의 루미넌스 필터는 상기 제 2 컨볼루션 계층의 크로미넌스 필터의 크로미넌스 필터 사이즈보다 큰 루미넌스 필터 사이즈를 갖는, 비디오 데이터를 프로세싱하는 장치.
  19. 제 18 항에 있어서,
    상기 루미넌스 필터 사이즈는 9 픽셀 x 9 픽셀이고, 상기 크로미넌스 필터 사이즈는 5 픽셀 x 5 픽셀인, 비디오 데이터를 프로세싱하는 장치.
  20. 제 16 항에 있어서,
    상기 프로세서는:
    상기 인코딩된 프레임의 샘플들을 엔트로피 디코딩하도록 구성되는, 비디오 데이터를 프로세싱하는 장치.
  21. 제 16 항에 있어서,
    상기 프로세서는:
    상기 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 프레임의 상기 루미넌스 채널과 연관된 출력 값들을 생성하고;
    상기 인코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하고;
    상기 프레임의 상기 루미넌스 채널과 연관된 상기 출력 값들 및 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 출력 값들을 결합하는 것에 의해 프레임의 결합된 표현을 생성하고; 그리고
    상기 프레임의 상기 결합된 표현에 기초하여 상기 인코딩된 프레임을 생성하도록 구성되는, 비디오 데이터를 프로세싱하는 장치.
  22. 제 16 항에 있어서,
    상기 프로세서는 신경 프로세싱 유닛 (NPU) 을 포함하는, 비디오 데이터를 프로세싱하는 장치.
  23. 제 16 항에 있어서,
    상기 프로세서에 커플링된 디스플레이를 더 포함하고, 상기 출력 프레임은 상기 장치의 상기 디스플레이에 출력된 비디오 프레임을 포함하는, 비디오 데이터를 프로세싱하는 장치.
  24. 비디오 데이터를 프로세싱하는 방법으로서,
    인코딩된 프레임을 획득하는 단계;
    신경망 시스템의 디코더 서브-네트워크의 제 1 컨볼루션 계층에 의해, 상기 인코딩된 프레임의 루미넌스 채널과 연관된 복원된 출력 값들을 생성하는 단계로서, 상기 디코더 서브-네트워크의 상기 제 1 컨볼루션 계층은 상기 인코딩된 프레임의 적어도 하나의 크로미넌스 채널의 해상도에 매칭하는 해상도로 상기 루미넌스 채널을 업샘플링하도록 구성되는, 상기 루미넌스 채널과 연관된 복원된 출력 값들을 생성하는 단계;
    상기 디코더 서브-네트워크의 제 2 컨볼루션 계층에 의해, 상기 인코딩된 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 복원된 출력 값들을 생성하는 단계; 및
    상기 루미넌스 채널과 연관된 상기 복원된 출력 값들 및 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 복원된 출력 값들을 포함하는 출력 프레임을 생성하는 단계를 포함하는, 비디오 데이터를 프로세싱하는 방법.
  25. 제 24 항에 있어서,
    상기 디코더 서브-네트워크의 제 1 정규화 계층을 사용하여, 상기 인코딩된 프레임의 루미넌스 채널과 연관된 값들을 프로세싱하는 단계로서, 상기 루미넌스 채널과 연관된 상기 복원된 출력 값들은 상기 제 1 정규화 계층의 출력에 기초하여 생성되는, 상기 루미넌스 채널과 연관된 값들을 프로세싱하는 단계; 및
    상기 디코더 서브-네트워크의 제 2 정규화 계층을 사용하여, 상기 인코딩된 프레임의 적어도 하나의 크로미넌스 채널과 연관된 값들을 프로세싱하는 단계로서, 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 복원된 출력 값들은 상기 제 2 정규화 계층의 출력에 기초하여 생성되는, 상기 적어도 하나의 크로미넌스 채널과 연관된 값들을 프로세싱하는 단계를 더 포함하는, 비디오 데이터를 프로세싱하는 방법.
  26. 제 24 항에 있어서,
    상기 제 1 컨볼루션 계층의 루미넌스 필터는 상기 디코더 서브-네트워크의 상기 제 2 컨볼루션 계층의 크로미넌스 필터의 크로미넌스 필터 사이즈보다 큰 루미넌스 필터 사이즈를 갖는, 비디오 데이터를 프로세싱하는 방법.
  27. 제 26 항에 있어서,
    상기 루미넌스 필터 사이즈는 9 픽셀 x 9 픽셀이고, 상기 크로미넌스 필터 사이즈는 5 픽셀 x 5 픽셀인, 비디오 데이터를 프로세싱하는 방법.
  28. 제 24 항에 있어서,
    상기 인코딩된 프레임의 샘플들을 엔트로피 디코딩하는 단계를 더 포함하는, 비디오 데이터를 프로세싱하는 방법.
  29. 제 24 항에 있어서,
    상기 신경망 시스템의 인코더 서브-네트워크의 제 1 컨볼루션 계층을 사용하여, 프레임의 상기 루미넌스 채널과 연관된 출력 값들을 생성하는 단계;
    상기 인코더 서브-네트워크의 제 2 컨볼루션 계층을 사용하여, 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 출력 값들을 생성하는 단계;
    상기 프레임의 상기 루미넌스 채널과 연관된 상기 출력 값들 및 상기 프레임의 상기 적어도 하나의 크로미넌스 채널과 연관된 상기 출력 값들을 결합하는 것에 의해 상기 프레임의 결합된 표현을 생성하는 단계; 및
    상기 프레임의 상기 결합된 표현에 기초하여 상기 인코딩된 프레임을 생성하는 단계를 더 포함하는, 비디오 데이터를 프로세싱하는 방법.
  30. 제 24 항에 있어서,
    상기 신경망 시스템은 신경 프로세싱 유닛 (NPU) 의 부분인, 비디오 데이터를 프로세싱하는 방법.
KR1020237008395A 2020-09-16 2021-08-16 단대단 신경망 기반 비디오 코딩 KR102578967B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063079402P 2020-09-16 2020-09-16
US63/079,402 2020-09-16
US17/182,686 US11477464B2 (en) 2020-09-16 2021-02-23 End-to-end neural network based video coding
US17/182,686 2021-02-23
PCT/US2021/046176 WO2022060505A1 (en) 2020-09-16 2021-08-16 End-to-end neural network based video coding

Publications (2)

Publication Number Publication Date
KR20230041084A KR20230041084A (ko) 2023-03-23
KR102578967B1 true KR102578967B1 (ko) 2023-09-14

Family

ID=80627338

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237008395A KR102578967B1 (ko) 2020-09-16 2021-08-16 단대단 신경망 기반 비디오 코딩

Country Status (7)

Country Link
US (1) US11477464B2 (ko)
EP (1) EP4214683A1 (ko)
KR (1) KR102578967B1 (ko)
CN (1) CN116114247A (ko)
BR (1) BR112023003932A2 (ko)
TW (1) TW202213997A (ko)
WO (1) WO2022060505A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111508038A (zh) * 2020-04-17 2020-08-07 北京百度网讯科技有限公司 图像处理方法、装置、电子设备及计算机可读存储介质
US20220286696A1 (en) * 2021-03-02 2022-09-08 Samsung Electronics Co., Ltd. Image compression method and apparatus
CN113128116B (zh) * 2021-04-20 2023-09-26 上海科技大学 可用于轻量级神经网络的纯整型量化方法
US20230186435A1 (en) * 2021-12-14 2023-06-15 Netflix, Inc. Techniques for component-based image preprocessing
CN114513660B (zh) * 2022-04-19 2022-09-06 宁波康达凯能医疗科技有限公司 一种基于卷积神经网络的帧间图像模式决策方法
KR20240002346A (ko) * 2022-06-29 2024-01-05 삼성전자주식회사 Ai 부호화/복호화를 이용하여 영상을 처리하는 전자 장치 및 그 제어 방법
WO2024081872A1 (en) * 2022-10-14 2024-04-18 Bytedance Inc. Method, apparatus, and medium for video processing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150278628A1 (en) 2014-03-27 2015-10-01 Qualcomm Incorporated Invariant object representation of images using spiking neural networks
WO2019031410A1 (ja) 2017-08-10 2019-02-14 シャープ株式会社 画像フィルタ装置、画像復号装置、および画像符号化装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109426858B (zh) 2017-08-29 2021-04-06 京东方科技集团股份有限公司 神经网络、训练方法、图像处理方法及图像处理装置
US11363302B2 (en) * 2017-10-12 2022-06-14 Mediatek Inc. Method and apparatus of neural network for video coding
US11388439B2 (en) * 2019-10-21 2022-07-12 Google Llc Sparse matrix representation using a boundary of non-zero coefficients

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150278628A1 (en) 2014-03-27 2015-10-01 Qualcomm Incorporated Invariant object representation of images using spiking neural networks
WO2019031410A1 (ja) 2017-08-10 2019-02-14 シャープ株式会社 画像フィルタ装置、画像復号装置、および画像符号化装置

Also Published As

Publication number Publication date
CN116114247A (zh) 2023-05-12
US20220086463A1 (en) 2022-03-17
TW202213997A (zh) 2022-04-01
EP4214683A1 (en) 2023-07-26
BR112023003932A2 (pt) 2023-04-11
US11477464B2 (en) 2022-10-18
KR20230041084A (ko) 2023-03-23
WO2022060505A1 (en) 2022-03-24

Similar Documents

Publication Publication Date Title
KR102578967B1 (ko) 단대단 신경망 기반 비디오 코딩
US11405626B2 (en) Video compression using recurrent-based machine learning systems
KR20230074137A (ko) 머신 러닝 시스템들을 이용한 인스턴스 적응적 이미지 및 비디오 압축
US20220191523A1 (en) Front-end architecture for neural network based video coding
WO2022081307A1 (en) Joint termination of bidirectional data blocks for parallel coding
US20240064318A1 (en) Apparatus and method for coding pictures using a convolutional neural network
EP4305839A1 (en) Learned b-frame coding using p-frame coding system
CN117980916A (zh) 用于媒体的变换译码的基于变换器的架构
US11399198B1 (en) Learned B-frame compression
US12003734B2 (en) Machine learning based flow determination for video coding
US20220272355A1 (en) Machine learning based flow determination for video coding
US20240015318A1 (en) Video coding using optical flow and residual predictors
KR20230150274A (ko) 비디오 코딩을 위한 기계 학습 기반 플로우 결정
KR20230117346A (ko) 뉴럴 네트워크 기반 비디오 코딩을 위한 프론트-엔드 아키텍처
US20240013441A1 (en) Video coding using camera motion compensation and object motion compensation
CN116547965A (zh) 用于基于神经网络的视频译码的前端架构
CN116965032A (zh) 用于视频译码的基于机器学习的流确定
TW202404360A (zh) 用於具有機器學習增強的視訊解碼的位元速率估計
WO2024073213A1 (en) Diffusion-based data compression
WO2024015665A1 (en) Bit-rate estimation for video coding with machine learning enhancement

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant