[논문 리뷰] Fully Convolutional Networks for Semantic Segmentation (FCN)

PROLCY·2024년 3월 11일
0

인공지능

목록 보기
14/37
post-thumbnail

오늘은 Fully Convolutional Networks for Semantic Segmentation (FCN)에 대한 간단한 리뷰이다.

Fully convolutional networks

Adapting classifiers for dense prediction

기존의 convnet에서 사용하는 fc layer에서는, dimension이 고정되어 있고 spatial한 정보가 사라진다. 따라서 이러한 fc layer를 conv layer로 대체함으로써 input과 output의 사이즈를 고정시키지 않는다. 또한 이렇게 구성함으로써 기존 classification task에서도 계산량에서 이득을 볼 수 있다.

Upsampling is backwards strided convolution

Shift-and-stitch trick이라는 upsampling을 방식을 사용하지 않고 대신 사용한 것이 deconvolution이다. convolution의 과정을 역으로 수행한 것이며, learnable하다는 점과 activation function을 추가함으로써 non-linear한 것도 학습할 수 있다는 장점이 있다.

Patchwise training is loss sampling

이미지 전체 픽셀에 대해서 loss를 계산해야 하지만, 이러면 배치 사이즈가 작아질 수 밖에 없다. 그래서 논문에서는 random으로 pixel을 sampling하여 배치 사이즈를 늘렸다. 이렇게 함으로써 class imbalance 문제를 해결하고, dense한 patch 간의 spatial correlation을 완화시켰다고 한다.

sampling 방법에 따른 convergence이다.

Segmentation Architecture

From classifier to dense FCN


먼저 기존의 convnet에서 fc layer를 conv layer로 변경하여서 segmentation task를 진행하였다.

Combining what and where


위의 사진에서 볼 수 있듯, 기존에는 32 pixel stride로 upsample하였지만, 2 pixel stride로 upsample을 한 것과 중간에 pool4의 결과에다가 1x1 conv를 한 번 씌운 것을 더해서 16 pixel stride로 upsample을 함으로써 성능을 높였다. 나아가 한 번 더 반으로 해서 FCN-8s까지 시도했다고 한다.

성능은 위와 같다.

Results

후기

이것도 쉽지 않았다. 왠진 모르겠지만 글이 잘 읽히지 않는 기분이 들었다. FC layer를 모두 conv로 바꾸는 시도와 논문에서는 skip net이라고 표현한 구조가 참신한 것 같다. 확실히 segmentation task다보니 이전의 모델과 성능의 차이가 많이 나는 것 같다. 이번주에는 segmentation을 계속 다룰 것 같은데, 다음 논문도 기대가 된다.

0개의 댓글