KR20230022093A - 영상에 대한 ai 기반 필터링을 위한 장치 및 방법 - Google Patents

영상에 대한 ai 기반 필터링을 위한 장치 및 방법 Download PDF

Info

Publication number
KR20230022093A
KR20230022093A KR1020220028221A KR20220028221A KR20230022093A KR 20230022093 A KR20230022093 A KR 20230022093A KR 1020220028221 A KR1020220028221 A KR 1020220028221A KR 20220028221 A KR20220028221 A KR 20220028221A KR 20230022093 A KR20230022093 A KR 20230022093A
Authority
KR
South Korea
Prior art keywords
block
current block
quantization
sample values
current
Prior art date
Application number
KR1020220028221A
Other languages
English (en)
Inventor
표인지
김경아
딘쿠오칸
박민수
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to PCT/KR2022/011429 priority Critical patent/WO2023014065A1/ko
Priority to IL309915A priority patent/IL309915A/en
Priority to AU2022321329A priority patent/AU2022321329A1/en
Priority to CA3226754A priority patent/CA3226754A1/en
Priority to CN202280054988.2A priority patent/CN117882372A/zh
Priority to US17/880,840 priority patent/US20230044603A1/en
Publication of KR20230022093A publication Critical patent/KR20230022093A/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/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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/176Methods 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 block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Landscapes

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

Abstract

인스트럭션을 저장하는 메모리; 및 인스트럭션에 따라 동작하는 프로세서를 포함하고, 프로세서는, 현재 블록의 부호화 데이터로부터 현재 블록을 복원하고, 부호화 데이터에 포함된 양자화 파라미터로부터 산출되는 샘플 값들을 포함하는 양자화 에러 맵을 획득하고, 현재 블록 및 양자화 에러 맵을 신경망에 적용하여 제 1 수정 블록을 획득하고, 현재 블록과 제 1 수정 블록 사이의 제 1 차분 블록을 획득하고, 현재 블록의 특징에 의존하는 파라미터에 따라 제 1 차분 블록의 샘플 값들을 변경하여 제 2 차분 블록을 획득하고, 현재 블록과 제 2 차분 블록을 결합하여 제 2 수정 블록을 획득하는, 일 실시예에 따른 영상 처리 장치가 개시된다.

Description

영상에 대한 AI 기반 필터링을 위한 장치 및 방법{APPARATUS AND METHOD FOR APPLYING ARTIFICIAL INTELLIGENCE BASED FILTERING ON IMAGE}
본 개시는 영상을 처리하는 방법 및 장치에 관한 것으로서, 구체적으로, AI(Artificial Intelligence) 기반 필터를 영상에 적용하여 영상의 부호화 및 복호화 과정에서 발생한 에러를 제거하는 방법 및 장치에 관한 것이다.
H.264 AVC(Advanced Video Coding) 및 HEVC(High Efficiency Video Coding)와 같은 코덱에서는, 영상을 블록으로 분할하고, 인터 예측(inter prediction) 또는 인트라 예측(intra prediction)을 통해 각각의 블록을 예측 부호화 및 예측 복호화한다.
인트라 예측은 영상 내의 공간적인 중복성을 제거하여 영상을 압축하는 방법이고, 인터 예측은 영상들 사이의 시간적인 중복성을 제거하여 영상을 압축하는 방법이다.
부호화 과정에서는, 인트라 예측 또는 인터 예측을 통해 예측 블록을 생성하고, 현재 블록으로부터 예측 블록을 감산하여 잔차 블록을 생성하고, 잔차 블록의 잔차 샘플들을 변환 및 양자화한다.
복호화 과정에서는, 잔차 블록의 양자화된 변환 계수들을 역양자화 및 역변환하여 잔차 블록의 잔차 샘플들을 생성하고, 인트라 예측 또는 인터 예측을 통해 생성된 예측 블록을 잔차 블록에 합하여 현재 블록을 복원한다. 복원된 현재 블록은 하나 이상의 필터링 알고리즘에 따라 처리된 후 출력될 수 있다.
H.264 AVC 및 HEVC와 같은 코덱에서는 복원된 현재 블록의 필터링을 위해 룰 기반의 필터링 알고리즘을 이용한다. 룰 기반의 필터링 알고리즘은 예를 들어, 디블로킹(deblocking) 필터, SAO(sample adaptive offset) 필터 및 ALF(adaptive loop filter)를 예시할 수 있다.
전통적으로, 룰 기반의 필터링 알고리즘은 좋은 성능을 발휘하였으나, 영상의 해상도가 커지고, 영상이 컨텐츠가 다양화됨에 따라 영상의 특성을 유연하게 고려할 수 있는 AI 기반 필터링 알고리즘이 요구될 수 있다.
일 실시예에 따른 AI 기반 필터링을 위한 영상 처리 장치 및 방법은 복원 블록에 대해 AI 기반 필터링을 적용하여 복원 블록이 원본 블록에 보다 유사해지도록 하는 것을 과제로 한다.
또한, 일 실시예에 따른 AI 기반 필터링을 위한 영상 처리 장치 및 방법은 복원 블록 내 양자화 에러를 보다 효율적으로 제거하는 것을 과제로 한다.
또한, 일 실시예에 따른 AI 기반 필터링을 위한 영상 처리 장치 및 방법은 복원 블록의 특징을 고려한 AI 기반 필터링을 통해 복원 블록의 퀄리티를 향상시키는 것을 과제로 한다.
일 실시예에 따른 AI 기반 필터링을 위한 영상 처리 장치는, 하나 이상의 인스트럭션을 저장하는 메모리; 및 상기 하나 이상의 인스트럭션에 따라 동작하는 프로세서를 포함하고, 상기 프로세서는, 현재 블록의 부호화 데이터(encoded data)로부터 현재 블록을 복원하고, 상기 부호화 데이터에 포함된 양자화 파라미터로부터 산출되는 샘플 값들을 포함하는 양자화 에러 맵(quantization error map)을 획득하고, 상기 현재 블록 및 상기 양자화 에러 맵을 신경망에 적용하여 제 1 수정 블록(first modified block)을 획득하고, 상기 현재 블록과 상기 제 1 수정 블록 사이의 제 1 차분 블록(first differential block)을 획득하고, 상기 현재 블록의 특징에 의존하는 파라미터에 따라 상기 제 1 차분 블록의 샘플 값들을 변경하여 제 2 차분 블록(second differential block)을 획득하고, 상기 현재 블록과 상기 제 2 차분 블록을 결합하여 제 2 수정 블록(second modified block)을 획득할 수 있다.
일 실시예에서, 상기 신경망은, 상기 현재 블록 및 상기 양자화 에러 맵을 미리 설정된 가중치에 따라 컨볼루션 처리하여 상기 제 1 차분 블록을 출력하는 적어도 하나의 컨볼루션 레이어; 및 상기 제 1 차분 블록과 상기 현재 블록을 합하여 상기 제 1 수정 블록을 출력하는 합산 레이어를 포함할 수 있다.
일 실시예에서, 상기 양자화 에러 맵의 샘플 값들은, 상기 양자화 파라미터로부터 산출되는 양자화 스텝 사이즈 또는 양자화 에러 값에 대응할 수 있다.
일 실시예에서, 상기 현재 블록의 하위 블록들을 위한 양자화 파라미터들이 상기 부호화 데이터에 포함되어 있는 경우, 상기 양자화 에러 맵의 샘플 값들은 상기 하위 블록 별로 산출될 수 있다.
일 실시예에서, 상기 프로세서는, 복수의 후보 파라미터 중 상기 부호화 데이터로부터 획득한 제 1 정보가 가리키는 파라미터를 선택하고, 상기 선택한 파라미터에 따라 상기 제 1 차분 블록의 샘플 값들을 변경하여 상기 제 2 차분 블록을 획득할 수 있다.
일 실시예에서, 상기 프로세서는, 복수의 파라미터 세트 중 상기 부호화 데이터로부터 획득한 제 2 정보가 가리키는 파라미터 세트를 선택하고, 상기 선택한 파라미터 세트에 포함된 상기 복수의 후보 파라미터 중 상기 제 1 정보가 가리키는 파라미터를 선택할 수 있다.
일 실시예에서, 상기 제 2 정보는, 상기 현재 블록을 포함하는 상위 블록을 위해 획득되고, 상기 제 1 정보는, 상기 현재 블록을 위해 획득될 수 있다.
일 실시예에서, 상기 프로세서는, 상기 파라미터의 결정을 위해, 상기 현재 블록 또는 상기 현재 블록의 상위 블록의 특징 값을 획득할 수 있다.
일 실시예에서, 상기 특징 값은, i) 상기 현재 블록 또는 상기 상위 블록의 복원을 위해 획득되는 잔차 샘플 값들을 제곱한 값들의 합, ii) 상기 잔차 샘플 값들을 제곱한 값들의 평균, iii) 상기 잔차 샘플 값들 중 최대 값, iv) 상기 잔차 샘플 값들의 절대 값들 중 최대 값, v) 상기 잔차 샘플들에 대응하는 변환 계수들 중 0이 아닌 변환 계수들의 개수, vi) 상기 현재 블록에 대응하는 슬라이스의 타입을 나타내는 값, vii) 상기 현재 블록 또는 상기 상위 블록 내에서 인트라 예측이 적용되는 블록의 넓이와 인터 예측이 적용되는 블록의 넓이 사이의 비율, viii) 상기 현재 블록 또는 상기 상위 블록의 선명도(sharpness), ix) 상기 현재 블록 또는 상기 상위 블록에 대해 설정되는 하나 이상의 양자화 파라미터로부터 산출되는 하나 이상의 양자화 스텝 사이즈의 평균, 또는 x) 상기 하나 이상의 양자화 파라미터로부터 산출되는 하나 이상의 양자화 에러 값의 평균 중 적어도 하나로부터 획득될 수 있다.
일 실시예에서, 상기 파라미터는, 스케일 팩터를 포함하고, 상기 프로세서는, 상기 선택한 스케일 팩터에 따라 상기 제 1 차분 블록의 샘플 값들을 스케일링하여 상기 제 2 차분 블록을 획득할 수 있다.
일 실시예에서, 상기 파라미터는, 클리핑 팩터(clipping factor)를 포함하고, 상기 프로세서는, 상기 제 1 차분 블록의 샘플 값들이, 상기 선택된 클리핑 팩터에 대응하는 상한 값과 하한 값 사이에 포함되도록 상기 제 1 차분 블록의 샘플 값들을 클리핑하여 상기 제 2 차분 블록을 획득할 수 있다.
일 실시예에서, 상기 프로세서는, 상기 현재 블록 또는 상기 현재 블록의 상위 블록의 특징 값을 획득하고, 복수의 가중치 세트 중 상기 특징 값에 대응하는 가중치 세트를 선택하되, 상기 현재 블록과 상기 양자화 에러 맵은, 상기 선택한 가중치 세트에 따라 동작하는 신경망에 의해 처리될 수 있다.
일 실시예에서, 상기 프로세서는, 상기 현재 블록 또는 상기 현재 블록의 상위 블록의 특징 값을 획득하고, 상기 획득한 특징 값에 기초하여, 상기 현재 블록에 대해 상기 AI 기반 필터링을 적용할지 여부를 결정할 수 있다.
일 실시예에서, 상기 프로세서는, 상기 신경망에 포함된 컨볼루션 레이어의 개수 및 컨볼루션 레이어에서 이용되는 필터 커널의 크기에 따라 확장 거리(extension distance)를 산출하고, 현재 영상 내에서 상기 현재 블록의 경계 외부의 주변 샘플들 중 상기 확장 거리에 대응하는 주변 샘플들과 상기 현재 블록의 샘플들로 이루어진 확장 블록을 상기 신경망에 적용할 수 있다.
일 실시예에서, 상기 현재 블록의 경계가 상기 현재 영상의 경계에 해당하면, 상기 확장 거리에 대응하는 주변 샘플들은, 이용 가능한 가장 가까운 샘플로부터 결정될 수 있다.
일 실시예에서, 상기 신경망은, 훈련용 원본 블록과, 상기 신경망을 통해 획득되는 훈련용 제 1 수정 블록 사이의 차이에 대응하는 손실 정보에 따라 훈련되며, 상기 훈련용 제 1 수정 블록은, 상기 훈련용 원본 블록의 부호화 및 복호화를 통해 획득되는 훈련용 현재 블록 및 상기 훈련용 현재 블록에 대응하는 훈련용 양자화 에러 맵을 상기 신경망에 적용함으로써 획득될 수 있다.
일 실시예에 따른 영상 처리 방법은, 현재 블록의 부호화 데이터로부터 현재 블록을 복원하는 단계; 상기 부호화 데이터에 포함된 양자화 파라미터로부터 산출되는 샘플 값들을 포함하는 양자화 에러 맵을 획득하는 단계; 상기 현재 블록 및 상기 양자화 에러 맵을 신경망에 적용하여 제 1 수정 블록을 획득하는 단계; 상기 현재 블록과 상기 제 1 수정 블록 사이의 제 1 차분 블록을 획득하는 단계; 상기 현재 블록의 특징에 의존하는 파라미터에 따라 상기 제 1 차분 블록의 샘플 값들을 변경하여 제 2 차분 블록을 획득하는 단계; 및 상기 현재 블록과 상기 제 2 차분 블록을 결합하여 제 2 수정 블록을 획득하는 단계를 포함할 수 있다.
일 실시예에 따른 영상 처리 장치는, 하나 이상의 인스트럭션을 저장하는 메모리; 및 상기 하나 이상의 인스트럭션에 따라 동작하는 프로세서를 포함하고, 상기 프로세서는, 현재 블록의 부호화 데이터로부터 현재 블록을 복원하고, 상기 부호화 데이터에 포함된 양자화 파라미터로부터 산출되는 샘플 값들을 포함하는 양자화 에러 맵을 획득하고, 상기 현재 블록 및 상기 양자화 에러 맵을 신경망에 적용하여 제 1 차분 블록을 획득하고, 상기 현재 블록의 특징에 의존하는 파라미터에 따라 상기 제 1 차분 블록의 샘플 값들을 변경하여 제 2 차분 블록을 획득하고, 상기 현재 블록과 상기 제 2 차분 블록을 결합하여 수정 블록을 획득할 수 있다.
일 실시예에 따른 AI 기반 필터링을 위한 영상 처리 장치 및 방법은 복원 블록에 대해 AI 기반 필터링을 적용하여 복원 블록이 원본 블록에 보다 유사해지도록 할 수 있다.
또한, 일 실시예에 따른 AI 기반 필터링을 위한 영상 처리 장치 및 방법은 복원 블록 내 양자화 에러를 보다 효율적으로 제거할 수 있다.
또한, 일 실시예에 따른 AI 기반 필터링을 위한 영상 처리 장치 및 방법은 복원 블록의 특징을 고려한 AI 기반 필터링을 통해 복원 블록의 퀄리티를 향상시킬 수 있다.
도 1은 일 실시예에 따른 영상 처리 장치의 구성을 도시하는 블록도이다.
도 2는 일 실시예에 따라 현재 블록의 하위 블록들에 대한 양자화 파라미터들로부터 생성된 양자화 에러 맵을 도시하는 도면이다.
도 3은 일 실시예에 따른 신경망을 도시하는 도면이다.
도 4는 일 실시예에 따른 영상 수정부의 구성을 도시하는 도면이다.
도 5는 일 실시예에 따른 후보 파라미터들과 블록의 특징들 사이의 대응 관계를 나타내는 표이다.
도 6은 일 실시예에 따른 파라미터 세트들과 블록의 특징들 사이의 대응 관계를 나타내는 표이다.
도 7은 일 실시예에 따른 복수의 스케일 팩터 세트를 도시하는 도면이다.
도 8은 일반적인 컨볼루션 처리를 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 현재 영상 내 확장 블록을 도시하는 도면이다.
도 10은 일 실시예에 따른 확장 거리가 3으로 결정된 경우의 확장 블록을 도시하는 도면이다.
도 11은 일 실시예에 따른 확장 블록에 대응하는 확장 양자화 에러 맵을 도시하는 도면이다.
도 12는 일 실시예에 따른 복수의 가중치 세트와 블록의 특징들 사이의 대응 관계를 나타내는 표이다.
도 13은 일 실시예에 따른 영상 처리 장치에 의한 영상 처리 방법의 순서도이다.
도 14는 일 실시예에 따른 영상 처리 장치에 의한 영상 처리 방법의 순서도이다.
도 15는 일 실시예에 따른 신경망의 훈련 방법을 설명하기 위한 도면이다.
도 16은 다른 실시예에 따른 영상 처리 장치의 구성을 도시하는 블록도이다.
도 17은 영상의 부호화 및 복호화 과정을 도시하는 도면이다.
도 18은 영상으로부터 트리 구조에 따라 분할된 블록들을 도시하는 도면이다.
본 개시는 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고, 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 개시의 실시 형태에 대해 한정하려는 것이 아니며, 본 개시는 여러 실시예들의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
실시예를 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제 1, 제 2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
본 개시에서, "a, b 또는 c 중 적어도 하나" 표현은 " a", " b", " c", "a 및 b", "a 및 c", "b 및 c", "a, b 및 c 모두", 혹은 그 변형들을 지칭할 수 있다.
또한, 본 개시에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.
또한, 본 개시에서 '~부(유닛)', '모듈' 등으로 표현되는 구성요소는 2개 이상의 구성요소가 하나의 구성요소로 합쳐지거나 또는 하나의 구성요소가 보다 세분화된 기능별로 2개 이상으로 분화될 수도 있다. 또한, 이하에서 설명할 구성요소 각각은 자신이 담당하는 주기능 이외에도 다른 구성요소가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성요소 각각이 담당하는 주기능 중 일부 기능이 다른 구성요소에 의해 전담되어 수행될 수도 있음은 물론이다.
또한, 본 개시에서, '영상(image) 또는 픽처(picture)'는 정지영상(또는 프레임), 복수의 연속된 정지영상으로 구성된 동영상, 또는 비디오를 의미할 수 있다.
또한, 본 개시에서 '신경망(neural network)'은 뇌 신경을 모사한 인공 신경망 모델의 대표적인 예시로서, 특정 알고리즘을 사용한 인공 신경망 모델로 한정되지 않는다. 신경망은 심층 신경망(deep neural network)으로 참조될 수도 있다.
또한, 본 개시에서 '가중치(weight)'는 신경망을 이루는 각 레이어의 연산 과정에서 이용되는 값으로서 예를 들어, 입력 값을 소정 연산식에 적용할 때 이용될 수 있다. 가중치는 훈련의 결과로 설정되는 값으로서, 필요에 따라 별도의 훈련 데이터(training data)를 통해 갱신될 수 있다.
또한, 본 개시에서 '현재 블록'은 현재의 처리 대상인 블록을 의미한다. 현재 블록은 현재 영상으로부터 분할된 슬라이스, 타일, 최대 부호화 단위, 부호화 단위, 예측 단위 또는 변환 단위일 수 있다.
또한, 본 개시에서, '샘플'은 영상, 블록, 필터 커널 또는 특징 맵 등의 데이터 내 샘플링 위치에 할당된 데이터로서 처리 대상이 되는 데이터를 의미한다. 예를 들어, 샘플은 2차원의 영상 내 픽셀을 포함할 수 있다.
일 실시예에 따른 영상 처리 장치 및 이에 의한 영상 처리 방법에 대해 설명하기에 앞서, 도 17 및 도 18을 참조하여 영상의 부호화 및 복호화 과정에 대해 설명한다.
도 17은 영상의 부호화 및 복호화 과정을 도시하는 도면이다.
부호화 장치(1710)는 영상에 대한 부호화를 통해 생성된 비트스트림을 복호화 장치(1750)로 전송하고, 복호화 장치(1750)는 비트스트림을 수신 및 복호화하여 영상을 복원한다
구체적으로, 부호화 장치(1710)에서, 예측 부호화부(1715)는 인터 예측 및 인트라 예측을 통해 예측 블록을 출력하고, 변환 및 양자화부(1720)는 예측 블록과 현재 블록 사이의 잔차 블록의 잔차 샘플들을 변환 및 양자화하여 양자화된 변환 계수를 출력한다. 엔트로피 부호화부(1725)는 양자화된 변환 계수를 부호화하여 비트스트림으로 출력한다.
양자화된 변환 계수는 역양자화 및 역변환부(1730)을 거쳐 공간 영역의 잔차 샘플들을 포함하는 잔차 블록으로 복원된다. 예측 블록과 잔차 블록이 합해진 복원 블록은 디블로킹 필터링부(1735) 및 루프 필터링부(1740)를 거쳐 필터링된 블록으로 출력된다. 필터링된 블록을 포함하는 복원 영상은 예측 부호화부(1715)에서 다음 입력 영상의 참조 영상으로 사용될 수 있다.
복호화 장치(1750)로 수신된 비트스트림은 엔트로피 복호화부(1755) 및 역양자화 및 역변환부(1760)를 거쳐 공간 영역의 잔차 샘플들을 포함하는 잔차 블록으로 복원된다. 예측 복호화부(1775)로부터 출력된 예측 블록과 잔차 블록이 조합되어 복원 블록이 생성되고, 복원 블록은 디블로킹 필터링부(1765) 및 루프 필터링부(1770)를 거쳐 필터링된 블록으로 출력된다. 필터링된 블록을 포함하는 복원 영상은 예측 복호화부(1775)에서 다음 영상에 대한 참조 영상으로 이용될 수 있다.
부호화 장치(1710)의 루프 필터링부(1740)는 사용자 입력 또는 시스템 설정에 따라 입력된 필터 정보를 이용하여 루프 필터링을 수행한다. 루프 필터링부(1740)에 의해 사용된 필터 정보는 엔트로피 부호화부(1725)를 통해 복호화 장치(1750)로 전송된다. 복호화 장치(1750)의 루프 필터링부(1770)는 엔트로피 복호화부(1755)로부터 입력된 필터 정보에 기초하여 루프 필터링을 수행할 수 있다.
영상의 부호화 및 복호화 과정에서는 영상이 계층적으로 분할되고, 영상으로부터 분할된 블록에 대해 부호화 및 복호화가 수행된다. 영상으로부터 분할된 블록에 대해 도 18을 참조하여 설명한다.
도 18은 영상(1800)으로부터 트리 구조에 따라 분할된 블록들을 도시하는 도면이다.
하나의 영상(1800)은 하나 이상의 슬라이스(Slice) 혹은 하나 이상의 타일(Tile)로 분할될 수 있다. 하나의 슬라이스는 복수의 타일을 포함할 수 있다.
하나의 슬라이스 혹은 하나의 타일은 하나 이상의 최대 부호화 단위(Maximum Coding Unit; Maximum CU)의 시퀀스일 수 있다.
하나의 최대 부호화 단위는 하나 이상의 부호화 단위로 분할될 수 있다. 부호화 단위는 예측 모드를 결정하기 위한 기준 블록일 수 있다. 다시 말하면, 각각의 부호화 단위에 대해 인트라 예측 모드가 적용되는지, 인터 예측 모드가 적용되는지가 결정될 수 있다. 본 개시에서 최대 부호화 단위는 최대 부호화 블록으로 참조될 수 있고, 부호화 단위는 부호화 블록으로 참조될 수 있다.
부호화 단위의 크기는 최대 부호화 단위와 동일하거나, 최대 부호화 단위보다 작을 수 있다. 최대 부호화 단위는 최대 크기를 가지는 부호화 단위이므로, 부호화 단위로 참조될 수도 있다.
부호화 단위로부터 인트라 예측 또는 인터 예측을 위한 하나 이상의 예측 단위가 결정될 수 있다. 예측 단위의 크기는 부호화 단위와 동일하거나, 부호화 단위보다 작을 수 있다.
또한, 부호화 단위로부터 변환 및 양자화를 위한 하나 이상의 변환 단위가 결정될 수 있다. 변환 단위의 크기는 부호화 단위와 동일하거나, 부호화 단위보다 작을 수 있다. 변환 단위는 변환 및 양자화를 위한 기준 블록으로서, 부호화 단위의 잔차 샘플들이 부호화 단위 내의 변환 단위별로 변환 및 양자화될 수 있다.
본 개시에서 현재 블록은 영상(1800)으로부터 분할된 슬라이스, 타일, 최대 부호화 단위, 부호화 단위, 예측 단위 또는 변환 단위일 수 있다. 또한, 현재 블록의 하위 블록은 현재 블록으로부터 분할된 블록으로서, 예를 들어, 현재 블록이 최대 부호화 단위이면, 하위 블록은 부호화 단위, 예측 단위 또는 변환 단위일 수 있다. 또한, 현재 블록의 상위 블록은 현재 블록을 일부로 포함하는 블록으로서, 예를 들어, 현재 블록이 최대 부호화 단위이면, 상위 블록은 픽처 시퀀스, 픽처, 슬라이스 또는 타일일 수 있다.
이하에서는, 도 1 내지 도 16을 참조하여, 일 실시예에 따른 영상 처리 장치 및 영상 처리 방법에 대해 설명한다.
도 1은 일 실시예에 따른 영상 처리 장치(100)의 구성을 도시하는 블록도이다.
도 1을 참조하면, 영상 처리 장치(100)는 복호화부(110) 및 AI 필터부(130)를 포함할 수 있다.
AI 필터부(130)는 양자화 에러 산출부(132), AI 기반 영상 처리부(134), 영상 분석부(136) 및 영상 수정부(138)를 포함할 수 있다.
복호화부(110) 및 AI 필터부(130)는 하나 이상의 프로세서로 구현될 수 있다. 복호화부(110) 및 AI 필터부(130)는 메모리에 저장된 인스트럭션에 따라 동작할 수 있다.
도 1은 복호화부(110)와 AI 필터부(130)를 개별적으로 도시하고 있으나, 복호화부(110) 및 AI 필터부(130)는 하나의 프로세서를 통해 구현될 수 있다. 이 경우, 복호화부(110) 및 AI 필터부(130)는 전용 프로세서로 구현될 수도 있고, AP(application processor), CPU(central processing unit) 또는 GPU(graphic processing unit)와 같은 범용 프로세서와 소프트웨어의 조합을 통해 구현될 수도 있다. 또한, 전용 프로세서의 경우, 본 개시의 실시예를 구현하기 위한 메모리를 포함하거나, 외부 메모리를 이용하기 위한 메모리 처리부를 포함할 수 있다.
복호화부(110) 및 AI 필터부(130)는 복수의 프로세서로 구성될 수도 있다. 이 경우, 전용 프로세서들의 조합으로 구현될 수도 있고, AP, CPU, 또는 GPU와 같은 다수의 범용 프로세서들과 소프트웨어의 조합을 통해 구현될 수도 있다.
복호화부(110)는 부호화 데이터를 복호화하여 현재 블록을 복원할 수 있다. 부호화 데이터는 원본 영상 내 원본 블록에 대한 부호화 결과로 생성될 수 있다.
일 실시예에서, 복호화부(110)는 도 17에 도시된 역양자화 및 역변환부(1730) 및 예측 부호화부(1715)를 포함할 수 있다. 다른 실시예에서, 복호화부(110)는 도 17에 도시된 역양자화 및 역변환부(1760) 및 예측 복호화부(1775)를 포함할 수 있다.
부호화 데이터는 원본 블록에 대한 부호화를 통해 생성된 신택스 엘리먼트(syntax element)들을 포함할 수 있다.
예를 들어, 부호화 데이터는 도 17에 도시된 엔트로피 부호화부(1725)로 입력되는 데이터에 해당할 수 있다. 또한, 예를 들어, 부호화 데이터는 엔트로피 복호화부(1755)로부터 출력되는 데이터에 해당할 수 있다.
일 실시예에서, 영상 처리 장치(100)는 도 17에 도시된 부호화 장치(1710) 또는 복호화 장치(1750)일 수 있다.
영상 처리 장치(100)가 부호화 장치(1710)인 경우, 영상 처리 장치(100)는 부호화 데이터를 엔트로피 부호화하여 비트스트림을 생성하고, 비트스트림을 복호화 장치(1750)로 전송할 수 있다. 영상 처리 장치(100)가 복호화 장치(1750)인 경우, 영상 처리 장치(100)는 부호화 장치(1710)로부터 수신된 비트스트림을 엔트로피 복호화하여 부호화 데이터를 획득할 수 있다.
일 실시예에서, 부호화 데이터는 비트스트림에 해당할 수도 있다.
복호화부(110)에 의해 복원된 현재 블록은 AI 필터부(130)로 입력될 수 있다.
일 실시예에서, 복호화부(110)에 의해 복원된 현재 블록은 AI 기반 영상 처리부(134)로 전달되고, 부호화 데이터에 포함된 양자화 파라미터는 복호화부(110)로부터 양자화 에러 산출부(132)로 전달될 수 있다.
일 실시예에서, 복호화부(110)에 의해 복원된 현재 블록은 AI 필터부(130)로 입력되기 전에 미리 결정된 하나 이상의 필터링 알고리즘에 따라 처리된 후 AI 필터부(130)로 입력될 수 있다. 예를 들어, 복호화부(110)에 의해 복원된 현재 블록이 디블로킹 필터에 의해 처리된 후, AI 필터부(130)로 입력될 수 있다.
AI 필터부(130)는 현재 블록에 대해 AI 기반 필터링을 적용하여 필터링된 블록을 출력한다. 도 1에 도시된 바와 같이, 필터링된 블록은 제 2 수정 블록일 수 있다.
일 실시예에서, AI 필터부(130)에 의해 출력되는 제 2 수정 블록은 미리 결정된 하나 이상의 필터링 알고리즘에 따라 처리될 수 있다. 예를 들어, 제 2 수정 블록이 SAO 필터에 의해 처리된 후, 출력될 수 있다.
양자화 에러 산출부(132)는 복호화부(110)로부터 수신된 양자화 파라미터에 기초하여 양자화 에러 맵을 생성할 수 있다.
양자화 에러 맵은 양자화 파라미터로부터 산출되는 샘플 값들을 포함할 수 있다. 양자화 에러 맵의 크기는 현재 블록의 크기와 동일할 수 있다.
일 실시예에서, 양자화 에러 맵은 양자화 파라미터로부터 산출되는 양자화 에러 값들을 샘플 값들로 포함할 수 있다.
양자화 에러 값들은 원본 블록에 대한 부호화 및 복호화 과정에서 잔차 샘플들에 대해 적용되는 양자화 및 역양자화로 인해 야기될 수 있는 에러량을 나타낼 수 있다.
양자화 에러 값이 크다는 것은, 양자화 전의 변환 계수와 역양자화 후의 변환 계수 사이의 차이가 클 수 있다는 것을 의미할 수 있다. 양자화 전의 변환 계수와 역양자화 후의 변환 계수 사이의 차이가 클수록 원본 블록과 부호화 데이터에 대한 복호화를 통해 획득되는 현재 블록 사이의 동일성이 저감될 수 있다.
양자화 및 역양자화로 인해 야기되는 에러는 아티팩트에 해당하므로, 양자화 에러 값들을 고려하여 AI 기반 필터링이 수행되어야 할 필요가 있다.
일 실시예에서, 양자화 에러 값은 아래 수학식 1로부터 산출될 수 있다.
[수학식 1]
양자화 에러 값 = 양자화 스텝 사이즈^2 / 12
수학식 1을 참조하면, 양자화 에러 값은 양자화 스텝 사이즈를 제곱한 값에 비례할 수 있다.
양자화 스텝 사이즈는 변환 계수의 양자화에 이용되는 값으로서, 변환 계수를 양자화 스텝 사이즈로 나눔으로써 변환 계수가 양자화될 수 있다. 반대로, 양자화된 변환 계수에 양자화 스텝 사이즈를 곱함으로써 양자화된 변환 계수가 역양자화될 수 있다.
양자화 스텝 사이즈는 아래 수학식 2로 근사화될 수 있다.
[수학식 2]
양자화 스텝 사이즈 = 2^(양자화 파라미터/n) / 양자화 스케일[양자화 파라미터%n]
수학식 2에서, 양자화 스케일[양자화 파라미터%n]는 미리 결정된 n개의 스케일 값들 중 양자화 파라미터가 가리키는 스케일 값을 나타낸다. HEVC 코덱에서는 6개의 스케일 값(26214, 23302, 20560, 18396, 16384 및 14564)을 정의하고 있으므로, HEVC 코덱에 의하면 n은 6이다.
수학식 1 및 수학식 2를 참조하면, 양자화 파라미터가 커질수록 양자화 스텝 사이즈가 커지고, 양자화 에러 값이 커질 수 있다.
구현예에 따라, 실시예들에서, 양자화 에러 산출부(132)는 양자화 파라미터로부터 산출되는 양자화 스텝 사이즈를 샘플 값으로 포함하는 양자화 에러 맵을 생성할 수도 있다.
일 실시예에서, 하나의 양자화 파라미터가 현재 블록 또는 현재 블록의 상위 블록에 대해 설정되는 경우, 양자화 에러 맵의 샘플들은 하나의 양자화 파라미터로부터 산출되는 동일한 샘플 값들을 가질 수 있다.
다른 실시예에서, 양자화 파라미터가 현재 블록의 하위 블록들 각각에 대해 설정되는 경우, 양자화 에러 산출부(132)는 현재 블록의 하위 블록들에 대응하는 양자화 파라미터들에 따라 하위 블록별로 샘플 값들을 산출할 수 있다.
양자화 파라미터가 하위 블록들 각각에 대해 설정되는 경우에 대해 도 2를 참조하여 설명한다.
도 2는 일 실시예에 따라 현재 블록(10)의 하위 블록들(11, 12, 13, 14)에 대한 양자화 파라미터들로부터 생성된 양자화 에러 맵(20)을 도시하는 도면이다.
현재 블록(10)은 복수의 하위 블록들(11, 12, 13, 14)로 분할될 수 있다. 하위 블록들(11, 12, 13, 14) 각각은 변환 단위에 대응할 수 있다.
도 2를 참조하면, 현재 블록(10)의 제 1 하위 블록(11), 제 2 하위 블록(12), 제 3 하위 블록(13) 및 제 4 하위 블록(14)에 대해 각각 a, b, c, a의 양자화 파라미터가 설정되는 경우, 제 1 하위 블록(11), 제 2 하위 블록(12), 제 3 하위 블록(13) 및 제 4 하위 블록(14)에 대응하는 양자화 에러 맵(20)의 제 1 블록(21), 제 2 블록(22), 제 3 블록(23) 및 제 4 블록(24)의 샘플들은 양자화 파라미터 a, b, c, a로부터 산출되는 샘플 값 a', b', c', a'를 가질 수 있다.
일 실시예에서, 샘플 값 a', b', c', a'는 전술한 수학식 1 및 수학식 2에 기초하여 산출되는 양자화 에러 값들에 대응할 수 있다. 다른 실시예에서, 샘플 값 a', b', c', a'는 전술한 수학식 2에 기초하여 산출되는 양자화 스텝 사이즈들에 대응할 수 있다.
현재 블록(10)의 하위 블록들(11, 12, 13, 14) 각각에 대해 양자화 파라미터가 설정되는 경우, 양자화 에러 산출부(132)는 원본 블록의 하위 블록들과 현재 블록(10)의 하위 블록들(11, 12, 13, 14) 사이의 차이를 나타내는 양자화 에러 맵(20)을 생성하는 것으로 이해될 수 있다.
도 2는 현재 블록(10)이 4개의 하위 블록들(11, 12, 13, 14)로 분할되는 것으로 도시하고 있으나, 이는 하나의 예시일 뿐이며, 현재 블록(10)은 다양한 개수(예를 들어, 1개, 2개, 4개, 8개 등) 및 다양한 크기의 하위 블록들로 분할될 수 있다.
다시 도 1을 참조하면, 현재 블록과 양자화 에러 맵이 AI 기반 영상 처리부(134)로 전달된다.
AI 기반 영상 처리부(134)는 현재 블록과 양자화 에러 맵을 신경망에 적용하여 제 1 수정 블록을 획득하고, 제 1 수정 블록을 영상 수정부(138)로 전달할 수 있다.
구현예에 따라, AI 기반 영상 처리부(134)는 현재 블록 및 양자화 에러 맵과 함께, 현재 블록을 복원하는데 이용된 예측 블록 및/또는 잔차 블록을 신경망에 적용하여 제 1 수정 블록을 획득할 수 있다.
AI 기반 영상 처리부(134)가 이용하는 신경망은 메모리에 저장될 수 있다. 구현예에 따라, 신경망은 AI 프로세서로 구현될 수도 있다.
현재 블록와 양자화 에러 맵을 처리하기 위한 신경망에 대해 도 3을 참조하여 설명한다.
도 3은 일 실시예에 따른 신경망(300)을 도시하는 도면이다.
도 3에 도시된 바와 같이, 신경망(300)은 제 1 컨볼루션 레이어(310), 제 1 활성화 레이어(320), 제 2 컨볼루션 레이어(330), 제 2 활성화 레이어(340), 제 3 컨볼루션 레이어(350) 및 합산 레이어(summation layer)(360)를 포함할 수 있다. 합산 레이어(360)는 가산기(adder)로 참조될 수도 있다.
현재 블록(10)과 양자화 에러 맵(20)은 제 1 컨볼루션 레이어(310)로 입력된다. 현재 블록(10)과 양자화 에러 맵(20)은 연접(concatenation)된 후 제 1 컨볼루션 레이어(310)로 입력될 수 있다. 도 3에 도시된 양자화 에러 맵(20)은 도 2에 도시된 양자화 에러 맵(20)과 같이, 서로 다른 샘플 값을 갖는 4개의 블록으로 구분될 수 있다.
제 1 컨볼루션 레이어(310)에 표시된 3X3X1은 3X3의 크기의 1개의 필터 커널을 이용하여 현재 블록(10)과 양자화 에러 맵(20)에 대해 컨볼루션 처리를 하는 것을 예시한다. 컨볼루션 처리 결과 1개의 필터 커널에 의해 1개의 특징 맵이 생성된다.
제 1 컨볼루션 레이어(310)에 의해 생성된 특징 맵은 현재 블록(10)과 양자화 에러 맵(20)의 고유한 특성을 나타낼 수 있다. 예를 들어, 특징 맵은 현재 블록(10)과 양자화 에러 맵(20)의 수직 방향 특성, 수평 방향 특성 또는 에지 특성 등을 나타낼 수 있다.
제 1 컨볼루션 레이어(310)에서 출력된 특징 맵은 제 1 활성화 레이어(320)로 입력된다.
제 1 활성화 레이어(320)는 특징 맵에 대해 비선형(Non-linear) 특성을 부여할 수 있다. 제 1 활성화 레이어(320)는 시그모이드 함수(sigmoid function), Tanh 함수, ReLU(Rectified Linear Unit) 함수 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
제 1 활성화 레이어(320)가 특징 맵에 대해 비선형 특성을 부여한다는 것은, 특징 맵의 일부 샘플 값을 변경하여 출력하는 것을 의미할 수 있다. 이때, 변경은 비선형 특성을 적용하여 수행될 수 있다.
제 1 활성화 레이어(320)는 특징 맵의 샘플 값들을 제 2 컨볼루션 레이어(330)로 전달할지 여부를 결정할 수 있다. 예를 들어, 특징 맵의 샘플 값들 중 어떤 샘플 값들은 제 1 활성화 레이어(320)에 의해 활성화되어 제 2 컨볼루션 레이어(330)로 전달되고, 어떤 샘플 값들은 제 1 활성화 레이어(320)에 의해 비활성화되어 제 2 컨볼루션 레이어(330)로 전달되지 않을 수 있다. 특징 맵이 나타내는 현재 블록(10)과 양자화 에러 맵(20)의 고유 특성이 제 1 활성화 레이어(320)에 의해 강조될 수 있다.
제 1 활성화 레이어(320)에서 출력된 특징 맵은 제 2 컨볼루션 레이어(330)로 입력된다.
제 2 컨볼루션 레이어(330)에 표시된 3X3X1은 3X3의 크기의 1개의 필터 커널을 이용하여 입력된 특징 맵에 대해 컨볼루션 처리하는 것을 예시한다. 제 2 컨볼루션 레이어(330)의 출력은 제 2 활성화 레이어(340)로 입력된다. 제 2 활성화 레이어(340)는 입력된 특징 맵에 대해 비선형 특성을 부여할 수 있다.
제 2 활성화 레이어(340)에서 출력된 특징 맵은 제 3 컨볼루션 레이어(350)로 입력된다. 제 3 컨볼루션 레이어(350)에 표시된 3X3X1은 3X3의 크기의 1개의 필터 커널을 이용하여 1개의 특징 맵을 생성하기 위해 컨볼루션 처리를 하는 것을 예시한다.
제 3 컨볼루션 레이어(350)에서 출력된 특징 맵은 합산 레이어(360)에서 현재 블록(10)과 합산되고, 합산 결과 제 1 수정 블록(30)이 출력된다.
제 3 컨볼루션 레이어(350)에서 출력되는 특징 맵이 현재 블록(10)과 합산됨에 따라 제 1 수정 블록(30)이 획득되므로, 제 3 컨볼루션 레이어(350)에서 출력되는 특징 맵은 현재 블록(10)과 제 1 수정 블록(30) 사이의 제 1 차분 블록으로 참조될 수 있다.
도 3에 도시된 신경망(300)은 합산 레이어(360)를 포함하므로, AI 기반 영상 처리부(134)는 신경망(300)으로부터 제 1 수정 블록(30)을 획득할 수 있다. 신경망(300)이 합산 레이어(360)를 포함하지 않는 경우, AI 기반 영상 처리부(134)는 신경망(300)으로부터 제 1 차분 블록을 획득할 수 있다. 합산 레이어(360)를 포함하지 않는 신경망을 이용하는 영상 처리 장치(1600)에 대해서는 도 16을 참조하여 후술한다.
도 3은 신경망(300)이 세 개의 컨볼루션 레이어(310, 330, 350)와 두 개의 활성화 레이어(320, 340)를 포함하고 있는 것으로 도시하고 있으나, 이는 하나의 예시일 뿐이며, 구현예에 따라서, 신경망(300)에 포함된 컨볼루션 레이어 및 활성화 레이어의 개수는 다양하게 변경될 수 있다.
또한, 구현예에 따라서, 신경망(300)은 RNN(recurrent neural network)을 통해 구현될 수도 있다. 이 경우는 본 개시의 예시에 따른 신경망(300)의 CNN 구조를 RNN 구조로 변경하는 것을 의미한다.
또한, 구현예에 따라, 현재 블록(10)과 양자화 에러 맵(20)이 제 1 컨볼루션 레이어(310)로 입력되기 전에, 현재 블록(10)이 하나 이상의 컨볼루션 레이어에 의해 처리되고, 이와 별개로 양자화 에러 맵(20)이 하나 이상의 컨볼루션 레이어에 의해 처리될 수 있다. 서로 다른 컨볼루션 레이어에 의해 개별적으로 처리된 현재 블록(10)과 양자화 에러 맵(20)이 제 1 컨볼루션 레이어(310)로 입력될 수 있다.
일 실시예에서, 영상 처리 장치(100)는 전술한 컨볼루션 연산 및 활성화 레이어의 연산을 위한 적어도 하나의 ALU(Arithmetic logic unit)를 포함할 수 있다.
ALU는 프로세서로 구현될 수 있다. 컨볼루션 연산을 위해, ALU는 입력된 데이터(예를 들어, 현재 블록(10)과 양자화 에러 맵(20))의 샘플 값들과 필터 커널의 샘플 값들 사이의 곱 연산을 수행하는 곱셈기 및 곱셈의 결과 값들을 더하는 가산기를 포함할 수 있다.
활성화 레이어의 연산을 위해, ALU는 미리 결정된 시그모이드 함수, Tanh 함수 또는 ReLU 함수 등에서 이용되는 가중치를 입력된 샘플 값에 곱하는 곱셈기, 및 곱한 결과와 소정 값을 비교하여 입력된 샘플 값을 다음 레이어로 전달할지를 판단하는 비교기를 포함할 수 있다.
다시 도 1을 참조하면, 영상 분석부(136)는 복호화부(110)에 의해 복원된 현재 블록 또는 현재 블록의 상위 블록의 특징을 분석할 수 있다. 상위 블록의 특징 분석이 필요한 경우, 복호화부(110)에 의해 복원된 상위 블록이 영상 분석부(136)로 제공될 수 있다.
일 실시예에서, 영상 분석부(136)는 현재 블록 또는 상위 블록에 대한 분석 결과로서, 특징 값을 획득할 수 있다.
일 실시예에서, 특징 값은 아래에서 예시되는 값들 중 적어도 하나로부터 획득될 수 있다.
i) 현재 블록 또는 상위 블록의 복원을 위해 획득되는 잔차 샘플 값들을 제곱한 값들의 합;
ii) 현재 블록 또는 상위 블록의 복원을 위해 획득되는 잔차 샘플 값들을 제곱한 값들의 평균;
iii) 현재 블록 또는 상위 블록의 복원을 위해 획득되는 잔차 샘플 값들 중 최대 값;
iv) 현재 블록 또는 상위 블록의 복원을 위해 획득되는 잔차 샘플 값들의 절대 값들 중 최대 값;
v) 현재 블록 또는 상위 블록의 복원을 위해 획득되는 잔차 샘플들에 대응하는 변환 계수들(예를 들어, 역변환된 변환 계수들) 중 0이 아닌 변환 계수들의 개수;
vi) 현재 블록에 대응하는 슬라이스의 타입을 나타내는 값으로서, 현재 블록을 포함하는 슬라이스가 I(Intra) 슬라이스인지, P(Predictive) 슬라이스인지, B(Bi-Predictive) 슬라이스인지를 나타내는 값;
vii) 현재 블록 또는 상위 블록 내에서 인트라 예측이 적용되는 블록의 넓이와 인터 예측이 적용되는 블록의 넓이 사이의 비율;
viii) 현재 블록 또는 상위 블록의 선명도(sharpness)로서, 샘플 값들의 표준 편차, 에지량, 또는 그래디언트 중 적어도 하나로부터 산출되는 값;
ix) 현재 블록 또는 상위 블록에 대해 설정되는 하나 이상의 양자화 파라미터로부터 산출되는 하나 이상의 양자화 스텝 사이즈의 평균;
x) 현재 블록 또는 상위 블록에 대해 설정되는 하나 이상의 양자화 파라미터로부터 산출되는 하나 이상의 양자화 에러 값의 평균.
위에 예시된 i), ii), iii), iv) 및 v)에 해당하는 값들은 양자화 및 역양자화의 대상이 되는 현재 블록 또는 상위 블록 내 잔차 샘플들의 에너지가 얼마나 큰지를 나타낸다. 잔차 샘플들의 에너지가 크다면, 양자화 및 역양자화를 통해 에러가 발생할 가능성이 높아질 수 있다.
또한, 현재 블록 또는 상위 블록의 선명도가 높은 경우, 원본 블록에 대한 부호화/복호화를 통해 획득되는 현재 블록에 에러가 존재할 가능성이 클 수 있으므로, viii)에 해당하는 값으로부터 현재 블록 내에 어느 정도의 에러가 존재하는지가 예측될 수 있다.
또한, ix) 및 x)에 해당하는 값은, 양자화를 통해 발생되는 에러량과 직접적으로 관련이 있으므로, ix) 및 x)에 해당하는 값으로부터 현재 블록 내에 어느 정도의 에러가 존재하는지가 예측될 수 있다.
구현예에 따라, 영상 분석부(136)는 i) 내지 x)에 해당하는 값들 중 두 개 이상을 조합하여 특징 값을 획득할 수도 있다. 두 개 이상의 값을 조합하는데 곱셈 연산 및/또는 덧셈 연산이 이용될 수 있다.
현재 블록 또는 상위 블록의 특징 값이 획득되면, 영상 분석부(136)는 특징 값에 기초하여 파라미터를 결정하고, 결정된 파라미터를 영상 수정부(138)로 제공할 수 있다.
파라미터는 스케일 팩터 및/또는 클리핑 팩터를 포함할 수 있다. 스케일 팩터와 클리핑 팩터에 대해서는 후술한다.
영상 수정부(138)는 현재 블록과 제 1 수정 블록 사이의 제 1 차분 블록을 획득할 수 있다. 앞서 도 3과 관련하여 설명한 합산 레이어(360)를 포함하는 신경망(300)은 제 1 수정 블록(30)을 최종 출력하므로, 영상 수정부(138)는 제 1 수정 블록으로부터 현재 블록을 차감하여 제 1 차분 블록을 획득할 수 있다.
영상 수정부(138)는 제 1 차분 블록의 샘플 값들을 파라미터에 따라 변경하여 제 2 차분 블록을 획득할 수 있다. 그리고, 영상 수정부(138)는 제 2 차분 블록과 현재 블록을 합하여 제 2 수정 블록을 획득할 수 있다.
영상 수정부(138)의 구성에 대해 도 4를 참조하여 설명한다.
도 4는 일 실시예에 따른 영상 수정부(138)의 구성을 도시하는 도면이다.
도 4를 참조하면, 영상 수정부(138)는 감산부(410), 샘플 값 변경부(420) 및 가산부(430)를 포함할 수 있다.
감산부(410)는 현재 블록과 제 1 수정 블록을 입력받고, 현재 블록과 제 1 수정 블록 사이의 차이에 해당하는 제 1 차분 블록을 출력할 수 있다. 일 실시예에서, 감산부(410)는 제 1 수정 블록의 샘플 값들로부터 현재 블록의 샘플 값들을 차감하여 제 1 차분 블록의 샘플 값들을 획득할 수 있다.
샘플 값 변경부(420)는 영상 분석부(136)로부터 제공되는 파라미터에 따라 제 1 차분 블록의 샘플 값들을 변경하여 제 2 차분 블록을 출력할 수 있다.
일 실시예에서, 파라미터가 스케일 팩터에 해당하는 경우, 샘플 값 변경부(420)는 제 1 차분 블록의 샘플 값들에 스케일 팩터를 곱하여 제 2 차분 블록의 샘플 값들을 획득할 수 있다.
다른 실시예에서, 파라미터가 클리핑 팩터에 해당하는 경우, 샘플 값 변경부(420)는 제 1 차분 블록의 샘플 값들을 클리핑 팩터로부터 확인되는 상한 값과 하한 값 사이의 값들로 제한하여 제 2 차분 블록의 샘플 값들을 획득할 수도 있다.
또 다른 실시예에서, 파라미터가 스케일 팩터와 클리핑 팩터를 포함하는 경우, 샘플 값 변경부(420)는 제 1 차분 블록의 샘플 값들에 스케일 팩터를 곱하고, 스케일 팩터가 곱해진 제 1 차분 블록의 샘플 값들을 클리핑 팩터로부터 확인되는 상한 값과 하한 값 사이의 값들로 제한하여 제 2 차분 블록의 샘플 값들을 획득할 수도 있다.
또 다른 실시예에서, 파라미터가 스케일 팩터와 클리핑 팩터를 포함하는 경우, 샘플 값 변경부(420)는 제 1 차분 블록의 샘플 값들을 클리핑 팩터로부터 확인되는 상한 값과 하한 값 사이의 값들로 제한하고, 클리핑 팩터에 따라 제한된 제 1 차분 블록의 샘플 값들에 스케일 팩터를 곱하여 제 2 차분 블록의 샘플 값들을 획득할 수도 있다.
가산부(430)는 현재 블록과 제 2 차분 블록을 합산하여 제 2 수정 블록을 출력할 수 있다.
일 실시예에서, 영상 수정부(138)가 제 1 차분 블록의 샘플 값들을 파라미터에 따라 변경하는 이유는, 제 1 차분 블록이 컨볼루션 레이어들의 처리 결과에 해당하기 때문이다. 컨볼루션 레이어들은 훈련을 통해 미리 설정된 가중치에 따라 입력 데이터를 처리하므로, 컨볼루션 레이어들은 미리 결정된 훈련 목적에 맞게 입력 데이터를 처리할 수밖에 없다.
본 개시에서는, 훈련을 통해 설정된 가중치에 따라 동작하는 컨볼루션 레이어들의 출력 데이터, 즉, 제 1 차분 블록을 현재 블록의 특징에 의존하는 파라미터에 따라 수정함으로써, 현재 블록이 현재 블록의 특징에 적합하게 필터링되도록 할 수 있다.
구현예에 따라, 영상 수정부(138)는 제 1 수정 블록의 샘플 값들을 파라미터에 따라 변경하여 제 2 수정 블록을 획득할 수도 있다.
일 실시예에서, 도 1에 도시된 영상 분석부(136)는 현재 블록 또는 상위 블록의 특징 값과 임계 값의 비교 결과에 따라 하나 이상의 후보 파라미터로부터 제 1 차분 블록에 적용될 파라미터를 선택할 수 있다.
도 5는 일 실시예에 따른 후보 파라미터들과 블록의 특징들 사이의 대응 관계를 나타내는 표로서, 이러한 대응 관계는 영상 처리 장치(100)에 미리 저장되어 있을 수 있다.
일 실시예에서, 후보 파라미터들은 부호화 데이터로부터 현재 블록 또는 상위 블록을 위해 획득될 수도 있다. 후보 파라미터들이 상위 블록을 위해 획득된 경우, 해당 상위 블록에 포함되는 하위 블록들에 대해 동일한 후보 파라미터들이 이용될 수 있다.
도 5에 도시된 바와 같이, 영상 분석부(136)는 현재 블록 또는 상위 블록의 특징 값이 제 1 임계 값보다 작다면, 후보 파라미터 'a'를 제 1 차분 블록에 적용될 파라미터로 선택하고, 특징 값이 제 1 임계 값 이상이고, 제 2 임계 값 미만이라면 후보 파라미터 'b'를 제 1 차분 블록에 적용될 파라미터로 선택할 수 있다. 또한, 영상 분석부(136)는 특징 값이 제 2 임계 값 이상이라면, 후보 파라미터 'c'를 제 1 차분 블록에 적용될 파라미터로 선택할 수 있다.
도 5는 3개의 후보 파라미터를 예시하고 있으나, 이는 하나의 실시예일뿐, 후보 파라미터의 개수는 다양하게 결정될 수 있으며, 각각의 후보 파라미터에 대응하는 조건 역시 다양하게 설정될 수 있다.
일 실시예에서, 도 5에 도시된 후보 파라미터들은 하나 이상의 파라미터 세트 중에서 선택된 파라미터 세트에 포함될 수 있다.
도 6은 일 실시예에 따른 파라미터 세트들과 블록의 특징들 사이의 대응 관계를 나타내는 표로서, 이러한 대응 관계는 영상 처리 장치(100)에 미리 저장될 수 있다.
일 실시예에서, 파라미터 세트들은 부호화 데이터로부터 획득될 수도 있다. 예를 들어, 파라미터 세트들은 부호화 데이터 또는 비트스트림의 시퀀스 파라미터 세트(sequence parameter set)에 포함될 수 있다.
도 6은 각 파라미터 세트에 포함된 후보 파라미터들을 함께 도시하고 있는데, 파라미터 세트 'P'는 도 5에 도시된 후보 파라미터 'a', 'b', 'c'를 포함하고, 파라미터 세트 'Q'는 후보 파라미터 'd', 'e'를 포함하고, 파라미터 세트 'R'은 후보 파라미터 'a', 'g', 'h'를 포함할 수 있다.
도 6에 도시된 바와 같이, 영상 분석부(136)는 현재 블록 또는 상위 블록의 특징 값이 제 3 임계 값보다 작다면, 파라미터 세트 'P'를 선택하고, 특징 값이 제 3 임계 값 이상이고, 제 4 임계 값 미만이라면 파라미터 세트 'Q'를 선택할 수 있다. 또한, 영상 분석부(136)는 특징 값이 제 4 임계 값 이상이라면, 파라미터 세트 'R'을 선택할 수 있다.
일 예로, 영상 분석부(136)는 특징 값이 제 3 임계 값보다 작다면, 파라미터 세트 'P'를 선택하고, 특징 값이 제 3 임계 값보다 작은 범위 내에서 해당 특징 값이 도 5에 도시된 제 1 임계 값보다 작다면 후보 파라미터 'a'를 제 1 차분 블록을 위해 선택하고, 해당 특징 값이 제 1 임계 값 이상이고, 제 2 임계 값 미만이라면 후보 파라미터 'b'를 선택할 수 있다.
일 실시예에서, 어느 하나의 파라미터 세트(예를 들어, 파라미터 세트 'P')에 포함된 후보 파라미터들의 개수는 다른 하나의 파라미터 세트(예를 들어, 파라미터 세트 'Q')에 포함된 후보 파라미터들의 개수와 다를 수 있다. 또한, 어느 하나의 파라미터 세트(예를 들어, 파라미터 세트 'P')에 포함된 후보 파라미터들 중 일부는 다른 하나의 파라미터 세트(예를 들어, 파라미터 세트 'R')에 포함된 후보 파라미터들 중 일부와 동일할 수 있다.
도 6은 세 개의 파라미터 세트를 도시하고 있으나, 이는 하나의 예시일 뿐이고, 파라미터 세트의 개수는 다양하게 결정될 수 있으며, 각각의 파라미터 세트에 대응하는 조건 역시 다양하게 설정될 수 있다.
구현예에 따라, 하나 이상의 파라미터 세트 중 어느 하나를 선택하는데 이용되는 특징 값과, 하나 이상의 후보 파라미터 중 어느 하나를 선택하는데 이용되는 특징 값은 서로 다른 방식으로 산출될 수 있다. 예를 들어, 하나 이상의 파라미터 세트 중 어느 하나를 선택하는데 이용되는 특징 값은 전술한 i)에 해당하는 값으로부터 산출되고, 하나 이상의 후보 파라미터 중 어느 하나를 선택하는데 이용되는 특징 값은 v)에 해당하는 값으로부터 산출될 수 있다.
일 실시예에서, 파라미터 세트는 현재 블록의 상위 블록을 위해 선택되고, 파라미터는 현재 블록을 위해 선택될 수 있다. 예를 들어, 현재 블록이 최대 부호화 단위이고, 상위 블록이 슬라이스인 경우, 하나 이상의 파라미터 세트들 중 어느 하나의 파라미터 세트가 슬라이스를 위해 선택되고, 선택된 파라미터 세트에 포함된 후보 파라미터들 중 어느 하나가 해당 슬라이스 내 최대 부호화 단위 별로 선택될 수 있다.
다른 실시예에서, 파라미터 세트는 제 1 상위 블록을 위해 선택되고, 파라미터는 제 2 상위 블록을 위해 선택될 수 있다. 예를 들어, 현재 블록이 최대 부호화 단위이고, 제 1 상위 블록이 픽처 시퀀스이고, 제 2 상위 블록이 슬라이스인 경우, 하나 이상의 파라미터 세트들 중 어느 하나의 파라미터 세트가 픽처 시퀀스를 위해 선택되고, 선택된 파라미터 세트에 포함된 후보 파라미터들 중 어느 하나가 해당 픽처 시퀀스 내 슬라이스별로 선택될 수 있다. 그리고, 슬라이스 내 최대 부호화 단위들에 대해 동일한 파라미터가 적용될 수 있다.
또 다른 실시예에서, 파라미터 세트는 부호화 데이터에 포함된 제 1 정보에 의해 선택될 수 있다. 제 1 정보는 하나 이상의 파라미터 세트들 중 어느 하나를 가리키는 인덱스 또는 플래그일 수 있다. 일 실시예에서, 제 1 정보는 부호화 데이터(또는 비트스트림)의 시퀀스 파라미터 세트(sequence parameter set), 픽처 파라미터 세트(picture parameter set), 슬라이스 헤더(slice header) 또는 슬레이스 데이터(slice data) 중 적어도 하나에서 획득될 수 있다.
또 다른 실시예에서, 파라미터는 부호화 데이터에 포함된 제 2 정보에 의해 선택될 수 있다. 제 2 정보는 하나 이상의 후보 파라미터들 중 어느 하나를 가리키는 인덱스 또는 플래그일 수 있다. 일 실시예에서, 제 2 정보는 부호화 데이터(또는 비트스트림)의 시퀀스 파라미터 세트, 픽처 파라미터 세트, 슬라이스 헤더 또는 슬레이스 데이터 중 적어도 하나에서 획득될 수 있다.
구현예에 따라, 제 1 정보가 가리키는 파라미터 세트에 포함된 하나 이상의 후보 파라미터들 중 어느 하나는 현재 블록 또는 상위 블록의 특징 값에 기반하여 선택될 수도 있다. 다른 예로, 하나 이상의 파라미터 세트들 중 어느 하나가 현재 블록 또는 상위 블록의 특징 값에 기반하여 선택되고, 선택된 파라미터 세트에 포함된 하나 이상의 후보 파라미터들 중 어느 하나는 제 2 정보에 기반하여 선택될 수도 있다.
일 실시예에서, 제 1 정보 및 제 2 정보에 따라 제 1 차분 블록을 위한 파라미터가 선택되는 경우, 도 1에 도시된 영상 분석부(136)는 AI 필터부(130)에서 제외될 수도 있다. 왜냐하면, 제 1 차분 블록에 적용될 파라미터를 선택하는데 현재 블록 또는 상위 블록의 특징 값이 이용되지 않기 때문이다.
일 실시예에서, 제 1 정보는 상위 블록을 위해 부호화 데이터에 포함되고, 제 2 정보는 현재 블록을 위해 부호화 데이터에 포함될 수 있다. 상위 블록이 슬라이스이고, 현재 블록이 최대 부호화 단위인 경우, 제 1 정보는 비트스트림의 슬라이스 헤더에 포함되고, 제 2 정보는 슬라이스 데이터에 포함될 수 있다.
다른 실시예에서, 제 1 정보는 제 1 상위 블록을 위해 부호화 데이터에 포함되고, 제 2 정보는 제 2 상위 블록을 위해 부호화 데이터에 포함될 수 있다. 제 1 상위 블록이 픽처 시퀀스 또는 픽처이고, 제 2 상위 블록이 슬라이스인 경우, 제 1 정보는 시퀀스 파라미터 세트 또는 픽처 파라미터 세트에 포함되고, 제 2 정보는 슬라이스 헤더에 포함될 수 있다.
이하에서는, 스케일 팩터와 클리핑 팩터에 대해 좀더 구체적으로 설명한다.
스케일 팩터는 제 1 차분 블록의 샘플 값들에 적용되는 값으로서, 예를 들어, 제 1 차분 블록의 샘플 값들에 곱해지는 값을 포함할 수 있다.
도 7은 일 실시예에 따른 복수의 스케일 팩터 세트를 도시하는 도면이다.
도 7에 도시된 바와 같이, 각각의 스케일 팩터 세트는 하나 이상의 후보 스케일 팩터를 포함할 수 있다. 예를 들어, 제 1 세트는 1, 0.75, 0.5 및 0.25의 후보 스케일 팩터들을 포함하고, 제 2 세트는 1, 0.75, 1.25 및 0.5의 후보 스케일 팩터들을 포함할 수 있다.
전술한 바와 같이, 복수의 스케일 팩터 세트 중 어느 하나가 특징 값에 기반하여, 또는 부호화 데이터에 포함된 정보에 기반하여 선택되고, 선택된 스케일 팩터 세트에 포함된 후보 스케일 팩터 중 어느 하나가 특징 값에 기반하여, 또는 부호화 데이터에 포함된 정보에 기반하여 선택될 수 있다.
영상 수정부(138)는 영상 분석부(136)가 선택한 스케일 팩터를 제 1 차분 블록의 샘플 값들에 적용하여 제 2 차분 블록을 생성할 수 있다.
다음으로, 클리핑 팩터는 제 1 차분 블록의 샘플 값들에 대해 클리핑 연산을 수행하기 위한 값이다.
예를 들어, 영상 수정부(138)는 하기 수학식 3에 따라 제 1 차분 블록의 샘플 값들을 클리핑할 수 있다.
[수학식 3]
Clip(p) =clip(X, p, Y)
수학식 3에서 p는 제 1 차분 블록의 샘플 값들, X는 하한 값 및 Y는 상한 값을 가리킨다. 수학식 3에서 p가 X와 Y사이의 값을 갖는다면, p가 출력되고, p가 X보다 작다면 X가 출력되고, p가 Y보다 크다면 Y가 출력된다.
영상 분석부(136)는 제 1 차분 블록을 위한 클리핑 팩터로부터 X 값과 Y 값을 결정할 수 있다.
일 예로, 영상 분석부(136)는 클리핑 팩터를 X 값으로 결정하고, X 값의 부호를 반대로 변경하여 Y 값을 결정할 수 있다.
다른 예로, 영상 분석부(136)는 클리핑 팩터를 Y 값으로 결정하고, Y 값의 부호를 반대로 변경하여 X 값을 결정할 수 있다.
또 다른 예로, 클리핑 팩터가 X 값과 Y 값 세트로 구성되어 있는 경우, 영상 분석부(136)는 클리핑 팩터에 포함된 X 값과 Y 값을 이용하여 클리핑 연산을 수행할 수도 있다.
또 다른 예로, 영상 분석부(136)는 전술한 i) 내지 x)에 해당하는 값들 중 적어도 하나를 이용하여 X 값과 Y 값을 산출할 수도 있다. 일 예로, 영상 분석부(136)는 현재 블록 또는 상위 블록의 복원을 위해 획득되는 잔차 샘플 값(예를 들어, 잔차 샘플 값들의 절대 값들 중 최대 값)에 양자화 파라미터, 양자화 스텝 사이즈 또는 양자화 에러 값을 곱하여 X 값 중 Y 값 중 어느 하나를 결정할 수 있다. 그리고, 영상 분석부(136)는 X 값 중 Y 값 중 어느 하나의 부호를 변경하여 X 값 중 Y 값 중 다른 하나를 결정할 수 있다.
한편, 본 개시에 따르면, 영상을 구성하는 블록들 각각에 대해 AI 기반 필터링이 적용되고, AI 기반 필터링이 적용된 블록들이 하나의 복원 영상을 구성하게 되는데, 블록별로 AI 기반 필터링이 적용됨에 따라 블록들 사이의 경계에 아티팩트가 발생할 가능성이 있다.
예를 들어, 도 18에 도시된 영상(1800)으로부터 분할된 최대 부호화 단위들 각각에 대해 AI 기반 필터링이 적용되는 경우, 복원 영상 내 최대 부호화 단위들 사이의 연속성이 저감될 수 있다.
일 실시예에서, AI 기반 영상 처리부(134)는 현재 블록 내 샘플들과 현재 블록의 경계 외부에 위치한 샘플들을 포함하는 확장 블록을 신경망(300)에 적용함으로써 블록들 사이의 연속성이 저감되는 것을 방지할 수 있다.
확장 블록이 어떻게 결정되는지에 대해 설명하기에 앞서 일반적인 컨볼루션 처리에 대해 도 8을 참조하여 설명한다.
도 8은 일반적인 컨볼루션 처리를 설명하기 위한 도면이다.
도 8에서 블록(800)에 표시된 I1 내지 I25는 블록(800)의 샘플들을 나타내고, 필터 커널(820)에 표시된 F1 내지 F9는 필터 커널(820)의 가중치들을 나타낸다. 또한, 특징 맵(830)에 표시된 M1 내지 M9는 특징 맵(830)의 샘플들을 나타낸다. 또한, 블록(800)에 인접한 샘플들 P1 내지 P24는 블록(800)에 대한 패딩(padding)을 통해 결정된 샘플들(이하, 패딩 샘플들(810))이다. 일반적으로, 패딩 샘플들(810)은 0의 값들을 가질 수 있다.
컨볼루션 처리 과정에서, P1, P2, P3, P8, I1, I2, P10, I6 및 I7의 샘플 값들 각각과 필터 커널(820)의 F1, F2, F3, F4, F5, F6, F7, F8 및 F9 각각의 곱 연산이 수행되고, 곱 연산의 결과 값들을 조합(예를 들어, 덧셈 연산)한 값이 특징 맵(830)의 M1의 값으로 할당될 수 있다.
컨볼루션 연산의 스트라이드(stride)가 1이라면, P2, P3, P4, I1, I2, I3, I6, I7 및 I8의 샘플 값들 각각과 필터 커널(820)의 F1, F2, F3, F4, F5, F6, F7, F8 및 F9 각각의 곱 연산이 수행되고, 곱 연산의 결과 값들을 조합한 값이 특징 맵(830)의 M2의 값으로 할당될 수 있다.
필터 커널(820)의 F9가 패딩 샘플 P24에 도달할 때까지 필터 커널(820)이 스트라이드에 따라 이동하는 동안 블록(800)의 샘플들 및 패딩 샘플들(810)과 필터 커널(820)의 가중치들 사이의 컨볼루션 연산이 수행됨으로써, 블록(800)과 동일한 크기를 갖는 특징 맵(830)이 획득될 수 있다.
일반적으로 패딩 처리가 되지 않은 블록(800)에 대해 컨볼루션 처리가 수행되는 경우, 블록(800)보다 작은 크기의 특징 맵(830)이 출력된다. 도 8에 도시된 바와 같이, 필터 커널(820)의 크기가 3X3인 경우, 블록(800)과 동일한 크기의 특징 맵(830)을 획득하기 위해서는 블록(800)의 좌측 방향, 우측 방향, 상부 방향 및 하부 방향으로 1의 샘플 거리만큼 패딩이 이루어져야 한다. 만약, 필터 커널(820)의 크기가 5X5인 경우에는, 블록(800)과 동일한 크기의 특징 맵(830)을 획득하기 위해 현재 블록의 좌측 방향, 우측 방향, 상부 방향 및 하부 방향으로 2의 샘플 거리만큼 패딩이 이루어져야 한다.
본 개시에 따르면, 현재 블록과 동일한 크기의 제 1 수정 블록을 획득하기 위해 현재 블록을 패딩하는 대신, 도 9에 도시된 현재 영상(900) 내 현재 블록(10)보다 큰 크기의 확장 블록(990)이 이용될 수 있다. 여기서, 현재 블록(10)의 경계 외부에 위치하는 샘플들 역시 현재 영상(900)에 포함된 샘플들이다. 즉, 현재 블록(10)을 패딩하는 대신 현재 블록(10)에 인접한 샘플들을 이용함으로써, 블록들 사이에 아티팩트가 발생할 가능성이 감소된다.
AI 기반 영상 처리부(134)는 현재 블록과 동일한 크기의 제 1 수정 블록이 신경망(300)으로부터 출력될 수 있도록 확장 블록의 적절한 크기를 결정하여야 한다.
일 실시예에 따른 AI 기반 영상 처리부(134)는 신경망(300)에 포함된 컨볼루션 레이어의 개수 및 각각의 컨볼루션 레이어에서 이용되는 필터 커널의 크기를 고려하여, 확장 거리를 산출할 수 있다. 그리고, AI 기반 영상 처리부(134)는 현재 블록의 경계 외부에 있는 주변 샘플들 중 확장 거리에 대응하는 샘플들 및 현재 블록 내 샘플들을 포함하는 확장 블록을 결정할 수 있다.
일 실시예에서, 어느 하나의 컨볼루션 레이어에서 이용되는 필터 커널의 크기가 nXn인 경우, nXn 크기의 필터 커널로부터 요구되는 확장 거리는 (n-1)/2로 산출될 수 있다. 여기서, n은 홀수일 수 있다.
어느 하나의 컨볼루션 레이어에서 이용되는 필터 커널의 개수가 복수 개인 경우, 복수의 필터 커널 중 가장 큰 크기의 필터 커널을 기준으로 확장 거리가 산출될 수 있다.
도 3에 도시된 바와 같이, 신경망(300)이 3개의 컨볼루션 레이어를 포함하고, 3개의 컨볼루션 레이어에서 이용되는 필터 커널들의 크기가 모두 3X3이라면, AI 기반 영상 처리부(134)는 확장 거리를 3(=1+1+1)으로 결정할 수 있다. 3개의 컨볼루션 레이어들 중 2개의 컨볼루션 레이어에서 이용되는 필터 커널들의 크기가 5X5이고, 나머지 하나의 컨볼루션 레이어에서 이용되는 필터 커널의 크기가 3X3이라면, AI 기반 영상 처리부(134)는 확장 거리를 5(=2+2+1)로 결정할 수 있다.
도 10은 일 실시예에 따른 확장 거리가 3으로 결정된 경우의 확장 블록(1090)을 도시하는 도면이다.
확장 거리가 3으로 결정된 경우, AI 기반 영상 처리부(134)는 현재 블록(10)의 경계 외부에 위치하는 주변 샘플들 중 3의 확장 거리 내에 위치하는 주변 샘플들과 현재 블록(10) 내 샘플들을 포함하는 확장 블록(1090)을 결정할 수 있다.
도 10에 도시된 바와 같이, 현재 영상(1000)이 6개의 블록들(1010, 10, 1020, 1030, 1040, 1050)로 분할되고, 중앙 상부에 위치한 블록이 현재 블록(10)인 경우, AI 기반 영상 처리부(134)는 현재 블록(10)의 좌측 블록(1010) 내에 위치하면서 현재 블록(10)의 좌측 경계로부터 3의 확장 거리 내에 위치하는 주변 샘플들, 현재 블록(10)의 우측 블록(1020) 내에 위치하면서 현재 블록(10)의 우측 경계로부터 3의 확장 거리 내에 위치하는 주변 샘플들, 및 현재 블록(10)의 하부 블록(1040) 내에 위치하면서 현재 블록(10)의 하부 경계로부터 3의 확장 거리 내에 위치하는 주변 샘플들을 선택할 수 있다. 이 때, 사각형의 확장 블록(1090)을 결정하기 위해 현재 블록(10)의 좌측 하부 블록(1030) 내에 위치하는 주변 샘플들과 현재 블록(10)의 우측 하부 블록(1050) 내에 위치하는 주변 샘플들 역시 선택될 수 있다.
현재 블록(10)의 경계가 현재 영상(1000)의 경계와 일치하는 경우, 예를 들어, 도 10에 도시된 바와 같이, 현재 블록(10)의 상부 경계가 현재 영상(1000)의 상부 경계와 일치하는 경우, 현재 블록(10)의 상부 경계의 외부에 위치하는 주변 샘플들이 존재하지 않는다. 따라서, AI 기반 영상 처리부(134)는 현재 블록(10)의 상부 경계 외부에 위치하는 주변 샘플들(1060) 각각으로부터 가장 가까운 샘플들을 이용하여 현재 블록(10)의 상부 경계의 외부에 위치하는 주변 샘플들(1060)을 결정할 수 있다.
도 10에 도시된 바와 같이, 현재 블록(10)의 상부 경계의 외부에 위치하는 주변 샘플들(1060) 중 가장 좌측열에 위치하는 주변 샘플들의 값들은 가장 가까운 샘플 값 a로 결정되고, 주변 샘플들(1060) 중 가장 우측열에 위치하는 주변 샘플들의 값들은 가장 가까운 샘플 값 k로 결정될 수 있다.
AI 기반 영상 처리부(134)는 5x5 크기의 현재 블록(10)보다 크기가 큰 11x11 크기의 확장 블록(1090)을 신경망(300)에 적용하고, 현재 블록(10)의 크기와 동일한 크기인 5x5의 제 1 수정 블록을 획득할 수 있다.
신경망(300)으로 입력되는 현재 블록(10)과 양자화 에러 맵(20)의 크기가 동일하여야 하므로, 확장 블록(1090)이 신경망(300)으로 입력되는 경우, AI 기반 영상 처리부(134)는 확장 블록(1090)과 동일한 크기를 갖는 확장 양자화 에러 맵을 생성하여야 하는데, 이에 대해 도 11을 참조하여 설명한다.
도 11은 일 실시예에 따른 확장 블록에 대응하는 확장 양자화 에러 맵(1120)을 도시하는 도면이다.
도 11의 좌측에는 도 2에 도시된 양자화 에러 맵(20)이 도시되어 있고, 도 11의 우측에는 일 실시예에 따른 확장 양자화 에러 맵(1120)이 도시되어 있다.
도 2에 도시된 바와 같이, 현재 블록(10)이 제 1 하위 블록(11), 제 2 하위 블록(12), 제 3 하위 블록(13) 및 제 4 하위 블록(14)으로 분할되고, 제 1 하위 블록(11), 제 2 하위 블록(12), 제 3 하위 블록(13) 및 제 4 하위 블록(14)의 양자화 파라미터가 각각 a, b, c 및 a일 때, 제 1 하위 블록(11) 내지 제 4 하위 블록(14)에 대응하는 양자화 에러 맵(20) 내 제 1 블록(21) 내지 제 4 블록(24)은 a', b', c' 및 a'의 샘플 값들을 가질 수 있다. 도 11의 좌측에 도시된 양자화 에러 맵(20)에는 샘플이 표시되어 있지 않으나, 제 1 블록(21) 내지 제 4 블록(24)은 복수의 샘플들을 포함하고, 해당 샘플들이 a', b', c' 및 a'의 샘플 값들을 가질 수 있다.
현재 블록(10) 내 샘플들과 그에 인접하는 주변 샘플들이 확장 블록을 구성하는 경우, 현재 블록(10)의 경계 외부에 위치하는 주변 샘플들이 속한 하위 블록의 양자화 파라미터에 따라 양자화 에러 맵(20)의 외부의 주변 샘플들의 값들이 결정될 수 있다.
도 11의 우측에 도시된 바와 같이, 제 1 블록(21)의 좌측 블록(1121)의 샘플들은 e'의 값을 가지고, 제 3 블록(23)의 좌측 블록(1122)의 샘플들은 a'의 값을 가진다. 여기서, e' 및 a'는 현재 블록(10)의 제 1 하위 블록(11)의 좌측에 위치하는 하위 블록에 할당된 양자화 파라미터 및 제 3 하위 블록(13)의 좌측에 위치하는 하위 블록에 할당된 양자화 파라미터로부터 각각 산출될 수 있다.
또한, 제 3 블록(23)의 좌측 하부 블록(1123)의 샘플들은 f'의 값을 가질 수 있고, 제 3 블록(23)의 하부 블록(1124)의 샘플들은 c'의 값을 가지고, 제 4 블록(24)의 하부 블록(1125)의 샘플들은 a'의 값을 가질 수 있다. 또한, 제 4 블록(24)의 우측 하부 블록(1126)의 샘플들은 e'의 값을 가지고, 제 2 블록(22)과 제 4 블록(24)의 우측 블록(1127)의 샘플들은 d'의 값을 가질 수 있다.
도 10과 관련하여 설명한 바와 같이, 현재 블록(10)의 경계(예를 들어, 상부 경계)가 현재 영상(1000)의 경계에 해당하는 경우, 현재 블록(10)의 경계 외부에 위치하는 주변 샘플들은 해당 주변 샘플들이 이용할 수 있는 가장 가까운 샘플들로부터 결정될 수 있다. 마찬가지로 양자화 에러 맵(20)의 경계 외부에 위치하는 주변 샘플들의 값들도 해당 주변 샘플들이 이용할 수 있는 가장 가까운 샘플들로부터 결정될 수 있다.
현재 블록(10)의 상부 경계가 현재 영상의 경계에 해당하는 경우, 도 11의 우측에 도시된 바와 같이, 양자화 에러 맵(20)의 상부 경계의 외부에 위치하는 샘플들은 e', a', b' 및 a'의 값들을 가질 수 있다. 즉, 제 1 블록(21)의 좌측 상부에 위치하는 블록(1131)의 샘플들은 이들과 가장 가까운 제 1 블록(21)의 좌측 블록(1121)의 샘플로부터 결정되고, 제 1 블록(21)의 상부에 위치하는 블록(1130)의 샘플들은 이들과 가장 가까운 제 1 블록(21)의 샘플로부터 결정될 수 있다. 또한, 제 2 블록(22)의 상부에 위치하는 블록(1129)의 샘플들은 이들과 가장 가까운 제 2 블록(22)의 샘플로부터 결정되고, 제 2 블록(22)의 우측 상부에 위치하는 블록(1128)의 샘플들은 이들과 가장 가까운 제 2 블록(22)의 우측 블록(1127)의 샘플로부터 결정될 수 있다.
한편, 일 실시예에서, AI 기반 영상 처리부(134)는 현재 블록 또는 상위 블록의 특징 값으로부터 복수의 가중치 세트 중 신경망(300)에 설정될 가중치 세트를 선택할 수 있는데, 이에 대해 도 12를 참조하여 설명한다.
도 12는 일 실시예에 따른 복수의 가중치 세트와 블록의 특징들 사이의 대응 관계를 나타내는 표이다. 도 12에 도시된 대응 관계는 영상 처리 장치(100)에 미리 저장될 수 있다.
복수의 가중치 세트 각각은 신경망(300)에 대한 훈련 결과로 생성될 수 있다. 예를 들어, 도 12에 도시된 A 가중치 세트, B 가중치 세트 및 C 가중치 세트는 서로 다른 훈련 목적에 따라 신경망(300)을 훈련시킴에 따라 획득될 수 있다. 훈련 목적을 다르게 설정한다는 것은, 신경망(300)을 훈련시키는데 이용되는 훈련용 영상의 종류를 달리하거나, 손실 정보를 다른 방식으로 산출하는 것을 의미할 수 있다.
일 예로, 후술하는 도 15에 도시된 신경망(300)의 훈련 과정에서 훈련용 제 1 수정 블록(1504)과 훈련용 원본 블록(1501) 사이의 차이에 대응하는 손실 정보(1505)가 이용될 수 있는데, 두 블록 사이의 차이를 산출하는 방법은 다양하므로, 제 1 방법에 따라 산출된 손실 정보(1505)에 기반하여 신경망(300)을 훈련시킴으로써 A 가중치 세트를 생성하고, 제 2 방법에 따라 산출된 손실 정보(1505)에 기반하여 신경망(300)을 훈련시킴으로써 B 가중치 세트를 생성할 수 있다. 또한, 제 3 방법에 따라 산출된 손실 정보(1505)에 기반하여 신경망(300)을 훈련시킴으로써 C 가중치 세트를 생성할 수 있다.
일 실시예에 따른 AI 기반 영상 처리부(134)는 현재 블록 또는 상위 블록의 특징에 기반하여 신경망(300)의 가중치를 적응적으로 세팅하므로, 현재 블록에 대한 효과적인 필터링이 가능해질 수 있다. 여기서, 가중치 세트로 신경망(300)을 세팅한다는 것은, 신경망(300)의 컨볼루션 레이어에서 이용되는 필터 커널의 가중치를 가중치 세트에 포함된 가중치로 설정하는 것을 의미할 수 있다.
도 12를 참조하면, 특징 값이 제 1 임계 값보다 크다면 A 가중치 세트가 선택되고, 특징 값이 제 1 임계 값 이하이고, 제 2 임계 값보다 크다면 B 가중치 세트가 선택되고, 특징 값이 제 2 임계 값 이하이고, 제 3 임계 값보다 크다면 C 가중치 세트가 선택될 수 있다.
도 12는 세 개의 가중치 세트를 도시하고 있으나, 이는 하나의 예시일 뿐이고, 가중치 세트의 개수는 다양하게 결정될 수 있으며, 각각의 가중치 세트에 대응하는 조건 역시 다양하게 설정될 수 있다.
일 실시예에서, 가중치 세트를 선택하는데 이용되는 특징 값은 전술한 현재 블록을 위한 파라미터 세트와 파라미터를 선택하는데 이용되는 특징 값과 다른 방법으로 산출될 수 있다. 예를 들어, 하나 이상의 파라미터 세트 중 어느 하나를 선택하는데 이용되는 특징 값은 전술한 i)에 해당하는 값으로부터 산출되고, 가중치 세트를 선택하는데 이용되는 특징 값은 v)에 해당하는 값으로부터 산출될 수 있다.
구현예에 따라, AI 기반 영상 처리부(134)는 복수의 가중치 세트 중 부호화 데이터에 포함된 제 3 정보가 가리키는 가중치 세트를 선택하고, 선택한 가중치 세트로 신경망(300)을 세팅할 수도 있다.
일 실시에에서, AI 기반 영상 처리부(134)는 현재 블록 또는 상위 블록의 특징에 기반하여 현재 블록에 대해 AI 기반 필터링을 적용할지 여부를 결정할 수 있다. 예를 들어, 도 12에 도시된 바와 같이, 특징 값이 제 3 임계 값 이하라면, AI 기반 영상 처리부(134)는 AI 기반 필터링을 현재 블록에 대해 적용하지 않는 것으로 결정할 수 있다. 이 경우, 영상 처리 장치(100)로부터 현재 블록이 출력될 수 있다.
현재 블록 내에 에러가 존재할 가능성이 낮은 경우에도 현재 블록에 대해 AI 기반 필터링을 적용하는 것은 영상 처리 장치(100)에 대한 불필요한 부하가 될 수 있다. 따라서, AI 기반 영상 처리부(134)는 현재 블록 또는 상위 블록의 특징으로부터 AI 기반 필터링이 필요하지 않는 것으로 판단되면, 현재 블록에 대한 AI 기반 필터링을 스킵할 수 있다.
일 실시예에서, 현재 블록에 대해 AI 기반 필터링이 적용되는지 여부를 나타내는 정보(예를 들어, 플래그)가 부호화 데이터로부터 획득되고, 획득된 정보에 기초하여 현재 블록에 대해 AI 기반 필터링을 적용할지 여부가 결정될 수 있다.
도 13은 일 실시예에 따른 영상 처리 장치(100)에 의한 영상 처리 방법의 순서도이다.
S1310 단계에서, 영상 처리 장치(100)는 부호화 데이터를 복호화하여 현재 블록을 복원한다. 부호화 데이터는 원본 영상 내 원본 블록에 대한 부호화를 통해 생성될 수 있다.
일 실시예에서, 영상 처리 장치(100)는 부호화 데이터 또는 부호화 데이터에 대응하는 비트스트림을 외부 장치로부터 네트워크를 통해 수신할 수 있다.
다른 실시예에서, 영상 처리 장치(100)는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium) 등을 포함하는 데이터 저장 매체로부터 부호화 데이터 또는 부호화 데이터에 대응하는 비트스트림을 획득할 수 있다.
S1320 단계에서, 영상 처리 장치(100)는 부호화 데이터에 포함된 양자화 파라미터로부터 산출된 샘플 값들을 포함하는 양자화 에러 맵을 획득한다.
S1330 단계에서, 영상 처리 장치(100)는 현재 블록 및 양자화 에러 맵을 신경망(300)에 적용하여 제 1 수정 블록을 획득한다.
일 실시예에서, 영상 처리 장치(100)는 확장 블록과 확장 양자화 에러 맵을 신경망(300)에 적용하여 제 1 수정 블록을 획득할 수도 있다.
또한, 일 실시예에서, 영상 처리 장치(100)는 현재 블록 또는 상위 블록에 대한 분석을 통해 획득되는 특징 값들을 샘플 값들로 포함하는 특징 맵을 현재 블록 및 양자화 에러 맵과 함께 신경망(300)에 적용할 수도 있다.
또한, 일 실시예에서, 영상 처리 장치(100)는 현재 블록 및 양자화 에러 맵과 함께, 현재 블록을 복원하는데 이용된 예측 블록 및/또는 잔차 블록을 신경망(300)에 적용하여 제 1 수정 블록을 획득할 수도 있다.
S1340 단계에서, 영상 처리 장치(100)는 현재 블록과 제 1 수정 블록 사이의 제 1 차분 블록을 획득한다.
S1350 단계에서, 영상 처리 장치(100)는 현재 블록 및 상위 블록의 특징에 기반하여 파라미터를 결정하고, 파라미터에 따라 제 1 차분 블록의 샘플 값들을 변경하여 제 2 차분 블록을 획득한다.
S1360 단계에서, 영상 처리 장치(100)는 제 2 차분 블록과 현재 블록을 이용하여 제 2 수정 블록을 획득한다.
도 14는 일 실시예에 따른 영상 처리 장치(100)에 의한 영상 처리 방법의 순서도이다.
S1410 단계에서, 영상 처리 장치(100)는 부호화 데이터를 복호화하여 현재 블록을 복원한다.
부호화 데이터는 원본 영상 내 원본 블록에 대한 부호화를 통해 생성될 수 있다.
일 실시예에서, 영상 처리 장치(100)는 부호화 데이터 또는 부호화 데이터에 대응하는 비트스트림을 외부 장치로부터 네트워크를 통해 수신할 수 있다.
다른 실시예에서, 영상 처리 장치(100)는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium) 등을 포함하는 데이터 저장 매체로부터 부호화 데이터 또는 부호화 데이터에 대응하는 비트스트림을 획득할 수 있다.
S1420 단계에서, 영상 처리 장치(100)는 현재 블록 또는 현재 블록의 상위 블록의 특징을 분석하여 특징 값을 획득한다.
S1430 단계에서, 영상 처리 장치(100)는 특징 값에 기반하여 현재 블록에 대해 AI 기반 필터링이 적용되는지를 판단한다.
현재 블록에 대해 AI 기반 필터링이 적용되는 것으로 결정된 경우, S1440 단계에서, 영상 처리 장치(100)는 특징 값에 대응하는 가중치 세트 및 파라미터를 결정한다.
S1450 단계에서, 영상 처리 장치(100)는 가중치 세트로 신경망(300)을 세팅한다. 이에 따라 신경망(300)은 가중치 세트에 포함된 가중치들에 따라 동작할 수 있다.
S1460 단계에서, 영상 처리 장치(100)는 부호화 데이터에 포함된 양자화 파라미터로부터 산출된 샘플 값들을 포함하는 양자화 에러 맵을 생성한다. 영상 처리 장치(100)는 양자화 에러 맵과 현재 블록을 신경망(300)에 적용하여 제 1 수정 블록을 획득한다.
일 실시예에서, 영상 처리 장치(100)는 확장 블록과 확장 양자화 에러 맵을 신경망(300)에 적용하여 제 1 수정 블록을 획득할 수도 있다.
또한, 일 실시예에서, 영상 처리 장치(100)는 현재 블록 또는 상위 블록에 대한 분석을 통해 획득되는 특징 값들을 샘플 값들로 포함하는 특징 맵을 현재 블록 및 양자화 에러 맵과 함께 신경망(300)에 적용할 수도 있다.
또한, 일 실시예에서, 영상 처리 장치(100)는 현재 블록 및 양자화 에러 맵과 함께, 현재 블록을 복원하는데 이용된 예측 블록 및/또는 잔차 블록을 신경망(300)에 적용하여 제 1 수정 블록을 획득할 수도 있다.
S1470 단계에서, 영상 처리 장치(100)는 현재 블록과 제 1 수정 블록 사이의 제 1 차분 블록을 획득하고, 현재 블록 또는 상위 블록의 특징에 기반하여 파라미터를 결정하고, 파라미터에 따라 제 1 차분 블록의 샘플 값들을 변경하여 제 2 차분 블록을 획득한다.
S1480 단계에서, 영상 처리 장치(100)는 제 2 차분 블록과 현재 블록을 이용하여 제 2 수정 블록을 획득한다.
S1490 단계에서, 영상 처리 장치(100)는 제 2 수정 블록을 출력한다.
S1430 단계에서 현재 블록에 대해 AI 기반 필터링이 적용되지 않는 것으로 결정된 경우, S1495 단계에서, 영상 처리 장치(100)는 현재 블록을 출력한다.
이하에서는, 도 15를 참조하여 신경망(300)의 훈련 방법에 대해 설명한다.
도 15는 일 실시예에 따른 신경망(300)의 훈련 방법을 설명하기 위한 도면이다.
도 15에 도시된 훈련용 원본 블록(1501)은 전술한 원본 블록에 대응하고, 훈련용 현재 블록(1502)은 도 1에 도시된 현재 블록에 대응할 수 있다. 또한, 훈련용 양자화 에러 맵(1503) 및 훈련용 제 1 수정 블록(1504)은 도 1에 도시된 양자화 에러 맵 및 제 1 수정 블록에 대응할 수 있다.
본 개시에 따른 신경망(300)의 훈련 방법에 따르면, 신경망(300)으로부터 출력되는 훈련용 제 1 수정 블록(1504)이 훈련용 원본 블록(1501)과 동일 또는 유사해지도록 신경망(300)을 훈련시킨다. 이를 위해, 훈련용 제 1 수정 블록(1504)과 훈련용 원본 블록(1501) 사이의 차이에 대응하는 손실 정보(1505)가 신경망(300)의 훈련에 이용될 수 있다.
도 15를 참조하여 신경망(300)의 훈련 과정을 상세히 설명하면, 먼저, 훈련용 원본 블록(1501)에 대한 부호화/복호화(1510)를 통해 훈련용 현재 블록(1502)이 획득된다.
훈련용 현재 블록(1502)과 훈련용 현재 블록(1502)에 대응하는 훈련용 양자화 에러 맵(1503)은 신경망(300)으로 입력되고, 신경망(300)으로부터 훈련용 제 1 수정 블록(1504)이 출력된다. 신경망(300)은 미리 설정된 가중치에 따라 동작할 수 있다.
훈련용 제 1 수정 블록(1504)과 훈련용 원본 블록(1501) 사이의 차이에 대응하는 손실 정보(1505)가 산출되고, 손실 정보(1505)에 따라 신경망(300)에 설정된 가중치가 갱신된다. 신경망(300)은 손실 정보(1505)가 감소 또는 최소화되도록 가중치를 갱신할 수 있다.
손실 정보(1505)는 훈련용 원본 블록(1501)과 훈련용 제 1 수정 블록(1504) 사이의 차이에 대한 L1-norm 값, L2-norm 값, SSIM(Structural Similarity) 값, PSNR-HVS(Peak Signal-To-Noise Ratio-Human Vision System) 값, MS-SSIM(Multiscale SSIM) 값, VIF(Variance Inflation Factor) 값 또는 VMAF(Video Multimethod Assessment Fusion) 값 중 적어도 하나를 포함할 수 있다.
도 15는 훈련용 원본 블록(1501)과 훈련용 제 1 수정 블록(1504) 사이의 차이에 대응하는 손실 정보(1505)를 산출하는 것으로 도시하고 있는데, 구현예에 따라, 손실 정보(1505)는 훈련용 원본 블록(1501)과 훈련용 제 2 수정 블록 사이의 차이에 대응할 수도 있다. 여기서, 훈련용 제 2 수정 블록은, 훈련용 현재 블록(1502)과 훈련용 제 1 수정 블록(1504)으로부터 훈련용 제 1 차분 블록을 획득하고, 훈련용 제 1 차분 블록의 샘플 값들을 파라미터에 따라 변경시켜 훈련용 제 2 차분 블록을 획득하고, 훈련용 제 2 차분 블록과 훈련용 현재 블록(1502)을 합산함으로써 획득될 수 있다.
다른 실시예에서, 도 1에 도시된 제 2 수정 블록이 미리 결정된 하나 이상의 필터링 알고리즘에 따라 처리되는 경우, 손실 정보(1505)는 훈련용 원본 블록(1501)과 미리 결정된 하나 이상의 필터링 알고리즘에 따라 처리된 훈련용 제 2 수정 블록 사이의 차이에 대응할 수도 있다.
일 실시예에 따른 신경망(300)의 훈련은 훈련 장치에 의해 수행될 수 있다. 훈련 장치는 영상 처리 장치(100)일 수 있다. 구현예에 따라, 훈련 장치는 외부 서버일 수도 있다. 이 경우, 외부 서버에 의해 훈련된 신경망(300) 및 가중치들이 영상 처리 장치(100)로 전달될 수 있다.
도 16은 다른 실시예에 따른 영상 처리 장치(1600)의 구성을 도시하는 블록도이다.
도 16을 참조하면, 영상 처리 장치(1600)는 복호화부(1610) 및 AI 필터부(1630)를 포함할 수 있다.
AI 필터부(1630)는 양자화 에러 산출부(1632), AI 기반 영상 처리부(1634), 영상 분석부(1636) 및 영상 수정부(1638)를 포함할 수 있다.
도 16에 도시된 영상 처리 장치(1600)의 구성들은 도 1에 도시된 영상 처리 장치(100)의 구성들과 동일하지만, AI 기반 영상 처리부(1634)가 제 1 수정 블록 대신 제 1 차분 블록을 출력한다는 점에서 차이가 있다. 신경망(300)이 도 3에 도시된 합산 레이어(360)를 포함하지 않는 경우, AI 기반 영상 처리부(1634)는 제 1 차분 블록을 출력할 수 있다.
영상 수정부(1638)는 제 1 차분 블록의 샘플 값들을 영상 분석부(1636)로부터 제공된 파라미터에 따라 변경하여 제 2 차분 블록을 획득하고, 제 2 차분 블록과 현재 블록을 합하여 제 2 수정 블록을 출력할 수 있다.
신경망(300)이 합산 레이어(360)를 포함하지 않는 경우를 위한 신경망의 훈련 방법에 대해 설명하면, 도 15에 도시된 신경망(300)은 훈련용 제 1 수정 블록 대신 훈련용 제 1 차분 블록을 출력할 수 있다. 그리고, 손실 정보(1505)는 훈련용 원본 블록(1501)과 훈련용 현재 블록(1502) 사이의 차분 블록과 훈련용 제 1 차분 블록 사이의 차이에 대응할 수 있다.
한편, 상술한 본 개시의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 작성된 프로그램은 기기로 읽을 수 있는 저장매체에 저장될 수 있다.
기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적 저장매체'는 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다. 예로, '비일시적 저장매체'는 데이터가 임시적으로 저장되는 버퍼를 포함할 수 있다.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품(예: 다운로더블 앱(downloadable app))의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
이상, 본 개시의 기술적 사상을 바람직한 실시예를 들어 상세하게 설명하였으나, 본 개시의 기술적 사상은 상기 실시예들에 한정되지 않고, 본 개시의 기술적 사상의 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러 가지 변형 및 변경이 가능하다.

Claims (19)

  1. AI 기반 필터링을 위한 영상 처리 장치에 있어서,
    하나 이상의 인스트럭션을 저장하는 메모리; 및
    상기 하나 이상의 인스트럭션에 따라 동작하는 프로세서를 포함하고,
    상기 프로세서는,
    현재 블록의 부호화 데이터(encoded data)로부터 현재 블록을 복원하고,
    상기 부호화 데이터에 포함된 양자화 파라미터로부터 산출되는 샘플 값들을 포함하는 양자화 에러 맵(quantization error map)을 획득하고,
    상기 현재 블록 및 상기 양자화 에러 맵을 신경망에 적용하여 제 1 수정 블록(first modified block)을 획득하고,
    상기 현재 블록과 상기 제 1 수정 블록 사이의 제 1 차분 블록(first differential block)을 획득하고,
    상기 현재 블록의 특징에 의존하는 파라미터에 따라 상기 제 1 차분 블록의 샘플 값들을 변경하여 제 2 차분 블록(second differential block)을 획득하고,
    상기 현재 블록과 상기 제 2 차분 블록을 결합하여 제 2 수정 블록(second modified block)을 획득하는, 영상 처리 장치.
  2. 제1항에 있어서,
    상기 신경망은,
    상기 현재 블록 및 상기 양자화 에러 맵을 미리 설정된 가중치에 따라 컨볼루션 처리하여 상기 제 1 차분 블록을 출력하는 적어도 하나의 컨볼루션 레이어; 및
    상기 제 1 차분 블록과 상기 현재 블록을 합하여 상기 제 1 수정 블록을 출력하는 합산 레이어(summation layer)를 포함하는, 영상 처리 장치.
  3. 제1항에 있어서,
    상기 양자화 에러 맵의 샘플 값들은,
    상기 양자화 파라미터로부터 산출되는 양자화 스텝 사이즈 또는 양자화 에러 값에 대응하는, 영상 처리 장치.
  4. 제1항에 있어서,
    상기 현재 블록의 하위 블록들을 위한 양자화 파라미터들이 상기 부호화 데이터에 포함되어 있는 경우, 상기 양자화 에러 맵의 샘플 값들은 상기 하위 블록 별로 산출되는, 영상 처리 장치.
  5. 제1항에 있어서,
    상기 프로세서는,
    복수의 후보 파라미터 중 상기 부호화 데이터로부터 획득한 제 1 정보가 가리키는 파라미터를 선택하고,
    상기 선택한 파라미터에 따라 상기 제 1 차분 블록의 샘플 값들을 변경하여 상기 제 2 차분 블록을 획득하는, 영상 처리 장치.
  6. 제5항에 있어서,
    상기 프로세서는,
    복수의 파라미터 세트 중 상기 부호화 데이터로부터 획득한 제 2 정보가 가리키는 파라미터 세트를 선택하고,
    상기 선택한 파라미터 세트에 포함된 상기 복수의 후보 파라미터 중 상기 제 1 정보가 가리키는 파라미터를 선택하는, 영상 처리 장치.
  7. 제6항에 있어서,
    상기 제 2 정보는, 상기 현재 블록을 포함하는 상위 블록을 위해 획득되고,
    상기 제 1 정보는, 상기 현재 블록을 위해 획득되는, 영상 처리 장치.
  8. 제1항에 있어서,
    상기 프로세서는,
    상기 파라미터의 결정을 위해, 상기 현재 블록 또는 상기 현재 블록의 상위 블록의 특징 값을 획득하는, 영상 처리 장치.
  9. 제8항에 있어서,
    상기 특징 값은,
    i) 상기 현재 블록 또는 상기 상위 블록의 복원을 위해 획득되는 잔차 샘플 값들을 제곱한 값들의 합, ii) 상기 잔차 샘플 값들을 제곱한 값들의 평균, iii) 상기 잔차 샘플 값들 중 최대 값, iv) 상기 잔차 샘플 값들의 절대 값들 중 최대 값, v) 상기 잔차 샘플들에 대응하는 변환 계수들 중 0이 아닌 변환 계수들의 개수, vi) 상기 현재 블록에 대응하는 슬라이스의 타입을 나타내는 값, vii) 상기 현재 블록 또는 상기 상위 블록 내에서 인트라 예측이 적용되는 블록의 넓이와 인터 예측이 적용되는 블록의 넓이 사이의 비율, viii) 상기 현재 블록 또는 상기 상위 블록의 선명도(sharpness), ix) 상기 현재 블록 또는 상기 상위 블록에 대해 설정되는 하나 이상의 양자화 파라미터로부터 산출되는 하나 이상의 양자화 스텝 사이즈의 평균, 또는 x) 상기 하나 이상의 양자화 파라미터로부터 산출되는 하나 이상의 양자화 에러 값의 평균 중 적어도 하나로부터 획득되는, 영상 처리 장치.
  10. 제1항에 있어서,
    상기 파라미터는, 스케일 팩터를 포함하고,
    상기 프로세서는,
    상기 선택한 스케일 팩터에 따라 상기 제 1 차분 블록의 샘플 값들을 스케일링하여 상기 제 2 차분 블록을 획득하는, 영상 처리 장치.
  11. 제1항에 있어서,
    상기 파라미터는, 클리핑 팩터(clipping factor)를 포함하고,
    상기 프로세서는,
    상기 제 1 차분 블록의 샘플 값들이, 상기 선택된 클리핑 팩터에 대응하는 상한 값과 하한 값 사이에 포함되도록 상기 제 1 차분 블록의 샘플 값들을 클리핑하여 상기 제 2 차분 블록을 획득하는, 영상 처리 장치.
  12. 제1항에 있어서,
    상기 프로세서는,
    상기 현재 블록 또는 상기 현재 블록의 상위 블록의 특징 값을 획득하고,
    복수의 가중치 세트 중 상기 특징 값에 대응하는 가중치 세트를 선택하되,
    상기 현재 블록과 상기 양자화 에러 맵은, 상기 선택한 가중치 세트에 따라 동작하는 신경망에 의해 처리되는, 영상 처리 장치.
  13. 제1항에 있어서,
    상기 프로세서는,
    상기 현재 블록 또는 상기 현재 블록의 상위 블록의 특징 값을 획득하고,
    상기 획득한 특징 값에 기초하여, 상기 현재 블록에 대해 상기 AI 기반 필터링을 적용할지 여부를 결정하는, 영상 처리 장치.
  14. 제1항에 있어서,
    상기 프로세서는,
    상기 신경망에 포함된 컨볼루션 레이어의 개수 및 컨볼루션 레이어에서 이용되는 필터 커널의 크기에 따라 확장 거리(extension distance)를 산출하고,
    현재 영상 내에서 상기 현재 블록의 경계 외부의 주변 샘플들 중 상기 확장 거리에 대응하는 주변 샘플들과 상기 현재 블록의 샘플들로 이루어진 확장 블록을 상기 신경망에 적용하는, 영상 처리 장치.
  15. 제14항에 있어서,
    상기 현재 블록의 경계가 상기 현재 영상의 경계에 해당하면, 상기 확장 거리에 대응하는 주변 샘플들은, 이용 가능한 가장 가까운 샘플로부터 결정되는, 영상 처리 장치.
  16. 제1항에 있어서,
    상기 신경망은,
    훈련용 원본 블록과, 상기 신경망을 통해 획득되는 훈련용 제 1 수정 블록 사이의 차이에 대응하는 손실 정보에 따라 훈련되며,
    상기 훈련용 제 1 수정 블록은, 상기 훈련용 원본 블록의 부호화 및 복호화를 통해 획득되는 훈련용 현재 블록 및 상기 훈련용 현재 블록에 대응하는 훈련용 양자화 에러 맵을 상기 신경망에 적용함으로써 획득되는, 영상 처리 장치.
  17. 현재 블록의 부호화 데이터로부터 현재 블록을 복원하는 단계;
    상기 부호화 데이터에 포함된 양자화 파라미터로부터 산출되는 샘플 값들을 포함하는 양자화 에러 맵을 획득하는 단계;
    상기 현재 블록 및 상기 양자화 에러 맵을 신경망에 적용하여 제 1 수정 블록을 획득하는 단계;
    상기 현재 블록과 상기 제 1 수정 블록 사이의 제 1 차분 블록을 획득하는 단계;
    상기 현재 블록의 특징에 의존하는 파라미터에 따라 상기 제 1 차분 블록의 샘플 값들을 변경하여 제 2 차분 블록을 획득하는 단계; 및
    상기 현재 블록과 상기 제 2 차분 블록을 결합하여 제 2 수정 블록을 획득하는 단계를 포함하는, 영상 처리 방법.
  18. 제17항의 방법을 컴퓨터에서 수행하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
  19. AI 기반 필터링을 위한 영상 처리 장치에 있어서,
    하나 이상의 인스트럭션을 저장하는 메모리; 및
    상기 하나 이상의 인스트럭션에 따라 동작하는 프로세서를 포함하고,
    상기 프로세서는,
    현재 블록의 부호화 데이터로부터 현재 블록을 복원하고,
    상기 부호화 데이터에 포함된 양자화 파라미터로부터 산출되는 샘플 값들을 포함하는 양자화 에러 맵을 획득하고,
    상기 현재 블록 및 상기 양자화 에러 맵을 신경망에 적용하여 제 1 차분 블록을 획득하고,
    상기 현재 블록의 특징에 의존하는 파라미터에 따라 상기 제 1 차분 블록의 샘플 값들을 변경하여 제 2 차분 블록을 획득하고,
    상기 현재 블록과 상기 제 2 차분 블록을 결합하여 수정 블록을 획득하는, 영상 처리 장치.
KR1020220028221A 2021-08-06 2022-03-04 영상에 대한 ai 기반 필터링을 위한 장치 및 방법 KR20230022093A (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
PCT/KR2022/011429 WO2023014065A1 (ko) 2021-08-06 2022-08-02 영상에 대한 ai 기반 필터링을 위한 장치 및 방법
IL309915A IL309915A (en) 2021-08-06 2022-08-02 Device and method for image filtering based on artificial intelligence
AU2022321329A AU2022321329A1 (en) 2021-08-06 2022-08-02 Device and method for ai-based filtering of image
CA3226754A CA3226754A1 (en) 2021-08-06 2022-08-02 Device and method for ai-based filtering of image
CN202280054988.2A CN117882372A (zh) 2021-08-06 2022-08-02 用于图像的基于ai的滤波的装置和方法
US17/880,840 US20230044603A1 (en) 2021-08-06 2022-08-04 Apparatus and method for applying artificial intelligence-based filtering to image

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210104202 2021-08-06
KR20210104202 2021-08-06

Publications (1)

Publication Number Publication Date
KR20230022093A true KR20230022093A (ko) 2023-02-14

Family

ID=85220667

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220028221A KR20230022093A (ko) 2021-08-06 2022-03-04 영상에 대한 ai 기반 필터링을 위한 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20230022093A (ko)

Similar Documents

Publication Publication Date Title
KR102165147B1 (ko) 계층형 신호 디코딩 및 신호 복원
JP5779116B2 (ja) 画像符号化方法、画像符号化装置及び画像符号化プログラム
KR102231969B1 (ko) 증가된 수의 가능한 코딩 모드를 이용한 공간 예측
KR102113904B1 (ko) 보간을 이용한 연산 방법, 인코더, 및 디코더
CN113906762B (zh) 用于视频压缩的预处理
KR20230022093A (ko) 영상에 대한 ai 기반 필터링을 위한 장치 및 방법
US11863756B2 (en) Image encoding and decoding apparatus and method using artificial intelligence
CA3226754A1 (en) Device and method for ai-based filtering of image
JP7252016B2 (ja) 動画像符号化装置、動画像復号装置及びプログラム
US20240048711A1 (en) Artificial intelligence based video decoding apparatus and video decoding method and artificial intelligence based video encoding apparatus and video encoding method which perform chroma component prediction
CN117882372A (zh) 用于图像的基于ai的滤波的装置和方法
JP2017103723A (ja) 符号化装置、復号装置、及びプログラム
KR20240019638A (ko) 크로마 성분 예측을 수행하는 ai에 기반한 비디오 복호화 장치 및 방법, 및 비디오 부호화 장치 및 방법
US20240073425A1 (en) Image encoding apparatus and image decoding apparatus both based on artificial intelligence, and image encoding method and image decoding method performed by the image encoding apparatus and the image decoding apparatus
US20230145525A1 (en) Image encoding apparatus and image decoding apparatus both using artificial intelligence, and image encoding method and image decoding method performed by the image encoding apparatus and the image decoding apparatus
KR20230022085A (ko) Ai 기반의 영상의 부호화 및 복호화 장치, 및 이에 의한 방법
EP4354871A1 (en) Ai-based image encoding and decoding device, and method performed thereby
US11863783B2 (en) Artificial intelligence-based image encoding and decoding apparatus and method
CN115988201B (zh) 一种编码胶片颗粒的方法、装置、电子设备和存储介质
KR20230041601A (ko) Ai를 이용하여 영상을 부호화 및 복호화하는 장치, 및 방법
US20230247212A1 (en) Device and method for encoding and decoding image using ai
KR20240025429A (ko) 영상 복호화 장치 및 방법, 및 영상 부호화 장치 및 방법
US20230044532A1 (en) Image processing method and apparatus using neural network based deblocking filtering
KR20220120436A (ko) Ai 기반의 영상의 부호화 및 복호화 장치, 및 이에 의한 방법
US20240129546A1 (en) Artificial intelligence-based image encoding and decoding apparatus, and image encoding and decoding method thereby