KR102627879B1 - 심층 강화 학습을 통한 종단 간 종속 양자화 - Google Patents

심층 강화 학습을 통한 종단 간 종속 양자화 Download PDF

Info

Publication number
KR102627879B1
KR102627879B1 KR1020227024220A KR20227024220A KR102627879B1 KR 102627879 B1 KR102627879 B1 KR 102627879B1 KR 1020227024220 A KR1020227024220 A KR 1020227024220A KR 20227024220 A KR20227024220 A KR 20227024220A KR 102627879 B1 KR102627879 B1 KR 102627879B1
Authority
KR
South Korea
Prior art keywords
state
action
video
delete delete
value
Prior art date
Application number
KR1020227024220A
Other languages
English (en)
Other versions
KR20220114062A (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 KR20220114062A publication Critical patent/KR20220114062A/ko
Application granted granted Critical
Publication of KR102627879B1 publication Critical patent/KR102627879B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image 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/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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation

Landscapes

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

Abstract

프로세서 또는 프로세서들로 하여금, 비디오 데이터의 입력 스트림을 획득하게 하고, 입력 스트림의 부동 소수점 수에 기초하여 키 계산을 하게 하고, 현재 종속 양자화(DQ) 상태 예측을 수행하게 하고, 상태 예측기와 다수의 이전 키와 다수의 이전 종속 양자화(DQ) 상태에 기초하여 현재 DQ 상태를 예측하게 하고, 상기 키 및 상기 현재 DQ 상태에 기초하여 부동 소수점 수를 재구축하게 하고, 재구축된 부동 소수점 수에 기초하여 상기 비디오를 코딩하게 하도록 구성된 컴퓨터 코드를 포함하는 방법 및 장치가 포함된다.

Description

심층 강화 학습을 통한 종단 간 종속 양자화
관련 출원에 대한 상호 참조
본 출원은 2020년 11월 30일에 출원된 미국 가출원 제63/119,446호 및 2021년 9월 29일에 출원된 미국 가출원 제17/488,438호에 대한 우선권을 주장하며, 이들 출원은 그 내용 전체가 인용에 의해 본 출원에 명시적으로 포함된다.
본 개시는 심층 강화 학습(Deep Reinforcement Learning, DRL)을 사용한 학습 기반 단대단(End-to-End, E2E) 종속 양자화(Dependent Quantization, DQ))에 관한 것으로, 임의의 수의 DQ 상태를 지원하며, 서로 다른 DQ 상태 간의 이행(transition)이 DQN(Deep Q-Network) 알고리즘을 기반으로 자동으로 결정될 수 있다.
ITU-T VCEG(Q6/16) 및 ISO/IEC MPEG(JTC 1/SC 29/WG 11)은 2013(버전 1), 2014(버전 2), 2015(버전 3), 및 2016(버전 4)에 H.265/HEVC(고효율 비디오 코딩) 표준을 발표하였다. 2015년에, 이 두 표준 조직은 HEVC를 능가하는 차세대 비디오 코딩 표준 개발 가능성을 모색하기 위해 JVET(Joint Video Exploration Team)를 공동으로 구성했다. 2017년 10월에, 2017년 10월, 그들은 HEVC(CfP)를 능가하는 능력을 갖춘 비디오 압축에 대한 공동 제안(Joint Call for Proposals)을 발표하였다.
2018년 2월 15일까지, 표준 동적 범위(standard dynamic range, SDR)에 대한 총 22개의 CfP 응답, 높은 동적 범위(high dynamic range, HDR)에 대한 12개의 CfP 응답 및 360개 비디오 카테고리에 대한 12개의 CfP 응답이 각각 제출되었다. 2018년 4월에, 수신된 모든 CfP 응답은 122 MPEG/10차 JVET 회의에서 평가되었다. 이 회의의 결과, JVET는 HEVC를 능가하는 차세대 비디오 코딩의 표준화 프로세스를 공식적으로 개시하였다. 새로운 표준의 이름은 VVC(Versatile Video Coding)로, JVET는 Joint Video Expert Team으로 이름이 변경되었다.
양자화는 이미지 및 비디오 압축 표준 및 제작의 핵심 프로세스이며, 압축 품질 손실의 주요 원인 중 하나이기도 하다. 양자화 효율을 향상시키면, 모든 이미지 및 비디오 압축 태스크에서 성능이 크게 향상된다.
예시적인 실시예에 따르면, 컴퓨터 프로그램 코드를 저장하도록 구성된 메모리 및 상기 컴퓨터 프로그램 코드에 액세스하여 상기 컴퓨터 프로그램 코드가 명령하는 대로 동작하도록 구성된 프로세서 또는 프로세서들을 포함하는 방법 및 장치가 포함된다. 상기 프로그램 코드는, 상기 적어도 하나의 프로세서로 하여금 비디오 데이터의 입력 스트림을 획득하게 하도록 구성된 획득 코드, 상기 적어도 하나의 프로세서로 하여금 입력 스트림에 있는 부동 소수점 수에 기초하여 키를 계산하게 하도록 구성된 계산 코드, 상기 적어도 하나의 프로세서로 하여금 다수의 이전 키와 다수의 이전 DQ 상태에 기초하여 현재 종속 양자화(dependent quantization, DQ) 상태를 예측하게 하도록 구성된 예측 코드, 상기 적어도 하나의 프로세서로 하여금 상기 키 및 상기 현재 DQ 상태에 기초하여 부동 소수점 수를 재구축하게 하도록 구성된 재구축 코드, 및 상기 적어도 하나의 프로세서로 하여금 재구축된 부동 소수점 수에 기초하여 상기 비디오를 코딩하게 하도록 구성된 코딩 코드를 포함한다.
예시적인 실시예에 따르면, 상기 키를 계산하고 상기 부동 소수점 수를 재구축하는 것은 하나 이상의 심층 신경망(deep neural network, DNN)을 구현하는 것을 포함한다.
예시적인 실시예에 따르면, 상기 상태 예측기는 행위와 상기 행위와 연관된 출력 Q 값 사이의 행위-값 매핑 함수를 포함한다.
예시적인 실시예에 따르면, 상기 계산 코드는 추가로 상기 적어도 하나의 프로세서로 하여금, 상기 입력 스트림에 있는 상기 부동 소수점 수를 포함한 복수의 부동 소수점 수에 기초하여, 상기 키를 포함한 복수의 키를 계산하게 하도록 구성되고, 상기 재구축 코드는 추가로 상기 적어도 하나의 프로세서로 하여금, 상기 복수의 키 및 적어도 상기 현재 DQ 상태에 기초하여 상기 복수의 부동 소수점 수를 재구축하게 하도록 구성된다.
예시적인 실시예에 따르면, 상기 행위는 상기 DQ 상태 중 적어도 하나에 대응한다.
예시적인 실시예에 따르면, 상기 상태 예측기는 상기 행위를 포함한 복수의 행위 중 몇 개와 상기 DQ 상태 중 적어도 하나를 포함한 DQ 상태 중 몇 개 사이의 각각의 대응관계를 더 포함한다.
예시적인 실시예에 따르면, 상기 현재 DQ 상태를 예측하는 것은 행위와 출력 Q 값 사이의 행위-값 매핑 함수를 구현하는 것을 포함하고, 상기 출력 Q 값은 상기 행위, 상기 이전 키 및 상기 이전 DQ 상태와 연관된다.
예시적인 실시예에 따르면, 상기 상태 예측기는 행위와 상기 행위와 연관된 출력 Q 값 사이의 행위-값 매핑 함수를 포함하고, 상기 출력 Q 값은 상기 행위를 포함한 행위들의 시퀀스와 연관된 타깃 양자화 성능의 측정치를 나타낸다.
예시적인 실시예에 따르면, 상기 상태 예측기에 기초하여 상기 현재 DQ 상태를 예측하는 것은,
각각의 상기 행위에 대해, 상기 출력 Q 값을 포함한 Q 값들을 계산하는 것을 포함한다.
예시적인 실시예에 따르면, 상기 출력 Q 값은 계산된 Q 값들 중에서 선택된다.
개시된 주제의 추가 특징, 성질 및 다양한 이점은 이하의 상세한 설명 및 첨부 도면으로부터 더욱 명백해질 것이다.
도 1은 실시예에 따른 개략도의 단순화된 예시이다.
도 2는 실시예에 따른 개략도의 단순화된 예시이다.
도 3은 실시예에 따른 개략도의 단순화된 예시이다.
도 4는 실시예에 따른 개략도의 단순화된 예시이다.
도 5는 실시예에 따른 도면의 단순화된 예시이다.
도 6은 실시예에 따른 도면의 단순화된 예시이다.
도 7은 실시예에 따른 도면의 단순화된 예시이다.
도 8은 실시예에 따른 도면의 단순화된 예시이다.
도 9a는 실시예에 따른 도면의 단순화된 예시이다.
도 9b는 실시예에 따른 도면의 단순화된 예시이다.
도 10은 실시예에 따른 도면의 단순화된 예시이다.
도 11은 실시예에 따른 도면의 단순화된 예시이다.
도 12는 실시예에 따른 도면의 단순화된 예시이다.
도 13은 실시예에 따른 흐름도의 단순화된 예시이다.
도 14는 실시예에 따른 도면의 단순화된 예시이다.
도 15는 실시예에 따른 흐름도의 단순화된 예시이다.
도 16은 실시예에 따른 도면의 단순화된 예시이다.
도 17은 실시예에 따른 흐름도의 단순화된 예시이다.
도 18은 실시예에 따른 도면의 단순화된 예시이다.
도 19는 실시예에 따른 흐름도의 단순화된 예시이다.
도 20은 실시예에 따른 도면의 단순화된 예시이다.
도 21은 실시예에 따른 흐름도의 단순화된 예시이다.
도 22는 실시예에 따른 개락도의 단순화된 예시이다.
아래에서 설명하는 제안된 특징은 개별적으로 또는 임의의 순서로 조합하여 사용될 수 있다. 또한, 실시예는 처리 회로(예: 하나 이상의 프로세서 또는 하나 이상의 집적 회로)에 의해 구현될 수 있다. 하나의 예에서, 하나 이상의 프로세서는 컴퓨터로 판독 가능한 비일적 매체에 저장된 프로그램을 실행한다.
도 1은 본 개시의 일 실시예에 따른 통신 시스템(100)의 단순화된 블록도를 나타낸다. 통신 시스템(100)은 네트워크(105)를 통해 상호연결된 적어도 두 개의 단말기(102, 103)를 포함할 수 있다. 데이터의 단방향 송신을 위해, 제1 단말기(103)는 네트워크(105)를 통해 다른 단말기(102)에 송신하기 위해 로컬 위치(local location)에서 비디오 데이터를 코딩할 수 있다. 제2 단말기(102)는 네트워크(105)로부터 다른 단말기의 코딩된 비디오 데이터를 수신하고, 코딩된 데이터를 디코딩하여 복원된 비디오 데이터(recovered video data)를 표시할 수 있다. 단방향 데이터 송신은 미디어 서빙 애플리케이션(media serving application) 등에서 일반적일 수 있다.
도 1은, 예를 들어 비디오 회의 동안에, 발생할 수 있는 코딩된 비디오의 양방향 송신을 지원하기 위해 제공되는 제2 단말기 쌍(101, 104)을 나타낸다. 데이터의 양방향 송신을 위해, 각각의 단말기(101, 104)는 네트워크(105)를 통해 다른 단말기에 송신하기 위해 로컬 위치에서 캡처된(captured) 비디오 데이터를 코딩할 수 있다. 각각의 단말기(101, 104)는 또한 다른 단말기에 의해 송신되는 코딩된 비디오 데이터를 수신할 수 있고, 코딩된 데이터를 디코딩할 수 있으며, 복원된 비디오 데이터를 로컬 디스플레이 기기에 표시할 수 있다.
도 1에서, 단말기(101, 102, 103, 104)는 서버, 개인용 컴퓨터 및 스마트폰으로 예시될 수 있지만 본 개시의 원리는 이에 한정되지 않는다. 본 개시의 실시예는 랩톱 컴퓨터, 태블릿 컴퓨터, 미디어 플계층 및/또는 전용 비디오 회의 장비를 사용하여 애플리케이션을 찾아낸다. 네트워크(105)는, 예를 들어 유선 및/또는 무선 통신 네트워크를 포함한, 단말기(101, 102, 103, 104) 사이에서 코딩된 비디오 데이터를 전달하는 임의의 수의 네트워크를 나타낸다. 통신 네트워크(105)는 회선 교환(circuit-switched) 채널 및/또는 패킷 교환(packet-switched) 채널에서 데이터를 교환할 수 있다. 대표적인 네트워크로는 전기통신 네트워크(telecommunications networks), 근거리 네트워크(local area networks), 광역 네트워크(wide area networks) 및/또는 인터넷을 포함한다. 본 논의를 위해, 네트워크(105)의 아키텍처 및 토폴로지는 여기서 아래에 설명되지 않는 한, 본 개시의 동작에 중요하지 않을 수 있다.
도 2는 개시된 주제에 대한 애플리케이션의 일례로서, 스트리밍 환경에서의 비디오 인코더 및 디코더의 배치를 나타낸다. 개시된 주제는, 예를 들어, 비디오 회의, 디지털 TV, CD, DVD, 메모리 스틱 등을 포함한, 디지털 미디어상에 압축된 비디오를 저장하는 것을 포함하는, 다른 비디오 지원(video enabled) 애플리케이션에도 동일하게 적용될 수 있다.
스트리밍 시스템은, 예를 들어 압축되지 않은 비디오 샘플 스트림(213)을 생성하는, 예를 들어 디지털 카메라와 같은 비디오 소스(201)를 포함할 수 있는 캡처 서브시스템(capture subsystem)(203)을 포함할 수 있다.
인코딩된 비디오 비트스트림과 비교할 때 높은 데이터 볼륨인 것으로 강조될 수 있는 샘플 스트림(213)은 카메라(201)에 결합된 인코더(202)에 의해 처리될 수 있다. 인코더(202)는 하드웨어, 소프트웨어, 또는 이들의 조합을 포함하여 아래에서 더 상세히 설명되는 바와 같이 개시된 주제의 측면들을 가능하게 하거나 구현할 수 있다. 샘플 스트림과 비교할 때 더 낮은 데이터 볼륨인 것으로 강조될 수 있는 인코딩된 비디오 비트스트림(204)은 장래의 사용을 위해 스트리밍 서버(205)에 저장될 수 있다. 하나 이상의 스트리밍 클라이언트(212, 207)는 스트리밍 서버(205)에 액세스하여 인코딩된 비디오 비트스트림(204)의 사본(208, 206)을 검색할 수 있다. 클라이언트(212)는 인코딩된 비디오 비트스트림(208)의 인커밍(incoming) 사본을 디코딩하고 디스플레이(209) 또는 다른 렌더링 기기(도시되지 않음)에 렌더링될 수 있는 아웃고잉(outgoing) 비디오 샘플 스트림(210)을 생성하는 비디오 디코더(211)를 포함할 수 있다. 일부 스트리밍 시스템에서, 비디오 비트스트림(204, 206, 208)은 특정 비디오 코딩/압축 표준에 따라 인코딩될 수 있다. 이러한 표준의 예는 위에 언급되었고 여기서는 더 설명되지 않는다.
도 3은 본 개시의 일 실시예에 따른 비디오 디코더(300)의 기능 블록도일 수 있다.
수신기(302)는 디코더(210)에 의해 디코딩될 하나 이상의 코덱 비디오 시퀀스를 수신할 수 있고; 동일하거나 다른 실시예에서, 한 번에 하나의 코딩된 비디오 시퀀스를 수신할 수 있으며, 여기서 각각의 코딩된 비디오 시퀀스의 디코딩은 다른 코딩된 비디오 시퀀스와 독립적이다. 코딩된 비디오 시퀀스는 인코딩된 비디오 데이터를 저장하는 저장 기기에 대한 하드웨어/소프트웨어 링크일 수 있는 채널(301)로부터 수신될 수 있다. 수신기(302)는 다른 데이터, 예를 들어 코딩된 오디오 데이터 및/또는 보조 데이터 스트림과 함께, 인코딩된 비디오 데이터를 수신할 수 있으며, 이들은 그 각각의 사용 엔티티(도시되지 않음)에 포워딩될 수 있다. 수신기(302)는 코딩된 비디오 시퀀스를 다른 데이터로부터 분리할 수 있다. 네트워크 지터(network jitter)를 방지하기 위해, 버퍼 메모리(303)는 수신기(302)와 엔트로피 디코더/파서(entropy decoder/parser)(304)(이하 "파서") 사이에 결합될 수 있다. 수신기(302)가 충분한 대역폭 및 제어 가능성(controllability)의 저장/포워딩 기기로부터, 또는 등시성 네트워크(isosychronous network)로부터 데이터를 수신하고 있을 때, 버퍼(303)는 필요하지 않을 수 있거나, 작을 수 있다. 인터넷과 같은 최선형 패킷 네트워크(best effort packet network)에서 사용하기 위해, 버퍼(303)가 필요할 수 있고, 비교적 클 수 있으며, 유리하게는 적응적인 크기(adaptive size)일 수 있다.
비디오 디코더(300)는 엔트로피 코딩된 비디오 시퀀스로부터 심볼(313)을 재구축하기 위한 파서(304)를 포함할 수 있다. 이러한 심볼의 카테고리로는, 디코더(300)의 동작을 관리하는 데 사용되는 정보와, 디코더의 필수 부분은 아니지만 디코더에 결합될 수 있는, 디스플레이(312)와 같은 렌더링 기기를 제어하기 위한 잠재적 정보를 포함한다. 렌더링 기기(들)에 대한 제어 정보는 보충 강화 정보(Supplementary Enhancement Information(SEI) messages), 또는 비디오 사용성 정보(Video Usability Information, VUI) 파라미터 세트 프래그먼트(도시되지 않음)의 형태일 수 있다. 파서(304)는 수신된, 코딩된 비디오 시퀀스를 파싱 및/또는 엔트로피 디코딩할 수 있다. 코딩된 비디오 시퀀스의 코딩은 비디오 코딩 기술 또는 표준에 따를 수 있고, 가변 길이 코딩, Huffman 코딩, 컨텍스트 민감도(context sensitivity)가 있거나 없는 산술 코딩 등을 포함한, 당업자에게 잘 알려진 원리를 따를 수 있다. 파서(304)는 그룹에 대응하는 적어도 하나의 파라미터에 기초하여, 비디오 디코더에서의 픽셀의 서브그룹 중 적어도 하나에 대한 서브그룹 파라미터의 세트를 코딩된 비디오 시퀀스로부터 추출할 수 있다. 서브그룹은 픽처 그룹(Group of Pictures, GOP), 픽처, 타일(tile), 슬라이스(slice), 매크로블록, 코딩 유닛(Coding Unit, CU), 블록, 변환 유닛(Transform Unit, TU), 예측 유닛(Prediction Unit, PU) 등을 포함할 수 있다. 서브픽처는 픽처에서의 하나 이상의 슬라이스의 직사각형 영역을 나타낼 수 있다. 엔트로피 디코더/파서는 또한 코딩된 비디오 시퀀스 정보로부터 변환 계수, 양자화기 파라미터 값, 움직임 벡터 등과 같은 것을 추출할 수 있다.
파서(304)는 버퍼(303)로부터 수신된 비디오 시퀀스에 대해 엔트로피 디코딩/파싱 작업을 수행하여, 심볼(313)을 생성할 수 있다. 파서(304)는 인코딩된 데이터를 수신하고, 특정 심볼(313)을 선택적으로 디코딩할 수 있다. 또한, 파서(304)는 특정 심볼(313)이 움직임 보상 예측 유닛(306), 스케일러/역변환 유닛(305), 인트라 예측 유닛(307) 또는 루프 필터(311)에 제공되어야 하는지를 결정할 수 있다.
심볼의 재구축(313)에는 코딩된 비디오 픽처 또는 그 일부(예: 인터 및 인트라 픽처, 인터 및 인트라 블록)의 유형, 및 기타 인자에 따라 다수의 상이한 유닛이 관여할 수 있다. 어떠한 유닛이 어떻게 관여하는지는 파서(304)에 의해, 코딩된 비디오 시퀀스로부터 파싱된 서브그룹 제어 정보에 의해 제어될 수 있다. 파서(304)와 이하의 다수의 유닛 사이의 그러한 서브그룹 제어 정보의 흐름은 명확성을 위해 나타내지 않았다.
이미 언급된 기능 블록을 넘어서, 디코더(300)는 이하에 설명되는 바와 같이 개념적으로 다수의 기능 유닛으로 세분화될 수 있다. 상업적 제약 하에서 작동하는 실제 구현에서, 이러한 유닛의 다수는 서로 밀접하게 상호작용하며, 적어도 부분적으로는 서로 통합될 수 있다. 그러나 개시된 주제를 설명하기 위해, 아래의 기능 유닛으로의 개념적 세분화가 적절하다.
첫 유닛은 스케일러 및/또는 역변환 유닛(305)이다. 스케일러 및/또는 역변환 유닛(305)은 파서(304)로부터 심볼(들)(313)로서 사용을 위한 변환, 블록 크기, 양자화 인자, 양자화 스케일링 매트릭스 등을 포함한, 제어 정보뿐만 아니라 양자화된 변환 계수도 수신한다. 스케일러 및/또는 역변환 유닛(305)은 집성기(aggregator)(310)에 입력될 수 있는, 샘플 값을 포함하는 블록을 출력할 수 있다.
경우에 따라서는, 스케일러/역변환 유닛(305)의 출력 샘플은 인트라 코딩된 블록에 관련될 수 있다. 즉, 이전에 재구축된 픽처로부터의 예측 정보를 사용하지 않지만, 현재 픽처의 이전에 재구축된 부분으로부터의 예측 정보를 사용할 수 있는 블록이다. 이러한 예측 정보는 인트라 픽처 예측 유닛(307)에 의해 제공될 수 있다. 경우에 따라서는, 인트라 픽처 예측 유닛(307)은 현재 (부분적으로 재구축된) 픽처(309)로부터 인출된 주위의 이미 재구축된 정보를 사용하여, 재구축중인 블록과 동일한 크기 및 형상의 블록을 생성한다. 집성기(310)는, 경우에 따라서는, 샘플 단위로, 인트라 예측 유닛(307)이 생성한 예측 정보를 스케일러 및/또는 역변환 유닛(305)에 의해 제공되는 출력 샘플 정보에 추가한다.
다른 경우에, 스케일러/역변환 유닛(305)의 출력 샘플은 인터 코딩되고 잠재적으로 움직임 보상된 블록에 속할 수 있다. 이러한 경우, 움직임 보상 예측 유닛(306)은 예측에 사용되는 샘플을 인출하기 위해 참조 픽처 메모리(308)에 액세스할 수 있다. 블록에 속하는 심볼(313)에 따라 인출된 샘플을 움직임 보상한 후, 이러한 샘플은 집성기(310)에 의해 스케일러 및/또는 역 변환 유닛의 출력(이 경우에 잔차 샘플 또는 잔차 신호라고 함)에 더해져 출력 샘플 정보를 생성할 수 있다. 움직임 보상 유닛이 예측 샘플을 인출하는 참조 픽처 메모리 형태 내의 주소는 움직임 벡터에 의해 제어될 수 있으며, 예를 들어 X, Y 및 참조 픽처 구성요소를 가질 수 있는 심볼(313)의 형태로 움직임 보상 유닛에 사용할 수 있다. 움직임 보상은 또한 서브샘플의 정확한 움직임 벡터(sub-sample exact motion vector)가 사용되고 있을 때에 참조 픽처 메모리부터 인출된 샘플 값의 보간, 움직임 벡터 예측 메커니즘 등을 포함할 수 있다.
집성기(310)의 출력 샘플은 루프 필터 유닛(311)에서 다양한 루프 필터링 기술의 대상이 될 수 있다. 비디오 압축 기술은 코딩된 비디오 비트스트림에 포함된 파라미터에 의해 제어되고 파서(304)로부터의 심볼(313)로서 루프 필터 유닛(311)에 사용 가능하게 되는 인 루프(in-loop) 필터 기술을 포함할 수 있지만, 또한 코딩된 픽처 또는 코딩된 비디오 시퀀스의 이전(디코딩 순서상) 부분을 디코딩하는 동안에 획득된 메타 정보에 응답할 수 있을 뿐만 아니라 이전에 재구축되고 루프 필터링된 샘플 값에 응답할 수도 있다.
루프 필터 유닛(311)의 출력은 렌더 기기(render device)(312)에 출력될 수 있을 뿐만 아니라 미래의 인터 픽처 예측에 사용하기 위해 참조 픽처 메모리에 저장될 수도 있는 샘플 스트림일 수 있다.
일단 완전히 재구축된 특정 코딩된 픽처는 미래 예측을 위한 참조 픽처로서 사용될 수 있다. 코딩된 픽처가 완전히 재구축되고 코딩된 픽처가 참조 픽처로서 식별되면(예: 파서(304)에 의해), 현재 참조 픽처(309)는 참조 픽처 버퍼(308)일부가 될 수 있고, 다음의 코딩된 픽처의 재구축을 시작하기 전에 새로운 현재 픽처 메모리가 재할당될 수 있다.
비디오 디코더(300)는 ITU-T Rec. H.265와 같은, 표준에 문서화될 수 있는 미리 결정된 비디오 압축 기술에 따라 디코딩 작업을 수행할 수 있다. 코딩된 비디오 시퀀스는, 비디오 압축 기술 문헌 또는 표준에, 특히 그 중의 프로파일 문서에 명시된 바와 같이, 비디오 압축 기술 또는 표준의 신택스를 고수한다는 의미에서, 사용되는 비디오 압축 기술 또는 표준에 의해 지정되는 신택스에 준거할 수 있다. 또한, 준수를 위해 필요한 것은, 코딩된 비디오 시퀀스의 복잡도가 비디오 압축 기술 또는 표준의 레벨에 의해 정의된 범위 내에 있어야 한다는 것일 수 있다. 경우에 따라서는, 레벨은 최대 픽처 크기, 최대 프레임 레이트, 최대 재구축 샘플 레이트(예: 초당 메가 샘플로 측정됨), 최대 참조 픽처 크기 등을 제한한다. 레벨에 의해 설정된 제한은, 경우에 따라서는, 가상 참조 디코더(Hypothetical Reference Decoder, HRD) 사양 및 코딩된 비디오 시퀀스에서 시그널링된 HRD 버퍼 관리를 위한 메타 데이터를 통해 추가로 제한될 수 있다.
일 실시예에서, 수신기(302)는 인코딩된 비디오와 함께 추가(중복) 데이터(additional(redundant) data)를 수신할 수 있다. 추가 데이터는 코딩된 비디오 시퀀스(들)의 일부로서 포함될 수 있다. 추가 데이터는 데이터를 적절하게 디코딩하고/하거나 원본 비디오 데이터를 더 정확하게 재구축하기 위해 비디오 디코더(300)에 의해 사용될 수 있다. 추가 데이터는, 예를 들어 시간 계층, 공간 계층 또는 신호대잡음 비(signal-to-noise ratio, SNR) 강화 계층(enhancement layer), 중복 슬라이스(redundant slice), 중복 픽처(redundant picture), 순방향 오류 정정 코드(forward error correction code) 등의 형태일 수 있다.
도 4는 본 개시의 일 실시예에 따른 비디오 인코더(인코더라고도 함)(400)의 기능 블록도일 수 있다.
인코더(400)는 인코더(400)에 의해 코딩될 비디오 이미지(들)를 캡처할 수 있는 비디오 소스(401)(인코더의 일부가 아님)로부터 비디오 샘플을 수신할 수 있다.
비디오 소스(401)는 임의의 적절한 비트 심도(예: 8비트, 10비트, 12비트,…), 임의의 색 공간(color space)(예: BT.601 Y CrCB, RGB,…) 및 임의의 적절한 샘플링 구조(예: Y CrCb 4:2:0, Y CrCb 4:4:4)일 수 있는 디지털 비디오 샘플 스트림의 형태로 인코더(303)에 의해 코딩될 소스 비디오 시퀀스를 제공할 수 있다. 미디어 서빙 시스템에서, 비디오 소스(401)는 미리 준비된 비디오를 저장하는 저장 기기일 수 있다. 비디오 회의 시스템에서, 비디오 소스(401)는 로컬 이미지 정보를 비디오 시퀀스로서 캡처하는 카메라일 수 있다. 비디오 데이터는 순차적으로 볼 때 움직임을 부여하는 복수의 개별 픽처로 제공될 수 있다. 픽처 자체는 픽셀의 공간 배열(spatial array)로 구성될 수 있으며, 각각의 픽셀은 사용중인 샘플링 구조, 색 공간 등에 따라 하나 이상의 샘플을 포함할 수 있다. 당업자라면 픽셀과 샘플 사이의 관계를 쉽게 이해할 수 있을 것이다. 아래의 설명은 샘플에 중점을 둔다.
일 실시예에 따르면, 인코더(400)는 소스 비디오 시퀀스의 픽처를 실시간으로 또는 애플리케이션에 의해 요구되는 임의의 다른 시간 제약하에 코딩된 비디오 시퀀스(410)로 코딩하고 압축할 수 있다. 적절한 코딩 속도를 강제하는 것은 제어기(402)의 기능 중 하나이다. 제어기는 이하에 설명된 바와 같이 다른 기능 유닛을 제어하며 이러한 유닛에 기능적으로 결합된다. 명확성을 위해 결합은 표시되지 않는다. 제어기에 의해 설정된 파라미터로는 레이트 제어 관련 파라미터(픽처 스킵, 양자화기, 레이트 왜곡 최적화 기술의 람다 값 등), 픽처 크기, 픽처 그룹(GOP) 레이아웃, 최대 움직임 벡터 검색 범위 등을 포함할 수 있다. 제어기(402)의 다른 기능은 특정 시스템 설계에 최적화된 비디오 인코더(400)에 관련될 수 있기 때문에 당업자라면 제어기(402)의 다른 기능을 쉽게 식별할 수 있을 것이다.
일부 비디오 인코더는 당업자가 "코딩 루프(coding loop)"로서 쉽게 인식하는 방식으로 작동한다. 지나치게 단순화된 설명으로서, 코딩 루프는 인코더(402)(이하 "소스 코더")(코딩될 입력 픽처, 및 참조 픽처(들)에 기초하여 심볼의 생성을 담당)의 인코딩 부분과, 심볼을 재구축하여, (원격) 디코더도 생성할(심볼과 코딩된 비디오 비트스트림 간의 임의의 압축은 개시된 주제에서 고려된 비디오 압축 기술에서 무손실이므로) 샘플 데이터를 생성하는 인코더(400)에 내장된 (로컬) 디코더(406)로 구성될 수 있다. 재구축된 샘플 스트림은 참조 픽처 메모리(405)에 입력된다. 심볼 스트림의 디코딩은 디코더 위치(로컬 또는 원격)에 관계없이 비트가 정확한(bit-exact) 결과를 얻을 수 있으므로, 참조 픽처 버퍼 내용도 로컬 인코더와 원격 인코더 사이에 비트가 정확하다. 다시 말해, 인코더의 예측 부분은 디코딩 동안에 예측을 사용하는 경우에 디코더가 "인식하는(see)" 것과 정확히 동일한 샘플 값을 참조 픽처 샘플로서 "인식한다". 참조 픽처 동기성(reference picture synchronicity)(및 예를 들어 채널 오류로 인해 동시성이 유지될 수 없는 경우, 결과로서 생긴 드리프트)의 이 기본 원리는 당업자에게 잘 알려져 있다.
"로컬" 디코더(406)의 동작은 "원격" 디코더(300)의 동작과 동일할 수 있으며, 이는 이미 도 3과 관련하여 상세하게 설명하였다. 그러나 또한 도 4를 간단히 참조하면, 심볼이 이용 가능하고 엔트로피 코더(408) 및 파서(304)에 의한 코딩된 비디오 시퀀스에 대한 심볼의 코딩 및/또는 디코딩은 무손실일 수 있으므로, 채널(301), 수신기(302), 버퍼(303) 및 파서(304)를 포함한, 디코더(300)의 엔트로피 디코딩 부분은 로컬 디코더(406)에서 완전히 구현되지 않을 수 있다.
이 시점에서 이루어질 수 있는 관찰은 디코더에 존재하는 파싱/엔트로피 디코딩을 제외한 모든 디코더 기술도 반드시 상응하는 인코더에 실질적으로 동일한 기능적 형태로 존재할 필요가 있다는 것이다. 인코더 기술의 설명은 포괄적으로 설명된 디코더 기술의 반대이므로 생략할 수 있다. 특정 영역에서만 더 자세한 설명이 필요하며 아래에 제공된다.
동작의 일부로서, 소스 코더(403)는 "참조 프레임"으로 지정된 비디오 시퀀스로부터 하나 이상의 이전에 코딩된 프레임을 참조하여 입력 프레임을 예측적으로 코딩하는 움직임 보상된 예측 코딩을 수행할 수 있다. 이러한 방식으로, 코딩 엔진(407)은 입력 프레임의 픽셀 블록과, 입력 프레임에 대한 예측 참조(들)로서 선택될 수 있는 참조 프레임(들)의 픽셀 블록 사이의 차이를 코딩한다.
로컬 비디오 디코더(406)는 소스 코더(403)에 의해 생성된 심볼에 기초하여, 참조 프레임으로서 지정될 수 있는 프레임의 코딩된 비디오 데이터를 디코딩할 수 있다. 코딩 엔진(407)의 동작은 유리하게는 손실 프로세스일 수 있다. 코딩된 비디오 데이터가 비디오 디코더(도 4에 도시되지 않음)에서 디코딩될 수 있는 경우, 재구축된 비디오 시퀀스는 일반적으로 일부 오류가 있는, 소스 비디오 시퀀스의 복제본(replica)일 수 있다. 로컬 비디오 디코더(406)는 참조 프레임에 대해 비디오 디코더에 의해 수행될 수 있는 디코딩 프로세스를 복제하고 재구축된 참조 프레임이 참조 픽처 캐시(405)에 저장되도록 할 수 있다. 이러한 방식으로, 인코더(400)는 원단(far-end)의 비디오 디코더에 의해 획득될 재구축된 참조 프레임으로서(송신 오류 없음) 공통 콘텐츠를 갖는 재구축된 참조 프레임의 사본을 로컬로 저장할 수 있다.
예측기(404)는 코딩 엔진(407)에 대한 예측 검색을 수행할 수 있다. 즉, 코딩될 새로운 프레임을 위해, 예측기(404)는 참조 픽처 메모리(405)에서, 새로운 픽처에 대한 적절한 예측 참조의 역할을 할 수 있는 샘플 데이터(후보 참조 픽셀 블록임), 또는 참조 픽처 움직임 벡터, 블록 형상 등과 같은 특정 메타데이터를 검색할 수 있다. 예측기(404)는 적절한 예측 참조를 찾기 위해 샘플 블록별 픽셀 블록(sample block-by-pixel block) 단위로 동작할 수 있다. 경우에 따라서는, 예측기(404)에 의해 획득되는 검색 결과에 의해 결정되는 바와 같이, 입력 픽처는 참조 픽처 메모리(405)에 저장된 다수의 참조 픽처로부터 얻은 예측 참조를 가질 수 있다.
제어기(402)는, 예를 들어 비디오 데이터를 인코딩하기 위해 사용되는 파라미터 및 서브그룹 파라미터의 설정을 포함한, 비디오 코더(403)의 코딩 동작을 관리할 수 있다.
전술한 모든 기능 유닛의 출력은 엔트로피 코더(408)에서의 엔트로피 코딩 대상일 수 있다. 엔트로피 코더는 다양한 기능 유닛에 의해 생성된 심볼을, 예를 들어 Huffman 코딩, 가변 길이 코딩, 산술 코딩 등의 당업자에게 알려진 기술에 따라 심볼을 무손실 압축함으로써, 코딩된 비디오 시퀀스로 변환한다.
송신기(409)는 엔트로피 코더(408)에 의해 생성된 코딩된 비디오 시퀀스(들)를 버퍼링하여 인코딩된 비디오 데이터를 저장할 저장 기기에 대한 하드웨어/소프트웨어 링크일 수 있는 통신 채널(411)을 통한 송신을 위해 준비할 수 있다. 송신기(409)는 비디오 코더(403)로부터의 코딩된 비디오 데이터를 송신될 다른 데이터, 예를 들어 코딩된 오디오 데이터 및/또는 보조 데이터 스트림(소스는 도시되지 않음)과 병합할 수 있다.
제어기(402)는 인코더(400)의 동작을 관리할 수 있다. 코딩하는 동안, 제어기(405)는 각각의 코딩된 픽처에 특정 코딩된 픽처 유형을 할당할 수 있으며, 이는 각각의 픽처에 적용될 수 있는 코딩 기술에 영향을 미칠 수 있다. 예를 들어, 픽처는 종종 다음 프레임 유형 중 하나로서 할당될 수 있다:
인트라 픽처(Intra Picture: I 픽처)는 예측 소스로서 시퀀스 내의 어떤 프레임도 사용하지 않고 코딩 및 디코딩될 수 있는 것일 수 있다. 일부 비디오 코덱은, 예를 들어 독립 디코더 리프레시 픽처(Independent Decoder Refresh Picture)을 포함한, 상이한 유형의 인트라 픽처를 허용한다. 당업자라면 I 픽처의 이러한 변형 및 각각의 적용 및 특징을 알고 있다.
예측 픽처(Predictive picture: P 픽처)는 각각의 블록의 샘플 값을 예측하기 위해 최대 하나의 움직임 벡터 및 참조 색인을 사용하여 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 것일 수 있다.
양방향 예측 픽처(Bi-directionally Predictive Picture: B 픽처)는 각각의 블록의 샘플 값을 예측하기 위해 최대 두 개의 움직임 벡터 및 참조 색인을 사용하는 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 것일 수 있다. 유사하게, 다중 예측 픽처(multiple-predictive picture)는 단일 블록의 재구축을 위해 두 개보다 많은 참조 픽처와 연관 메타 데이터를 사용할 수 있다.
소스 픽처는 일반적으로 공간적으로 복수의 샘플 블록(예: 4×4, 8×8, 4×8 또는 16×16 샘플 블록)으로 세분화되고 블록 단위로 코딩될 수 있다. 블록은 블록의 픽처 각각에 적용된 코딩 할당에 의해 결정되는 다른 (이미 코딩된) 블록을 참조하여 예측적으로 코딩될 수 있다. 예를 들어, I 픽처의 블록은 비 예측적으로 코딩되거나, 동일한 픽처의 이미 코딩된 블록(공간 예측 또는 인트라 예측)을 참조하여 예측적으로 코딩될 수 있다. P 픽처의 픽셀 블록은 이전에 코딩된 하나의 참조 픽처를 참조하여 공간 예측을 통해 또는 시간 예측을 통해 비 예측적으로 코딩될 수 있다. B 픽처의 블록은 이전에 코딩된 하나 또는 두 개의 참조 픽처를 참조하여 공간 예측을 통해 또는 시간 예측을 통해 비 예측적으로 코딩될 수 있다.
비디오 코더(400)는 ITU-T Rec. H.265와 같은, 미리 정해진 비디오 코딩 기술 또는 표준에 따라 코딩 작업을 수행할 수 있다. 그 동작에서, 비디오 코더(400)는 입력 비디오 시퀀스 내의 시간적 및 공간적 중복성을 이용하는 예측 코딩 작업을 포함한, 다양한 압축 작업을 수행할 수 있다. 따라서, 코딩된 비디오 데이터는 사용되는 비디오 코딩 기술 또는 표준에 의해 지정된 신택스를 준수할 수 있다.
일 실시예에서, 송신기(409)는 인코딩된 비디오와 함께 추가 데이터를 송신할 수 있다. 소스 코더(403)는 그러한 데이터를 코딩된 비디오 시퀀스의 일부로서 포함할 수 있다. 추가 데이터는 시간/공간/SNR 강화 계층, 중복 픽처 및 슬라이스와 같은 다른 형태의 중복 데이터, 보충 강화 정보(SEI) 메시지, 시각적 유용성 정보(Visual Usability Information, VUI) 파라미터 세트 프래그먼트 등을 포함할 수 있다.
도 5는 HEVC 및 JEM에서 사용되는 인트라 예측 모드를 나타낸다. 자연 비디오(natural video)에 표시되는 임의의 에지 방향을 캡처하기 위해, 방향성 인트라 모드의 수는 HEVC에서 사용되는 것처럼, 33개에서 65개로 확장된다. HEVC 상단에 있는 JEM의 추가 방향성 모드는 도 1의 (b)에서 점선 화살표로 표시된다, 평면 및 DC 모드는 동일하게 유지된다. 이러한 밀도가 더 높은 방향성 인트라 예측 모드는 모든 블록 크기, 그리고 루마 및 크로마 인트라 예측 모두에 적용된다. 도 5에 도시된 바와 같이, 홀수 인트라 예측 모드 색인과 연관된, 점선 화살표에 의해 식별되는 방향성 인트라 예측 모드는 홀수 인트라 예측 모드라고 한다. 짝수 인트라 예측 모드 인덱스와 연관된, 실선 화살표에 의해 식별되는 방향성 인트라 예측 모드를 짝수 인트라 예측 모드라고 한다. 이 문서에서, 도 5에서 실선 또는 점선 화살표로 표시된 방향성 인트라 예측 모드는 각도 모드(angular mode)라고도 한다.
JEM에서는 총 67개의 인트라 예측 모드가 루마 인트라 예측에 사용된다. 인트라 모드를 코딩하기 위해, 이웃 블록의 인트라 모드에 기초하여 크기 6의 MPM(Most Probable Mode, 가장 개연성이 높은 모드) 목록이 구축된다. 인트라 모드가 MPM 목록에 없는 경우, 인트라 모드가 선택된 모드에 속하는지를 지시하기 위해 플래그가 시그널링된다. JEM-3.0에서는 16개의 선택된 모드가 있으며, 이 모드는 네 번째 각도 모드마다 균일하게 선택된다. JVET-D0114 및 JVET-G0060에서는 균일하게 선택된 모드를 대체하기 위해 16개의 보조 MPM이 도출된다.
도 6은 인트라 방향성 모드에 이용되는 N개의 참조 티어(tier)를 나타낸다. 여기에서는 블록 유닛(611), 세그먼트 A(601), 세그먼트 B(602), 세그먼트 C(603), 세그먼트 D(604), 세그먼트 E(605), 세그먼트 F(606), 제1 참조 티어(610), 제2 참조 티어(609), 제3 기준 티어(608) 및 제4 기준 티어(607)가 있다.
HEVC와 JEM 둘 다, 그리고 H.264/AVC와 같은 다른 표준에서, 현재 블록을 예측하는 데 사용되는 참조 샘플은 가장 가까운 참조 라인(행 또는 열)으로 제한된다. 다중 참조 라인 인트라 예측 방법에서, 후보 참조 라인(행 또는 열)의 수는 인트라 방향 모드에 대해 하나(즉, 가장 가까운 것) 내지 N개로 증가되며, 여기서 N은 1 이상의 정수이다. 도 2는 다중 라인 인트라 방향성 예측 방법의 개념을 보여주기 위해 4x4 예측 유닛(PU)을 예로 든다. 인트라 방향성 모드(intra-directional mode)는 N개의 참조 티어 중 하나를 임의로 선택하여 예측자를 생성할 수 있다.
다시 말해, 참조 샘플 S1, S2, …, SN 중 하나로부터 예측자 변수 p(x,y)가 생성된다. 어떤 참조 티어가 인트라 방샹성 모드에 대해 선택되었는지를 지시하기 위해 플래그가 시그널링된. N이 1로 설정되면, 인트라 방향성 예측 방법은 JEM 2.0에서의 기존 방법과 동일한다. 도 6에서, 참조 라인(610, 609, 608, 607)은 좌측 상단 참조 샘플과 함께 6개의 세그먼트(601, 602, 603, 604, 605, 606)로 구성된다. 이 문서에서, 참조 티어는 참조 라인이라고도 한다. 현재 블록 유닛 내에서 좌측 상단 픽셀의 좌표는 (0,0)이고, 첫 번째 참조 라인에서 좌측 상단 픽셀은 (-1,-1)이다.
JEM에서, 루마 성분의 경우, 인트라 예측 샘플 생성에 사용되는 이웃 샘플은 생성 프로세스 전에 필터링된다. 필터링은 주어진 인트라 예측 모드 및 변환 블록 크기에 의해 제어된다. 인트라 예측 모드가 DC이거나 변환 블록 크기가 4x4와 동일한 경우, 이웃 샘플은 필터링되지 않는다. 주어진 인트라 예측 모드와 수직 모드(또는 수평 모드) 사이의 거리가 미리 정의된 임계값보다 크면, 필터링 프로세스가 인에이블된다. 이웃 샘플 필터링의 경우, [1, 2, 1] 필터와 양선형 필터(bi-linear filter)가 사용된다.
위치 종속 인트라 예측 조합(position dependent intra prediction combination, PDPC) 방법은 필터링되지 않은 경계 참조 샘플과, 필터링된 경계 참조 샘플과 함께 HEVC 스타일 인트라 예측의 조합을 호출하는 인트라 예측 방법이다. (x, y)에 위치한 각각의 예측 샘플 pred[x][y]는 다음과 같이 계산된다.
여기서 Rx ,- 1,R- 1,y는 각각 현재 샘플(x, y)의 상단과 좌측에 위치한 필터링되지 않은 참조 샘플을 나타내고, R-1,-1
현재 블록의 좌측 상단 모서리에 위치한 필터링되지 않은 참조 샘플을 나타낸다. 가중치는 아래와 같이 계산된다:
도 7은 하나의 4x4 블록 내부의 위치 (0, 0) 및 (1, 0)에 대한 DC 모드 PDPC 가중치(wL, wT, wTL)가 있는 도표(700)를 도시한다. PDPC가 DC, 평면, 수평 및 수직 인트라 모드에 적용되면, HEVC DC 모드 경계 필터 또는 수평/수직 모드 에지 필터와 같은 추가 경계 필터가 불필요하다. 도 7은 우측 상단 대각 모드에 적용된 PDPC에 대한 참조 샘플 Rx,-1, R-1,y 및 R-1,-1의 정의를 나타낸다. 예측 샘플 pred(x', y')는 예측 블록 내 (x', y')에 위치한다. 참조 샘플 Rx,-1의 좌표 x는 x = x' + y' + 1로 주어지고, 참조 샘플 R-1,y의 좌표 y는 유사하게 y = x' + y' +1로 주어진다.
도 8은 Local Illumination Compensation(LIC, 로컬 조명 보상) 도표(800)이며 스케일링 인자 a 및 오프셋 b를 사용한, 조명 변화에 대한 선형 모델에 기초한다. 그리고 인터 모드 코딩된(inter-mode coded) 코딩 유닛(coding unit, CU)에 대해 적응적으로 인에이블 또는 디스에이블된다.
LIC가 CU에 적용될 때, 현재 CU의 이웃 샘플과 대응하는 참조 샘플을 사용하여 파라미터 a 및 b를 도출하기 위해 최소 제곱 오차 방법(least square error method)이 사용된다. 보다 구체적으로, 도 8에 도시된 바와 같이, CU의 서브샘플링된(2:1 서브샘플링) 이웃 샘플 및 참조 픽처에서 대응하는 샘플(현재 CU 또는 서브 CU의 움직임 정보에 의해 식별됨)이 사용된다. IC 파라미터는 각각의 예측 방향에 대해 개별적으로 도출되고 적용된다.
CU가 병합 모드로 코딩되면 병합 모드에서 모션 정보 복사와 유사한 방식으로 LIC 플래그가 인접 블록에서 복사된다. 그렇지 않으면, LIC가 적용되는지 여부를 지시하기 위해 CU에 대해 LIC 플래그가 시그널링된다.
도 9a는 HEVC에서 사용되는 인트라 예측 모드(900)를 예시한다. HEVC에는 총 35개의 인트라 예측 모드가 있으며, 그 중 모드 10은 수평 모드, 모드 26은 수직 모드, 모드 2, 모드 18 및 모드 34는 대각 모드이다. 인트라 예측 모드는 3개의 가장 개연성이 높은 모드(most probable mode)와 32개의 나머지 모드에 의해 시그널링된다.
도 9b는 VVC의 실시예에서, 총 87개의 인트라 예측 모드가 있으며, 여기서 모드 18은 수평 모드이고, 모드 50은 수직 모드이고, 모드 2, 모드 34 및 모드 66은 대각 모드이다. 모드 -1 ∼ -10 및 모드 67 ∼ 76은 WAIP(Wide-Angle Intra Prediction, 광각 인트라 예측) 모드라고 한다.
위치 (x, y)에 위치한 예측 샘플 pred(x,y)는 PDPC 식에 따라 인트라 예측 모드(DC, 평면, 각도) 및 참조 샘플의 선형 조합을 사용하여 예측된다:
여기서 Rx,-1, R-1,y는 각각 현재 샘플(x, y)의 상단과 좌측에 위치한 참조 샘플을 나타내고, R-1,-1은 현재 블록의 좌측 상단에 위치한 참조 샘플을 나타낸다.
DC 모드의 경우, 너비와 높이가 있는 블록에 대해 가중치가 다음과 같이 계산된다:
nScale = ( log2( width ) - 2 + log2( height ) - 2 + 2 ) >> 2인 경우, 여기서 wT는 동일한 수평 좌표를 가진 위의 참조 라인에 위치한 참조 샘플에 대한 가중 계수를 나타내고, wL은 동일한 수직 좌표룰 가진 좌측 참조 라인에 위치한 참조 샘플에 대한 가중 계수를 나타내며,
wTL은 현재 블록의 좌측 상단 참조 샘플에 대한 가중 계수를 나타내고, nScale은 축을 따라 가중 계수가 얼마나 빨리 감소하는지 지정(wL은 왼쪽에서 오른쪽으로 감소 또는 wT는 상단에서 하단으로 감소), 즉 가중 인자 감소율이며, 현재 설계에서 x축(왼쪽에서 오른쪽으로) 및 y축(상단에서 하단으로)을 따라 동일하다. 그리고 32는 이웃 샘플에 대한 초기 가중 계수를 나타내며, 초기 가중 계수는 현재 CB에서 좌측 상단 샘플에 할당된 상단(좌측 또는 좌측 상단) 가중치이기도 하며, PDPC 프로세스에서 이웃 샘플의 가중 계수는 이 초기 가중 계수보다 작거나 같아야 한다.
평면 모드의 경우 wTL = 0인 한편, 수평 모드의 경우 wTL = wT이고 수직 모드의 경우 wTL = wL이다. PDPC 가중치는 가산 및 시프트만 계산할될 수 있다. pred(x,y)의 값은 식 1을 사용하여 단일 단계로 계산될 수 있다.
여기에서 제안된 방법은 개별적으로 또는 임의의 순서로 조합하여 사용할 수 있다. 또한, 각각의 방법(또는 실시예), 인코더 및 디코더는 처리 회로(예를 들어, 하나 이상의 프로세서 또는 하나 이상의 집적 회로)에 의해 구현될 수 있다. 하나의 예에서, 하나 이상의 프로세서는 컴퓨터로 판독 가능한 비일시적 매체에 저장된 프로그램을 실행한다. 실시예에 따르면, 블록이라는 용어는 예측 블록, 코딩 블록 또는 코딩 유닛, 즉 CU로 해석될 수 있다.
종속 양자화(DQ) 또는 격자 코딩된 양자화(trellis-coded quantization)는 2개의 양자화기 Q0 및 Q1과, 이들 사이를 전환하는 프로시저로 구성된다. 도 10은 DQ 메커니즘의 예시적인 도표를 보여준다.
도 3에 도시된 디코더(300)와 같은, 디코더 측에서, 재구축된 수 x'는 Q0 또는 Q1 중 하나에 대한 양자화 스텝 크기 Δ를 곱한 정수 키 k에 의해 결정된다. Q0과 Q1 사이의 전환은 M = 2K DQ 상태, K ≥ 2(따라서 M ≥ 4)인 상태 머신으로 나타낼 수 있으며, 여기서 각각의 DQ 상태는 양자화기 Q0 또는 Q1 중 하나와 연관된다. 현재 DQ 상태는 이전 DQ 상태와 현재 양자화 키의 값에 의해 유일하게 결정된다. 입력 스트림 x1, x2, ...를 인코딩하기 위해, Q0과 Q1 사이의 잠재적인 이행은 2K개의 DQ 상태를 갖는 격자로 나타낼 수 있다. 따라서 양자화 키 k1, k2, ...의 최적 시퀀스를 선택하는 것은 최소 R-D(Rate-Distortion, 레이트 왜곡) 비용을 갖는 격자 경로를 찾는 것과 같으며, 이 문제는 비터비 알고리즘(Viterbi algorithm)으로 해결될 수 있다.
그러나 이러한 필요한 상태 머신의 수작업 설계는 설령 경험적으로도, 그러한 수작업으로 설계된 상태 머신이 VVC 표준에서 필요할 수는 있더라도, 실제적으로 구현될 수 없다. 예를 들어,이러한 DQ 방법의 주요 제한사항은 적어도 세 가지에 있다. 첫째, 단 두 개의 양자화기가 사용되며, 예를 들어 양자화기의 수를 증가시키면, 수를 인코딩할 때 비트 소모를 줄일 수 있다. 둘째, 상태 머신을 수작업으로 설계하는 것은 최적의 방법이 아니며 많은 수의 DQ 상태를 포함하기에는 너무 비용이 많이 든다. 양자화기의 수를 증가시키려면 DQ 상태의 수를 증가시켜야 하고, 이는 양자화 효율을 높일 수 있지만, 수작업으로 설계하기에는 상태 머신이 너무 복잡해진다. 마지막으로, 키 생성 및 수 재구축 방법이 수동으로 체험적으로 설계되더라도, 최적도 실제적이지도 않다. 더 나은 방법을 찾으려면 도메인에 대한 전문지식이 필요하며 수동으로 설계하는 데에는 너무 많은 비용이 들 수 있다.
도 10의 도표(1000)에서와 같이, 재구축된 수가 양자화 스텝 크기 Δ를 곱한 정수 키로 표현될 수 있는 DQ 설계에서 Q0 및 Q1을 사용하는 예가 도시되며, 원 위에 레이블은 연관된 상태를 나타내고, 원 아래의 레이블은 연관된 양자화 키를 나타낸다. 4개의 상태를 갖는 VVC에서의 상태 머신의 예로서 도 11의 예시적인 도표(1100)를 참조한다. 아래에 설명되는 바와 같이, 예시적인 실시예는 DRL(Deep Reinforcement Learning, 심층 강화 학습)에 기반한 학습 기반 E2E DQ 메커니즘을 포함하며, 예를 들어 임의의 수의 DQ 상태를 지원하면서 입력 스트림을 E2E 방식으로 양자화 및 재구축하고, DQN 알고리즘을 통해 자동으로 다른 DQ 상태 간의 이행을 학습한다.
도 12의 도표(1200)와 그와 연관된 도 13의 흐름도(1300), 및 도 14의 도표(1400)와 그와 연관된 흐름도(1400)는 테스트 단계의 인코더 및 디코더의 작업 흐름의 예시적인 실시예를 각각 예시한다. 예를 들어, S1301에서, 입력 스트림 X=x 1 ,x 2 ,...,로 주어지고 여기서 각 x i 는 부동 소수점 수이면, 각가의 수 x i 에 대해 계산 키 모듈(1201)은 S1302에서 키 생성기(1202)를 사용하여 x i 에 기초하여 키 y i 를 계산한다. 그 다음, S1303에서, 상태 예측 모듈(1203)은 상태 예측기(12-4)를 사용하여 현재 DQ 상태 s i 를 계산한다. 상태 예측 모듈(1203)의 입력은 m개의 이전 키 y i -(m- 1 ) ,...y i (m≥1) 중 다수 및 n개의 이전 DQ 상태 s i - n ,...s i - 1 (n≥1) 중 다수를 포함하고, 여기서 mn은 같거나 다를 수 있다. 모드들 사이의 선택은 미리 결정된 기준 또는 설정에 기초하여 S1305에서 이루어질 수 있고, 예를 들어, 하나의 바람직한 실시예에서, S1306에서, n=1 및 m>1이면, 상태 s i - 1 m개의 키 각각에 부착되어 쌍을 형성하고, m개의 쌍이 함께 쌓여서 크기 (m, 2)인 입력 행렬을 형성한다. 대조적으로, S1307에서, 또 다른 바람직한 실시예에서, m= n이고, 각각의 키와 대응하는 상태는 쌍(y l , s l - 1)을 형성하고, m개의 쌍은 함께 쌓여서 크기 (m, 2)인 입력 행렬을 형성하여, 시스템이 도표(1400)과 같이, 디코더에 키 y i 를 전송하고 다음 수 x i+ 1을 계속 처리하도록 한다.
디코더 측에서는, 도표(1400)에서와 같이, S1501에서 키 yi를 수신한 후, 상태 예측 모듈(1404)은 입력된 m개의 이전 키 yi -(m- 1),..., yi 및 n개의 이전 DQ 상태 si-n,...,si-1에 기초하여, 도표(1200)에서처럼, 인코더와 동일한 방식으로 상태 예측기(1403)를 사용하여 현재 DQ 상태 si를 계산한다. 그 다음, S1503에서, 복원 입력 모듈(1406)은 입력 재구축기(1405)를 사용하여 키 yi 및 DQ 상태 si에 기초하여 재구축된 수 xi^를 계산한다. 예시적인 실시예에 따르면, 상태 예측기(1204와 1403 중 어느 하나 또는 둘 모두)는 행위 a ij 와 행위와 연관된 출력 Q 값 v ij 사이의 행위-값 매핑 함수 f(a ij ,v i | y i-(m- 1 ) ,...,y i , s i - n ,...,s i - 1)이며, j= 1,...,J(총 J개의 가능한 행위가 있다고 가정함), 입력 y i -(m- 1 ) ,...y i , 그리고 이전 DQ 상태 s i - n ,...,s i - 1가 주어진다. 여기서 각각의 행위 a ij 는 시스템이 취할 수 있는 DQ 상태에 대응하므로 총 J개의 DQ 상태를 갖는다. i번째 수 x i 에 대해, 상태 예측기는 가능한 모든 행위 a ij 의 Q 값 v ij 를 계산하고 최적의 Q 값 v i * 를 가진 최적의 행위 a i * 를 선택한다. 최적의 행위 a i * 에 대응하는 DQ 상태는 시스템이 선택한 상태 s i 이다. Q 값은 행위들의 시퀀스와 연관된 타깃 양자화 성능을 측정하도록 설계된다. 따라서 최적의 행위를 선택하면 최적의 타깃 양자화 성능을 얻는다. 또한, 이러한 심층 Q 학습(Deep Q-learning) 메커니즘, 특히 오프 폴리시(off-policy) DRL 방식인 DQN 알고리즘이 예시적인 실시예에 따른 선호하는 훈련 방법으로 사용된다. 예를 들어, DQN은 행위-값 매핑 함수를 학습하여 행위에 보상 Q 값을 할당하는, 임의의 주어진 유한 마크코프 결정 프로세스(Markov Decision Process)에 대한 최적의 행위 선택 정책을 찾는다. 정책은 시스템이 행위를 선택할 때 따르는 규칙이다. 현재 상태가 주어지면, 학습 에이전트는 후보 행위의 세트에서 선택할 수 있으며, 결과적으로 다른 보상 값이 생성된다. 다양한 상태를 경험하고 다양한 상태에서 다양한 행위을 시도함으로써, 학습 에이전트는 임의의 주어진 상태에서 미래에 최적으로 행위할 수 있도록 보상을 최적화하기 위해 오랜 시간 학습한다.
예시적인 실시예에 따르면, 상태 예측기(1204, 1404) 및 아래의 상태 예측기(1604, 1823, 2004) 중 어느 하나 이상과 같은, 상태 예측기는 예를 들어 DNN이며, 이는 행위-값 매핑 함수 f(a ij ,v i | y i -(m- 1 ) ,...,y i , s i - n ,...,s i - 1)을 추정하기 위한 함수 근사기(function approximator)의 역할을 한다. 이러한 상태 예측기 DNN은 일반적으로 하나 이상의 완전 연결 계층이 뒤따르는 컨볼루션 계층의 세트로 구성되고, 키 생성기(1202) 및 아래의 키 생성기(1602 및 2002) 중 하나 이상과 같은, 키 생성기, 그리고 입력 재구축기(1405) 및 아래에 설명된 입력 재구축기(1607, 2022) 중 어느 하나 이상의 입력 재구축기는 모두 DNN이다(예: 수 개의 컨볼루션 계층 다음에 완전히 연결된 계층). 이러한 상태 예측기, 키 생성기 및 입력 재구축기는 예시적인 실시예에 따라 단대단 방식으로 공동으로 훈련될 수 있다.
예시적인 실시예에 따르면, 도 16의 도표(1600)는 아래에 설명되는 도 17의 예시적인 흐름도(1700)와 함께 훈련 단계의 예시적인 작업 흐름을 나타낸다. 예를 들어, S1701에서 state(t s -1)가 상태 예측기(1604)와 같은, 현재 상태 예측기라고 하고, Key(t k -1)가 키 생성기(1602)와 같은, 현재 키 생성기를 나타낸다고 하고,Recon(t r -1)이 입력 재구축자(1607)와 같은, 현재 입력 재구축자라고 하며; t s , t k , 및 t r 은 다를 수 있으므로, 이러한 상태 예측기, 키 생성기 및 입력 재구축기는 서로 다른 빈도로 서로 다른 시간에 업데이트될 수 있습니다.
S1702에서, 훈련 입력 스트림 X= x 1 ,x 2 ,...,가 주어지면, 각각의 수 x i 에 대해 키 계산 모듈(1601)은 S1703에서 현재 키 생성기 Key(t k -1)를 사용하여 x i 에 기초하여 키 y i 를 계산한다. 그리고 테스트 단계와 마찬가지로, 상태 예측 모듈(1603)의 입력은 m개의 이전 키 yy i -(m- 1 ) ,...,y i (m≥1) 및 n개의 이전 DQ 상태 s i - n ,...,s i - 1 (n≥1)를 포함하며, 에 기초하여 상태 예측 모듈(1603)은 현재 상태 예측기 State(t s -1)를 사용하여 DQ 상태 s i 를 계산합니다. 그런 다음 복원 입력 모듈(1606)은 S1704에서, 현재 입력 재구성자 Recon(t r -1)을 사용하여, 키 y i 및 DQ 상태 s i 에 기초하여 재구축된 수 를 계산한다. S1706에서, 왜곡 D i 는 원래 입력 x 1 ,..., x i 와 수 x i 이전의 재구축된 수 , 사이의 차이를 측정하기 위해 왜곡 계산 모듈(1608)에서 계산될 수 있으며; 여기서 D i 는 스트림에서의 대응하는 요소 간의 차이의 Lk-norm의 평균, 예컨대, 평균 절대값 오차(Mean Absolute Error)인 L1-norm 및 평균 제곱 오차(Mean Square Error)인 L2-norm일 수 있다:
동시에, S1705에서, 레이트 손실 R i y i 이전의 키 y 1,...,y i 의 비트 소비를 측정하기 위해 레이트 계산 모듈(1609)에서 계산될 수 있으며; 여기서, 예를 들어 y 1,...,y i 는 엔트로피 코딩 방법을 사용하여 압축될 수 있고 R i 는 압축된 비트스트림의 비트 수이다. 그런 다음 S707에서, 시스템은 다음 숫자 x i+ 을 계속 처리한다.
도 18의 예시적인 도표(1803) 및 도 19의 연관된 흐름도(1900)는 예시적인 실시예에 따른 도 16의 상태 예측 모듈(1603) 및 유사하게 도 20의 상태 예측 모듈(2003)과 같은 상태, 예측 모듈의 세부사항을 나타낸다. 예를 들어, S1901에서 m개의 키 Y i =y i -(m- 1 ) ,...,y i n개의 이전 DQ 상태 S i -1=s i - n ,...,s i - 1가 입력으로 주어지면, 상태 예측기 DNN State(t s -1)가 단계1902에서, 상태 값 계산 모듈에서(1821)에서 모든 가능한 행위 a ij 의 Q 값 v ij 을 계산한다. 그런 다음, 단계 S1903에서, 상태 선택(1822)은 예를 들어, 방법을 사용하여 DQ 상태 s i 를 선택하며, 여기서 는 0과 1 사이의 확률이고; 확률 일 때 무작위 행위 a ij 가 최적의 행위 a i * 로 선택될 수 있고, 확률 (1-)일 때, 최적의 행위 a i * 가 선택될 수 있다. 최적의 행위 a i * 에 대응하는 DQ 상태는 s i 이다. 예시적인 실시예에 따르면, 인접한 숫자 x i x i +1의 인접 쌍에 대해, 왜곡 D i 와 D i +1, 및 레이트 손실 R i 와 R i +1에 기초하여, 보상을 측정하기 위해 보상 이 계산될 수 있으며, 현재 Q 입력(키
상태 예측기(1823)는 행위 a i * 취하여 주어진 Y i =y i -(m- 1 ) ,...,y i 및 DQ 상태 S i - 1=s i-n ,...,s i- 1)을 얻을 수 있다:
여기서 λ는 보상에서 레이트 손실과 왜곡의 균형을 맞추기 위한 하이퍼파라미터(hyperparameter)이다.
경험 , 즉 보상 계산 모듈(1610)에서와 같이, 키 Y i 및 이전 DQ 상태 S i - 1에 기초하여 Q 값 v i * 을 가진 행위 a i * 를 선택한 다음 보상 을 획득하는 것이 예시적인 실시예에 따라 도 16의 재생 메모리(1612) 및 도 20의 재생 메모리(2012) 중 어느 것과 같은 재생 메모리에 추가된다. 이러한 재생 메모리에는 일반적으로 최대 저장 한도가 있으며 한도에 도달하면 가장 오래된 경험이 최신 경험으로 대체된다.
상태 예측기(1823), 키 생성기(1602) 및 입력 재구축기(1607)를 업데이트하는 시간일 때, 시스템은 재생 메모리(1612)에서 경험의 배치를 샘플링하고, 이러한 샘플링된 경험을 사용하여 메모리 재생 및 가중치 업데이트 모듈(1611)에서 모델 파라미터를 업데이트한다.
도 20의 예시적인 도표(2000) 및 도 21의 연관된 흐름도(2100)는 위에서 설명된 메모리 재생 및 가중치 업데이트 모듈(1611)의 예시적인 상세한 작업 흐름을 제공한다. 예를 들어, 훈련 단계 동안, S2101에서 상태 예측기(2004), 키 생성기(2002) 및 입력 재구축기(2022) 각각과 정확한 동일한 DNN 모델 구조를 갖는, 타깃 상태 예측기 StateT, 타깃 키 생성기 KeyT 및 타깃 입력 재그측ㄱ; ReconT를 유지하기 위한 처리가 구현될 수 있다. 유일한 차이점은 모델 파라미터(즉, DNN의 가중 계수)인데, 이는 대응하는 상태 예측기(2004), 키 생성기(2002) 및 입력 재구축기(2022)로부터 T s , T k T r 파라미터 업데이트 주기마다 복제된다.
구체적으로, 각각의 파라미터 업데이트 주기 동안, 시스템은 S2102에서, 재생 메모리(2012)와 같은, 재생 메모리로부터 경험(2021)의 세트 를 샘플링한다. 상태 예측 모듈(2003), 타깃 상태 예측기, 타깃 상태 예측기(2023), StateT에서는 경험(2021) 중의 각각의 경험 에 대해, S2102에서, 경험에서의 입력 키 Y l 및 DQ 상태 S l - 1에 기초한 타깃 DQ 상태 를 예측한다. 타깃 DQ 상태 에 기초하여, 타깃 키 생성기, 타깃 키 생성기(2024), KeyT 및 키 계산 모듈(2001)은 S2003에서, 타깃 키 를 계산한다. 타깃 키 및 타깃 DQ 상태 에 기초하여, 타깃 입력 재구축기, 타깃 입력 재구축기(2028), ReconT는 S2104에서, 복원 입력 모듈(2006)에서 타깃 재구축된 를 계산할 수 있다. 그 다음, 왜곡 계산 모듈(2025)은 S2105에서, 및 경험(2021)에서의 원래의 에 기초하여 타깃 왜곡 을 계산하고, 레이트 계산 모듈(2009)은 S2106에서, 에 기초하여 타깃 레이트 손실 을 계산한다. 단계 S2106 및 S2107은 예시적인 실시예에 따라 순차적으로 또는 병렬적으로 구현될 수 있다. 타깃 보상 은 S2107에서, 에 기초하여 보상 계산 모듈(2010)에서 계산될 수 있다. 그 후, 손실 계산 모듈(2026), 또한 S2107에서 타깃 보상 T(a l * , Y l , S l- 1)를 계산할 수 있다:
여기서 은 입력 키 이 주어지면 행위 a ( l+ 1) j 에 대해 타깃 상태 예측기 StateT에 의해 예측된 Q 값이다. 하이퍼파라미터 γ는 0과 1 사이의 할인율로, 시스템이 단기 보상에 비해 장기 보상에 가중치를 두는 것이 얼마나 중요한지를 결정한다. 할인율이 낮을수록 시스템은 장기 보상에 덜 가중치를 두지만 단기 보상에만 관심을 갖는다. 그 다음,타깃 손실 의 계산이 타깃 보상 T(a l * , Y l , S l - 1) 및 경험으로부터의 원래 v l * 에 기초하여 발생할 수 있다. 예: 이 두 보상 간의 차이의 Lk-노름:
그 다음, S2109에서 타깃 손실의 기울기가 계산되어, 가중치 업데이트 모듈(2027)에 의해, 상태 예측기(2004)의 DNN의 가중치 파라미터를 State(t s ), 키 생성기 키, 키 생성기(2002), (tk) 및 입력 재구축기, 입력 재구축기(2022), Recon(tr)로 업데이트를 위해 역전파된다. 이전에 언급했듯이 상태 예측기(2004), 키 생성기(2002) 및 입력 재구축기(2022)는 여기에서 다른 타임스탬프에서 업데이트될 수 있다. 즉, 손실의 기울기는 상태 예측기(2004), 키 생성기(2002) 및 입력 재구축기(2022) 각각을 개별적으로 업데이트하기 위해 S2110에서 역전파될 수 있다.
또한, S2111에서, 예를 들어 흐름도(2100)의 모든 T s , T k T r 반복에 대해, 상태 예측기(2004), 키 생성기(2002) 및 입력 재구축기(2022)의 가중치 파라미터는 타깃 상태 예측기, 타깃 상태 예측기(2023), StateT, 타깃 키 생성기, 타깃 키 생성기(2024), KeyT 및 타깃 입력 재구축기, 타깃 입력 재구축기(2028), ReconT 각각에 복제될 것이다. 또한, 예시적인 실시예에 따르면, 재생 메모리(2012) 및 타깃 상태 예측기)(2O23), 타깃 상태 생성기(2024) 및 타깃 입력 재구축기(2028)를 사용하여 훈련 프로세스를 안정화할 수 있다. 또한, 재생 메모리(2012)는 예시적인 실시예에 따라 하나의 최신 경험만을 가질 수 있으며, 이는 일부 상황에서 재생 메모리를 갖지 않는 것과 동일하다. 또한 T s , T k T r 은 모두 1과 같을 수 있으므로 타깃 상태 예측기(2023), 타깃 키 생성기(2024) 및 타깃 입력 재구축기(2028)가 모든 반복에 대해 업데이트될 것이고, 이는 예시적인 실시예에 따른 타깃 상태 예측기(2023), 타깃 상태 생성기(2024) 및 타깃 입력 재구축기(2028)가 다른 세트를 갖지 않는 것과 같다.
따라서, 위의 개시 내용을 보면, 임의의 수의 DQ 상태를 지원할 수 있는 DQN이 있는 학습 기반 E2E DQ를 포함하는 실시예가 제시되었으며, 여기서 서로 다른 DQ 상태 간의 이행은 DQN(Deep Q-Network) 알고리즘에 기초하여 자동으로 결정될 수 있으며, 이와 같이 상태 예측기, 키 생성기 및 입력 재구축기의 서로 다른 DNN 구조를 유리하게 수용하는 유연하고 일반적인 프레임워크가 개시되었다.
이상에서 설명된 기술은 컴퓨터로 판독 가능한 명령어를 사용하여 컴퓨터 소프트웨어로서 구현될 수 있고 하나 이상의 컴퓨터로 판독 가능한 매체에 물리적으로 저장될 수 있거나, 구체적으로 하나 이상의 하드웨어 프로세서에 의해 구성될 수 있다다. 예를 들어, 도 22는 개시된 주제의 특정 실시예를 구현하기에 적합한 컴퓨터 시스템(2200)을 도시한다.
컴퓨터 소프트웨어는 컴퓨터 중앙 처리 유닛(central processing unit, CPU), 그래픽 처리 유닛(graphics processing unit, GPU) 등에 의해, 어셈블리(assembly), 컴파일(compilation), 링킹(linking), 또는 이와 유사한 메커니즘을 거쳐 직접, 또는 해석(interpretation), 마이크로 코드 실행(micro-code execution) 등을 통해 실행될 수 있는 명령어를 포함하는 코드를 생성할 수 있는 임의의 적합한 기계 코드 또는 컴퓨터 언어를 사용하여 코딩될 수 있다.
명령어는, 예를 들어 개인용 컴퓨터, 태블릿 컴퓨터, 서버, 스마트폰, 게이밍 기기, 사물 인터넷 기기 등을 포함한, 다양한 유형의 컴퓨터 또는 그 구성요소에서 실행될 수 있다.
도 22에 도시된 컴퓨터 시스템(2200)의 구성요소는 본질적으로 예시적인 것이며, 본 개시의 실시예를 구현하는 컴퓨터 소프트웨어의 사용 또는 기능의 범위에 대한 어떠한 한정도 시사하려는 의도는 아니다. 구성요소의 구성은 컴퓨터 시스템(2200)의 예시적인 실시예에 나타낸 구성요소 중 어느 하나 또는 조합과 관련된 임의의 종속성 또는 요건을 가지는 것으로 해석되어서는 안 된다.
컴퓨터 시스템(2200)은 특정 휴먼 인터페이스 입력 기기(human interface input device)를 포함할 수 있다. 이러한 휴먼 인터페이스 입력 기기는 한 명 이상의 인간 사용자에 의한 입력, 예를 들어 촉각 입력(예: 키 누름(keystroke), 스와이프(swip), 데이터 장갑 움직임), 오디오 입력(예: 음성, 박수), 시각적 입력(예: 제스처), 후각 입력(도시되지 않음)에 입력에 응답할 수 있다. 휴먼 인터페이스 기기는 또한 오디오(예: 음성, 음악, 주변 소리), 이미지(예: 스캔된 이미지, 정지 이미지 카메라로부터 획득한 픽처 이미지), 비디오(예: 2차원 비디오, 입체 비디오(stereoscopic video)를 포함한 3차원 비디오)와 같은, 사람에 의한 의식적 입력과 반드시 직접 관련이 있는 것은 아닌 특정 미디어를 캡처하는 데 사용될 수도 있다.
입력 휴먼 인터페이스 기기는 키보드(2201), 마우스(2202), 트랙 패드(2203), 터치 스크린(2210), 데이터 장갑, 조이스틱(2205), 마이크로폰(2206), 스캐너(2207), 카메라(2208) 중 하나 이상(각각 하나만 표시됨)을 포함할 수 있다.
컴퓨터 시스템(2200)은 특정 휴먼 인터페이스 출력 기기를 포함할 수 있다. 이러한 휴먼 인터페이스 출력 기기는 예를 들어 촉각 출력, 소리, 빛 및 냄새/맛을 통해, 한 명 이상의 인간 사용자의 감각을 자극할 수 있다. 이러한 휴먼 인터페이스 출력 기기는 촉각 출력 기기(예: 터치 스크린(2210), 또는 조이스틱(2205)에 의한 촉각 피드백이지만, 입력 기기의 역할을 하지 않는 촉각 피드백 기기도 있을 수 있음), 오디오 출력 기기(예: 스피커(2209), 헤드폰(도시되지 않음)), 시각적 출력 기기(예: 각각 터치 스크린 입력 기능이 있거나 없는, 각각 촉각 피드백 기능이 있거나 없는, CRT 스크린, LCD 스크린, 플라즈마 스크린, OLED 스크린을 포함한, 스크린(2210) - 그 일부는 스테레오그래픽 출력(stereographic), 가상 현실 안경(virtual-reality glasses)(도시되지 않음), 홀로그래픽 디스플레이(holographic display) 및 연기 탱크(smoke tank)(도시되지 않음)와 같은 수단을 통해 2차원 시각적 출력 또는 3차원 이상의 출력을 할 수 있음 -), 및 프린터(도시되지 않음)를 포함할 수 있다.
컴퓨터 시스템(2200)은 또한 CD/DVD(2211) 등의 매체를 갖는 CD/DVD ROM RW(2220)을 포함한 광학 매체, 썸 드라이브(thumb-drive)(2222), 착탈 가능한 하드 드라이브 또는 솔리드 스테이트 드라이브(2223), 테이프 및 플로피 디스크(도시되지 않음)와 같은 레거시 자기 매체, 보안 동글(security dongle)(도시되지 않음)과 같은 특수한 ROM/ASIC/PLD 기반 기기 등의 인간이 액세스 가능할 수 있는 저장 기기 및 그 연관 매체를 포함할 수도 있다.
당업자는 또한 현재 개시된 주제와 관련하여 사용된 바와 같이 컴퓨터로 판독 가능한 매체"라는 용어가 송신 매체, 반송파(carrier wave) 또는 기타 일시적인 신호를 포함하지 않는다는 것을 이해해야 한다.
컴퓨터 시스템(2200)은 또한 하나 이상의 통신 네트워크(2298)에 대한 인터페이스(들)를 포함할 수 있다. 네트워크(2298)는 예를 들어 무선, 유선, 광 등의 네트워크일 수 있다. 네트워크(2298)는 또한 로컬, 광역, 대도시, 차량 및 산업, 실시간, 지연 허용 등의 네트워크일 수 있다. 네트워크(2298)의 예로는 이더넷, 무선 LAN, GSM, 3G, 4G, 5G, LTE, 등을 포함하는 셀룰러 네트워크, 케이블 TV, 위성 TV, 및 지상파 방송 TV를 포함하는 TV 유선 또는 무선 광역 디지털 네트워크, CANBus를 포함하는 차량 및 산업용, 등을 포함한다. 특정 네트워크(2298)는 일반적으로 특정 범용 데이터 포트 또는 주변 버스(2250, 2251)(예: 컴퓨터 시스템(2200)의 USB 포트)에 부착된 외부 네트워크 인터페이스 어댑터를 필요로 하며; 다른 것은 일반적으로 이하에 설명하는 바와 같이 시스템 버스에 부착함으로써 컴퓨터 시스템(2200)의 코어에 통합된다(예: PC 컴퓨터 시스템에의 이더넷 인터페이스 또는 스마트폰 컴퓨터 시스템에의 셀룰러 네트워크 인터페이스). 이러한 네트워크(2298) 중 임의의 것을 사용하여, 컴퓨터 시스템(2200)은 다른 네트워크와 통신할 수 있다. 이러한 통신은 단방향, 수신 전용(예: TV 방송), 단방향 전송 전용(예: CANbusto 특정 CANbus 기기) 또는 양방향(예: 로컬 또는 광역 디지털 네트워크를 사용하여 다른 컴퓨터 시스템으로)일 수 있다. 특정 프로토콜 및 프로토콜 스택이 전술한 바와 같은 네트워크 및 네트워크 인터페이스 각각에 사용될 수 있다.
전술한 휴먼 인터페이스 기기, 인간이 액세스 가능한 저장 기기치 및 네트워크 인터페이스는 컴퓨터 시스템(2200)의 코어(2240)에 부착될 수 있다.
코어(2240)는 하나 이상의 중앙 처리 유닛(CPU)(2241), 그래픽 처리 유닛(GPU)(2242), FPGA(Field Programmable Gate Area)(2243) 형태의 특수 프로그램 가능한 그래픽 어댑터(2217), 특정 태스크를 위한 하드웨어 가속기(2244), 등을 포함할 수 있다. 판독 전용 메모리(Read-only memory, ROM)(2245), 랜덤 액세스 메모리(2246), 사용자가 액세스할 수 없는 내부 하드 드라이브, SSD 등의 내부 대용량 저장장치(2247)와 함께, 이러한 기기는 시스템을 통해 연결될 수 있다. 일부 컴퓨터 시스템에서, 시스템 버스(2248)는 추가적인 CPU, GPU 등에 의한 확장을 가능하게 하는 하나 이상의 물리 플러그의 형태로 액세스 가능할 수 있다. 주변 기기는 코어의 시스템 버스(2248)에 직접 연결되거나 주변 버스(2251)를 통해 연결될 수 있다. 주변 버스를 위한 아키텍처로는 PCI, USB 등을 포함한다.
CPU(2241), GPU(2242), FPGA(2243) 및 가속기(2244)는, 조합하여, 전술한 컴퓨터 코드를 구성할 수 있는 특정 명령어를 실행할 수 있다. 그 컴퓨터 코드는 ROM(2245) 또는 RAM(2246)에 저장될 수 있다. 이행 데이터(transitional data)는 RAM(2246)에도 저장될 수 있는 반면, 영구 데이터는 예를 들어 내부 대용량 저장장치(2247)에 저장될 수 있다. 메모리 기기 중 어느 것에 대한 빠른 저장 및 검색은, 하나 이상의 CPU(2241), GPU(2242), 대용량 저장장치(2247), ROM(2245), RAM(2246) 등과 밀접하게 연관될 수 있는 캐시 메모리의 사용을 통해 가능해질 수 있다.
컴퓨터로 판독 가능한 매체는 다양한 컴퓨터로 구현되는 동작(computer-implemented operation)을 수행하기 위한 컴퓨터 코드를 가질 수 있다. 매체 및 컴퓨터 코드는 본 개시의 목적을 위해 특별히 설계되고 구축된 것일 수 있거나, 컴퓨터 소프트웨어 분야의 당업자에게 잘 알려져있고 이용 가능한 종류일 수 있다.
한정이 아닌 예로서, 아키텍처(2200), 구체적으로 코어(2240)를 갖는 컴퓨터 시스템은 하나 이상의 유형의 컴퓨터로 판독 가능한 매체에 구현된 소프트웨어 실행하는 프로세서(들)(CPU, GPU, FPGA, 가속기 등을 포함)의 결과로서 기능을 제공할 수 있다. 이러한 컴퓨터로 판독 가능한 매체는 위에서 소개한 바와 같이 사용자가 액세스할 수 있는 대용량 저장장치와 연관된 매체일 수 있을 뿐만 아니라 코어 내부 대용량 저장장치(2247) 또는 ROM(2245)과 같은, 비 일시적인 성질의 코어(2240)의 특정 저장장치일 수 있다. 본 개시의 다양한 실시예를 구현하는 소프트웨어는 그러한 기기에 저장되고 코어(2240)에 의해 실행될 수 있다. 컴퓨터로 판독 가능한 매체는 구체적인 필요에 따라, 하나 이상의 메모리 기기 또는 칩을 포함할 수 있다. 소프트웨어는 코어(2240) 및 특히 내부의 프로세서(CPU, GPU, FPGA 등 포함)로 하여금 RAM(2246)에 저장된 데이터 구조를 정의하고 소프트웨어에 의해 정의된 프로세스에 따라 이러한 데이터 구조를 수정하는 것을 포함하여, 여기에 설명된 특정 프로세스 또는 특정 프로세스의 특정 부분을 실행하도록 할 수 있다. 추가로 또는 대안으로서, 컴퓨터 시스템은 여기에 설명된 특정 프로세스 또는 특정 프로세스의 특정 부분을 실행하기 위해 소프트웨어 대신 또는 소프트웨어와 함께 작동할 수 있는, 논리 배선(logic hardwired)의 결과로서 그렇지 않으면 회로(예: 가속기(2244))에 다른 방식으로 구현되는 기능을 제공할 수 있다. 소프트웨어에 대한 언급은 논리를 포함할 수 있으며, 적절한 경우 그 반대도 마찬가지이다. 컴퓨터로 판독 가능한 매체에 대한 언급은 실행을 위한 소프트웨어를 저장하는 회로(예: 집적 회로(IC)), 실행을 위한 논리를 구현하는 회로, 또는 적절한 경우 둘 다를 포함할 수 있다. 본 개시는 하드웨어와 소프트웨어의 임의의 적절한 조합을 포함한다.
본 개시는 몇몇 예시적인 실시예를 설명했지만, 본 개시의 범위 내에 속하는 변경, 순열 및 다양한 대체 등가물이 있다. 따라서, 당업자는 본 명세서에 명시적으로 도시되지 않거나 설명되지 않았지만, 본 개시의 원리를 구현하고 따라서 본 개의 사상 및 범위 내에 있는 수많은 시스템 및 방법을 고안할 수 있다는 것을 이해할 것이다.

Claims (20)

  1. 적어도 하나의 프로세서에 의해 수행되는 비디오를 코딩하는 방법으로서,
    비디오 데이터의 입력 스트림을 획득하는 단계;
    입력 스트림에 있는 복수의 부동 소수점 수에 기초하여 복수의 키를 계산하는 단계;
    상태 예측기(state predictor)와 다수의 이전 키와 다수의 이전 DQ 상태에 기초하여 현재 종속 양자화(dependent quantization, DQ) 상태를 예측하는 단계 - 상기 상태 예측기는 행위(action)와 상기 행위와 연관된 출력 Q 값 사이의 행위-값 매핑 함수를 포함하며, 각 행위는 상기 DQ 상태 중 하나에 대응하고, 상기 상태 예측기는 상기 행위를 포함한 복수의 행위 중 몇 개와 상기 DQ 상태 중 적어도 하나를 포함한 상기 DQ 상태 중 몇 개 사이의 각각의 대응관계를 더 포함하며, 상기 현재 DQ 상태는 최적의 Q 값을 가지는 상기 행위를 선택함으로써 예측됨 -;
    상기 복수의 키 및 적어도 상기 현재 DQ 상태에 기초하여 재구축된 부동 소수점 수를 재구축하는 단계; 및
    상기 재구축된 부동 소수점 수에 기초하여 상기 비디오를 코딩하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 키를 계산하는 것과 상기 재구축된 부동 소수점 수를 재구축하는 것은 하나 이상의 심층 신경망(deep neural network, DNN)을 구현하는 것을 포함하는, 방법.
  3. 제1항에 있어서,
    상기 현재 DQ 상태를 예측하는 단계는 행위와 출력 Q 값 사이의 행위-값 매핑 함수를 구현하는 단계를 포함하고,
    상기 출력 Q 값은 상기 행위, 상기 이전 키 및 상기 이전 DQ 상태와 연관되는, 방법.
  4. 제1항에 있어서,
    상기 상태 예측기는 행위와 상기 행위와 연관된 출력 Q 값 사이의 행위-값 매핑 함수를 포함하고,
    상기 출력 Q 값은 상기 행위를 포함한 행위들의 시퀀스와 연관된 타깃 양자화 성능의 측정치를 나타내는, 방법.
  5. 제1항에 있어서,
    상기 상태 예측기에 기초하여 상기 현재 DQ 상태를 예측하는 것은,
    상기 복수의 행위 각각에 대해, 상기 출력 Q 값을 포함한 Q 값들을 계산하는 단계를 포함하는, 방법.
  6. 제1항에 있어서,
    상기 출력 Q 값은 계산된 Q 값들 중에서 선택되는, 방법.
  7. 적어도 하나의 프로세서에 의해 수행되는 비디오 코딩을 위한 장치로서,
    컴퓨터 프로그램 코드를 저장하도록 구성된 적어도 하나의 메모리;
    상기 컴퓨터 프로그램 코드에 액세스하고 상기 컴퓨터 프로그램 코드가 명령하는 대로 동작하여 제1항 내지 제6항에 따른 방법을 수행하도록 구성된 적어도 하나의 프로세서
    를 포함하는 장치.
  8. 프로그램을 저장하는, 컴퓨터로 판독 가능한 비일시적 매체로서,
    상기 프로그램은 컴퓨터로 하여금 프로세스를 실행하여 제1항 내지 제6항에 따른 방법을 수행하게 하는,
    컴퓨터로 판독 가능한 비일시적 매체.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020227024220A 2020-11-30 2021-09-30 심층 강화 학습을 통한 종단 간 종속 양자화 KR102627879B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063119446P 2020-11-30 2020-11-30
US63/119,446 2020-11-30
US17/488,438 2021-09-29
US17/488,438 US11558617B2 (en) 2020-11-30 2021-09-29 End-to-end dependent quantization with deep reinforcement learning
PCT/US2021/052806 WO2022115155A1 (en) 2020-11-30 2021-09-30 End-to-end dependent quantization with deep reinforcement learning

Publications (2)

Publication Number Publication Date
KR20220114062A KR20220114062A (ko) 2022-08-17
KR102627879B1 true KR102627879B1 (ko) 2024-01-19

Family

ID=81751894

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227024220A KR102627879B1 (ko) 2020-11-30 2021-09-30 심층 강화 학습을 통한 종단 간 종속 양자화

Country Status (6)

Country Link
US (1) US11558617B2 (ko)
EP (1) EP4062376A4 (ko)
JP (1) JP2023515810A (ko)
KR (1) KR102627879B1 (ko)
CN (1) CN115136199A (ko)
WO (1) WO2022115155A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11917154B2 (en) 2020-12-29 2024-02-27 Tencent America LLC End-to-end neural compression with deep reinforcement learning
US20220215265A1 (en) 2021-01-04 2022-07-07 Tencent America LLC Method and apparatus for end-to-end task-oriented latent compression with deep reinforcement learning
WO2024013109A1 (en) * 2022-07-11 2024-01-18 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Encoder, decoder and methods for coding a data structure

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100438856B1 (ko) * 2001-06-14 2004-07-05 엘지전자 주식회사 능동적인 테이블 생성에의한 양자화/역양자화 방법 및 장치
US11562208B2 (en) 2018-05-17 2023-01-24 Qualcomm Incorporated Continuous relaxation of quantization for discretized deep neural networks
WO2020188271A1 (en) 2019-03-20 2020-09-24 V-Nova International Limited Temporal signalling for video coding technology
KR20220009385A (ko) 2019-05-17 2022-01-24 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 비디오 코딩을 위한 시스템 및 방법
WO2021162016A1 (ja) * 2020-02-10 2021-08-19 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
US20220114479A1 (en) * 2020-10-14 2022-04-14 Samsung Electronics Co., Ltd. Systems and methods for automatic mixed-precision quantization search
US20220156982A1 (en) * 2020-11-19 2022-05-19 Nvidia Corporation Calculating data compression parameters

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HAASE PAUL ET AL, "Dependent Scalar Quantization For Neural Network Compression", 2020 IEEE ICIP, page 36-40, XP033869429, 2020.10.25. 1부.*
Hado Van hasselt ET AL, "Deep Reinforcement Learning with Double Q-learning", page 1-13, XP055317413, 2015.12.08. 1부.*

Also Published As

Publication number Publication date
JP2023515810A (ja) 2023-04-14
US20220174281A1 (en) 2022-06-02
CN115136199A (zh) 2022-09-30
WO2022115155A1 (en) 2022-06-02
US11558617B2 (en) 2023-01-17
EP4062376A4 (en) 2023-01-18
EP4062376A1 (en) 2022-09-28
KR20220114062A (ko) 2022-08-17

Similar Documents

Publication Publication Date Title
KR102647830B1 (ko) 비디오 코딩을 위한 방법 및 장치
KR102653789B1 (ko) 멀티-라인 인트라 예측을 위한 방법 및 장치
KR102608275B1 (ko) 비디오 인코딩 또는 디코딩을 위한 방법 및 장치
JP7407800B2 (ja) 最確モードの導出のための方法、装置及びコンピュータプログラム
US10523963B1 (en) Method and apparatus for merge mode in video coding
KR102616833B1 (ko) 인트라 인터 예측 모드에 대한 개선을 위한 방법 및 장치
KR102627879B1 (ko) 심층 강화 학습을 통한 종단 간 종속 양자화
KR102630792B1 (ko) 비디오 코딩에서 이웃 블록 가용성을 위한 방법 및 장치
JP7378608B2 (ja) ビデオ復号の方法、装置、およびコンピュータプログラム
KR102637503B1 (ko) 비디오 시퀀스의 디코딩 또는 인코딩을 위한 인트라-인터 예측 모드를 제어하기 위한 방법 및 장치
KR102638065B1 (ko) 비디오 압축에서의 다중 라인 인트라 예측을 위한 방법 및 장치
JP7416946B2 (ja) ビデオコーディングのための方法および装置
JP2023138753A (ja) 統合位置依存予測組み合わせプロセスを使用するデコードのための方法、装置およびコンピュータ・プログラム
JP7357679B2 (ja) 改善された最確モードリスト生成方法
KR20230156789A (ko) 신경망 기반 교차 성분 예측을 위한 방법 및 장치, 그리고 저장 매체
KR102647645B1 (ko) 비디오 코딩을 위한 방법 및 장치
JP2024019734A (ja) ビデオコーディングのための方法および装置
CN113728628A (zh) 用于视频编码中具有自适应网格大小的扩展合并模式的方法和设备
US11736708B2 (en) Method and apparatus for video coding
KR20230157475A (ko) 교차 성분 예측을 위한 방법 및 장치, 그리고 컴퓨터로 판독 가능한 매체
CN112470475A (zh) 视频编码中利用缩减的上一行缓冲区进行帧间预测的方法和装置
JP7443527B2 (ja) ビデオコーディングのための方法、装置及びプログラム
KR102668128B1 (ko) 비디오 인코딩 또는 디코딩을 위한 방법 및 장치
JP2023543983A (ja) コーディングされたビデオストリームの現在のブロックに対してイントラ予測を実行するための方法、装置、およびコンピュータプログラム
JP2023552141A (ja) 適応的ローカル参照範囲によるイントラブロックコピー

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant