신경망 기반 이미지 압축 기초 및 JPEG AI

·2024년 2월 13일
0

비디오 부호화

목록 보기
12/13

Learned Image Compression (LIC)

  • LIC는 딥러닝 알고리즘을 사용하여 이미지 데이터의 특징을 학습하고, 이를 효과적으로 압축하는 방법을 개발한다
  • 기존의 압축 방법은 일반적으로 이미지의 통계적 특성이나 변환 기술을 사용하여 압축을 수행하는 반면, LIC는 신경망을 이용하여 이미지의 특징을 추출하고 압축 비율을 높이는 방법을 찾는다
  • 딥러닝을 통해 학습된 알고리즘은 이미지의 중요한 정보를 보존하면서도 압축을 수행하여 높은 압축률을 달성할 수 있다

이미지 삽입 p5

LIC와 기존 전통적 이미지 압축 방법의 차이점

  • 전통 이미지 압축 방법에서는 linear transform인 DCT와 IDCT를 사용했지만 LIC에서는 Non-linear transform인 CNN을 사용한다
  • LIC에서는 엔트로피 코딩 과정에서의 Probablity Estimation을 신경망으로 처리한다
  • 기존 전통적 이미지 압축 방법에서의 DCT는 입력이 무엇이든지 상관없이 고정된 변환을 사용하는 것에 반해 신경망은 어떤 변환을 할것인지를 학습과정에서 배운다
    • 인공 신경망은 입력 영상 셋에 대해서 입력 영상들을 그대로 복원해낼 수 있도록 하는 Feature map을 추출하는 방법을 학습한다
    • Feature map을 잘 추출하는 방법을 학습하고 그 역과정을 통해 복원 영상을 만들어내게 된다
    • Featrue map은 입력 영상 보다 크기가 작기 때문에 이 Feature map으로 복원 영상을 만들게 된다면 이득이 크다

Auto-Encoder

  • 딥러닝 기술 중 하나로, 비지도 학습(Unsupervised Learning) 방법 중 하나이다
  • 주로 데이터의 특징을 추출하거나 차원 축소(Dimensionality Reduction)에 사용되는 신경망 모델이다
  • 입력 데이터를 효율적으로 압축한 뒤, 원래의 입력 데이터를 복원하는 능력을 갖는다. 이를 위해 인코더와 디코더라는 두 가지 주요 구성 요소로 이루어져 있다
    • 인코더는 입력 데이터를 저차원의 잠재 표현(Latent Representation)으로 압축하는 역할을 수행한다. 이렇게 압축된 잠재 표현은 데이터의 중요한 특징을 포함하고 있다
    • 디코더는 인코더의 출력을 사용하여 원래의 입력 데이터를 재구성하는 역할을 한다
  • 입력 데이터와 재구성된 데이터 간의 차이를 최소화하도록 학습한다
  • 이를 통해 오토인코더는 입력 데이터를 가능한 한 정확하게 재구성할 수 있는 표현을 학습하게 된다

이미지 삽입 p6

  • 영상신호 x를 공간적 해상도가 더 작은 잠재 표현 y로 변환한 후 다시 원본 신호 x̂를 복원하는 신경망 구조이다
    • 원본 신호화 보원 신호 간의 distortion(D(x, x̂))을 최소화 하도록 학슴된다
  • 압축 관점 : 영상 신호를 부호화에 유리한 잠재공간으로 매핑하며, 공간적인 중복성 제거
    • 전통적 이미지 압축에서의 DCT와 유사한 효과

Entropy Model

  • 잠재표현 ŷ에 균등 양자화를 수행하여 양자화된 잠재표현 ŷ 획득 (이산표현)
  • 양자화된 잠재표현 ŷ에 대한 확률 분포 P_ŷ(ŷ)를 추정하여 엔트로피 부호화 수행한다
    • ŷ의 비트량을 최소화하기 위해 rate loss를 사용한다
  • 엠트로피 부/복호화기로는 보통 산술부호화(Arithmetic Coding)를 사용한다
  • 엔트로피 모델은 LIC에서 데이터의 불확실성을 측정하고 표현하는 데 활용한다
  • 데이터의 분포와 불확실성을 계산하여 정보의 효율적인 저장을 가능하게 한다

이미지 삽입 p7

Balle 2017 @ ICLR

이미지 삽입 p9

  • End-to-end 학습 가능한 이미지 압축 모델의 초석
  • Auto-encoder & Entropy model -> joint optim. (R-D optim.)
    • L = R(ŷ) + λ x D(x, x̂)
      • L : 손실함수
      • R(ŷ) : 압축된 표현 ŷ을 엔트로피 코딩했을 때 비트스트림의 크기를 교차 엔트로피를 이용해 추정한 손실
      • λ : R과 D 사이의 상대적인 중요도를 조절하는 하이퍼파라미터
      • D(x, x̂) : 원본 x와 복원된 x̂간의 왜곡

Encoder Architecture

이미지삽입 p10

  • 9x9 Conv를 거치고 128채널을 1/4로 다운 샘플링하여 추출한다
  • GDN
    • 신경망에서 사용되는 비선형 활성화 함수이다
    • 신경망의 출력을 정규화하는데 사용된다
    • 가우시안 분포로 발생할 수 있도록 한다
    • 각 픽셀의 출력을 그 주변 픽셀의 출력의 함수로 나눔으로써, 이미지의 지역적인 통계적 특성을 고려한다
    • 이를 통해 신경망은 이미지의 복잡한 패턴을 더 잘 학습할 수 있다
  • 위 과정이 3번 반복된다 (이미지 참조)
  • 128개의 채널을 갖는 1/16 사이즈의 latent가 나온다

Factorized Entoropy Model

이미지 삽입 p11

  • Pŷ는 여러 non-parametric function과 sigmoid 함수로 구성되어 있다
  • 일종의 채널별 확률 모델(channel-wise probability model)로 볼 수 있다

이미지 삽입 p11

Balle 2018 @ ICLR

  • 기존 모델(J. Balle, 2017)은 학습이 끝난 후 Entropy model은 고정되어 있다
    • 입력 영상 별 최적 엔트로피 모델 사용이 불가하다는 단점이 있다
  • 이를 해결하기 위해 입력 영상별의 특성에 따라 더 정확한 확률 분호를 추정하여 Decoder애 전송 (side information)하는 방법을 사용한다
  • LIC 모델 학습 과정을 VAE (Variational Auto-Encoder) 학습 관점으로 공식화

이미지 삽입 p13

  • 기존 엔트로피 모델을 parametric model로 변환한다

    • P(y_i) = N(0, σ_i)
  • σ_i 값을 입력별로 디코더에 전송한다

  • σ_i 값을 그냥 전송하는 것이 아니라 y를 neural network에 통과시켜서 y_i로부터 σ̂를 잘 출력시키기 위한 latent feature인 z_i를 만든다

    • y에 대한 σ를 잘 맞추기 위해 neural network를 학습시킨다
    • z_i는 엔트로피 코딩하여 side information으로 디코더에 전송한다
    • z를 hyperprior라고 한다

    Minnen 2018 @ NeurlPS

  • 기존 P(y_i) = N(0, σ_i)를 P(y_i) = N(μ_i, σ_i)로 추가하였다

    • Mean-scale hyperprior라고 한다
  • Autoregressive context model을 도입했다

Autoregressive context model

이미지 삽입 p18

  • 기존에는 각 픽셀을 독립적이라고 간주하여 각 픽셀마다 y_i의 확률을 구했다
  • Autoregressive context model은 intra 예측처럼 이미 디코딩된 픽셀을 이용하여 현재 y_i의 확률을 예측한다
    • 노란색 픽셀이 이미 디코딩된 픽셀이고, 빨간색 픽셀이 현재 예측하는 픽셀이다
    • 노란색을 context라고 한다
  • 단점
    • 기존 방법은 병행 계산이 가능했지만 Autoregressive context model은 y_i를 예측하려면 이전의 y_i가 필요하므로 병행 계산이 불가능해졌다
    • decoding time을 측정해보면 약 50~300배 가량 느려진다

Chng 2020 @ CVPR

  • Auto-encoder/decoder의 구조를 많이 변화시켜 적용하였다
  • Entropy model은 Minnen의 Mean-scale hyperprior를 그대로 사용하였다
    • 단 기존의 가우시안 분포를 3개 사용하여 더 다양한 분포를 사용할 수 있게 하였다 (Gaussian mixture model, GMM)
    • 잘 사용하지 않는다

Enhancement in Auto-encoder architecture

이미지 삽입 p20

  • 기존처럼 Conv 블럭을 사용하는 것이 아닌 Residual 블럭을 사용한다
    • 하나의 Conv 블럭을 Residual 블럭으로 변환하여 사용한다
  • 3개의 Residual 블럭마다 Attentoin을 사용한다
  • 기존의 5x5 Conv가 아닌 3x3 Conv을 두 개 사용한다
    • 주변의 샘플을 얼마나 볼 수 있는지에 대해서는 5x5 Conv과 3x3 Conv 두 개의 성능이 같다
    • 3x3 Conv 두 개 사용하는 것이 계산량이 더 적기 때문에 더 성능이 좋아진다

Variable Rate Support

Gain Unit

이미지 삽입 p24

  • LIC의 큰 단점 중 하나는 λ에 따라서 모델을 만들기에는 복잡도가 너무 증가한다는 점이다
  • 해결책으로 모델 전체를 변화시키는 것이 아닌 λ에 따라서 Auto-encoder/decoder와 Entropy model을 변화시키는 방법을 제안했다
  • y의 여러 채널들이 있을 때 채널별로 gain 값(scail parameter)으로 scailing을 하는데 이 scailing만 λ에 따라서 변화하게 한다. scailing한만큼 inverse scailing을 한다
    • 모델 자체를 바꿀 필요없이 gain값만 λ에 따라서 바꿔주면 된다

Parallel Context Model

Checkerboard Context Model

#이미지 삽입 p28

  • 기존 방식에서는 이전 y_i를 바탕으로 예측을 진행하기에 병행 계산이 불가하다는 단점이 있었다
  • Checkerboard Context Model은 위 이미지처럼 노란색 위치에 있는 픽셀을 먼저 엔트로피 코딩을 한다
    • 이 때, 노란색 픽셀들은 Autoregressive Context Model을 사용하지 않고 독립적 확률 모델을 사용한다
  • 그 후 하얀색 위치에 있는 픽셀들을 이미 디코딩된 노란색 픽셀들을 Autoregressive Context Model을 사용하여 엔트로피 코딩을 한다
    • 병행 계산이 가능하게 된다

Channel-wize Autogressive Context Model (chARM)

  • Latent는 채널 차원을 기준으로 여러 조각으로 나누어진다 (y -> {y_1, y_2,...,y_k})
  • 이전에 디코딩된 Latent 슬라이스는 현재 Latent 슬라이스의 엔트로피 모델에 입력으로 사용된다
  • 순차적 종속성은 여전히 존재하지만, 몇 개의 자기회귀 과정만 필요하다

이미지 삽입 p30

출처 및 참조

  • MPEG뉴미디어포럼/한국방송∙미디어공학회 2023 Summer School
  • 김휘용, Visual Media Lab, 경희대학교
profile
공부 기록

0개의 댓글