논문 요약
1. Paper Bibliography
논문 제목
- iSeeBetter: Spatio-temporal video super-resolution using recurrent generative back-projection networks
저자
- Chadha et al.
출판 정보 / 학술대회 발표 정보
- Computational Visual Media
년도
- 2020
2. Problems & Motivations
논문에서 언급된 현 VSR 연구들에서의 문제점 정리 + 관련 연구
RNN [8, 9, 13]
- Frames가 RNN으로 들어가서 temporal한 순서로 concat됨 (without explicit alignment)
- subtle하거나 significant한 변화를 동시에 다루기 어려움
Alignment module [7, 11, 14]
- frames 사이의 모션 정보를 얻어서 alignment module을 통해 align한다. (explicit alignment)
- 보통 explicit하게 alignment를 하면 smooth한 결과를 얻게된다
- frames가 동시에 처리되는 경우가 많기 때문에 학습 시간이 길다
RBPN [10]
Back-Projection (SISR의 방법, DBPN)
- 반복적으로 residual images를 계산에 target과 neighboring 이미지 간의 reconstruction error로 사용
- residuals는 target image로 back-projected되어서 SR 정확도를 향상시킨다. 여러 residuals는 target과 인접 frames간의 미묘하거나 큰 차이를 나타낸다. (=시간적 정보 사용)
MISR의 이점
- DBPN을 통해 만든 HR feature map을 반복적으로 고쳐나가며 neighboring frames로부터 사라진 디테일을 얻는다
[8] Tao, X.; Gao, H. Y.; Liao, R. J.; Wang, J.; Jia, J. Y. Detail-revealing deep video super-resolution. In: Proceedings of the IEEE International Conference on Computer Vision, 4472–4480, 2017.
[9] Sajjadi, M. S. M.; Vemulapalli, R.; Brown, M. Framerecurrent video super-resolution. In: Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 6626–6634, 2018.
[13] Huang, Y.; Wang, W.; Wang, L. Bidirectional recurrent convolutional networks for multi-frame super-resolution. In: Proceedings of the Advances in Neural Information Processing Systems 28, 235–243, 2015.
[7] Caballero, J.; Ledig, C.; Aitken, A.; Acosta, A.; Totz, J.; Wang, Z. H.; Shi, W. Real-time video super resolution with spatio-temporal networks and motion compensation. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 4778– 4787, 2017.
[11] Jo, Y.; Oh, S. W.; Kang, J.; Kim, S. J. Deep video super-resolution network using dynamic upsampling filters without explicit motion compensation. In: Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 3224–3232, 2018.
[14] Liu, D.; Wang, Z. W.; Fan, Y. C.; Liu, X. M.; Wang, Z. Y.; Chang, S. Y.; Huang, T. Robust video super-resolution with learned temporal dynamics. In: Proceedings of the IEEE International Conference on Computer Vision, 2507–2515, 2017.
[10] Haris, M.; Shakhnarovich, G.; Ukita, N. Recurrent back-projection network for video super-resolution. In: Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 3897–3906, 2019.
3. Proposed Solutions
논문에서 제안하는 해결책들 정리
3.2 Network architecture
- 각 projection step에서 RBPN은 LR로부터 사라진 디테일을 찾고 residual features를 neighbor에서 추출해서 디테일을 더 복구한다
- recurrent encoder-decoder mechanism을 사용해 SISR과 MISR의 결과를 합친다
- SISR (horizontal flow): enlarges LR
- MISR (vertical flow): computes residual features from a pair of LR_t and its neighboring frames(LR_t-1, ..., LR_t-n) with the precomputed dense motion flow map(F_t-1, ..., F_t-n)
- SR이미지가 만들어지면 discriminator가 이를 평가한다
3.3 Loss Functions
- MSE를 사용하여 PSNR, SSIM 등의 수치를 올릴 수 있으나 perceptual quality를 놓칠 수 있다
- MSE를 기반으로 복잡한 텍스처 디테일을 얻는 것에는 한계가 있고 overly-smooth한 결과를 야기한다
- iSeeBetter에서는 four-fold loss를 사용해여 이를 보완한다
1) MSE Loss
- SR frame과 HR frame의 pixel-wise MSE loss
2) Perceptual Loss
- perceptual similarity에 집중
- perceptual loss는 pre-trained VGG-19의 activation layers에서 추출한 features에 기반한다
- SR과 HR에서 얻은 feature의 euclidean distance 측정
3) Adversarial Loss
- D는 discriminator의 결과: 재건된 이미지 G(LR)이 진짜 HR이미지일 확률
- 학습을 쉽게 하기 위해서 -log를 쓴다
4) Total-Variation Loss
- 수평 및 수직 방향에서 인접 픽셀 간 차의 절댓값 합
- TV loss는 input의 노이즈 측정
5) Loss formulation
- 각 frame당 loss는 weighted sum of the MSE, adversarial, perceptual, TV loss
- 각 frame의 discriminator loss는
- 전체 loss는 모든 frames의 loss 평균
class GeneratorLoss(nn.Module):
def __init__(self):
super(GeneratorLoss, self).__init__()
vgg = vgg16(pretrained=True)
loss_network = nn.Sequential(*list(vgg.features)[:31]).eval()
for param in loss_network.parameters():
param.requires_grad = False
self.loss_network = loss_network
self.mse_loss = nn.MSELoss()
self.tv_loss = TVLoss()
def forward(self, out_labels, hr_est, hr_img, idx):
# Adversarial Loss
adversarial_loss = -torch.mean(out_labels)
# Perception Loss
perception_loss = self.mse_loss(self.loss_network(hr_est), self.loss_network(hr_img))
# Image Loss
image_loss = self.mse_loss(hr_est, hr_img)
# TV Loss
tv_loss = self.tv_loss(hr_est)
return image_loss + 0.001 * adversarial_loss + 0.006 * perception_loss + 2e-8 * tv_loss
class TVLoss(nn.Module):
def __init__(self, tv_loss_weight=1):
super(TVLoss, self).__init__()
self.tv_loss_weight = tv_loss_weight
def forward(self, x):
batch_size = x.size()[0]
h_x = x.size()[2]
w_x = x.size()[3]
count_h = self.tensor_size(x[:, :, 1:, :])
count_w = self.tensor_size(x[:, :, :, 1:])
h_tv = torch.pow((x[:, :, 1:, :] - x[:, :, :h_x - 1, :]), 2).sum()
w_tv = torch.pow((x[:, :, :, 1:] - x[:, :, :, :w_x - 1]), 2).sum()
return self.tv_loss_weight * 2 * (h_tv / count_h + w_tv / count_w) / batch_size
@staticmethod
def tensor_size(t):
return t.size()[1] * t.size()[2] * t.size()[3]
4. 입력의 형태
-
5. 시간적 정보 모델링 프레임워크
기본 프레임워크 (2D CNN, 3D CNN, RNN, etc)
- RNN
구조에 기여한 바가 있다면?
- RBPN의 구조를 차용 + GAN 추가해서 더욱더 실사적인 이미지 생성
6. 프레임 정렬 방식
Implicit (암시적) or Explicit (명시적)
- Explicit
추가 설명
- neighboring, target, optical flow를 concat함
7. 업샘플링 방식
- SISR block, SISR block 모두 deconvolution을 해서 upsampling한다
8. 그 외
모델 파라미터 개수
-
데이터
- HR frame을 Bicubic interpolation을 사용해 downsampling해 LR frame으로 만들었다
- augmentation: rotation, flipping, random crop
- Youtube데이터 추가
- train/val/test: 80%/10%/10%
논문 분석
1. 앞서 정리한 논문들에 대한 비평들 중 해당 논문에서 해결된 바가 있다면 정리
- GAN을 사용함으로서 perceptual quality를 향상시켰다
-
2. 해당 논문에 대한 비평(Critique)
1)
2)
3)
Google Scholar Link
https://scholar.google.co.kr/scholar?hl=ko&as_sdt=0%2C5&q=iseebetter&btnG=
GitHub
https://github.com/amanchadha/iSeeBetter
댓글