[2012.09161] Learning Continuous Image Representation with Local Implicit Image Function
Learning Continuous Image Representation with Local Implicit Image Function
How to represent an image? While the visual world is presented in a continuous manner, machines store and see the images in a discrete way with 2D arrays of pixels. In this paper, we seek to learn a continuous representation for images. Inspired by the rec
arxiv.org
1. Introduction
픽셀 기반 이미지 표현법의 문제점은?
- 정밀한 표현 → 더 높은 해상도 필요 → 계산량 증가
- cnn 학습시 모두 같은 사이즈로 만들어야 함 → 정보 손실
=> 해결 : 연속적인 함수 형태 기반 이미지 표현
연속적으로 표현하는 방법은?
- implicit neural representation
- 좌표에 해당하는 signal을 반환
- encoder가 각 물체마다 latent code 예측
- 그 latent code와 좌표를 decoder에 입력
- 문제점 : 간단한 이미지에만 적용 성공 (// natural, complex 이미지는 x)
=> 제안 : LIIF ( decoder가 좌표와 주변 latent code 받아서 RGB 값 예측, 그 좌표는 연속적이므로 아무 해상도에서 적용 가능 )
=> 목표 : 인코딩된 LIIF 표현이 더 높은 해상도의 결과물을 예측 가능하도록
그렇다면 기존 super resolution과의 차이점은?
- scale이 정해져있지 않음
- 임의의 초고배율도 가능 → resizing 필요 없음
결국 주요 핵심은
- natural, complex 이미지를 연속적으로 표현함
- x30 이상으로 확장 가능
- 사이즈가 모두 다른 gt에 효과적
2. Related Work
Implicit neural representation
- 기존 : 3D 공간을 명시적으로 점, 격자, 혹은 표면 형태로 표현 (해상도 고정)
- 비교 : 좌표를 input으로 받고 signal이 output으로 나오는 MLP 구조
- 즉, "좌표 → 값" 형태의 연속 함수로 3D 형태를 표현
Learning implicit function space
INR을 학습하는 방식은
- 객체마다 MLP를 개별로 학습하거나
- 객체마다 latent code + decoder를 둠
- latent code를 encoder 없이 직접 최적화하거나 → auto decoder
- latent code를 encoder가 자동으로 예측하도록 → auto encoder
INR은 3D에서 성공적이지만 2D에서는 한계
- 이유 : MLP + ReLU 구조가 이미지 세부 표현에 한계
- 해결책 : 활성화 함수를 sin으로
- 그러나 아래 2가지 문제점 여전히 존재
- 함수 공유시에는 일반화는 됨 but 세밀한 표현이 부족
- 함수 따로 쓰면 표현은 정밀함 but 새로운 이미지는 처리 못 함
- LIIF 제안 : local latent code 사용
Image generation and super-resolution
기존 super resolution과의 차이점?
- super resolution
- deconvolution(=업샘플링)을 통해 전체 이미지를 한 번에 키움
- 스케일 고정
- LIIF
- 픽셀 각각을 좌표 단위로 예측
- 임의의 높은 해상도 가능 → MetaSR도 유사하게 임의 스케일 확대를 목표로 함 (그러나 학습 범위 내에서만 작동 +)
3. Local Implicit Image Function
Fig 2
디코딩 함수 :
Eq (1)
- 각 이미지 I(i)는 H*W개 latent code로 구성된 feature map M(i)로 표현됨
- 이 latent code들은 이미지 공간 위에 격자로 배치 (Fig2에서 파란점)
- x 범위는 [0,2H] [0,2W]
RGB 예측 :
Eq (2)
Feature unfolding
Eq (3)
- 하나의 latent code를 만들 때 주변 3*3 이웃 정보까지 반영
- 경계는 zero padding
Local ensemble
- Eq 2의 문제점 : z* 선택의 민감성
- 즉, Figure 2에서 점선은 z* 선택이 바뀌는 경계선 → 이 경계선을 기준으로 예측 결과가 크게 바뀜
- 불연속적 패턴이 생기는 - 결과 발생
- 해결책 : 주변 latent code 4개를 사용
Eq (4)
- xq 주변 4개의 latent code(z)에 대해 각각 예측 수행
- 이 예측 값들을 단순히 평균 내는게 아니라
- 면적을 가중치로 줘서 더 가까운 z의 예측이 많이 반영되도록
- 예측 결과 연속적 유지 가능
Cell decoding
- 문제점 : 보통은 각 픽셀의 중심점 위치만 골라서 RGB 값 구함 → 면적 정보 반영 x
- 해결책 : 위치(중심 좌표)+픽셀 크기를 같이 decoder input으로 넣자
- 중심좌표(x)와 픽셀의 가로,세로 길이(ch,cw)를 concat해서 전달
Eq (5)
Fig 3
4. Learning Continuous Image Representation
목표 : 입력 이미지에 대해 연속적 표현 생성
- encoder는 LIIF 표현으로 2D feature map 생성
- decoder는 공유
- LIIF 표현은 1. 입력 이미지 재구성에 사용 2. 해상도 높아져도 디테일 유지 조건 충족
학습 흐름
- 원래 이미지를 저해상도 이미지로
- 원래 이미지의 중심좌표(xhr)과 해당 픽셀의 RGB값(shr)을 gt로
- 저해상도 이미지를 encoder에 → LIIF (latent code map)
- decoder가 LIIF와 xhr을 받아서 RGB 예측(s pred)
- L1: s pred & shr 차이 계산
5. Experiments
5.1. Learning continuous image representation
Setup
- DIV2K: 고해상도 이미지 1000장
- 각 이미지에 대해 2,3,4배 다운샘플된 이미지도 제공 → 저해상도 input으로 사용
- 학습용 이미지: 800장
- 검증용 이미지: 100장
목표 : 픽셀 기반 이미지에 대해 연속적인 표현을 생성한다. 즉, 어떤 해상도로든 확대해서 표현 가능한 함수로 만든다.
- 학습 : 1~4 사이
- 테스트 : out of distribution 상황, 학습시 경험하지 못한 scale 실험
Implementation details
- 인코더에 들어가는 이미지 크기는 48*48로 고정
- 랜덤 scale r로 고해상도 이미지 생성 (48*r)
- 고해상도 이미지에서 48*48개 일부만 샘플링
- 예를 들어 r이 2.5면
- 원본 큰 이미지에서 120*120 고해상도 패치 잘라냄
- 이걸 다운샘플링해서 인코더 입력으로(48*48)
- 고해상도 이미지에서 48*48개 좌표와 그 RGB 값을 샘플링 → decoder 학습에 사용
- 48*48개 샘플링 하는 이유 → 고해상도 이미지 크기가 scale마다 다르므로 일정한 개수의 샘플 뽑아서 학습하도록
모델 구조
- encoder : upsampling 모듈 제거한 EDSR-baseline, RDN
- decoder : 5-layer MLP
- L1
scale 별 평가 방식
- x2, x3, x4 : 데이터셋에서 제공
- x6~x30 : 고해상도 이미지를 scale로 나눠떨어지도록 자름 → downsampling해서 예측 → gt(고해상도 이미지)랑 비교
학습 설정
- optimizer : Adam
- 초기 lr : 1e-4
- 에폭 수 : 1000
- 배치 크기 : 16
- lr 감소 : 200에폭마다 0.5배로 감소
비교
- MetaSR → LIIF 대신 meta-decoder 사용
Quantitative results
- 비교 : EDSR-baseline, RDN, MetaSR
- in-distribution : 기존 방법들과 비슷하거나 경쟁력 있는 성능 (EDSR, RDN은 특정 스케일만 학습해서 그 안에서는 +)
- out-of-distribution
- EDSR, RDN은 테스트 자체가 불가능 (고정된 스케일이니까)
- MetaSR는 동작은 가능하지만, LIIF보다 성능 -
- LIIF는 성능이 안정적이며, 스케일이 커질수록 +
Qualitative results
- 1-SIREN (이미지마다 MLP 학습, encoder 없음) : 공유 불가
- MetaSR : 불연속성
- LIIF: x30에서도 +
Fig 5
5.2. Ablation study
Cell decoding
- scale 커지면 오히려 cell decoding이 PSNR을 낮춤 : 왜?
- 예를 들어 x30이면 픽셀 크기가 1/30이 되므로 그만큼만 참고해야 디테일이 +
- 만약 cell 크기가 실제 고해상도 픽셀 크기보다 크면 넓은 범위를 참고해서 blurry해짐
- 또한 고해상도 gt 이미지가 유일한 해답이 아님
Fig 7
Training with k-only
| |
scale 4 |
다른 scale |
scale 6~30 |
| LIIF (4-only) |
살짝 더 + |
- |
PSNR은 오히려 + |
| LIIF (1~4 랜덤) |
전체적으로 균형 잡힘 |
다양한 스케일에 강함 |
시각적 품질은 + |
왜 LIIF (4-only)에서 PSNR 성능이 +?
- ×4로만 학습하면, 원래보다 높은 스케일들(×6~x30)에 더 적응된 모델이 될 수 있음
- 4-only는 scale 고정 → cell decoding 필요 없음 (픽셀 크기가 고정 → 디코더에 픽셀 크기를 알려줄 필요 x)
- cell decoding은 PSNR -
- 따라서 PSNR 기준으로 보면 오히려 +
Other design choices
- LIIF (-u): feature unfolding 제거 → 중간 scale에서 LIIF가 +
- LIIF (-e): local ensemble 제거 → 일관되게 LIIF가 +
- LIIF (-d): 디코딩 MLP depth를 3층으로 축소 → decoder 깊을수록 +
6. Conclusion
LIIF
- 이미지가 2D 특징맵으로
- decoder는 공유
- 그 output은 RGB (좌표와 주변 특징 벡터 받아서)
- 픽셀 기반 이미지에 대해 연속적인 LIIF 표현 생성 가능
- 이 연속적인 표현은 고해상도에서 표현될 수 있음
댓글 영역