핵심단어
Beyond Classification, Segmentation, fcn, u-net
학습목표
- Segmentation의 동작 방식 및 Semantic Segmentation/Instance Segmentation 구분하기
- Transpose Convolution의 필요성과 동작 방식에 대해 이해하기
- 개인적인 이유로 학습 시작이 늦었으니 개념만 잡고, 코드는 주말에 보자 (따흐흑..)
Beyond Classification
- 지금까지는 다층퍼셉트론신경망(MLP), 합성곱 신경망(CNN)을 이용해 입력 이미지에 맞는 출력 레이블(Label) 또는 범주(Class)를 예측하는 이미지 분류 공부(Image Classification)에 대해 학습
- 오늘 배울 내용은 분할(Segmentation)과 객체 탐지/인식(Object Detection/Recognition)
분할
- 분할은 하나의 이미지에서 같은 의미를 가지고 있는 부분을 구분하는 task(도로,사람,나무 등)
- 이미지 분류에서는 이미지를 하나의 단위로 레이블 예측, Segmentation은 더 낮은 단위로 분류
- 동일한 의미마다 해당되는 픽셀이 모두 레이블링 되어있는데 데이터 셋을 픽셀 단위에서 레이블을 예측하게 됨
Semantic Segmentation vs (Semantic) Instance Segmentation
Semantic Segmentation : 의미적으로 같은 개체들에 대해 모두 동일하게 라벨링
(Semantic) Instance Segmentation : 개체까지 나누어 라벨링
FCN & U-net
이미지 분할(Segmentation)을 위한 대표적인 모델 FCN, U-net
FCN
- 이미지 분류를 위한 신경망에 사용 되었던 CNN의 분류기 부분, 완전 연결 신경망(Fully Connected Layer)부분을 합성곱층(Convolutional Layer)으로 대체한 모델
- Segmentation은 픽셀 단위로 분류가 이루어지기 때문에 픽셀의 위치정보를 끝까지 보존해야 함
- 기존 CNN에서 사용하던 완전 연결 신경망은 위치 정보를 무시한다는 단점이 있음
- FCN에서는 합성곱층으로 모두 대체함으로써 문제를 해결함

갑자기 이미지가 훅 커지는 부분이 있는데 원래 이미지와 비슷하게 크기를 키워주는 Upsampling이 필요함
Upsampling
- CNN에서 사용되는 것 처럼 Convolution과 Pooling을 사용하여 이미지의 특징을 추출하는 과정을 Downsampling(다운샘플링)이라고 함
- 반대로 원래 크기대로 키우는 것을 Upsampling
- Transpose Convolution을 이용해 각 픽셀에 커널을 곱한 값에 Stride를 주어 나타냄으로써 이미지 크기를 키워 나감
U-net
- U-net 역시 downsampling과 upsampling, 이렇게 두 부분으로 나눌 수 있다
- downsampling에서는 convolution과 Maxpooling을 거치면서 이미지의 특징을 추출하고
- upsampling 에서는 convolution과 transpose convolution을 거치면서 원본 이미지와 비슷한 크기로 복원 함
- 추가적으로 upsampling에서 downsampling 출력으로 나왔던 feature map을 적당한 크기로 잘라서 붙여 준뒤 추가데이터로 사용함
학습후기
개념은 어찌저찌 이해가 되는데 코드가 숙지가 될 되어 따로 기입하지 않았다. 이번에 배우고 평생안 볼 거 아니니깐 계속 봐야지.. ㅠ