기존 Architecture
DeepLab v2
AvgPooling
부분이 사라지고, 4가지dilated conv
를 가지는 branch형태로 바뀜ASPP
:Atrous Spatial Pyramid Pooling
dilation rate
가 작은 layer은 상대적으로 작은 object에 집중하고,dilation rate
가 큰 layer 상대적을 큰 object에 집중함ResNet-101
backbone
에ResNet-101
을 사용- 단, 기존
ResNet
대비conv4
와conv5
에서
1)down-sampling
을 수행하지 않고
2)dilated conv
를 사용했다
는 차이가 있음
2.1 도입배경
1) Mismatched Relationship
-호수주변의 boat를 car로 예측
-idea: 주변의 특징을 고려(ex. water 위의 boat)
2) Confusion Categories
-skyscraper와 building을 혼돈하여 예측
-idea: category간 관계를 사용하여 해결(global contextual information
)
3) Inconspicuous Classes
-작은 객체인 pillow를 bad sheet으로 잘못예측
-idea: 작은 객체들도global contextual information
사용2.2 도입배경2
FCN
이 가지는 이론적인receptive field
와 실제receptive field
가 다르다.
2.3 Architecture
Average Pooling
을 적용해1x1
,2x2
,3x3
,6x6
의 사이즈의 map을 얻어냄- 그 후,
1x1 conv
->upsample
->concat(skip-connection)
->conv
의 과정을 통해segmentation map
을 얻어냄.
conv
에 비해pooling
을 사용할경우local contect information
이 아닌Global context information
을 얻을 수 있다고 함.2.4 performance
- 기존
DeepLab
에 비해 오분류를 줄이고 좀 더 깔끔한 segmentation이 가능해짐
- 기존
ASPP(Astrous Spatial Pyramid Pooling)
에dilation rate=24
를 빼고Pooling
을 추가- 이전 버전 모델들과 다르게
sum
이 아닌concat
을 통해 여러feature map
을 합침
Encoder - Decoder
구조Encoder
에서spatial dimension
의 축소로 인해 손실된 정보를Decoder
에서 점진적으로 복원Encoder
와Decoder
사이에skip-connection
추가4.1 Encoder
- 수정된
Xception
을backbone
으로 사용atrous separable conv
를 사용한ASPP
모듈 사용low-level feature
와ASPP
모듈 출력을decoder
에 전달
4.3 modified Xception Backbone
classification task
에서는 5번의 연산을 거쳐1/32
배 사이즈의map
을 사용- 반면,
segmentation task
에서는 4번의 연산을 거쳐1/16
배 사이즈의map
을 사용4.3.1
Depth Separable Convolution
을 사용하는 구조1)
Depthwise conv
- 채널별 파라미터를 통해 연산한 후 concat을 통해 합쳐줌
nn.Conv2d
내의group(=채널을 몇개의 그룹으로 나눌건 지)
파라미터를 사용해 적용할 수 있음nn.Conv2d(in_channels=128, out_channels, kernel_size, stride, group=128)
2)
Pointwise conv
1x1 conv
와 동일1x1 kernel
을 사용해 는 그대로 두고 채널크기만 변경함.
4.3.2 모델 구조
- 크게
Entry flow
,Middle flow
,Exit flow
로 나눌 수 있음Entry Flow
Maxpooling
연산을Depthwise Separable conv(stride=2) + BatchNorm + ReLU
로 변경첫번째 block
의 출력(low-level feature
)을decoder
에 전달함
Middel Flow
block repeat
횟수를 8에서 16으로 증가시키면서 더 깊은 구조를 사용
Exit Flow
Maxpooling
연산을Depthwise Separable conv(stride=2) + BatchNorm + ReLU
로 변경- 구조 변경
4.4 ASPP(Astrous Spatial Pyramid Pooling)
- 다양한
dilation rate
를 통해 다른receptive field
를 가지지만 똑같은 사이즈를 가지는 여러개의feature map
을 얻어냄GlobalAveragePooling
을 사용해 의 출력크기를 가지는feature map
을 얻고1x1 conv
와bilinear interpolation
을 통해 다른feature map
들과 동일한 사이즈로 맞춰줌
4.2 Decoder
ASPP
모듈의 출력을up-sampling
하여low-level feature
와 결합- 기존의 단순한
up-sampling
연산을 개선시켜 detail이 유지되도록 함low-level features
와ASPP output
을concat
한 결과에bilinear interpolation
을 적용해 최종prediction
도출
FCN
-DeepLab v1
-Dilated Conv
-DeepLab v2
-PSPNet
-DeepLab v3
-DeepLab v3+