본문 바로가기
논문 리뷰/Super-Resolution

[iSeeBetter] Spatio-temporal video super-resolution using recurrent generative back-projection networks

by 귤이두번 2022. 4. 12.

논문 요약

 

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

α:1, β:0.001, γ:0.006, δ:0.00000002

- 각 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= 

 

Google 학술 검색

J Haug - The Massachusetts Review, 1996 - search.proquest.com … But I see better what I remember than what's really out there. The junkie who bought it on Hill Street still lives. The widower behind a dark window is smoking his pipe. …

scholar.google.co.kr

 

GitHub

https://github.com/amanchadha/iSeeBetter

 

GitHub - amanchadha/iSeeBetter: iSeeBetter: Spatio-Temporal Video Super Resolution using Recurrent-Generative Back-Projection Ne

iSeeBetter: Spatio-Temporal Video Super Resolution using Recurrent-Generative Back-Projection Networks | Python3 | PyTorch | GANs | CNNs | ResNets | RNNs | Published in Springer Journal of Computat...

github.com

 

댓글