[부스트캠프 AI tech Segmentation] week15 (2022.04.28)
1. FCN의 한계점
1. 객체의 크기가 크거나 작은경우 예측을 잘하지 못하는 문제
- 큰 object의 경우 지역적인(local) 정보만으로 예측
- 같은 Object여도 다르게 labeling
- 작은 object 무시
2. object의 디테일한 모습이 사라지는 문제
- Deconvolution 절차가 간단해 경계를 학습하기 어려움
2. Decoder를 개선한 모델
2.1 DeconvNet
1x1 conv
를 기준으로 Decoder
와 Encoder
를 대칭으로 구성
VGG16
을 사용
Deconvolution Network
는 Unpooling
, Deconvolution
, ReLU
로 이루어짐
Unpooling
은 디테일한 경계를 포착
Transposed Convolution
은 전반적인 모습을 포착
1) Unpooling
Pooling
시에 지워진 경계 정보를 기록했다가 복원
- 학습이 필요없기 때문에 속도가 빠름
sparse
한 activation map
을 Transposed Convolution
으로 보완
2) Deconvolution
Deconvolution layer
를 통해서 input object
의 모양 복원
- 얕은 층에서는 전반적인 모습
- 깊은 층에서는 구체적인 모습을 잡아냄
Unpooling
에서는 자세한 구조(example-specifit)를 잡아내고
Transposed Conv
에서는 class-specific
한 구조를 잡아냄
Unpooling
을 통해 나온 기존의 위치 포인트에 Transposed Conv
가 빈부분을 채우는 형태
- 기존의
FCN-8s
보다 더 뚜렷한 형태를 잡아냈다고 함.
3) Network
pooling
시 return_indices=True
로 주어 max값의 위치를 기억하도록함
- return받은 indice를 대응되는 위치의
unpooling
에 이전 output
과 같이 넣어줌
- Deconv 연산시
sparse
한 feature map
을 dense
하게 하는 역할만하고 (w,h)에 변화는 없음
2.2 SegNet
- 성능보다는 속도 측면에서
real-time segmentation
을 가능하게한 모델
DeconvNet
과 유사한 구조를 가지지만 Decoder
에서 Transposed Conv
대신 Conv
를 사용함
DeconvNet
중간의 1x1 Conv
를 제거하면서 속도 향상
3. Skip Connection 적용모델
3.1 FC DenseNet
3.2 Unet
4. Receptive Field를 확장시킨 모델
4.0 Dilated Conv
conv - conv
를 적용한 것보다 conv - pool - conv
를 적용했을 때 효율적으로 더 넓은 Receptive field
를 가짐.
- 하지만 너무 작은
resolution
을 원본 크기로 다시 키웠을 때, 해상도가 낮아지는 문제가 발생함
Receptive field
는 넓히면서 이미지의 크기는 유지하는 방법? --> dilated conv(atrous conv)
- 파라미터의 수는 동일하면서
Receptive field
의 크기는 넓히고 high resolution
을 유지함
Conv
와 동일한 파라미터 수를 가지면서 더 넓은 Receptive field
를 바라보고 있음
4.1 DeepLab v1
Pooling
2x2 pooling
대신 3x3 pooling(stride=2, padding=1)
을 사용
--> 이미지의 크기가 21로 줄어드는 것은 같지만 더 넓은 Receptive field
를 보게함
4, 5번째 block
에서는 3x3 pooling(stride=1, padding=1)
을 사용하여 똑같은 사이즈를 유지함
Dilated Conv
padding
의 크기를 dilaton
의 크기와 동일하게 해줌으로써 input
과 output
의 크기가 동일하도록 함. (kernel size가 3이기 때문에 가능)
5, 6번째 block
에서 dilated conv
를 사용
6번째 block
에서는 큰 dialation rate(12)
를 사용함
Up sampling
Bi-linear interpolation
을 사용해 보간
F.interploate(x, size, mode='bilinear')
- 내분개념으로 채움
Dense CRF
Bilinear interpolation
만으로는 부족한 정교한 segmentation
을 위해 적용
- 색상이 유사한 픽셀이 가까이 위치하면 같은 범주로 구분하는 원리
4.2 DilatedNet
DeepLab
과 유사한 구조를 가지지만 조금 더 효율적
Basic context module
을 추가하여 다양한 dilation rate
를 줌으로써 다양한 크기의 object를 검출할 수 있도록 함