[논문정리] Context Encoder : Feature Learning by Inpainting

 

빈 공간을 주변에 맞게 자연스럽게 채워주는 딥러닝 기술.

갤럭시 기능중에 AI지우개가 있는데 비슷한 원리 아닐까 싶음
객체를 선택해서 빈공간으로 만들고 Context Encoder로 빈공간을 채우는...?

이 논문은 잘 정리된게 많아서 참고자료가 풍부해 안심이다.

괜찮은 정리본들도 아래 게시물에 정리해놨다. 

이렇게 능력자들이 자료를 공유해주니 나같은 초짜들이 살아갈만하다.

 

Context Encoders 논문 정리

[고문서복원]Context Encoder 논문리딩 - LAB CONTEXT [고문서복원]Context Encoder 논문리딩 Intro labcontext.github.io Context Encoders를 활용한 배경 채우기(1) - Forte (hyungjobyun.github.io) Context En..

haystar.tistory.com

이제는 본격적으로 논문정리 시작!

 

논문정보

Context Encoder : Feature Learing by Inpainting


논문정리

Abstract

Context를 기반으로 픽셀 예측을 통해 비지도 학습된 이미지 학습 알고리즘이다. 

오토인코더와 유사한 형태로 제안된 Context Encoder는 임의의 이미지 영역의 컨텐츠를 주변 환경을 따라 생성하도록 훈련한 신경망이다.

전체 이미지에 대한 이해 + 누락된 부분에 대한 그럴듯한 가설 필요

이를 위해 context encoder를 훈련할 때 (1)표준 픽셀단위의 재구성 손실뿐만 아니라 (2)재구성+적대적 손실을 모두 실험함

context encoder는 외형뿐만 아니라 시각 구조의 의미도 파악하는 표현을 학습한다.

CNN으로 사전훈련된 분류, 감지, 세그멘테이션 작업에 대해 학습한 결과를 정량적으로 증명하고 있다.

또한, CNN을 통해 semantic inplating 작업을 할 수 있다는 것도 발견.

Introduction

우리의 시각 세계는 매우 다양하지만 매우 구조화되어있다. 그리고 인간은 이 구조를 이해하는 놀라운 능력을 가지고 있다.

이미지의 일부분이 누락되어있어도 사람은 쉽게 비워져있는 부분을 유추할 수 있다.

이 논문에선, 최첨단 컴퓨터비전 알고리즘이 동일한 작업을 할 수 있는지 조사한다.

 

그림 1

그림 1-(a)의 이미지를 보았을 때, 이미지의 중앙부분이 없어도 대부분의 사람들은 주변 픽셀을 통해 쉽게 그 내용을 파악할 수 있다.

(b) 처럼 그릴 수 있는 사람도 있다. 자연적인 이미지가 매우 다양해도 고도로 구조화되어있다는 사실에서 비롯됨

즉, 인간은 일부만 봐도 이 구조를 이해하고 시각적인 예측을 할 수 있다.

 

이 논문에선 다양한 이미지 이해 작업에서 성공적인 성과를 보인 CNN모델을 사용하여 이 구조를 학습하고 예측하는 것이 가능하다는 것을 보여준다.

결측 영역이 있는 이미지(그림 1-a)가 주어지면 결측 픽셀 값으로 회귀하도록 CNN을 훈련시킴 ▶ 그림1-(d)

<Context Encoder>
Encoder 영역이 누락된 입력 이미지의 latent feature representation을 생성
Decoder feature representation을 사용하여 누락된 이미지의 컨텐츠를 생성
▶ Model Context Encoder라고 부름

오토 인코더와 인코더와 디코더 구조가 비슷하다는 점에서 유사하다.

오토인코더는 입력 이미지를 받아서 장면의 compact한 표현을 얻기 위해 저차원의 bottlenect 레이어를 통과한 후 재구성한다.

<Auto Encoder>

입력과 동일한 출력을 만드는 것을 목적으로 하는 신경망
이미지를 더 낮은 차원으로 인코딩하고 다시 원래의 이미지로 디코딩함

그런데 영상의 의미론적인 특징을 파악하지는 못하고 단순히 영상의 내용만 압축시킬 수도 있는 한계가 있음.

Denoising auto encoder는 입력 이미지를 손상시키고 네트워크에서 손상을 복구하도록 하여 이 문제를 해결한다.

이런 corruption process는 매우 지역화되어있고 저차원 상태이기 때문에 원상태로 복구하는데에 많은 의미 정보가 필요하지 않음.

Context encoder는 훨씬 더 어려운 작업을 해결해야 함

근처 픽셀에서 힌트를 얻을 수 없는 이미지의 큰 누락된 영역을 채워야함

이미지에 대한 훨씬 더 깊은 의미적 이해와 높은 수준의 특징을 합치는 기술이 필요하다.

 

오토인코더와 마찬가지로 Context Encoder도 비지도방식으로 훈련함

문제(논문 표현 - burden)를 해결하기 위해선 이미지의 내용만 이해하는 것이 아닌 사라진 부분에 대해서 그럴듯한 가설을 생성해내야 한다.

하지만 이렇게 누락된 영역을 채움 + 주어진 맥락과 일관성을 유지하는 방법은 여러가지가 있기 때문에 multi-modal임

오토인코더에서 나타나는 문제는 Context Encoder의 인코더와 디코더를 공동으로 훈련하여 reconstruction loss, adversarial loss를 최소화하여 제거한다.

재구성 손실(L2, reconstruction loss) 누락된 영역의 전체 구조를 주변 상황과 관련해서 포착하는 데 쓰임
적대적 손실(adversarial loss) 누락된 부분을 채우고 일관성을 유지시키는 여러 방법 중 특정 기법을 선택하는 것과 관련

reconstruction loss만 사용하면 그림1-(c)처럼 흐릿한 결과를 반환하지만 두 loss를 모두 최소화하면 그림1-(d)와 같이 더 깔끔한 결과를 반환한다.

 

평가는 인코더와 디코더를 독립적으로 진행한다.

  • 인코더 단에서,  image patch(잘게 자른 이미지)의 context를 인코딩하고 resulting feature(결과로 얻은 특징..?)을 얻음. 데이터셋에서 이 feature와 인접한 context를 검색하도록 하면 원래 patch와 의미적으로 유사한 patch가 생성됨또한, 다양한 이미지 이해 작업을 위해 인코더를 fine-tuning하여 학습된 feature representation의 품질을 검증한다.
  • 디코더 단에서, Context Encoder가 누락된 영역을 채울 수 있다는 것을 보여준다. semantic hole-filling(큰 누락 영역)에 대해 합리적인 결과를 제공할 수 있는 최초의 parametric inpainting algorithm
정리하자면, 인코더는 영상의 context를 소형의 잠재 표현으로 재구성하고
디코더는 누락된 영상의 컨텐츠(흰 부분)를 생성한다.

Related work

컴퓨터 비전은 지난 10년동안 분류, 객체 감지, 분할과 같은 이미지 이해 작업에서 엄청난 발전을 이뤄냈음.

최근, CNN을 통해 이러한 작업에서 작업을 크게 향상시킴

기존의 방식들에 대한 개략적인 흐름

 

<비지도 학습>

비지도 학습(unsupervised learning)이란, 정답이 주어지지 않는 학습 전략.

어떤 입력에 대한 올바른 결과가 무엇인지 알 수 없으며 대표적인 예로는 군집화와 스케일링.

그리고 심층 비지도 학습의 연구 중 오토 인코더가 있다.

그 중 노이즈를 제거할 수 있는 오토 인코더(Denoising autoencoder)는 이미지 재구성 능력이 뛰어나다.

Context encoder도 Denoising autoencoder라고 생각할 수 있지만 모델의 입력에 적용된 손상이 훨씬 커서 회복되기에 더 많은 정보가 필요하다.

 

<약한 지도학습과 자기 지도학습>

지도학습이란 정답이 주어지는 학습 전략.

어떤 input에 대한 올바른 output이 무엇인지 알 수 있다.

최근에 약한 지도학습과 자기 지도학습을 사용하여 의미있는 표현을 학습하는데 관심이 생기고 있다.

약한 지도학습(weakly supervised learning)
주어지는 정답에 대한 정보가 제한된 학습.
일부에 대한 정보만 제공받아 학습하고, 그러한 학습을 통해 제공받지 않은 정보를 예측해낸다.
ex. 객체의 클래스 정보만을 제공받고 영상 내 객체 위치를 예측
자기 지도학습(self-superivsed learning)
레이블이 없는 데이터를 이용해서 스스로 학습 후 분류하는 것
'사전학습'이 필요함
▶비지도 학습과의 차이는 뭘까?

본 논문과 가장 밀접한 관련이 있는 것은 자유롭고 풍부한 supervisory signal로써 공간적 문맥을 이용하려는 노력이다.

 

Visual Memex는 객체 관계를 nonparametrically  모델링하고 이미지에서 마스킹된 객체를 예측하기 위해 context를 사용하는 반면 「Context as supervisory signal: Discovering objects with predictable context」에서는 지도되지 않은 객체를 발견하기 위한 대응관계를 설정하기 위해 context를 사용함.

but, 두 작업 모두 수작업으로 설계된 특징에 의존했으며 표현학습을 수행하지 않았다.

 

「Unsupervised visual representation learning by context prediction」[7]에선 지도되지 않은 심층 특징 표현을 훈련하기 위해서 이미지 내 인접한 patch의 상대적인 위치를 예측하는 작업을 사용했다.

 

Context Encoder는 위와 같은 높은 수준의 목표를 공유하지만 접근 방식은 근본적으로 다르다.

[7]은 차별적인 작업을 해결하는 반면, Context Encoder는 순수한 예측문제를 해결한다.

[7] : 패치 A가 패치 B 또는 그 이하인가?
Context Encoder : 어떤 픽셀 강도를 구멍에 넣어야 하는가?

 

이러한 접근방식(?)의 이점 중 하나는 supervisory signal이 훨씬 풍부하다는 것.

 

Context Encoder는 훈련 예제당 15000개의 실제 값을 예측해야 한다.

이것에비해 [7]은 8개 선택지중에서 1가지만 선택하면 됨.

이러한 차이로 인해 Context Encoder가 [7]보다 훈련에 훨씬 적은 시간이 소요된다.

 

또한, 색수차(chromatic aberration)가 부분적으로 과제를 해결하는 [7]과 달리, 색수차같이 낮은 수준의 영상 특성은 의미있는 정보를 제공하지 않기 때문에 context 기반으로 예측을 수행하는 것은 "치팅"하기가 더 어렵다.

 

<이미지 생성>

자연 영상의 생성 모델은 상당히 관심이 많았다.

「Unsupervised representation learning with deep convolutional generative adversarial networks」[33]에서는 새로운 컨볼루션 구조와 GAN을 위한 최적 하이퍼 매개변수를 제안하였음.

본 논문에선 인페티이 결과를 생성하기 위해 재구성 손실과 함께 적대적 손실을 사용하여 context encoder를 훈련시켰다. ▶ Section 3.2에서 자세히 설명

 

「Disentangling factors of variation for facial expression recognition.」[36]에선 CNN이 특정 물체 범주의 새로운 이미지를 생성하는 방법을 배웠지만, 라벨링된 데이터셋에 의존하였다.

Context Encoder는 라벨이 부착되지 않은 이미지 데이터베이스에 적용할수 있으며 주변 컨텍스트를 기반으로 이미지 생성하는 방법을 학습한다.

 

<인페이팅과 구멍 메꾸기>

누락된 영역의 크기가 커서 local non-semantic 방법이 잘 작동하지 않기 때문에, 구멍을 채우기 위해서는 고전적인 인페이팅과 텍스쳐 합성 접근방식으로 처리할 수 없다.

컴퓨터 그래픽스에서 큰 구멍을 메우는 것은 일반적으로 장면(scene)의 완성을 통해 이뤄지며, 수백만개의 이미지 데이터셋에서 가장 가까운 이웃을 사용하는 cut-paste formulation을 포함한다.

하지만, 장면을 완성하는 것은 사물을 통째로 제거하여 남은 구멍을 메우는 것을 의미하며, 임의의 구멍을 메우기는 어렵다.

본 논문에선 의미론적으로 의미있는 콘텐츠를 parametric한 방식으로 인페이팅할 수 있을뿐만 아니라, 가장 가까운 이웃에 기반한 인페이팅 방법에 더 나은 기능을 제공한다.

Context encoders for image generation

이제 사라진 장면의 일부를 예측하는 CNN인 context encoder를 소개한다.

먼저 일반적인 아키텍쳐 개요를 설명한 후 학습절차에 대한 자세한 내용을 제공하고, 마지막으로 이미지 영역 제거를 위한 다양한 전략을 제시한다.

그림 2

<Encoder-decoder pipeline>

전체적인 구조는 단순한 인코더/디코더 파이프라인이다.

인코더는 영역이 누락된 입력 이미지를 가져와 해당 이미지의 latent feature representation을 생성한다.

디코더는 이 feature representation을 이용하여 누락된 이미지 컨텐츠를 생성한다.

이 둘은 채널별로 완전 연결하는 것이 중요하다.

이렇게 하였을 때 디코더가 전체 이미지 내용을 추론할 수 있다.

인코더

인코더는 AlexNet 아키텍쳐에서 파생되었다.

227*227 크기의 입력 이미지가 주어지면, 추상적인 6*6*256차원의 feature representation을 얻기 위해 5개의 컨볼루션층과 다음 단의 pooling층(pool5)을 사용한다.

5개의 conv + pooling layers

AlexNet과 달리 해당 모델은 ImageNet분류에 대한 훈련은 받지 않고 랜덤하게 초기화된 가중치에 의한 context 예측에 대한 훈련을 받는다.

즉, 기존 AlexNet이 1000개의 카테고리로 분류하는 것을 학습했다면 여기서는 random weights 들로 context를 예측

컨볼루션층이 모두 완전연결 되어있기 때문에 가중치를 모두 공유하는 형태이다.

 

인코더 구조가 컨볼루션층에만 한정되어 있다면, 정보가 특징맵의 한쪽에서 다른쪽으로 전파될 수 없음.

why? 컨볼루션층은 모든 특징맵을 서로 연결하긴 하지만 특징 맵 내의 모든 위치를 직접연결하지는 않기 때문

(말그대로 특징만 추출하였다)

따라서 정보 전파는 fully connected층으로 처리한다.

이 아키텍처에서 latent feature차원은 인코더 디코더 모두 6*6*256이다.

오토 인코더와 달리 입력을 재구성하지 않기 때문에 bottleneck이 작을 필요가 없음

 

하지만, 인코더와 디코더를 완전연결하면 파라미터수가 기하급수적으로 증가(1억개 이상)하여 효율적인 GPU연산이 어려워짐.

따라서 채널방식의 완전연결층을 사용하여 인코더 기능을 디코더에 연결한다.

 

Channel-wise 완전연결층

그룹이 있는 완전연결층이며, 각 feature map 마다 활성함수를 적용하며 전달하게 된다.

이 레이어는 입력 레이어에 크기가 n*n인 feature map이 m개 있으면 n*n차원의 m개 feature map을 출력하여 디코더에 전달한다.

단, 완전연결층과 달리 다른 특징맵을 연결하는 파라미터는 없으며 특징맵 내에서 정보만 전파한다.

따라서 chennel-wise 완전연결층의 경우 파라미터수가 $mn^4$이며, 완전연결층의 파라미터 수가 $m^2n^4$인 것과 비교된다.

그 후 보폭이 1인 컨볼루션층을 실행하여 채널 전체에 정보를 전달한다.

 

디코더

인코더의 특징은 channel-wise 완전연결층을 이용해 디코더 특징에 연결된다.

디코더는 RELU활성화를 거친 5개의 up-convolution layer로 이루어져 있다.

up-convolution은 단순히 고해상도 이미지를 생성하는 컨볼루션

일련의 업컨볼루션층과 비선형성은 인코더에 의해 생성된 특징의 비선형적인 가중치를 목표 크기에 대략 도달할때까지 업샘플링. (맞는지 다시 읽어봐야함..ㅠㅠ)

 

<Loss Function>

손실된(dropped-out) 영역의 ground truth 내용을 회귀하는 방향으로 context encoder를 훈련한다.

출력단에서 context와 다중모드내의 연속성을 모두 다루는 분리된 joint 손실 함수를 가진다.(?) 진짜 무슨말이지

 

재구성(L2)손실은 누락된 영역의 전체 구조를 주변 상황과 관련해서 포착하는데 쓰이고
적대적 손실은 누락된 부분을 채우고 일관성을 유지시키는 여러 방법 중 특정 기법(mode)를 선택하는 데 쓰임

 

ground truth 이미지 $x$에 대해 컨텍스트 인코더는 출력 $F(x)$를 생성한다.

$\hat{M}$은 픽셀이 누락된 곳이면 1이고 입력 픽셀이면 0인 이진 마스크

삭제된 영역에 해당한다.

훈련 중에 이 마스크는 이미지 훈련이 반복되면서 자동으로 생성된다.

 

Reconstruction Loss

$\mathcal{L}_{rec}$은 재구성 손실 함수, L2 distance를 사용한다.

위 식에서 x는 이미지, $\hat{M}$은 바이너리 마스크
⊙은 하다미드 곱, 같은 크기의 두 행렬의 각 성분을 곱하는 연산(element-wise product operation)

L1과 L2 loss를 모두 실험한 결과, 둘 사이에 큰 차이는 없었다.

단순한 loss를 사용하면 디코더가 예측된 물체의 윤곽을 생성하도록 유도할 순 있지만, 고주파 세부사항을 파악하지 못한다.

L2 (또는 L1) loss가 높은 정밀도의 텍스쳐보다 흐릿한 솔루션을 선호하기 때문

연구진은 L2손실이 분포의 평균을 예측하는 것이 훨씬 안전하기 때문에 발생한다고 생각했다.

평균 픽셀 단위의 오차는 최소화할 수 있지만 평균 이미지가 흐릿해졌기 때문.

이러한 단점은 적대적손실(adversarial loss)를 추가함으로써 완화하였다.

 

수식을 자세히 보면 우리는 비어있는 사진을 입력해서 채워진 사진을 얻어야한다.

x는 ground truth image라고 했으니까 아무것도 손실되지 않은 label이미지.

L2 loss의 식은 위와 같다. $y_{true}$에서 $y_{predicted}$를 빼야함.

x가 $y_{true}$가 되는것

context encoder의 f(input context)였다. input context는 손실된 영역이 있는 이미지

위 식에서 F안에 들어간것은 $(1-\hat{M})\odot x$이다.

$(1-\hat{M})$은 손실되지 않은 이미지 영역을 나타내는 마스크

이 마스크를 x에 입히니까 구멍이 뚫린 이미지를 얻게 된다.

그냥 $\hat{M} \odot x$였으면 뚫린 구멍에 해당하는 원래 이미지 정보를 가져왔을 것.

암튼 이렇게 오차를 구하고 해당 영역에 집중하기 위해서 오차에 한번더 마스크를 입힌거라고 추상적으로 이해중

 

Adversarial Loss

적대적 손실은 GAN에 기반을 둔다.

생성 모델 G를 학습하기 위해 GAN은 적대적 판별 모델 D를 공동으로 학습시킨다. 

생성 모델에 대한 loss gradients를 제공하기 위함

$G:Z\rightarrow X$라고 하면 노이즈 분포 Z의 샘플을 데이터 분포 X에 매핑한다.

Discrimintor인 D가 generator G가 생성한 가짜 샘플과 실제 이미지를 분류하기 위한 지도학습을 한다면

Generator G는 가짜 이미지를 진짜 이미지처럼 만들기 위한 비지도학습을 한다.

D를 혼란스럽게 하기 위함

위는 GAN의 기본 손실함수이다.

z는 noise로 G의 첫입력으로 들어간다. G(z)는 만들어진 가짜 이미지.

x는 진짜 샘플이며, Discriminitor의 입력으로 들어간다. 따라서 D(x)=1

위 수식에 따르면 D의 목적은 GAN의 loss함수를 최대가 되도록 하는 것이고, G의 목적은 GAN의 loss함수를 최소가 되도록 하는 것이다.

 

컨텍스트 인코더로 생성기를 모델링하여 컨텍스트를 예측하기 위해서 이 프레임워크를 적용하려고 했다. 

이 업무를 위해 GAN을 커스터마이즈하기 위해서는 주어진 컨텍스트 정보를 조건으로 할 수 있어야 한다.

▶ $\hat{M}\odot x$

하지만 이렇게 GAN을 사용하였을 때는 예측 작업에 대해 쉽게 훈련되지 않았다.

적대적 판별자 D는 예측 샘플 대 실제 샘플을 쉽게 분류해야 하는데, 그러기 위해서 생성된 영역과 원래 컨텍스트에서의 perceptual discontinutiy를 쉽게 이용하기 때문
이게 무슨말인가 했는데 D가 실제샘플이랑 예측샘플을 분류를 하는데, 예측 샘플에는 손상된 영역을 복원한 이미지가 될거고, 완전매끄럽진 않다.
그러면 원래의 뚫려있던 이미지와, 채운 영역사이에 불연속성이 존재하게 되고 Discriminator는 이 경계를 가지고 분류를 하는게 더 쉽기때문에 거기에 적응한 것.

아무튼, 따라서 판별자가 아닌 생성기만 조절하는 대체공식을 사용하였다.

그래도 다행히 Geneator가 노이즈 벡터에 의해 조절되지 않았을 때 더 나은 결과를 보였다는 것을 발견

 

결과적으로 컨텍스트 인코더에 대한 적대적 손실인 $\mathcal{L}_{adv}$는 다음과 같다.

이렇게 하여 누락된 영역뿐만 아니라 콘텍스트 인코더 출력 전체가 실제처럼 보이도록 이끈다. 

 

Joint loss

따라서 이 손실들을 joint하여 전체 손실 함수를 정의함

이 손실함수는 인페이팅에만 사용한다. 

 

다음 사진은 재구성손실과 적대적손실을 모두 사용하여 훈련한 컨텍스트 인코더 이미지 인페이팅 결과이다.

첫번째 3행은 ImageNet에서 가져왔고, 아래 2행은 Paris streetView Dataset에서 가져왔다.

 

<Region Masks>

컨텍스트 인코더에 들어가는 입력은 1개이상의 영역이 손실된 이미지이다.

제거된 영역은 어떤 모양이든 될 수 있는데, 이 논문에선 세가지 전략을 제시한다.

그림 3

Central region

그림 3-(a)에서 볼 수 잇듯이 이미지 중앙에 정사각형 패치가 있는 가장 간단한 모양.

인페이팅에는 매우 효과적이지만 central mask의 경계에 고정된 저수준의 특징을 학습한다.

제거된 영역에 대응하는 저수준의 이미지 특징을 찾는다.

이러한 저수준 특징은 마스크가 없는 이미지에 대해서는 일반화되지 않는다.

 

Random block

네트워크가 마스킹된 영역의 일정한 경계에 적응하는 것을 방지하기 위해서 마스킹 프로세스를 랜덤으로 적용한다.

고정된 위치에 하나의 큰 마스크를 적용하는 것이 아니라, 작은 마스크들을 여러개 설정하여 이미지의 1/4까지 덮을 수 있도록 한다. 그림 3-(b)에서 볼 수 있다.

이 마스크들은 겹칠 수 있음

하지만 이렇게 해도 뚜렷한 경계가 존재한다.

 

Random region

경계선을 완전히 제거하기 위해서 PASCAL VOC 2012 dataset에서 얻은 랜덤마스크를 가지고 이미지에서 임의의 형상을 제거하는 실험을 하였다.

이런 모양을 변화시켜서 (PASCAL이 아닌) 다른 이미지의 임의의 위치에 붙여넣는다.

이미지의 최대 1/4까지 덮는다.

이들은 영역 마스킹 프로세스를 완전히 랜덤화하였고, 이미지와 분할마스크에 대한 상관관계를 원한 것이 아니다.

이러한 영역을 사용하는 이유는 네트워크가 손실영역에 대응하는 저수준 기능을 학습하게 하지 않기 위해서

그림 3-(c)에서 볼 수 있다.

이렇게 하면 central region과 random block이 일반적인 특징을 찾아내는 것보다 훨씬 좋은 특징을 찾아낸다.

따라서 이렇게 랜덤 영역을 드롭아웃 하는것을 모든 실험에서 사용하였다.

 

Implementation details

파이프라인은 Caffe와 Torch로 구현하였다.

최적화는 Adam을 사용함.

마스킹된 입력 이미지에서 누락된 영역은 평균값으로 채운다.

 

Pool-free encoders

모든 풀링 레이어를 동일한 커널 크기와 보폭을 갖는 컨볼루션으로 교체하였다.

네트워크의 전체 stride는 동일하기 유지되지만 더 세밀하게 그림을 그릴 수 있었다.

애초에, 재구성 기반 네트워크에 풀링을 사용할 이유가 없었다.

 

특징학습결과에 대해서는 AlexNet 아키텍쳐를 사용한다. (?)

이전 작업과 일관성을 유지하기 위함

 

Evaluation

실험은 Paris StreetView, ImageNet에서 얻은 이미지로 진행하였다. 어떠한 레이블도 없다.

Semenatic Inpainting에서는 컨텍스트 인코더가 누락된 영역이 있는 이미지의 semantic details을 채우는 기능을 보여준다.

Feature Learning에서는 컨텍스트인코더를 사용하여 분류/객체감지/semantic분할의 사전학습단계에서, 학습된 기능을 다른 작업으로 보낼 수 있음을 보여준다.

we demonstrate the transferability of our learned features to other tasks, using context encoders as a pretraining step for image classification, object detection, and semantic segmentation.

<Semantic Inpainting>

재구성손실/적대적손실을 사용한 컨텍스트 인코더

누락된 영역을 그리기 위해서 joint loss function을 사용하여 컨텍스트 인코더를 훈련한다.

「Unsupervised representation learning with deep convolutional generative adversarial networks」[33]

인코더, 판별기 아키텍쳐는 [33]의 판별기와, 디코더는 [33]의 생성기와 유하다.

하이퍼파라미터는 [33]에서 제안한 것을 사용함

$\lambda_{rec}=0.999, \lambda_{adv}=0.001$

 

 

 

학습 시 중요 사항

  • 적대적 손실을 조절하지 않음, 인코더에 노이즈를 추가하지 않음
  • 적대적 판별기보다 더 높은 학습률(10배)을 컨텍스트 인코더에 사용함.
  • context와 예측값의 일관성을 더욱 강조하기 위해서 context보다 7px 더 크게 예측한다.
  • 겹치는 영역에서 재구성 손실에 가중치를 10배 적용하였다.

그림 4, 재구성 손실과 적대적 손실을 이용해서 훈련시킨 컨텍스트 인코더 인페이팅 결과, 첫 3줄은 ImageNet 마지막 2줄은 Paris StreetView Dataset에서 가져옴

모델이 이미지의 semantic 영역을 그리는 작업을 잘 수행하였다.

 

그림 5

but, 누락된 영역이 저수준의 텍스쳐일 경우, 그저 텍스쳐를 합성하는 방식이 더 잘 먹힐 수도 있음

위 그림 5는 Content-Aware Fill(포토샵 기능)와 비교한 그림인데, 상단의 경우처럼 의미론적으로 채우는 영역은 더 잘먹히지만, 아래경우에는 조금 더 성능이 안좋았다.

 

다음은 정성적 평가결과

그림 6, 이미지에 다양한 방법을 적용한 Semantic inpainting

위 그림 6을 보면, L2만 사용한 context encoder는 잘 배치되었지만 선명하지 못하다.

적대적 손실만 사용한 context encoder는 결과가 뚜렷하지만 일관성이 없다.

joint loss를 사용했을 땐 앞선 두 경우의 약점을 모두 보완하였다.

마지막 두 열은 마스킹된 영역에서 가장 가까운 이웃 패치를 붙인 경우이다.

 

다음은 정량적 평가 결과 (Paris Streetview Dataset)

<Feature Learning>

재구성 손실만 사용한 컨텍스트 인코더

인코더에 AlexNet 아키텍쳐를 사용하였다.

but, AlexNet으로 적대적 손실을 수렴하지 못해서 재구성 손실만 사용하였음

네트워크에는 central region mask를 이용하였고 학습률은 $10^-3$

random region에 대해서는 $10^-4$의 학습률이 더 성능이 좋았다

다른 레이어보다 매개변수가 더 많고 과적합되기 쉽기 때문에 chennel-wise 완전연결층에 대해서만 드롭아웃을 0.5 비율로 적용하였다.

학습에는 100,000정도 반복하여 사용하였고 Titan X GPU 기준 14시간 소모됨

그림 7

그림 7은 재구성 손실을 사용하여 무작위 영역이 손상된 이미지를 훈련한 컨텍스트 인코더 인페이팅 결과

 

특징의 품질을 평가하기 위해서, context의 특징을 사용하여 이미지의 마스킹된 부분에 가장 가까운 이웃을 찾는다.

그림 8, Context Nearest Neighbors, 논문에서의 방법이 context를 가까워지게 만듦

원래는 어떠한 방법으로도 이미지의 중앙 부분을 볼 수 없다.

암튼, 실제 예측이 L2 loss로 인해 흐릿하더라도 컨텍스트에서 적절한 최근접 이웃을 찾아낸다.

AlexNet은 의미론적 작업에 대해 1M 레이블로 훈련하였기 때문에 제대로 수행하지만, HOG은 semantic을 얻을 수 없다.

표 2. 분류/검출/의미분할을 위한 정량적 비교.

Classification pre-training

이 실험을 위해 AlexNet분류기를 미세조정하였음

이미지를 무작위로 잘라 분류기를 훈련한 다음 테스트 이미지당 10개의 무작위 자르기를 사용하여 분류기를 평가함

무작위로 자른 것 이미지들에 대해서 분류기 출력의 평균을 낸다.

표 2는 비교된 모든 방법에 대한 mAP(mean average precision) 점수를 보여준다.

object detector의 정확도를 측정하는 유명한 평가지표 

random initialization은 ImageNet보다 25%낮은 성능을 발휘한다. 하지만 어떤 label도 사용하지 않았음

context encoder는 자가지도특징학습 방법과 경쟁하는 수준,  오토인코더나 agrawal 보다 성능이 좋다.

 

Detection pretraining

그 다음은 객체 감지에 대한 feature이다.

여기서 Fast R-CNN 프레임워크를 사용하였다.

ImageNet 사전 훈련된 네트워크를 컨텍스트 인코더(or 다른 baselline model)로 교체하였다.

사전 훈련된 인코더 가중치를 pool5층까지 가져오고, 완전연결계층을 다시 초기화하였다.

그런다음 FRCN (fast r-cnn)의 훈련-평가 방법을 따르고 정확도(mAP)를 기록하였다.

표 2에서 PASCAL VOC 2007 테스트셋에 대한 detection문제 결과가 기록 되어있다.

컨텍스트 인코터 사전훈련은 기존 방법과 경쟁력이 있어서 baseline보다 향상되었다.

 

Semantic Segmentation pre-training

마지막 정량적 평가는 픽셀 단위로 의미론적 세분화를 위한 컨텍스트 인코더 훈련의 유용성

ImageNet 분류를 위해 사전 훈련된 CNN을 사용하여 이미지의 각 픽셀에서 semantic label을 예측하는 end-to-end 학습가능한 방법으로 FCN(Fully convolutional networks)이 제안되었음

이 논문에선 FCN 방법에 사용된 분류 사전훈련 네트워크를 context encoder로 대체한 후 기존의 CaffeNet을 기반으로 한 결과와 직접 비교하기 위해 FCN 훈련 - 평가 방법을 따랐음

표2에 기록되어있다.

이 설정에서 임의로 초기화된 네트워크와 전체 입력을 재구성하도록 훈련된 일반 오토인코더보다 성능이 뛰어나다.

 

Conclusion

Context에 따라 이미지를 생성하도록 훈련된 Context Encoder는 의미론적 인페인팅의 최첨단 기술을 발전시키는 동시에 다른 모델에 비해 경쟁력 있는 특징표현을 학습한다.