Upsampling(Transposed Convolution)

오창현·2022년 10월 24일
0

CV정리

목록 보기
3/11

본 내용은 참조 블로그1, 참조블로그2의 내용을 정리하였다.

Upsampling이란?

NN를 사용하여 저해상도 이미지에서 고해상도 이미지로 만들때 upsampling이 사용된다.
이때 upsampling은 저해상도에서 고해상도로 만드는 작업이기 때문에 보간법이 사용되는데,크게 3가지 방법을 쓴다.

  • Nearest neighbor interpolation
  • Bi-linear interpolation
  • Bi-cubic interpolation
    보간법 정리

보간법은 network 구조를 결정할때 선택해 사용되는데,보간에 대해 학습을 진행할 수는 없기때문에 어떤 보간법을 사용해야 최적의 결과를 나타내는지 알수 없다.

Transposed convolution은 network에서 가장 최적의 upsampling 방법을 학습하기위해 고안된 방법이다.
대표적으로 사용되는 곳은
-GAN generator
-Semantic segmentation의 decoder부분이다.

Image Segmentation

img segmentation은 말 그대로 이미지 분할이다.
기존 CNN에서는 하나의 input img에 하나의 class만 분류했다면,
img segmentation은 input img의 모든 정보를 알 수 있다.

1)window 이용

window를 사용하여 모든 픽셀에 대해 예측

위의 사진처럼 네모난 box를 window라고 부른다.
box로 그림을 픽셀하나를 중심으로 가지도록 한칸씩 이동하고,box 중심이 소에 있다면 cow, 풀에 있다면 Grass로 예측한다.하지만 이 방법은 img의 중복된 부분들도 독립적으로 전부 다시 학습을 진행하기때문에 시간이 많이 소모되고 비효율 적이다.

따라서 그 후에 나온 방법은 각각의 픽셀들을 한번에 예측한다.

이 방법의 특징은 conv network를 통과할때 padding으로 input img의 size를 계속 유지하는 것이다.마지막에 FC layer를 거치지 않고 CxHxW feature map으로 각각의 픽셀별로 바로 예측한다.
input size를 계속해서 유지하면서 학습을 진행하면 parameter의 수가 크게 늘어나고 memory 및 자원의 소모가 커질수 밖에 없는 문제점이 있다.따라서 이와 같은 단점을 보완한 방식인 Deconvolution 즉 Upsampling이다.

Deconvolution


기존의 CNN과 비슷하게 Feature map size를 줄이고 output의 값을 FC layer로 통과하는 대신 Deconvolution을 통해 원본 input size로 복원한다.이때 축소시키는 과정과 대칭이 되게 하는것이 좋다.
Upsampling에는 pooling layer를 복원하는 방법과 Convolution layer의 stride에 의한 축소를 복원하는 방법이 있다.

Pooling layer 복원

1)Nearest Neighbor Unpooling

가장 간단한 방법으로 2x2 matrix를 4x4 matrix로 복원할때 가장 가까운 값과 같은 값으로 복제하는 것이다.

2) Bed of Nails

Bed of Nails Unpooling은 정해진 위치에만 값을 저장하고 나머지는 0으로 만드는 방법이다.

3) Max Unpooling

Max Unpooling에서는 앞선 max pooling layer에 대해 max pooling된 위치를 기억하고 그위치에 값을 복원한다.
이 방법은 Bed of Nails Unpooling에 비해 정보 손실을 방지할수 있고, 별도의 메모리를 필요로 하나 CNN에서 매우 작은 비율이므로 상관이 없다.

Convolution Operation


위의 그림은 4x4 input image가 있고 3x3 conv kernel을 적용하고 padding = 0 stride =1 을 표현한 그림이다.

계산 과정을 보여주는 그림이다.

Going Backward

transposed convolution은 upsampling에 사용된다.위에 그림의 convolution 연산은 downsampling되는 작업이다.
즉,downsampling 된 값을 거꾸로 convolution하는 것이다.
위 작업에서 4x4 matrix를 2x2 matrix로 변환하였다.
이번에는 2x2 -> 4x4 matrix로 변환하는데,기존 수학적 보간법이 아닌 학습을 통해 최적의 보간법을 산출하는것을 transposed convolution이라고 한다.

profile
음...

0개의 댓글