티스토리 친구하기

본문 바로가기

논문 Review

PSPNet - Pyramid Scene Parsing Network

728x90

 

Introduction

  PSPNet은 CVPR(The IEEE Conference on Computer Vision and Pattern Recognition) 2017에서 발표된 Semantic Segmentation 알고리즘이다. 물론 현재는 성능이 좋은 많은 알고리즘이 나와있지만, PSPNet은 ImageNet scene parsing challenge 2016에서 1등을 차지했고, PASCAL VOC 2016 benchmark 그리고 Cityscapes benchmark에서도 각각 85.4%와 80.2%의 높은 accuracy를 기록하고 있다.

 

Several common issues for complex-scene parsing

  기존 FCN를 기본으로 설계된 모델은 feature map에 존재하는 local contextual information(모양, 형상, 재질의 특성 등이 포함될 것이다)을 활용했었다. 그래서 비슷한 형상 또는 재질을 가진 물체들 (예를 들어, 보트와 자동차, 침대 시트와 배게, 빌딩과 고층빌딩 등)을 잘 구별하지 못하는 문제점들을 가지고 있었다. PSPNet에서는 local contextual information과 함께 global contextual information(feature map의 평균 또는 최고값)을 Semantic Segmentation을 하기 위한 또 하나의 기준(metric)으로 활용하고자 하였다. 다음 그림은 PSPNet 논문에서 제시하고 있는 complex-scene parsing(복잡한 장면을 구별하는 것)에 대한 몇 가지 이슈를 나타낸 것이다.

 

Fig. 1. Several common issues for complex-scene parsing

 

PSPNet 논문에서 제시하고 있는 complex-scene parsing에 대한 일반적인 이슈는 Mismatched Relationship, Confusion Categories, 그리고 Inconspicuous Classes이다.

 

1. Mismatched Relationship (주변 환경과의 관계가 일치하지 않는 것)

  First-row에 있는 것은 호수 주변에 보트가 있는 그림이다. 기존의 FCN의 경우 보트를 자동차로 Prediction 하고 있다. 그 이유는 보트와 자동차의 외관이 비슷하고 위의 그림에서는 자동차에 더 가깝기 때문이다. 하지만, 일반적으로 자동차가 물 위에 있을 경우는 매우 드물다. 따라서 주변의 특징이 고려되었다면 "물 위의 자동차" 보다는 "물 위에 보트" 일 가능성이 높기 때문에 보트로 Prediction 하는 것이 합리적일 것이다.

 

2. Confusion Categories (범주의 혼돈)

  ADE20K dataset에는 field and earth; mountain and hill; building and skyscraper와 같이 혼돈을 주는 categories(범주들)이 존재한다. 이러한 class 들은 비슷한 외관을 가지고 있으며, annotation을 하는 전문가들도 아직 17.60% 의 pixel error가 있다고 한다. Second-row에서 FCN은 object를 skyscraper의 일부분과 building의 일부분으로 Prediction 하고 있다. 이 결과는 고층빌딩이거나 또는 그냥 빌딩이어야 하지만, 둘 모두인 것으로 판단하고 있는 것이다. 이러한 문제는 categories(범주들) 간의 relationship을 사용하여 해결할 수 있는데, global contextual information(feature map의 평균 또는 최고값)을 사용하면 relationship 더 명확해질 것으로 생각된다.

 

3. Inconspicuous Classes (눈에 띄지 않는 클래스)

  Scene은 임의의 크기를 가지고 있다. 예를 들어, streetlight나 signboard 같은 경우, 예측해야 할 중요한 Scene중의 하나이지만 크기가 작아 찾기 어려울 수 있다. 반대로, FCN의 receptive field 보다 큰 object/stuff의 경우는 연속적이지 않은 Prediction을 할 수 있다. Third-row에서 FCN이 베개(pillow)와 침대 시트(bed sheet)의 재질이 유사해서 Segmentation하지 못하고 있다. 만약 global scene category(범주)를 간과한다면 아마도 베개를 찾는 것은 어려울 것이다. 이를 개선하기 위해서는 굉장히 크거나 작아서 눈에 띄지 않는 object/stuff를 포함하는 여러 가지 크기의 sub-regions를 설정하고 각 sub-region의 global contextual information을 사용하면 눈에 잘 띄지 않는 objec/stuff를 segmentation 할 수 있을 것이다. 

 

 

Pyramid Pooling Module

  다름 그림은 PSPNet의 구조를 나타낸다. 일반적인 FCN 방식에서 Fig. 2(c)에 표현된 것처럼 Pyramid Pooling Module이 첨가된 것을 확인할 수 있다. (설명 방법은 구체적으로 적용된 모든 방법과 개념들을 설명하고, 그것들을 바탕으로 한번 더 정리할 예정이므로 잘 따라와 주기를 바란다.)

Fig. 2. Overview of the proposed PSPNet

  먼저 Fig. 2(a)처럼 Input Image가 주어지면 CNN을 사용해서 Fig. 2(b)처럼 마지막 convolutional layer의 feature map을 얻는다. Fig. 3은 Input Image, Feature map, 그리고 4개의 Feature map을 각각 펼쳐서 본 것을 그림으로 나타낸 것이다. CNN을 통해서 만들어진 Feature map은 Fig. 3처럼 local contextual information을 가지고 있다. 즉, 그림처럼  Input Image가 6 각형 모양이라면, feature map은 대각선과 세로 방향으로 변화량이 크기 때문에, 변화량이 큰 지점을 추출하는 필터가 학습되었다면  Feature map은 아래의 Feature map 1,2,3,4와 같은 결과가 나올 것이다. 이러한 정보를 이 논문에서는 local contextual information이라 부르고 있다.

Fig. 3. Local contextual information

CNN을 통해 만들어진 Feature map은 Pooling을 해서 1×1×N, 2×2×N, 3×3×N, 그리고 6×6×N 의 크기를 가진 sub-region으로 만들어진다. Pooling 방법은 Max pooling과 Ave pooling을 사용하여 비교하였다. 본 논문에서는 Ave pooling의 결과가 더 잘 나왔다. 아래는 Pooling의 방법이 왜 global contextual information을 얻는 방법인지 설명한다. 

Fig. 4. Global contextual information

Circle 모양의 Feature를 가진 Feature map을 4개의 sub-region으로 나눈다. 나누어진 각 sub-region에 존재하는 pixel 값들을 평균(Ave Pooling)을 2×2 배열에 입력한다. 그러면 Fig. 4와 같이 각 sub-region의 전체적인 특징이 나타낼 수 있다. 즉, 자동차 또는 보트 모양의 local contextual information과 object/stuff 가 물 근처에 있었으면 물의 특징이 포함되어 평균을 구한 global contextual information 또는 근처에 도로가 있었으면 도로의 특징이 포함되어 평균을 구한 global contextual information을 활용하면, 형상과 주변 상황을 모두 고려할 수 있기 때문에 Segmentaion에 있어서 더 좋은 성능을 보일 수 있다. 

  다시 Fig. 2(c)로 돌아와서,  Pooling을 통해 얻은 N 채널의 global contextual information을 convolution을 이용해서 1/N으로 줄인다. 이는 마지막에 각 Feature map들을 Upsampling 하고 concatenation(이어 붙이는 것)을 할 때 local contextual information과 global contextual information의 비율을 5:5로 맞추기 위해서이다. 그리고 마침내 마지막 convolutional layer을 통과시키면 우리가 원하는 Piexl-per-Prediction을 얻을 수 있다. 

 

Experiments

  PSPNet은 3개의 다른 ImageNet scene parsing challenge 2016, PASCAL VOC 2012 semantic segmentation, 그리고 urban scene understanding dataset Cityscapes 에서 scene parsing 및 semantic segmentation 의 성능이 검증되었다. 

 

1. ImageNet Scene Parsing Challenge 2016

  ADE20K dataset은 ImageNet Scene Parsing Challenge 2016 에 사용되었다. ADE20K dataset 이 다른 dataset과 다른점은 class의 수가 무려 150개나 되기 때문에 더 어려운 도전과제라는 것이다. training, validation, 그리고 testing dataset은 각각 20,000/2,000/3,000 개이다. 평가를 위해서 mean of class-wise intersection over union(Mean IoU)과 pixel-wise accuracy (Pixel Acc.) 가 사용되었다.

 

Fig. 5. Investigation of PSPNet with different settings.

Fig. 5의 table은 다른 setting의 PSPNet 성능을 비교한 것이다. ResNet50-Baseline은 ResNet50을 기반한 FCN, B1은 Pyramid Pooling Module에서 'red' 부분만 사용한 것, MAX와 AVE는 각각 max pooling과 average pooling을 의미한다. B1236은 Pyramid Pooling Module에서 'red', 'orange', 'blue', 'green' 을 모두 사용한 것을 나타내고, DR은 demension reduction을 의미하는 것으로 Pooling 후에 convolution으로 channel의 수를 줄인것이다. 

  실험 결과, PSPNet에서 제안하고 있는 Pyramid Pooling Module의 모든 기능을 사용하였을 때 가장 좋은 성능을 보였다. 여기서 특이할만한 것은 Max Pooling 보다 Average Pooling의 효과가 더 좋았다는 것이다. Max Pooling으로 어느 눈에띄는 Feature를 sub-region의 대표값으로 설정하는 것보다 Average Pooling으로 sub-region에 있는 모든 Feature들을 고르게 평균내는 것이 주변환경에 대한 반영을 더 잘 하는것 같다. 이와 더불어 DR을 통해 Local contextual information과 Global contextual information의 비율을 맞춘것의 성능이 더 좋은 것으로 볼 때, 여러가지 특징들을 골고루 사용하는 것이 효과가 더 좋음을 확인할 수 있다. 

 

2. PASCAL VOC 2012

 PASCAL VOC 2012 segmentation dataset은 20개의 object categories와 1개의 background class를 가지고 있다. training, validation, 그리고 testing dataset은 각각 10582/1,449/1,456 개이다. 다른 여러가지 알고리즘과 비교를 했을 때 성능이 가장 좋은 것을 확인할 수 있다. 

Fig. 6. Visual improvements on PASCAL VOC 2012 data.

 

3. Cityscapes

  Cityscapes는 semantic urban scene understanding을 위해 relase된 dataset이다. 50개의 도시에서 다른 계절에 수집된 high quality piexl-level- finely annotated images를 포함하고 있다. Cityscapes는 object와 stuff를 포함한 19개의 categories를 정의하고 있으며,  training, validation, 그리고 testing dataset은 각각 2,975/500/1,525 개이다. 다른 여러가지 알고리즘과 비교를 했을 때 성능이 가장 좋은 것을 확인할 수 있다. 

 

Conclusion

  PSPNet은 Segmentation을 위해 Feature map을 사용해서 얻었던 Local contextual information 뿐만 아니라 Pyramid Pooling Module을 도입하여 얻은 object/stuff의 주변환경 정보인 Global contextual information을  Segmentation을 위한 또 다른 정보로 활용함으로써 Semantic Segmentation의 성능을 높였다. 

 

아쉬운 점

  논문에서는 Local contextual information과 Global contextual information이 어떻게 나타나는지 보여주지 않았다. 처음에 언급했던 3가지 이슈에 대해서, FCN에서는 구별하지 못했지만 PSPNet에서는 구별해낸 부분의 Global contextual information을 그림으로 보여줬다면 독자들이 더 이해하기 쉬웠을 것이다.

 

 

출처:

http://openaccess.thecvf.com/content_cvpr_2017/html/Zhao_Pyramid_Scene_Parsing_CVPR_2017_paper.html

 

 

 

 

반응형