1. 대표적인 딥러닝을 이용한 세그멘테이션 FCN
1.1 Abstract
1) VGG 네트워크 백본을 사용 (Backbone : feature extracting network)
2) VGG 네트워크의 FC Layer (nn.Linear)를 Convolution 으로 대체
3) Transposed Convolution을 이용해서 Pixel Wise prediction을 수행
1.2 Fully Connected Layer vs Convolution Layer
1) 위치정보
FC Layer는 각 픽셀의 위치정보를 해침
Conv Layer는 위치정보를 해치지 않은채로 특징 추출
이처럼 위치 정보가 변하지 않는것을 translation invariance라고한다.
2) 이미지 사이즈
nn.Linear는 height와 width를 고려해야하지만, nn.Conv2d는 임의의 입력값에 대해서도 학습, 인퍼런스가 가능
1.3 Transposed Convolution
입력 이미지를 Upsampling하는 작업
*stride가 1일 경우
최종
만약 stride 2와 padding 1이 주어진다면 가운데에 3x3만 남게된다
Transposed Convolution = Upsampling = Deconvolution
conv 이전의 값과 transposed conv 이후의 값이 동일하지 않기 때문에 Deconv라고 하기에는 애매하다
Transposed conv 또한 학습 가능한 weight이기 때문에 학습하여 더 나은값을 찾을 수 있다.
1.4 FCN에서 성능을 향상시키기 위한 방법
Deconv를 한번에 하게되면 큼지막하게는 맞아도 섬세한 부분들을 많이 놓치게된다.
FCN-32s가 한번에 Transposed conv를 수행한 결과다
이런 문제를 해결하기 위해 conv를 하며 feature를 추출할 때 나온 큰 conv block의 결과물들을 키워서 최종 Output Deconv와 summation을 진행한다.
두개의 사이즈가 다르기 때문에 Deconv에는 width와 height를 늘려주어야하고, 중간 결과물인 conv Block에서는 1x1으로 channel수를 맞춰주어야한다.
중첩될수록 더 나은 성능을 보였음
1.5 평가지표
mean IoU와는 다른 segmenatation의 다른 평가 지표가 존재한다
pixel Accuracy
mean IoU
2. 결론
2.1 Further Reading
1x1 conv를 7x7conv로 바꿀 때 발생하는 문제
224x224를 입력 이미지로 conv5의 결과물로 총 1/32로 줄어들어 7x7 사이즈가 나온다
FC6의 7x7 conv를 하게된다면 1x1로 결과물이 나온다.
그래서 논문에서는 첫 conv에서 padding을 100을줘서 224x224를 424x424로 주게된다
하지만 이렇게 하더라도 결과가 256x256이 나오므로 원래 입력크기가 나오지 않는다
그래서 가장자리를 제거하는 crop을한다.
2.2 정리
1) vgg16의 pretrained된 backbone을 가져옴
2) vgg16의 fully connected를 conv로 변경 (위치정보를위함, 입력 이미지의 사이즈를 모두 고려하기위함)
3) transposed convolution을 사용하여 원본이미지 크기만큼 복원(이 weight는 학습 가능)
4) skip connection으로 16s,8s등을 이용함
'부스트캠프 AI Tech 2기 > 2기 CV P-Stage-Semantic Segmentation' 카테고리의 다른 글
Semantic Segmentation 대회에서 사용하는 방법들 1 (0) | 2021.10.20 |
---|---|
High Performance를 자랑하는 Unet 계열의 모델들 (0) | 2021.10.20 |
FCN의 한계를 극복한 model 2 성능적인 측면에서의 극복 (0) | 2021.10.20 |
Competition Overview (EDA & Metric) (0) | 2021.10.18 |
Semantic Segmentation - Intro (0) | 2021.10.18 |