Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

ShuyaVision

[논문 리뷰] DeepLabV3 (Rethinking Atrous Convolution for Semantic Image Segmentation) 본문

Vision AI

[논문 리뷰] DeepLabV3 (Rethinking Atrous Convolution for Semantic Image Segmentation)

Sangbro 2023. 11. 19. 00:27

DeepLabv3은 DeepLabv2(https://sangbro.tistory.com/11)와 유사하다.

이에, 어떤 부분을 수정하여 발전시켰는지, 그리고 저자들의 실험에 대해서 중점적으로 작성하려고 한다.

 

DeepLabV2 vs DeepLabV3

 

총 2가지 부분에서 차별화를 두었다.

1. ASPP(Atrous Spatial Pyramid Pooling)의 Rate 비율이 다르고, Sum이 아닌 Concat을 사용한다.

2. GAP(Global Average Pooling) 기법이 도입되었다.

 

DeepLabV2에서의 Figure이다.

ResNet 마지막 몇 Conv Layer를 없애고, 위 구조의 ASPP를적용한다. 기존 이미지의 1/16 수준의 feature map의 크기에서 ASPP를 진행한 후에 1x1 conv를 적용 후 나온 feature map들을 모두 Sum 한다. 이후, Bi-linear interpolation을 진행해 up-sampling을 진행해 output을 만들어 낸다.

 

이에 비해 DeepLabV3에서는 아래의 구조를 띈다.

 

ASPP 부분에서, [6, 12, 18, 24]의 rate를 사용하던 것과 달리, [6, 12, 18]의 rate을 사용하고 있다. 하지만 코드 기준으로 했을 때는 [12, 24, 36]을 사용하고 있긴하다. 이에 더해, 1x1 conv가 추가되었고, (b) Image Pooling이 추가되었다. 여기서 ImagePooling이란, GAP로 Global Average Pooling이다. 이 GAP를 한 값에 1x1 conv를 한 후에, bi-linear interpolation을 해서 atrous convolution을 한 결과값들을 모두 Concat 한다. Concat 이후 1x1 conv, 3x3 conv, 그리고 1x1 conv를 한 결과값에 대해서 Bi-linear interpolation을 통해 최종 output을 만들어 낸다.

 

Experiments

 

 

1. Output Stride

먼저, ResNet-50에 대해서 진행한 실험으로, output_stride를 조절해보았을 때 이다. output_stride를 크게 줄 수록 더 좋은 성과를 보여준다. 

 

 

여기서도, output_stride를 낮게 주는 것이 더 좋은 결과를 가져온다는 것을 보여준다. 그러나 더 낮은 output_stride를 사용하는 것이 물론 좋겠지만, 연산량이 과도해질 수 있으므로 조정해서 사용할 필요가 있어 논문에서는 16을 주로 설명한게 아닐까 생각한다.

 

2. Multi-Grid

 

논문에서는 ResNet-101에서의 Block 4에서 Block 7까지 있는 부분에 대해서 Atrous rate를 다양하게 주어 실험을 진행했다. Vanilla는 (1, 1, 1), 즉 일반 convolution이다. (1, 2, 1)이 가장 높은 성적을 보이는 것으로 나타났다. 실험에서는 block 개수도 조절했는데, ResNet-101에서는 Block 7까지 활용하는 것이 좋았고, ResNet-50에서는 Block 6까지 활용하는 게 가장 좋은 case였다.

 

3. ASPP Rate

위의 Multi-Grid (1, 2, 4)에 대해서 ASPP의 rate를 다양하게 주면서 진행한 실험이다. Multi-Grid (1, 2, 4)에 대해서 ASPP를 (6, 12, 18)과 GAP를 준 경우가 가장 좋은 성적을 보였다. DeepLabV2에서의 rate이 24 인 부분보다, Image Pooling을 삭제한 것을 확인할 수 있는데, 이는 큰 Rate를 줬을 때는 1x1 conv를 한 것과 같은 효과가 나타나기 때문이다.

이는 위 Figure에서 확인할 수 있다. 위 Figure는 65x65 feature map에 대해 3x3 filter 크기를 atrous rate를 다르게하여 준 이후, 유효한 filter weight를 파악한 결과이다. Atrous rate가 일정 수준을 넘은 이후로는 더 넓은 영역을 포착할 수 있지만, 이미지 전체의 Context를 포착하는 대신, 중앙의 필터 가중치만 유효하기 때문에 단순한 1x1 필터로 변질된다. 이에 24의 rate을 가지는 부분을 삭제하고, 1x1를 추가한 후에 보다 넓은 부분의 feature를 보완하기 위해 GAP를 추가한 것으로 보인다.

 

Results

 

DenseCRFs 없이도 DeepLabV2에 비해 더 좋은 결과를 가져오는 것을 볼 수 있다.