Maxima's Lab

[Paper Review (논문 리뷰)] Free-From Image Inpainting with Gated Convolution 본문

Paper Review

[Paper Review (논문 리뷰)] Free-From Image Inpainting with Gated Convolution

Minima 2023. 2. 23. 00:00
728x90
SMALL

안녕하세요, 오늘은

 

"Free-Form Image Inpainting with Gated Convolution"

(https://arxiv.org/pdf/1806.03589.pdf)

 

위 논문에 대해서 리뷰를 해보도록 하겠습니다.

 

 

해당 논문은 이전의 Inpainting 기술에서 보완해야 할 몇가지 문제점을 해결하기 위해 Gated Convolution Neural Network를 사용합니다. 논문에 대한 전반적인 내용들은 다음과 같습니다. 

 

  • 기존의 Inpainting 기술의 문제점 분석 및 Gated Convolution Neural Network의 개념과 작동 방식을 소개하며, Free-From Image Inpainting 모델의 구조와 학습 방법에 대해 상세히 설명합니다.
  • 해당 모델은 Input Image에서 누락된 부분을 결정하기 위해 Global Contextual Information과 Local Spatial Information을 모두 사용합니다. 해당 정보들을 사용하기 위해 모델은 전체 이미지와 누락된 부분을 동시에 Encoding 하고 Encoding된 특성 맵을 합치는 방식을 사용합니다.
  • Input Image에서 누락된 부분을 추론하기 위해 Gated Convolution Neural Network를 사용하며, Convolution Neural Network에서 사용되는 필터를 Gating 함수를 사용해서 Adaptive하게 가중치를 조절합니다.

 

다음은, Gated Convolution Neural Network에 대한 Tensorflow 2 구현 결과입니다.

 

import tensorflow as tf
from tensorflow.keras.layers import Input, Conv2D, Multiply, Add, Activation
from tensorflow.keras.models import Model

class GatedConv2D(tf.keras.layers.Layer):
    def __init__(self, filters, kernel_size, strides=1, padding='same'):
        super(GatedConv2D, self).__init__()

        self.conv2d = Conv2D(filters, kernel_size, strides=strides, padding=padding)
        self.conv2d_gate = Conv2D(filters, kernel_size, strides=strides, padding=padding)

    def call(self, x):
        x_ = self.conv2d(x)
        x_gate = self.conv2d_gate(x)

        x = Multiply()([Activation('tanh')(x_), Activation('sigmoid')(x_gate)])

        return x

게이팅 함수(Gate function)는 Sigmoid 함수 또는 ReLU 함수 등과 같이 비선형 함수로써 입력 이미지의 특정 부분에 대한 가중치를 동적으로 조절할 수 있도록 합니다. 이를 통해 Gated Convolution Neural Network는 입력 이미지의 특정 부분에 대한 정보를 더 잘 반영하면서, 불필요한 부분은 제거할 수 있습니다.

 

예를 들어, Sigmoid 함수를 게이팅 함수로 사용하는 경우, 입력 이미지에서 값이 작은 부분은 0에 가깝게, 값이 큰 부분은 1에 가깝게 변환됩니다. 이를 통해 입력 이미지에서 필요한 정보를 선택적으로 추출할 수 있습니다. 게이팅 함수는 Convolution Layer와 함께 사용되며, Convolutional Layer의 출력값을 게이팅 함수의 입력으로 사용합니다. 게이팅 함수는 Convolution Layer의 출력값을 필터링하는 역할을 합니다.

 


이러한 Gated Convolutional Neural Network는 주로 이미지 인페인팅, 이미지 복원, 이미지 생성 등의 이미지 처리 문제에서 사용되지만 일반적인 이미지 분류 문제에서도 사용할 수 있습니다. Gated Convolutional Neural Network는 입력 이미지에서 불필요한 정보를 제거하고 중요한 부분에 대한 정보를 더욱 잘 반영할 수 있으므로 CNN과 비교하여 더 높은 정확도를 보장할 수 있습니다.

 

동시에, Gated Convolutional Neural Network는 계산 복잡성이 높고 학습 데이터가 많아야 하며, 훈련 시간이 오래 걸릴 수 있습니다. 또한, 모델을 설계하고 Tuning 하는 작업에 있어 어렵다는 점이 있습니다.

 

 

지금까지, 

 

"Free-Form Image Inpainting with Gated Convolution"

 

위 논문에 대해서 알아보았습니다.

 

 

728x90
LIST
Comments