Deep Bilateral Learning for Real-Time Image Enhancement
1. INTRODUCTION
- 하고자 하는 것 : 모바일 기기 등 리소스가 제한된 환경에서 고해상도 img를 real-time으로 보정
기존 딥러닝 기반 방법
- 표현력은 좋지만
- 계산 비용이 입력 이미지 크기에 선형적으로 증가
- 1 메가픽셀 이미지를 처리하는 데도 데스크톱 GPU에서 수 초 단위로 걸려서
- 모바일 기기에서 실시간(viewfinder 수준, 30~60fps)으로는 절대 불가
제안
- 사진 보정은 bilateral space에서 선형 변환으로 근사 가능하다!
- 3가지 전략
- (x, y + 색상 차원)으로 구성된 저해상도 grid에서 affine 변환 계수 예측 → slicing으로 고해상도 복원 : low-res bilateral grid에서 연산 대부분 수행 (연산량 ↓)
- local affine transform을 예측해서 색상 보정 학습
- 학습 시에는 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
구조
- Low-resolution stream
- 목표: bilateral grid 형태의 표현 위에서 local affine color transform 계수 예측
- Local path
- Global path: 전체 밝기 분포(histogram), 평균 밝기, 장면 카테고리 등 학습
- 두 경로를 fusion해서 최종적으로 affine 변환 계수(색상/밝기 조정 파라미터) 얻음
- High-resolution stream
- 고해상도 입력 I를 그대로 처리하지만 연산량은 최소화
- 고주파 성분 보존 (detail, edge)
- Slicing node
- low-res stream에서 만든 bilateral grid 상의 계수를 픽셀 단위로 가져옴
- x,y 좌표 + 학습된 guidance map 값(단순 밝기 이상)을 기반으로 grid에서 affine 계수 보간
- 이렇게 얻은 계수를 고해상도 이미지에 적용
- 출력
- 각 픽셀은 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)가 다 뭉개짐
장점
- parameter-free : 보간이므로 학습할 weight 없음
- Edge-aware regularization : g map을 따라 lookup하므로 경계 보존 효과
- 복잡한 변환을 단순화 : 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이 자동으로 맞춰짐
- 단순 luminance 기반 ?
- 전통 bilateral grid에서는 보통 g[x,y]=Y(밝기)만 사용
- 하지만 task에 따라 색/톤 차이가 중요한 경우가 있음
- 학습 가능한 색 공간 변환
- M을 학습하면 task별 최적 색 조합을 guidance 기준으로 삼을 수 있음
- 학습 가능한 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
- 고정된 style : 새로운 입력을 특정 스타일로 변환
- 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
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 모델:
- 모바일 → 압축된 저해상도 이미지 서버 전송
- 서버가 transformation recipe 생성
- 모바일은 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
댓글 영역