상세 컨텐츠

본문 제목

[논문 리뷰] HDR-Net : Deep Bilateral Learning for Real-Time Image Enhancement

논문 리뷰

by jii 2025. 9. 21. 10:51

본문

Deep Bilateral Learning for Real-Time Image Enhancement

 

1. INTRODUCTION

  • 하고자 하는 것 : 모바일 기기 등 리소스가 제한된 환경에서 고해상도 img를 real-time으로 보정

기존 딥러닝 기반 방법

  • 표현력은 좋지만
  • 계산 비용이 입력 이미지 크기에 선형적으로 증가
  • 1 메가픽셀 이미지를 처리하는 데도 데스크톱 GPU에서 수 초 단위로 걸려서
  • 모바일 기기에서 실시간(viewfinder 수준, 30~60fps)으로는 절대 불가

제안

  • 사진 보정은 bilateral space에서 선형 변환으로 근사 가능하다!
  • 3가지 전략
    1. (x, y + 색상 차원)으로 구성된 저해상도 grid에서 affine 변환 계수 예측 → slicing으로 고해상도 복원 : low-res bilateral grid에서 연산 대부분 수행 (연산량 ↓)
    2. local affine transform을 예측해서 색상 보정 학습
    3. 학습 시에는 full-res loss 사용해서 저해상도 예측이 실제 고해상도 결과에 최적화되도록 하여 디테일 보존 

 

2. RELATED WORK

Operator acceleration (모바일 기기에서의 실시간 실행을 위해)

  • Upsampling 기반 접근
    • 저해상도에서 연산자 적용 → 고해상도로 upsampling
      • 단순 업샘플링은 blurry
      • 개선
        • Joint bilateral upsampling (Kopf et al. 2007): 고해상도 guidance map으로 에지 보존 업샘플링
        • Bilateral space optimization (Barron et al. 2015, Barron & Poole 2016): bilateral grid 안에서 최적화 문제를 풀어 smooth한 업샘플링 결과 얻음
  • 학습 기반 접근
    • Gharbi et al. 2015:
      • 입출력 쌍을 기반으로 변환 자체를 학습
      • “transform recipe”라는 단순한 지역 모델들의 집합으로 복잡한 연산자 근사
      • 무거운 계산은 클라우드에서 하고, 모바일은 recipe 적용만 → 효율적
    • Chen et al. 2016 (BGU)
      • 무거운 연산자를 저해상도에서 먼저 적용한 뒤,
      • 그 결과를 bilateral grid 기반 local affine transform으로 고해상도로 올림
      • 문제점
        • non-algorithmic 변환(ex. 사람이 직접 한 retouching)은 코드 자체가 없으니 적용 불가
        • scale-variant 연산자(Local Laplacian 등)는 저해상도 fitting만으로는 제대로 근사 불가

Fig 9

  • (b) reference output: Local Laplacian 필터를 적용한 gt 이미지 (디테일 강조), 대표적인 scale-variant 연산자
  • 즉, BGU는 빠르지만 scale-invariant 연산자만 근사 가능 → 품질 저하

 

3. OUR ARCHITECTURE

구조

  1. Low-resolution stream
    • 목표: bilateral grid 형태의 표현 위에서 local affine color transform 계수 예측
    • Local path
    • Global path: 전체 밝기 분포(histogram), 평균 밝기, 장면 카테고리 등 학습
    • 두 경로를 fusion해서 최종적으로 affine 변환 계수(색상/밝기 조정 파라미터) 얻음
  2. High-resolution stream 
    • 고해상도 입력 I를 그대로 처리하지만 연산량은 최소화
    • 고주파 성분 보존 (detail, edge)
    • Slicing node
      • low-res stream에서 만든 bilateral grid 상의 계수를 픽셀 단위로 가져옴
      • x,y 좌표 + 학습된 guidance map 값(단순 밝기 이상)을 기반으로 grid에서 affine 계수 보간
      • 이렇게 얻은 계수를 고해상도 이미지에 적용
  3. 출력
    • 각 픽셀은 local affine transform(ex. color matrix+ bias)을 적용받아 최종 결과 O 생
    • Loss는 항상 full-res에서 계산 → low-res stream이 학습 시에도 고해상도 품질을 반영하도록

 

3.1 Low-resolution prediction of bilateral coefficients

 

low-res stream이 어떻게 bilateral grid 안의 affine transform 계수를 만들어내는가?

 

3.1.1 Low-level features

 

  • 3×3 stride=2 convolution + ReLU를 반복 적용하는 구조
  • 만약 이 low-level conv layer 없이 hard-coded splatting (픽셀을 바로 grid에 투사)만 하면? : Fig 3
    • 네트워크가 단순해져서 학습 표현력이 확 줄어들어서 CNN 기반의 learned feature extraction 꼭 필요

Eq1 / Fig 3

 

3.1.2 Local features path

  • 수식 형태는 Eq 1과 비슷하지만 여기서는 stride=1이라 해상도 유지
  • 역할 : 공간적 위치 정보를 유지하면서 local pattern을 반영한 계수 예측 가능

3.1.3 Global features path

  • nG=5 layer
    • 앞부분: 2개의 strided conv layers (stride=2)
      • 공간 해상도를 더 줄임
      • 공간적 구조를 압축하여 전역적 특징에 집중
    • 뒷부분: 3개의 FC layers
      • FC layer는 반드시 입력 크기 고정 필요 (low-res input ~I의 크기 256×256)
      • 입력 이미지 해상도가 달라지면 feature map 크기도 달라져서, FC weight 크기와 맞지 않게 되므로
      • 즉, FC layer 때문에 low-res stream은 해상도 고정 // 반면 최종 출력은 slicing operator로 nw 전체는 해상도 불변 (어떤 크기의 고해상도 이미지도 처리 가능)
  • 최종 출력: 64차원 벡터 → local path의 공간별 보정을 정규화/안정화시켜주는 prior 역할

 

3.1.4 Fusion and linear prediction

  • Eq 2 : local/global feature를 affine 결합 (가중합 + bias)
  • Eq 3 : 각 grid cell에 대해 affine transform 계수(색상 매트릭스 + bias)를 예측

3.2 Image features as a bilateral grid

 

CNN에서 나온 최종 Feature Map A 

  • NN 관점이 아닌 Bilateral Grid로 재해석
  • 각 cell마다 3×4 matrix (12개의 Affine transform coefficients) 저장
  • 16*16*96 → 16*16*8*12

96개의 채널을 (depth 8, coefficient 12)로 reshape

 

3.3 Upsampling with a trainable slicing layer

 

trainable slicing layer

  • Low-res stream은 16*16*8 bilateral grid A 예측
  • 원본 이미지 해상도보다 훨씬 작음
  • 따라서 이 grid에 담긴 정보(affine coefficients)를 고해상도 공간으로 올려주는 과정 필요

trilinear interpolation

  • 픽셀 좌표 (x,y) + guidance 값 g[x,y]를 이용해 grid 내부에서 어느 cell을 쓸지 정하고 보간
  • 즉, 픽셀별로 trilinear interpolation을 통해 grid에서 적절한 계수 벡터를 뽑아 옴

 

* 참고 (guidance map이 꼭 필요한가? x,y로 보간하면?)

  • grid는 해상도가 낮아 픽셀마다 직접 매핑 불가
  • 단순히 위치(x, y)만으로 보간하면? → 공간적 경계(edge)가 다 뭉개짐

장점

  1. parameter-free : 보간이므로 학습할 weight 없음 
  2. Edge-aware regularization : g map을 따라 lookup하므로 경계 보존 효과
  3. 복잡한 변환을 단순화 : Pixel별로 grid에서 affine transform 계수 가져옴 → 여러 개의 단순한 local 모델로 full-res 복잡한 변환을 근사

Fig 5

  • (b) : 단순 upsampling으로 복원
  • (c) : slicing node 효과 +

 

3.4 Assembling the full-resolution output

 

원본 high-res 이미지 I를 입력으로, A의 local affine transform을 적용해서 최종 출력 O를 얻는다

 

3.4.1 Guidance map auxiliary network

 

g를 어떻게 학습해서 만들어내는가?

Eq 6 / Eq 7

  • Eq 6 : 각 픽셀의 RGB → 선형 변환(색 공간 이동) → 비선형 tone curve → 합쳐서 guidance 값 g[x,y] 산출
  • Eq 7 : tone curve → 학습 과정에서 task별 tone mapping이 자동으로 맞춰짐
  1. 단순 luminance 기반 ?
    • 전통 bilateral grid에서는 보통 g[x,y]=Y(밝기)만 사용
    • 하지만 task에 따라 색/톤 차이가 중요한 경우가 있음
  2. 학습 가능한 색 공간 변환
    • M을 학습하면 task별 최적 색 조합을 guidance 기준으로 삼을 수 있음
  3. 학습 가능한 tone curve
    • 단순 선형이 아니라 비선형 보정 가능
    • ex. 밝고 어두운 영역을 더 세밀하게 분리해서 grid depth 축에 매핑

→ 결과: task-aware, edge-aware 하게 grid slicing을 도와줌

 

3.4.2 Assembling the final output

 

  • 각 픽셀의 RGB 입력 ϕ[x,y]에 대해
  • A가 제공하는 3×4 affine transform을 곱해 → 최종 출력 O[x,y] 생성

 

3.5 Training procedure

 

Training dataset

  • Ii: full-res input img
  • Oi: target output img (특정 연산 적용 결과, ex. tm, 색 보정 등)

Loss

 

4. Results

4.1 Reproducing image operators

 

모델은 다음과 같은 이미지 처리 task를 근사하도록 학습!

  • HDR+ (Hasinoff et al. 2016)
    • 컬러 보정, 자동 노출, 디헤이징, 톤 매핑 등을 포함하는 복잡한 사진 pipeline
  • Local Laplacian filter (Paris et al. 2011)
    • edge-preserving, multi-scale operator (디테일 강화)
  • Style Transfer (Aubry et al. 2014)
    • Local Laplacian 기반 style transfer
    • 두 가지 ver
      1. 고정된 style : 새로운 입력을 특정 스타일로 변환 
      2. n-Styles Transfer: 두 입력 이미지(I, Istyle)를 받아 한 img style을 다른 img에 적용
  • Face Brightening (Jain & Learned-Miller 2010 dataset)
  • Adobe Photoshop filters & user actions (black-box)
    • 내부 연산자를 모르는 상태에서, input-output 쌍만 보고 근사

Dataset

  • MIT FiveK Dataset

vs

  • Bilateral Guided Upsampling (BGU, Chen et al. 2016)
    • 연산자를 low-res에서 실행 → bilateral grid fitting → high-res로 upsample
  • Transform Recipes (TR, Gharbi et al. 2015)
    • Client-server 모델:
      1. 모바일 → 압축된 저해상도 이미지 서버 전송
      2. 서버가 transformation recipe 생성
      3. 모바일은 recipe만 실행 → 빠름
    • 단점: 서버 필요
    • 논문에서는 fairness 위해 full-res, 압축 없는 input으로 실행 → baseline을 더 유리하게 setting

 

4.2 Learning from human annotations

 

사람이 직접 수정한 사진을 네트워크가 학습!

Table 3

  • 네트워크를 각 사진가별로 따로 학습
  • metric : L2 error in L*a*b* color space (인간의 시각적 색 차이를 잘 반영하는 색 공간이라서)
  • C는 random 250/highvar 250으로 나눠서
  • 특히 B는 self-consistency가 높아서(= 동일 상황에서 비슷한 스타일 유지), 학습하기 더 쉬움

 

4.4 Discussion and limitations

  • 단순 affine 변환 기반이라 사진 보정은 잘 되지만, 고급 비전 task(matting, depth, dehazing)는 구조적 한계 -

Fig 12

 

관련글 더보기

댓글 영역