2019년 5월 14일 화요일

Image Restoration (IR): inverse problem point of view (2)

이전 글에서 전통적인 model-based optimization 방식에 대해 알아보았다면, 이번 글에서는 deep learning이 이런 관점에서 어떻게 해석될 수 있는지 알아보고자 합니다.

Model-based vs. Deep Learning-based


Bayesian 관점에서 보면 Image Restoration (IR)에서 풀고자 하는 문제를 아래와 같이 Maximum A Posteriori (MAP) 형태로 표현할 수 있다고 말씀드렸었습니다: $$\begin{align} \hat{x} &=\arg\min_x\{-\log P(y|x)-\log P(x)\} \notag\\ &= \arg\min_x\{\frac{1}{2\sigma^2}||y-Hx||^2_2+\lambda\rho(x)\}\end{align}$$ 이 문제를 푸는 방식은 model-based optimization과 discriminative learning 이렇게 두 가지로 방식으로 나눌 수 있다고 말씀드렸었죠. 지난 글에서 소개했던 model-based optimization은 image degradation($H$)을 정하고, 특정 image prior(e.g., sparsity, low-rank, etc.)를 고안하여 그렇게 만들어진 모델(objective function)의 최적해를 구하는 것으로 IR 문제를 해결하고자 합니다.

한편, discriminative learning에 속하는 방식들은 여러 장의 손상된 이미지와 원본 이미지 쌍으로 이루어진 학습 데이터로부터 일종의 mapping function을 학습하고자 합니다. Discriminative learning에서의 IR 모델은 일반적으로 $$\min_\theta l(\hat{x},x),~\text{s.t}~\hat{x}=\mathcal{F}(y,H;\theta)$$와 같으며, 여기서 $\mathcal{F}(\cdot)$은 parameter set $\theta$로 표현되는 mapping function, $l(\hat{x},x)$는 resolve된 이미지와 원본 이미지 간의 유사도를 측정하는 loss function입니다. Deep learning에서는 보통 CNN이 inference (mapping) function 역할을 하게 됩니다.

Deep learning for IR


IR 분야에 deep learning을 적용한 가장 초기의 연구는 single-image super-resolution (SISR) 문제를 푼 SRCNN으로, 두 개 layer로 이루어져 있는 초보적인 형태를 갖고 있습니다. 그럼에도 불구하고 기존의 방식들 대비 매우 강력한 성능을 보여주었으며, 단순히 CNN을 사용하여 성능 개선을 꾀한 것뿐만 아니라 CNN 모델의 sparse coding과의 연관성에 대한 분석으로 서로 다른 두 영역의 가교 역할을 해준 중요한 연구였습니다.

이후 진정 deep learning이라고 할 수 있는 깊은 구조를 사용한 모델들은 서울대 이경무 교수님 연구실에서 나온 VDSR이 시초이며, 지금은 매우 많은 연구들이 폭발적으로 진행되고 있습니다 (**). 다만 CNN을 사용한 image restoration 연구들은 이 짧은 글 하나로 담기에는 너무 방대하고 이 글의 목적인 개괄적인 소개와는 거리가 있기에 다른 글로 소개하겠습니다 (**).
** 그 중에는 제 논문도 있지요!ㅎㅎ CVPRW NTIRE 2017 3rd winning model (paper)
** IR 중에서 super-resoltion에 국한한 연구들을 모아 따로 Survey 글을 작성 했으며 이로써 갈음하고자 합니다. 

각 방식의 장단점을 따져보면, model-based optimization은 여러가지 degradation에 대해 사용자가 유연하게 forward 모델을 만들어 사용될 수 있습니다. 즉, image prior가 주어지면 $H$만 바꿔가며 같은 알고리즘으로 여러 IR 문제들을 풀 수 있습니다. 단점은 각 instance마다 새로운 optimization 문제를 풀어줘야하기 때문에 느리겠죠.

반면에 CNN을 이용한 discriminative learning-based 방식은 그 특성상 parametric mapping function $\mathcal{F}_\theta(\cdot)$이 학습 데이터와 매우 강하게 엮여 있습니다. 때문에 Image prior 자체를 데이터로부터 배우면서 좀 더 강력한 representation이 가능하므로 더 좋은 성능을 보이며, optimization에 드는 cost를 training phase로 넘길 수 있고 test phase에서의 inference가 빠릅니다. 그러나 데이터에 의존적인 면이 있으며 하나의 degradation에 대해서만 적용이 가능하고 따라서 모델의 유연성이 떨어진다는 단점이 있습니다.

이를 정리하면 아래 표와 같습니다:

Model-based optimization methodsDeep CNN-based methods
ProsGeneral to handle different IR problems
Clear physical meanings
Data-driven end-to-end learning
Efficient inference during test-phase
ConsHand-crafted priors (weak representations)
Optimization task is time-consuming
Generality of model is limited
Interpretability of model is limited

Deep image prior


Deep learning도 결국에 일종의 learnable image prior 혹은 image model $P(x)$를 배운다는 점에서 model-based optimization 방식들과 연관이 있다고 생각할 수 있습니다. 그러나 결국에 문제를 푸는 방식에 있어 서로가 매우 다른 전략을 취하기에 그 이상으로 연관짓기란 쉽지 않죠.

그런 면에서 deep image prior (CVPR 2018)는 서로 매우 달라보이는 두 방향의 연구(model-based optimization vs. deep learning)들을 이어주는 멋진 연구입니다. 제가 개인적으로 매우 좋아하는 논문이기도 합니다.

DIP가 멋진 이유는 기존의 inverse problem의 regularization 방식을 다루는 새로운 시각을 보여줬기 때문입니다. 대다수의 deep supervised learning 방식들과 달리 "네트워크 구조 그 자체"를 inverse problem의 regularizer로 사용하는 신선한 방법을 제안하는 데요.

좀 더 구체적으로 표현하자면, CNN의 구조 자체가 매우 강력한 (내재적인) prior라서 CNN이 표현 가능한 parametric function space가 일반적이지 않다는 가정에서 출발합니다. 이를 바탕으로 DIP는 우리가 모르는 latent image $x$를 CNN output으로 놓되 $z$라는 고정된 random vector에 대해서 아래와 같은 objective function에 대한 optimization 문제를 풉니다: $$\min_\theta ||H\mathcal{F}_\theta(z)-y||_2^2,\qquad \text{where }x=\mathcal{F}_\theta(z)$$ 예를 들면, 어떤 noise가 더해진 이미지를 주고 CNN을 사용하여 이런 이미지를 아무리 fitting (regression or generation)하려 해도 (GAN에서 generator를 생각하시면 편합니다), 해당 CNN으로 대표되는 parametic function space의 함수들로는 성질(property)이 좋지 않은 noise를 표현할 수가 없기에 natural image만을 fitting하여 깨끗한 결과를 내보낸다는 것이죠.

재미있는 점은 이제 CNN이 이미지 한 장 한 장에 대해 optimization 문제를 풀어 $\theta$를 구한다는 것입니다. 마치 model-based optimization 방식들 같죠? 따라서 다른 model-based optimization이 그러하듯 DIP도 unsupervised 방식으로 IR 문제를 풀 수 있게 됩니다.

DIP는 이를 super-resolution 뿐만 아니라 denoising, JPEG deblocking, inpainting 등 여러 IR 문제에 적용(model-based optimization의 유연성) 가능한 framework을 제안하면서도 기존의 optimization 방식들보다 월등한 성능(deep learning의 성능)을 보여주었습니다.


Inpainting과 denoising task


Blind restoration of a JPEG-compressed image


4x image super-resolution

Deep Plug-and-Play Priors 


앞서 소개한 DIP는 학습되지 않은 네트워크를 사용해서 멋진 결과들을 보여주었는데, 혹시 그러면 기존에 이미 IR에 대해 학습이 잘 된 deep model들을 가져와서 plug-and-play 방식으로 사용하여 좀 더 강력한 IR 모델을 만들 수는 없을까요?

이런 방향의 연구 역시 매우 흥미로운 주제이고, 최근 들어 다양한 방향으로 개발이 되고 있습니다. 이 부분은 제가 알고 있는 최신 연구들만 해도 네다섯 개가 넘는 논문들이 있기 때문에, 이에 대한 리뷰는 아무래도 기회가 된다면 다른 글에서 소개해야 할 것 같습니다.

맺음말


이로써 Image restoration 문제를 푸는 두 가지 대표적인 방식에 대해 살펴보았고, 전통적으로 IR 문제를 풀던 model-based optimization의 관점에서 새로 떠오르고 있는 deep learning-based 방법들이 어떻게 해석될 수 있는지까지 확인해보았습니다. 

이 글에 나오는 해석은 제가 개인적으로 공부하며 제 생각과 함께 정리한 것이기 때문에 꼭 절대적으로 맞는 방향이라고 할 수는 없으나, 전체적으로는 다른 유수의 연구자들이 공감하는 방향일 것이라 생각합니다. 

"기존의 모델들과 deep learning 방식의 모델 사이의 관계를 밝히고, 이로부터 얻은 insight를 바탕으로 새로운 아이디어를 제안하는 연구"가 제가 생각하는 이상적인 연구인데요. 아직은 내공이 부족하여 쉽지는 않겠지만 거북이처럼 천천히 가더라도 끝까지 계속 공부하는 연구자가 되고싶습니다. 

다음 읽을 거리





댓글 7개:

  1. 아주 좋은 글 감사합니다. 써 놓으신 글 들 보면서 많이 공부하고 있습니다. 비전공자이지만 잘하고 싶네요. 계속 좋은 글 부탁드려요!

    답글삭제
    답글
    1. Unknown님 감사합니다. 도움이 되셨다니 다행이네요. 제가 블로그를 요즘 자주 챙기지 못해서 인사가 늦었습니다.

      삭제
  2. 작성자가 댓글을 삭제했습니다.

    답글삭제
  3. 항상 포스팅 한 글 보며 공부하고 있습니다, 감사합니다.
    혹시 CNN structure가 강력한 prior을 갖고 있다는 것은, latent image에 대한 제일 최적의 prior을 CNN이 찾아간다고 생각해도 되나요?

    답글삭제
    답글
    1. 음 일단 제가 먼저 의도한 바는 structure 자체가 prior라서 CNN architecture가 정해지면 그 자체로 prior가 된다는 것입니다. Optimization을 통해 parameter가 변화하지만 이는 이미 정해진 structural prior 내에서 search를 하는 것이 되겠구요. 이 과정을 정해진 prior search space 내에서 다시 최적의 prior를 찾는 것이라 표현하신 것이라면, 이해하신 것이 맞다고 생각합니다.

      삭제
    2. 아, 말씀하신 내용을 들으니 더 상세히 이해됩니다.. 그러면 이 논문을 통해 general하게 model-base방식으로 deep learning방식을 설명하거나, 혹은 반대로도 어떻게 해석할 수 있을까요?

      삭제
    3. 네 그런 방식으로 model-based optimization framework와 deep learning based framework을 합치려는 시도들이 많이 이루어져왔습니다. Yan Lecun이 저자로 있는 LISTA와 같은 unrolling 방식부터 해서 다양한 접근들이 있습니다.

      삭제